---@meta


---@class INT8   : integer
---@class UINT8  : integer
---@class INT16  : integer
---@class UINT16 : integer
---@class INT32  : integer
---@class UINT32 : integer

---@alias SINT8 INT8
---@alias s8    INT8
---@alias u8    UINT8
---@alias s16   INT16
---@alias u16   UINT16
---@alias s32   INT32
---@alias u32   UINT32

---@class fixed_t : INT32
---@class angle_t : UINT32
---@class tic_t   : INT32

---@class alphastyle_t         : integer
---@class sectorflags_t        : integer
---@class sectordamage_t       : integer
---@class sectorspecialflags_t : integer
---@class fofbustflags_t       : integer
---@class fofbusttype_t        : integer
---@class fofflags_t           : integer
---@class ffloorflags_t        : integer
---@class mobjtype_t           : integer
---@class playeranim_t         : integer
---@class playerflags_t        : integer
---@class playerstate_t        : integer
---@class rotaxis_t            : integer
---@class statenum_t           : integer
---@class skinflags_t          : integer
---@class soundnum_t           : integer
---@class skincolornum_t       : integer
---@class spritenum_t          : integer


---@class easelib
ease = {}

---@class hudlib
hud = {}

---@class inputlib
input = {}

---@class colorlib
color = {}

---@class videolib
local v = {}


---@alias hooktype
---| '"IntermissionThinker"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#IntermissionThinker)**<br><br>`addHook("IntermissionThinker", fun(stagefailed: boolean))`<br><br>Executes every tic during the 'Character got through the act' (Co-Op), results (competition / race / ringslinger gametypes) screen.
---| '"LinedefExecute"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#LinedefExecute)**<br><br>`addHook("LinedefExecute", fun(line: line_t, mobj: mobj_t, sector: sector_t), hookname)`<br><br>Executes when called by a [linedef executor](https://wiki.srb2.org/wiki/linedef_executor) of [linedef type 443](https://wiki.srb2.org/wiki/linedef_type_443) placed in a map. `line` is the [linedef](https://wiki.srb2.org/wiki/linedef) that triggered the function, `mobj` is the [Object](https://wiki.srb2.org/wiki/Object) that triggered the linedef executor, and `sector` is the triggering [sector](https://wiki.srb2.org/wiki/sector) the Object touched, if it exists. The third argument to `addHook` is the name of the linedef execution hook - the function is only executed if this name is written across the front textures of the linedef with type 443 that triggered the hook.
---| '"MapChange"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MapChange)**<br><br>`addHook("MapChange", fun(mapnum: integer))`<br><br>Executes as soon as the game receives a command to load a [map](https://wiki.srb2.org/wiki/map). This can occur after the [map](https://wiki.srb2.org/wiki/Console/Commands#map) command is used, when the game warps to the next level after finishing another, or when starting a new game (whether in [Single Player](https://wiki.srb2.org/wiki/Single_Player), [multiplayer](https://wiki.srb2.org/wiki/multiplayer), [Record Attack](https://wiki.srb2.org/wiki/Record_Attack), etc). `mapnum` is the number of the new map being loaded. Despite the hook's name, it is executed even if the game was not already in a map before.
---| '"MapLoad"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MapLoad)**<br><br>`addHook("MapLoad", fun(mapnum: integer))`<br><br>Executes as soon as everything (i.e.: the geometry, Objects, and special effects) in the map specified in `mapnum` has been loaded. It is important to note that all thinkers (including functions for the [ThinkFrame](https://wiki.srb2.org/wiki/Userdata_structures#ThinkFrame) hook) are run twice before functions for this hook are executed.
---| '"ThinkFrame"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#ThinkFrame)**<br><br>`addHook("ThinkFrame", fun())`<br><br>Executes once every middle of the game tic, after [Object](https://wiki.srb2.org/wiki/Object) and [Player](https://wiki.srb2.org/wiki/Player) thinkers have been run for the current tic, and before [PostThinkFrame](https://wiki.srb2.org/wiki/Userdata_structures#PostThinkFrame).
---| '"PreThinkFrame"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PreThinkFrame)**<br><br>`addHook("PreThinkFrame", fun())`<br><br>Executes once every beginning of the game tic, before all other thinkers,[PreThinkFrame](https://wiki.srb2.org/wiki/Lua/Hooks#PreThinkFrame), [ThinkFrame](https://wiki.srb2.org/wiki/Userdata_structures#ThinkFrame) and gamelogic have been run for the current tic. This timing is especially useful for editing [player inputs](https://wiki.srb2.org/wiki/Userdata_structures#ticcmd_t), because at that point no thinkers have used them yet.
---| '"PostThinkFrame"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PostThinkFrame)**<br><br>`addHook("PostThinkFrame", fun())`<br><br>Executes once every ending of the game tic, after all other thinkers (including Object, Player, [PreThinkFrame](https://wiki.srb2.org/wiki/Lua/Hooks#PreThinkFrame), [ThinkFrame](https://wiki.srb2.org/wiki/Userdata_structures#ThinkFrame), overlays, precipitation), and texture, [timelimit](https://wiki.srb2.org/wiki/Console/Variables#timelimit), and [pointlimit](https://wiki.srb2.org/wiki/Console/Variables#pointlimit) gamelogic have been run for the current tic, and directly before rendering the frame. This timing is especially useful for editing Object's effect flags to keep it rendering consistent as on any other timing hooks may get overriden such as `MF2_SHADOW` being cleared each tic for example.
---| '"GameQuit"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#GameQuit)**<br><br>`addHook("GameQuit", fun(quitting: boolean))`<br><br>Executes when the player returns to the title screen from a game, and when the application is about to exit to desktop. If `quitting` is true, then the application is exiting. This may be useful for saving addon configurations (if needed).<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"BotAI"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#BotAI)**<br><br>`addHook("BotAI", fun(player: mobj_t, bot: mobj_t): boolean?, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?, boolean?, skinname: string?)`<br><br>Function return value: 8 boolean values/Table of boolean values Executes every tic as the key input for [bot](https://wiki.srb2.org/wiki/bot) movement is being created, allowing scripts to modify bot behavior. `player` is the `mobj_t` of the player the bot follows, and `bot` is the bot's `mobj_t`. The function should return the key input for the bot, either as eight boolean values or as one table of boolean values. Each value is associated with one key and indicates whether the respective key is being pressed in the current tic or not; in order, the values are `forward`, `backward`, `left`, `right`, `strafeleft`, `straferight`, `jump`, and `spin`. If returning a table, these names must be used as the keys for the table entries; unused keys can be omitted. If returning separate boolean values, the values must be placed in the above order. The third argument to `addHook` is a string denoting the name of the [skin](https://wiki.srb2.org/wiki/skin) for `bot` to run this hook for. Note that this will not work if the character's [skin name](https://wiki.srb2.org/wiki/S_SKIN#name) is not written as all-lowercase in the `S_SKIN`. If omitted, it will run for all skins.
---| '"BotTiccmd"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#BotTiccmd)**<br><br>`addHook("BotTiccmd", fun(bot: player_t, cmd: ticcmd_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes every tic as the input for [bot](https://wiki.srb2.org/wiki/bot) movement is being created, allowing scripts to modify bot behavior. `bot` is the `player_t` of the bot being manipulated, and `cmd` is the `ticcmd_t` for the bot in the current tic, which can be altered by this function to change the bot behavior. If the function returns `true`, the game's default behavior is overridden; otherwise, it is performed after executing the function.
---| '"BotRespawn"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#BotRespawn)**<br><br>`addHook("BotRespawn", fun(player: mobj_t, bot: mobj_t): boolean?)`<br><br>Function return value: Boolean (force respawn?) Executes every tic as a [bot](https://wiki.srb2.org/wiki/bot) is deciding whether to respawn. `player` is the `mobj_t` of the player the bot follows, and `bot` is the bot's `mobj_t`. If the function returns `true`, the bot will attempt to respawn; if the function returns `false` the bot will not attempt to respawn. Otherwise, the game's default behavior is used.
---| '"HurtMsg"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#HurtMsg)**<br><br>`addHook("HurtMsg", fun(player: player_t, inflictor: mobj_t, source: mobj_t, damagetype: integer): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Used to create custom hurt messages for [player](https://wiki.srb2.org/wiki/player)s to be displayed in the chat window in [multiplayer](https://wiki.srb2.org/wiki/multiplayer), or to change an existing one. Executes when a player is being damaged during the use of [P_DamageMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_DamageMobj). `player` is the player that was hurt, `inflictor` is the Object that hurt the player, and `source` is the Object responsible for the inflictor's existence. Note that `inflictor` and/or `source` may be `nil`, and should be checked for existence and validity before being accessed to prevent errors. If the function returns `true`, the message normally printed to the console when taking damage in multiplayer is overridden; if it returns `false`/`nil`, the message is printed in addition to running the function. The third argument to `addHook` determines what Object type for `inflictor` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"NetVars"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#NetVars)**<br><br>`addHook("NetVars", fun(fun(value: any): any))`<br><br>Executes whenever a new player joins a [netgame](https://wiki.srb2.org/wiki/netgame). Determines what variables to write to or load from `$$$.sav`, the file used to synchronize the current game state for joining players with that of the host. `network` is a function that can be called with any local variable, using the format `variable = network(variable)`. This will handle both sides of network synchronization for this particular variable. Only numbers, strings, booleans, userdata and tables that contain only these types are supported. Recursive tables (tables that contain tables that contain tables, etc) are supported.
---| '"PlayerJoin"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerJoin)**<br><br>`addHook("PlayerJoin", fun(playernum: integer))`<br><br>Executes when a player joins a netgame. `playernum` is the number of the joining player. Note that the player has not yet been spawned at the time this hook is called, and so the player data (in this case, `players[playernum]`) cannot be accessed.
---| '"PlayerQuit"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerQuit)**<br><br>`addHook("PlayerQuit", fun(player: player_t, reason: integer))`<br><br>Executes when `player` quits while in a netgame. Note that the player will still be valid and accessible when this hook is called, and the player's Object can still be accessed. The reason for quitting the game is given by the `reason` argument, in the form of a `KR_*` constant; see [Constants > Kick reasons](https://wiki.srb2.org/wiki/Constants#Kick_reasons) for possible values.
---| '"PlayerMsg"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerMsg)**<br><br>`addHook("PlayerMsg", fun(source: player_t, type: integer, target: player_t, msg: string): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player sends a chat message in a server. `source` is the player that sent the message, `type` is the type of message sent (0 for [say](https://wiki.srb2.org/wiki/Console/Commands#say), 1 for [sayteam](https://wiki.srb2.org/wiki/Console/Commands#sayteam), 2 for [sayto](https://wiki.srb2.org/wiki/Console/Commands#sayto), 3 for [csay](https://wiki.srb2.org/wiki/Console/Commands#csay)), `target` is the player the message was sent to if `sayto` was used, and `msg` is the message that was sent. If the function returns `true`, the game will not send the message itself and instead only execute the function; if it returns `false`/`nil`, it will execute the function and then send the message normally.
---| '"TeamSwitch"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#TeamSwitch)**<br><br>`addHook("TeamSwitch", fun(player: player_t, team: integer, fromspectators: boolean, autobalance: boolean, scramble: boolean): boolean?)`<br><br>Function return value: Boolean (allow team switching?, `nil` = use default behavior) Executes when `player` attempts to change teams in a netgame, including entering the game and spectating. `team` is the team the player is attempting to switch to, `fromspectators` indicates whether the player is attempting to enter the game, and `autobalance` and `scramble` indicate if the change is being forced by the autobalance mechanic or a manual team scramble, respectively. Returning `true` allows the player to switch teams, while returning `false` disallows it. Returning `nil` will allow the game to use the default behavior.
---| '"ViewpointSwitch"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#ViewpointSwitch)**<br><br>`addHook("ViewpointSwitch", fun(player: player_t, nextviewedplayer: player_t, forced: boolean): boolean?)`<br><br>Function return value: Boolean (allow view of the player?, `nil` = use default behavior) Executes when `player` attempts to watch another player in a netgame via the button F12. `nextviewedplayer` is the player about to be watched, and `forced` indicates whether the view was forcibly switched (e.g. the current player being watched has left the netgame). Returning `true` forces the view to be changed, while returning `false` skips the player about to be viewed. Returning `nil` will allow the game to use the default behavior.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"SeenPlayer"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#SeenPlayer)**<br><br>`addHook("SeenPlayer", fun(player: player_t, seenplayer: player_t): boolean?)`<br><br>Function return value: Boolean (allow player name to be displayed?, `nil` = use default behavior) Executes when `player` is pointing the camera to another player in order to see their name. Depends on the [`seenames`](https://wiki.srb2.org/wiki/Console/Variables#Seenames) variable to function. `seenplayer` is the player being pointed at. Returning `true` will allow their name to be displayed on screen, while returning `false` will force it not to be displayed. Returning `nil` will allow the game to use the default behavior.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"PlayerThink"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerThink)**<br><br>`addHook("PlayerThink", fun(player: player_t))`<br><br>Similar to MobjThinker: Executes once per tic for the player as it runs after it's thinker. If you need to override the player's control inputs, it is highly recommended to do so in a PlayerCmd hook instead, as some of the inputs have already been consumed by the game when PlayerThink is called.
---| '"PlayerCanDamage"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerCanDamage)**<br><br>`addHook("PlayerCanDamage", fun(player: player_t, mobj: mobj_t): boolean?)`<br><br>Determines whether the player can damage another object; generally performed when a player and object collide with another. If returning true, the player is forced to attack the object. When returned false, the player is forced to not attack the object. Returning no argument continues the game's usual checks.
---| '"PlayerSpawn"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerSpawn)**<br><br>`addHook("PlayerSpawn", fun(player: player_t))`<br><br>Executes when a player spawns in a map or is respawned. `player` is the player in question. It is important to note that, when a map is loaded, players are always spawned after all other Things in the map have been loaded.
---| '"PlayerHeight"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerHeight)**<br><br>`addHook("PlayerHeight", fun(player: player_t): fixed_t?)`<br><br>Function return value: Fixed-point number (the new player's height) The function should return a fixed-point number which the player object's height will be set to. If the function returns nil or a negative value, the game will use default checks to determine the player height.
---| '"PlayerCanEnterSpinGaps"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerCanEnterSpinGaps)**<br><br>`addHook("PlayerCanEnterSpinGaps", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (should the player fit into the gap?) The function should return a boolean which can forcibly allow or block gap passage, returning `true` allows players to fit into any gap that is smaller than their skin's height field, while returning `false` will prevent the player from fitting into any gap that is smaller than their skin's height field.
---| '"ShieldSpawn"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#ShieldSpawn)**<br><br>`addHook("ShieldSpawn", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player obtains a shield. `player` is the player in question. Keep in mind that this hook's functionality extends to all uses of `P_SpawnShieldOrb`.
---| '"AbilitySpecial"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#AbilitySpecial)**<br><br>`addHook("AbilitySpecial", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player uses their special ability after jumping, when the Jump key is pressed a second time. `player` is the player in question. Returning `true` will override the player's regular ability, and returning `false`/`nil` will run the function alongside the existing ability.
---| '"JumpSpecial"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#JumpSpecial)**<br><br>`addHook("JumpSpecial", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player presses the Jump key. `player` is the player in question. Returning `true` will override the regular effect of the player's Jump key, and returning `false`/`nil` will run the function alongside the existing effect.
---| '"JumpSpinSpecial"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#JumpSpinSpecial)**<br><br>`addHook("JumpSpinSpecial", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player presses the Spin key during a jump. `player` is the player in question. Returning `true` will override the player's regular ability, and returning `false`/`nil` will run the function alongside any existing ability. Even when returning `true`, this hook's action will be interrupted by both the super transformation (when conditions are met) and shield abilities (provided the `SF_NOSHIELDABILITY` flag is not present).
---| '"SpinSpecial"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#SpinSpecial)**<br><br>`addHook("SpinSpecial", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player presses the Spin key. `player` is the player in question. Returning `true` will override the regular effect of the player's Spin key, and returning `false`/`nil` will run the function alongside the existing effect. Note that this hook will execute even if the player is not on the ground.
---| '"ShieldSpecial"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#ShieldSpecial)**<br><br>`addHook("ShieldSpecial", fun(player: player_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a player uses their shield ability, including both jump+spin activation as well as the whirlwind shield's emergency jump. `player` is the player in question. If the function returns `true` then the shield's default action will be overwritten, however returning `false/nil` will run the function alongside the existing ability. Note that if one simply wishes to disable shield abilities, the skin flag `SF_NOSHIELDABILITY` should be used instead.
---| '"MapThingSpawn"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MapThingSpawn)**<br><br>`addHook("MapThingSpawn", fun(mobj: mobj_t, mapthing: mapthing_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) This hook executes when a [Thing](https://wiki.srb2.org/wiki/Thing) in a map spawns its corresponding [Object](https://wiki.srb2.org/wiki/Object). `mobj` is the Object being spawned, and `mapthing` is the Thing in the map that spawns `mobj`. If the function returns `true`, the default spawning behavior is overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type for `mobj` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Note that this hook runs after the MobjSpawn hook for the spawned Object.
---| '"MobjSpawn"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjSpawn)**<br><br>`addHook("MobjSpawn", fun(mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when an [Object](https://wiki.srb2.org/wiki/Object) is spawned, i.e., when [P_SpawnMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnMobj) is used. `mobj` is the Object being spawned. Note that for Objects spawned on the map via [Thing](https://wiki.srb2.org/wiki/Thing)s, `mobj.spawnpoint` is not set before this hook is called. If the function returns `true`, the default spawning behavior is overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"MobjRemoved"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjRemoved)**<br><br>`addHook("MobjRemoved", fun(mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when an Object is being removed, i.e., when [P_RemoveMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_RemoveMobj) is used. `mobj` is the Object being removed. If the function returns `true`, the default removal behavior is overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"MobjThinker"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjThinker)**<br><br>`addHook("MobjThinker", fun(mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes once per tic for each Object as it runs its thinker. `mobj` is the Object in question. If the function returns `true`, the default thinker is overridden (does not apply to player Objects); otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Mobj thinkers not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"MobjFuse"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjFuse)**<br><br>`addHook("MobjFuse", fun(mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when an Object's fuse has run out. `mobj` is the Object in question. If the function returns `true`, the default behavior (sending the Object to its `XDeathState`) is suppressed; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Mobjs with fuse not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"BossThinker"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#BossThinker)**<br><br>`addHook("BossThinker", fun(mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes once per tic for [boss](https://wiki.srb2.org/wiki/boss)es only, after its normal thinker has been run. `mobj` is the boss Object in question. Note that suppressing the default behavior of an Object in a [MobjThinker](https://wiki.srb2.org/wiki/Userdata_structures#MobjThinker) hook will stop this hook from being called. If the function returns `true`, the default boss behavior will be overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Boss thinkers not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"ShouldDamage"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#ShouldDamage)**<br><br>`addHook("ShouldDamage", fun(target: mobj_t, inflictor: mobj_t, source: mobj_t, damage: integer, damagetype: integer): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (should damage?, `nil` = use default behavior) Executes when an Object decides whether to be damaged or not during the use of [P_DamageMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_DamageMobj). `target` is the Object being damaged, `inflictor` is the Object that damaged it, and `source` is the Object responsible for the inflictor's existence. Note that `inflictor` and/or `source` may be `nil`, and should be checked for existence and validity before being accessed to prevent errors. If the function returns `true`, the Object is forced to be damaged, and if the function returns `false`, it is forced to not be damaged. Otherwise (`return`, `return nil` or simply no return value), SRB2's default checks are used to determine whether the Object is damaged. The third argument to `addHook` determines what Object type for `target` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"MobjDamage"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjDamage)**<br><br>`addHook("MobjDamage", fun(target: mobj_t, inflictor: mobj_t, source: mobj_t, damage: integer, damagetype: integer): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when an Object is being damaged during the use of [P_DamageMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_DamageMobj). `target` is the Object being damaged, `inflictor` is the Object that damaged it, and `source` is the Object responsible for the inflictor's existence. Note that `inflictor` and/or `source` may be `nil`, and should be checked for existence and validity before being accessed to prevent errors. If the function returns `true`, the default damage behavior is overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type for `target` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"MobjDeath"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjDeath)**<br><br>`addHook("MobjDeath", fun(target: mobj_t, inflictor: mobj_t, source: mobj_t, damagetype: integer): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when an Object is killed, i.e., when [P_KillMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_KillMobj) is used. `target` is the Object being killed, `inflictor` is the Object that killed it, and `source` is the Object responsible for the inflictor's existence. Note that `inflictor` and/or `source` may be `nil`, and should be checked for existence and validity before being accessed to prevent errors. If the function returns `true`, the default death behavior is overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type for `target` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"BossDeath"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#BossDeath)**<br><br>`addHook("BossDeath", fun(mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a [boss](https://wiki.srb2.org/wiki/boss) is killed, i.e., when the action [A_BossDeath](https://wiki.srb2.org/wiki/A_BossDeath) is used. `mobj` is the boss Object in question. This determines after-death effects performed immediately after the boss checks if it can raise a capsule or end the level, regardless of whether or not it has done so. For example, by default bosses will flee like the [Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile), which this hook can choose to override or not. If the function returns `true`, the default after-death behavior will be overridden; otherwise, it will be performed after executing the function. The third argument to `addHook` determines what Object type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"FollowMobj"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#FollowMobj)**<br><br>`addHook("FollowMobj", fun(player: player_t, followmobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when SRB2 handles a followmobj of type `objecttype` in the function P_PlayerAfterThink  this occurs after most thinkers for the tic have been run, but before any ThinkFrame hooks have been executed. If `objecttype` is omitted, or set to `MT_NULL`, this hook will run for followmobjs of any type. If the function returns an expression that evaluates as `true`, the default followmobj behavior is overridden; otherwise, the default behavior will run after the hook is executed. Follow mobjs not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"MobjCollide"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjCollide)**<br><br>`addHook("MobjCollide", fun(mobj: mobj_t, movingmobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (do Objects collide?, `nil` = use default behavior) Determines whether and how collision should be handled between two Objects during the use of [P_CheckPosition](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckPosition). `mobj` is the Object being collided with, and `movingmobj` is the moving Object colliding with `mobj`. If the function returns `true`, the Objects have collided, and if the function returns `false`, they have not. Otherwise (`return`, `return nil` or simply no return value), SRB2's default checks are used to determine collision. Note that height checks are not performed between the Objects before this hook is called, and should be manually performed for accurate results. The third argument to `addHook` determines what Object type for `mobj` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Mobj collisions not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"MobjLineCollide"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjLineCollide)**<br><br>`addHook("MobjLineCollide", fun(mobj: mobj_t, line: line_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (does the Object collide with the line?, `nil` = use default behavior) Executes when an Object attempts to cross a linedef. `mobj` is the Object traversing the linedef, and `line` is the linedef being traversed. Returning `true` to this function will force the Object to be stopped by the linedef, while returning `false` will force the Object to cross it. Returning `nil` will allow SRB2's default checks to determine collision. The third argument to `addHook` determines what Object type for `mobj` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Mobj collisions against linedefs not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"MobjMoveBlocked"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjMoveBlocked)**<br><br>`addHook("MobjMoveBlocked", fun(movingmobj: mobj_t, mobj: mobj_t, line: line_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Executes when an Object's X/Y movement is blocked  it doesn't matter what stopped you. `movingmobj` is the Object in question. `mobj` is the object that stopped you, if applicable. Otherwise, `line` is the linedef that stopped you. If the function returns true, the default removal behavior is overridden. The third argument to `addHook` determines what `movingmobj` type to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Mobj collisions being blocked not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"MobjMoveCollide"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MobjMoveCollide)**<br><br>`addHook("MobjMoveCollide", fun(movingmobj: mobj_t, mobj: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (do Objects collide?, `nil` = use default behavior) Similar to [MobjCollide](https://wiki.srb2.org/wiki/Userdata_structures#MobjCollide), except the check is performed for the moving Object, not for the Object being moved into. The third argument to `addHook` determines what Object type for `movingmobj` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types. Mobj collisions from the moving object not bound to a specific Object type are slated for removal and should not be used for the sake of future compatibility as well as general performance.
---| '"TouchSpecial"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#TouchSpecial)**<br><br>`addHook("TouchSpecial", fun(special: mobj_t, toucher: mobj_t): boolean?, objecttype: integer?)`<br><br>Function return value: Boolean (override default behavior?) Determines what happens when a player touches an Object of the specified Object type. The Object must have the `MF_SPECIAL` flag. `special` is the Object being touched, and `toucher` is the Object representing the player touching it. If the function returns `true`, the default touching behavior is overridden; otherwise, it will be performed after executing the function. The default behavior for most Objects is to play its `DeathSound` and use [P_KillMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_KillMobj) to go to the Object's `DeathState`, but this depends on the Object. Unlike the [MobjCollide](https://wiki.srb2.org/wiki/Userdata_structures#MobjCollide) hook, height checks are performed before this hook is called. The third argument to `addHook` determines what Object type for `special` to run this hook for (should be one of the [MT_*](https://wiki.srb2.org/wiki/List_of_Object_types) constants). If omitted or set to `MT_NULL`, it will run for all Object types.
---| '"MusicChange"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#MusicChange)**<br><br>`addHook("MusicChange", fun(oldname: string, newname: string, mflags: integer, looping: boolean, position: integer, prefadems: integer, fadeinms: integer): string?, string?, integer?, boolean?, integer?, integer?, integer?)`<br><br>Function return value: String/Boolean, Int, Boolean, Integer, Integer, Integer (see below.) Executes when the currently playing music is about to be changed, i.e., when [S_ChangeMusic](https://wiki.srb2.org/wiki/Lua/Functions#S_ChangeMusic) is used. `oldname` is the name of the music that it will change from, `newname` is what the music will be changed to, `mflags` defines the music flags being used (see [S_ChangeMusic](https://wiki.srb2.org/wiki/Lua/Functions#S_ChangeMusic) for more information), `looping` defines if the song will loop or not, `position` defines the song's current play time (in milliseconds), `prefadems` defines the duration in milliseconds to fade-out of the current song before changing to the new song, and `fadeinms` defines the duration in milliseconds of the fade-in of the song once it starts. It is possible to override all parameters, or prevent a song from overriding another, like such: * The first value to return can be a boolean or string. **If it's a boolean, passing `true` will stop the overriding song from playing at all. **If it's a string, it should be a music name. * The second value is an integer, specifically `MUSIC_*` flags. * The third value is a boolean, indicating if the song should loop or not. * The fourth value is an integer, millisecond position to start at upon song change. * The fifth value is an integer, milliseconds to fade out of the current song before changing to the new song. * The sixth value is an integer, milliseconds to fade into the new song. Thus, a return statement like `return false, mflags, looping, 5000, 0, 3000` will let the music override happen, using the same flags, start 5 seconds into the song, allow fade-in and let it happen for 3 seconds.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"ShouldJingleContinue"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#ShouldJingleContinue)**<br><br>`addHook("ShouldJingleContinue", fun(player: player_t, musname: string): boolean?, musname: string?)`<br><br>Executes when SRB2 evaluates whether a jingle of type `JT_OTHER` should continue playing. Jingles are evaluated only when [P_RestoreMusic](https://wiki.srb2.org/wiki/Lua/Functions#P_RestoreMusic) is called. If this function returns false or nil, the jingle will stop; otherwise, it will continue.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"KeyDown"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#KeyDown)**<br><br>`addHook("KeyDown", fun(keyevent: keyevent_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a keyboard key is being pressed. If the function returns `true`, the default behavior of the key is overridden; otherwise, it will be performed after executing the function.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"KeyUp"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#KeyUp)**<br><br>`addHook("KeyUp", fun(keyevent: keyevent_t): boolean?)`<br><br>Function return value: Boolean (override default behavior?) Executes when a keyboard key is released. If the function returns `true`, the default behavior of the key is overridden; otherwise, it will be performed after executing the function.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**
---| '"PlayerCmd"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#PlayerCmd)**<br><br>`addHook("PlayerCmd", fun(player: player_t, cmd: ticcmd_t))`<br><br>Executes once per tic for the local client before their button inputs are sent to the server (or executed in singleplayer), and as such,<br><br>**this hook is only executed locally, and thus isn't network-safe**. `player` is the local player, and `cmd` is a [ticcmd_t](https://wiki.srb2.org/wiki/Userdata_structures#ticcmd_t) userdata representing the button information performed locally this tic.
---| '"HUD"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#HUD)**<br><br>`addHook("HUD", fun(v: videolib, camera: camera_t, player: player_t), hudtype: string?)`<br><br>Alternative format: `function(v, player_t player)` Functions exactly the same as [hud.add](https://wiki.srb2.org/wiki/Lua/Functions#hud.add), adding a new HUD element to the game. The list of valid `hudtype` options is [here](https://wiki.srb2.org/wiki/Lua/Functions#HUD_hooks).
---| '"AddonLoaded"' **[View on wiki](https://wiki.srb2.org/wiki/Lua/Hooks#AddonLoaded)**<br><br>`addHook("AddonLoaded", fun())`<br><br>Executes once every time any addon loads. This hook is useful most for compatibility between mods, and also this is the only hook that allows adding new hooks.<br><br>**This hook is only executed locally, and thus isn't network-safe. Use at your own risk.**

---@alias hudtype
---| '"game"' function(*[drawer](https://wiki.srb2.org/wiki/Lua/Functions#Patch/string_drawing_functions)* v, [*[player_t](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)* stplyr, [*[camera_t](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)* cam]])
---| '"scores"' function(*[drawer](https://wiki.srb2.org/wiki/Lua/Functions#Patch/string_drawing_functions)* v)
---| '"title"' function(*[drawer](https://wiki.srb2.org/wiki/Lua/Functions#Patch/string_drawing_functions)* v)
---| '"titlecard"' function(*[drawer](https://wiki.srb2.org/wiki/Lua/Functions#Patch/string_drawing_functions)* v, [*[player_t](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)* stplyr, [*int* ticker, [*int* endtime]]])

---@alias huditemtype
---| '"stagetitle"' Stage title card
---| '"textspectator"' Information text as a spectator
---| '"crosshair"' Crosshair in first-person
---| '"score"' Score text and counter
---| '"time"' Time text and counter
---| '"rings"' Rings text and counter
---| '"lives"' Lives picture and counter
---| '"teamscores"' Team Match/CTF - Team scores
---| '"weaponrings"' Match/CTF - Weapon ring icons
---| '"powerstones"' Match/CTF - Chaos Emerald icons
---| '"nightslink"' NiGHTS link counter
---| '"nightsdrill"' NiGHTS drill bar
---| '"nightsrings"' NiGHTS ring counter
---| '"nightsscore"' NiGHTS score counter
---| '"nightstime"' NiGHTS time counter
---| '"nightsrecords"' NiGHTS screen text (Bonus time start, "Get *n* [more] Spheres", Ending bonuses)
---| '"rankings"' https://wiki.srb2.org/wiki/Rankings/Scores_HUD - Multiplayer rankings (all gametypes)
---| '"coopemeralds"' Rankings/Scores HUD - Single Player Chaos Emerald icons
---| '"tokens"' Rankings/Scores HUD - Single Player Tokens icon and counter
---| '"tabemblems"' Rankings/Scores HUD - Single Player Emblems icon and counter
---| '"intermissiontally"' Intermission - Score tally
---| '"intermissionmessages"' Intermission - Information text
---| '"intermissiontitletext"' Intermission - Co-Op/Special Stage title text
---| '"intermissionemeralds"' Intermission - Special Stage emeralds

---@alias stringtype
---| '"left"' (*Default value*) The string is left-aligned; the X coordinate is the left edge of the string graphic.
---| '"right"' The string is right-aligned; the X coordinate is the right edge of the string graphic.
---| '"center"' The string is center-aligned; the X coordinate is the center of the string graphic.
---| '"fixed"' The string is left-aligned; the X coordinate is the left edge of the string graphic and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"fixed-center"' The string is center-aligned; the X coordinate is the center of the string graphic and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"fixed-right"' The string is right-aligned; the X coordinate is the right edge of the string graphic and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"small"' The string is drawn in a small font, and is left-aligned.
---| '"small-center"' The string is drawn in a small font, and is center-aligned.
---| '"small-right"' The string is drawn in a small font, and is right-aligned.
---| '"small-fixed"' The string is drawn in a small font, and is left-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"small-fixed-center"' The string is drawn in a small font, and is center-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"small-fixed-right"' The string is drawn in a small font, and is right-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"small-thin"' The string is drawn in a small and thin font, and is left-aligned.
---| '"small-thin-center"' The string is drawn in a small and thin font, and is center-aligned.
---| '"small-thin-right"' The string is drawn in a small and thin font, and is right-aligned.
---| '"small-thin-fixed"' The string is drawn in a small and thin font, and is left-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"small-thin-fixed-center"' The string is drawn in a small and thin font, and is center-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"small-thin-fixed-right"' The string is drawn in a small and thin font, and is right-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"thin"' The string is drawn in a thin font, and is left-aligned.
---| '"thin-center"' The string is drawn in a thin font, and is center-aligned.
---| '"thin-right"' The string is drawn in a thin font, and is right-aligned.
---| '"thin-fixed"' The string is drawn in a thin font, and is left-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"thin-fixed-center"' The string is drawn in a thin font, and is center-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).
---| '"thin-fixed-right"' The string is drawn in a thin font, and is right-aligned and coordinates are required to be treated as fixed-point values instead of normal integers, allowing for positions at fractions of a pixel on the screen. (e.g., `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc.).

---@alias stringwidthtype
---| '"normal"' (*Default value*) The string is drawn in a normal font.
---| '"small"' The string is drawn in a small font.
---| '"thin"' The string is drawn in a thin font.


---@class vector2_t
---@field x fixed_t
---@field y fixed_t

---@class vector3_t
---@field x fixed_t
---@field y fixed_t
---@field z fixed_t

-- These are not documented anywhere?
-- Also... no _t suffix for colormap??
---@class spriteinfo_t
---@class playersprite_t
---@class colormap


ANG1 = 11930465
ANG2 = 23860929
ANG10 = 119304647
ANG15 = 178956971
ANG20 = 238609294
ANG30 = 357913941
ANG60 = 715827883
ANG64h = 769514974
ANG105 = 1252698795
ANG210 = -1789569707
ANG255 = -1252698795
ANG340 = -238609294
ANG350 = -119304647

ANGLE_11hh = 134217728
ANGLE_22h = 268435456
ANGLE_45 = 536870912
ANGLE_67h = 805306368
ANGLE_90 = 1073741824
ANGLE_112h = 1342177280
ANGLE_135 = 1610612736
ANGLE_157h = 1879048192
ANGLE_180 = -2147483648
ANGLE_202h = -1879048192
ANGLE_225 = -1610612736
ANGLE_247h = -1342177280
ANGLE_270 = -1073741824
ANGLE_292h = -805306368
ANGLE_315 = -536870912
ANGLE_337h = -268435456
ANGLE_MAX = -1

A = 0
B = 1
C = 2
D = 3
E = 4
F = 5
G = 6
H = 7
I = 8
J = 9
K = 10
L = 11
M = 12
N = 13
O = 14
P = 15
Q = 16
R = 17
S = 18
T = 19
U = 20
V = 21
W = 22
X = 23
Y = 24
Z = 25


---@type table
mobjs = {}


---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedMul)**
---
---Returns the result of multiplying `a` by `b` in the fixed-point scale.
---
---Example: `FixedMul(2*FRACUNIT, 3*FRACUNIT)` will return `6*FRACUNIT`.
---
---@param a fixed_t
---@param b fixed_t
---@return fixed_t
function FixedMul(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedMul)**
---
---Returns the result of multiplying `a` by `b` in the fixed-point scale.
---
---Example: `FixedMul(2*FRACUNIT, 3*FRACUNIT)` will return `6*FRACUNIT`.
---
---@generic T : integer
---@param a fixed_t
---@param b T
---@return T
function FixedMul(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedMul)**
---
---Returns the result of multiplying `a` by `b` in the fixed-point scale.
---
---Example: `FixedMul(2*FRACUNIT, 3*FRACUNIT)` will return `6*FRACUNIT`.
---
---@generic T : integer
---@param a T
---@param b fixed_t
---@return T
function FixedMul(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedDiv)**
---
---Returns the result of dividing `a` by `b` in the fixed-point scale.
---
---Example: `FixedDiv(6*FRACUNIT, 3*FRACUNIT)` will return `2*FRACUNIT`.
---
---@param a fixed_t
---@param b fixed_t
---@return fixed_t
function FixedDiv(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedDiv)**
---
---Returns the result of dividing `a` by `b` in the fixed-point scale.
---
---Example: `FixedDiv(6*FRACUNIT, 3*FRACUNIT)` will return `2*FRACUNIT`.
---
---@generic T : integer
---@param a T
---@param b T
---@return T
function FixedDiv(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ClosestPointOnLine)**
---
---Alternative version: `P_ClosestPointOnLine(fixed_t x, fixed_t y, line_t line)`
---
---Returns the X and Y coordinate (as two separate returned values) of the closest point to the point `(x,y)` on the line `line`.
---
---If a set of 4 fixed-point integers (`x1`, `y1`, `x2`, `y2`) is given instead of a `line_t` variable, these become the coordinates of a custom-defined line that goes through the points `(x1,y1)` and `(x2,y2)`.
---
---@param x fixed_t
---@param y fixed_t
---@param x1 fixed_t
---@param y1 fixed_t
---@param x2 fixed_t
---@param y2 fixed_t
---@return fixed_t
---@return fixed_t
function P_ClosestPointOnLine(x, y, x1, y1, x2, y2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PointOnLineSide)**
---
---Alternative version: `P_PointOnLineSide(fixed_t x, fixed_t y, line_t line)`
---
---Returns 0 if the point `(x,y)` is on the "front" side of the given line, or 1 if it is on the "back" side.
---
---If a set of 4 fixed-point integers (`x1`, `y1`, `x2`, `y2`) is given instead of a `line_t` variable, these become the coordinates of a custom-defined line that goes through the points `(x1,y1)` and `(x2,y2)`.
---
---@param x fixed_t
---@param y fixed_t
---@param x1 fixed_t
---@param y1 fixed_t
---@param x2 fixed_t
---@param y2 fixed_t
---@return integer
function P_PointOnLineSide(x, y, x1, y1, x2, y2) end


---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BubbleRise)**
---
--- Used to make bubbles rise.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BubbleRise(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BunnyHop)**
---
--- Makes the actor hop like a bunny.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BunnyHop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CapeChase)**
---
--- Sets the actor's position to that of its target or tracer. If used repeatedly, the actor will continuously follow its target/tracer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CapeChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Chase)**
---
--- Makes the actor move towards its target. Use this repeatedly for basic chasing movement. Used by several enemies, such as the Crawlas.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Chase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FishJump)**
---
--- Makes the actor jump if on the ground or underwater. Used by the SDURF.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FishJump(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ForceStop)**
---
--- Immediately stops the actor's movement.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ForceStop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_HomingChase)**
---
--- Makes the actor move directly towards its target or tracer. Use this repeatedly to make the actor continuously chase its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_HomingChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_InstaLoop)**
---
--- Makes the actor move along a 2D horizontal polygon.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_InstaLoop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_KnockBack)**
---
--- Knocks back the actor's target or tracer at its current speed.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_KnockBack(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MouseThink)**
---
--- The thinker for mice released by enemies.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MouseThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MoveAbsolute)**
---
--- Moves the actor horizontally at an absolute speed.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MoveAbsolute(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MoveRelative)**
---
--- Moves the actor horizontally while keeping its current momentum.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MoveRelative(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PushAway)**
---
--- Pushes the actor's target or tracer away from the actor itself.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PushAway(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ScoreRise)**
---
--- Used to make score logos rise.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ScoreRise(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SkullAttack)**
---
--- Makes the actor fly like a missile toward its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SkullAttack(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Thrust)**
---
--- Thrusts the actor horizontally at its current angle.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Thrust(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ZThrust)**
---
--- Thrusts the actor vertically.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ZThrust(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Custom3DRotate)**
---
--- Rotates the actor around its target in three dimensions.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Custom3DRotate(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_OrbitNights)**
---
--- Makes the Chaos Emeralds in NiGHTS Special Stages orbit around Super Sonic.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_OrbitNights(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RotateSpikeBall)**
---
--- Rotates the actor around its target or tracer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RotateSpikeBall(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SparkFollow)**
---
--- Rotates the actor around its target; requires the target to be a player in Super form.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SparkFollow(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/---@param var2 INT32)**
---
--- Thinker for the Unidus's/Egg Mobile's spikeballs. Rotates the actor around its target. Depending on the situation, the actor can be thrown away from its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_UnidusBall(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BuzzFly)**
---
--- Thinker for the golden and red Buzzes. Makes the actor slowly fly after the player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BuzzFly(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CrawlaCommanderThink)**
---
--- Thinker for the Crawla Commander.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CrawlaCommanderThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DetonChase)**
---
--- Thinker for the Deton. Makes the actor chase after a player and explode if it comes into contact with the player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DetonChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_EggShield)**
---
--- Thinker for Egg Guard's shield. Sets the position of the actor to its target and pushes away any players touching it at the front.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_EggShield(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FaceStabChase)**
---
--- Modified A_Chase for the CastleBot FaceStabber.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FaceStabChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GuardChase)**
---
--- Modified A_Chase for the Egg Guard.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GuardChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_HoodThink)**
---
--- Thinker for the Robo-Hood.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_HoodThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_JetbThink)**
---
--- Thinker for the Jetty-Syn Bomber.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_JetbThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_JetChase)**
---
--- Modified A_Chase for the Jetty-Syns.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_JetChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_JetgShoot)**
---
--- Firing attack for the Jetty-Syn Gunner.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_JetgShoot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_JetgThink)**
---
--- Thinker for the Jetty-Syn Gunner.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_JetgThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_JetJawChomp)**
---
--- Attacking thinker for the Jet Jaw. Chases towards the actor's target as long as it is in view.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_JetJawChomp(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_JetJawRoam)**
---
--- Roaming thinker for the Jet Jaw.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_JetJawRoam(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MinusCheck)**
---
--- Used to reset the Minus to digging form when it hits the floor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MinusCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MinusDigging)**
---
--- Used by the Minus when digging in the ground.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MinusDigging(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MinusPopup)**
---
--- Used by the Minus when popping out of the ground.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MinusPopup(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PointyThink)**
---
--- Thinker for the Pointy.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PointyThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SharpChase)**
---
--- Thinker for the Sharp.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SharpChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SharpSpin)**
---
--- Thinker for the Sharp's spin attack.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SharpSpin(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SkimChase)**
---
--- Modified A_Chase for the Skim.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SkimChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SnailerThink)**
---
--- Thinker for the Snailer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SnailerThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VultureCheck)**
---
--- Thinker for the BASH's flight. If stopped, the actor falls down until it reaches the ground.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VultureCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VultureVtol)**
---
--- Thinker for the BASH when aiming. The actor adjusts its Z position until a suitable height to attack its target from is reached.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VultureVtol(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss1Chase)**
---
--- Basic chasing behavior and thinker used by the Egg Mobile. An attack may also be randomly selected by this action.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss1Chase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/---@param var2 INT32)**
---
--- Egg Mobile's laser attack thinker. Unlike other actions, this action will automatically call itself again repeatedly for the rest of the current state's duration.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss1Laser(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss1Spikeballs)**
---
--- Used to spawn each of the Egg Mobile's spikeballs (once per use of the action) during pinch phase.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss1Spikeballs(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss2Chase)**
---
--- Egg Slimer's main thinker, for moving in a circle around an Axis and spraying goop around itself.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss2Chase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss2Pogo)**
---
--- Egg Slimer's pinch phase thinker, for pogoing around and spraying goop around itself.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss2Pogo(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss2PogoSFX)**
---
--- Old pogoing thrust behavior used by the Egg Slimer in previous versions of SRB2.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss2PogoSFX(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss2PogoTarget)**
---
--- New pogoing thrust behavior used by the Egg Slimer from v2.1 onwards.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss2PogoTarget(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss2TakeDamage)**
---
--- Egg Slimer's pain-invincibility handler; prevents the actor from being damaged again for a limited time.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss2TakeDamage(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss3Path)**
---
--- Used by the fake Sea Egg clones to behave similarly to the Sea Egg itself, but taking into account where the Sea Egg itself is actually located.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss3Path(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss3TakeDamage)**
---
--- Sea Egg's pain-invincibility handler; allows it to start moving along the paths of boss waypoints again.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss3TakeDamage(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss4Raise)**
---
--- Used by the Eggscalibur to signal when to raise the cage surrounding it.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss4Raise(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss4Reverse)**
---
--- Used by the Eggscalibur to signal when to reverse the direction its spikeball arms spin around it.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss4Reverse(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss4SpeedUp)**
---
--- Used by the Eggscalibur to signal when to increase the speed its spikeball arms spin around it.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss4SpeedUp(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss7Chase)**
---
--- Modified A_Chase for v2.0's Brak Eggman.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss7Chase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss7FireMissiles)**
---
--- Fires four missiles of a specified type from around the actor's middle. Used by v2.0's Brak Eggman to fire grabbable missiles at the player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss7FireMissiles(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BossDeath)**
---
--- Thinker for bosses after they have been defeated.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BossDeath(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/---@param var2 INT32)**
---
--- A specialized firing attack that allows the Egg Mobile (in previous versions of SRB2) and the Sea Egg to fire missiles from specific positions relative to themselves.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BossFireShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BossJetFume)**
---
--- Used to spawn Egg Mobile-style jet fumes, a Sea Egg-style propeller, a Metal Sonic-style jet fume, or an Eggscalibur-style jet flame.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BossJetFume(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BossScream)**
---
--- Used to spawn explosions around the actor during a boss death animation.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BossScream(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BossZoom)**
---
--- An unused action similar in function to A_SkullAttack, but with a modifiable speed.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BossZoom(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BrakChase)**
---
--- Modified A_Chase for Brak Eggman; movement speed and attacks depend on the actor's health.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BrakChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BrakFireShot)**
---
--- Makes the actor shoot an Object at its target, offset to match where Brak Eggman's gun is.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BrakFireShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/---@param var2 INT32)**
---
--- A specialized version of A_LobShot used by Brak Eggman. The actor lobs an Object at the floor a third of the way towards the target, assuming it will bounce the rest of the way.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BrakLobShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FocusTarget)**
---
--- Used by the Egg Mobile's laser to move towards the target player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FocusTarget(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_AttractChase)**
---
--- Thinker for rings, CTF team rings (red and blue) and coins. If a nearby player has an Attraction Shield, the actor will be pulled towards it.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_AttractChase(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_OldRingExplode)**
---
--- Makes the actor explode like the old Explosion Ring from v1.09.4.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_OldRingExplode(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RingDrain)**
---
--- Removes a specified number of rings from the actor's target player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RingDrain(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RingExplode)**
---
--- Makes the actor explode like an Explosion Ring or Grenade Ring.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RingExplode(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ThrownRing)**
---
--- Thinker for thrown rings.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ThrownRing(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_1upThinker)**
---
--- Changes actor's sprite to nearest player's 1-up sprite.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_1upThinker(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_AwardScore)**
---
--- Awards a specified amount of points to a player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_AwardScore(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CustomPower)**
---
--- Gives the target player a power-up.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CustomPower(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_EggmanBox)**
---
--- Deals non-elemental damage to the target player. Used by the Eggman Monitor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_EggmanBox(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ExtraLife)**
---
--- Gives the target player an extra life.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ExtraLife(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GiveShield)**
---
--- Gives the target player a shield.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GiveShield(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GiveWeapon)**
---
--- Gives the target player one or more weapon panels.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GiveWeapon(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GravityBox)**
---
--- Reverses the target player's gravity for the specified time.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GravityBox(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Invincibility)**
---
--- Makes the target player invincible.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Invincibility(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MixUp)**
---
--- Used as a thinker for the Teleport Monitor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MixUp(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MonitorPop)**
---
--- Used as a thinker for when a monitor is popped.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MonitorPop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RecyclePowers)**
---
--- Used as thinker for the Recycler Monitor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RecyclePowers(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RingBox)**
---
--- Gives the target player a certain amount of rings.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RingBox(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SuperSneakers)**
---
--- Gives the target player Super Sneakers.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SuperSneakers(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BubbleSpawn)**
---
--- Spawns a randomly sized bubble if underwater. Used by the Air Bubble Patch.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BubbleSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FanBubbleSpawn)**
---
--- Spawns a randomly sized bubble if underwater. Used by the Fan.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FanBubbleSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GhostMe)**
---
--- Spawns an afterimage of the actor's current position.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GhostMe(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RockSpawn)**
---
--- Spawns rocks at a specified interval.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RockSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SmokeTrailer)**
---
--- Spawns a trail of Objects when used repeatedly.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SmokeTrailer(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SpawnFreshCopy)**
---
--- Spawns a copy of the actor. Used to respawn Brak Eggman's electric barrier.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SpawnFreshCopy(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SpawnObjectAbsolute)**
---
--- Spawns an Object at an absolute location.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SpawnObjectAbsolute(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SpawnObjectRelative)**
---
--- Spawns an Object relative to the actor's position.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SpawnObjectRelative(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ConnectToGround)**
---
--- Spawns as many Objects as needed between an Object and the nearest floor or ceiling.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ConnectToGround(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DropMine)**
---
--- Makes the actor drop an Object.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DropMine(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FireShot)**
---
--- Fires an Object at the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FireShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_LobShot)**
---
--- Lobs an Object at the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_LobShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MissileSplit)**
---
--- When applied to a missile Object, creates a second missile.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MissileSplit(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MultiShot)**
---
--- Shoots multiple Objects horizontally that spread evenly.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MultiShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_NapalmScatter)**
---
--- Scatters a number of projectiles around in a circle; intended for use with Objects that are affected by gravity.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_NapalmScatter(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ShootBullet)**
---
--- Makes the actor fire an Object at its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ShootBullet(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SplitShot)**
---
--- Shoots a missile at either side of the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SplitShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SuperFireShot)**
---
--- Fires an Object at the actor's target that will even stun Super Sonic.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SuperFireShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SuperTurretFire)**
---
--- Rapidly fires projectiles that will even stun Super Sonic.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SuperTurretFire(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_TrapShot)**
---
--- Fires a projectile in a particular direction, rather than at an Object.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_TrapShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_TurretFire)**
---
--- Rapidly fires projectiles at the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_TurretFire(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_TurretStop)**
---
--- Stops A_TurretFire or A_SuperTurretFire.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_TurretStop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VileAttack)**
---
--- Instantly hurts the actor's target if it is in the actor's line of sight. Used as part of Brak Eggman's sniping attack.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VileAttack(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/---@param var2 INT32)**
---
--- Thinker for Brak Eggman's targeting reticule. Keeps the actor in front of its tracer, unless its target cannot see it. Optionally draws a line directly to the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VileFire(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VileTarget)**
---
--- Spawns an Object directly on the actor's target and sets this Object as the actor's tracer. Used as part of Brak Eggman's sniping attack.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VileTarget(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CanarivoreGas)**
---
--- Spawns an object at the actor's X, Y, and Z coordinates.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CanarivoreGas(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Pain)**
---
--- Plays the actor's PainSound.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Pain(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PlayActiveSound)**
---
--- Plays the actor's ActiveSound
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PlayActiveSound(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PlayAttackSound)**
---
--- Plays the actor's AttackSound.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PlayAttackSound(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PlaySeeSound)**
---
--- Plays the actor's SeeSound.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PlaySeeSound(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PlaySound)**
---
--- Plays a sound effect.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PlaySound(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Scream)**
---
--- Plays the actor's DeathSound.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Scream(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DualAction)**
---
--- Performs two actions simultaneously.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DualAction(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Shockwave)**
---
--- Spawns a shockwave of objects. Best used to spawn objects that call A_Boss3ShockThink.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Shockwave(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_LinedefExecute)**
---
--- Executes a linedef executor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_LinedefExecute(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RandomState)**
---
--- Randomly chooses between two states.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RandomState(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RandomStateRange)**
---
--- Randomly chooses a state from a range.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RandomStateRange(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RemoteAction)**
---
--- Tells the actor's target to perform an action remotely.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RemoteAction(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RemoteDamage)**
---
--- Damages, kills or removes the actor or its target/tracer remotely.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RemoteDamage(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetTargetsTarget)**
---
--- Changes the actor's target to the target of its current target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetTargetsTarget(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetObjectState)**
---
--- Sets the state of the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetObjectState(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetObjectTypeState)**
---
--- Sets the state of Objects of a certain Object type.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetObjectTypeState(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeAngleAbsolute)**
---
--- Sets the actor's angle.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeAngleAbsolute(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeAngleRelative)**
---
--- Sets the actor's angle relative to its current angle.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeAngleRelative(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeColorAbsolute)**
---
--- Sets the actor's skin color.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeColorAbsolute(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeColorRelative)**
---
--- Sets the actor's skin color relative to its current skin color.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeColorRelative(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FindTarget)**
---
--- Sets the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FindTarget(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FindTracer)**
---
--- Sets the actor's tracer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FindTracer(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetFuse)**
---
--- Set the actor's fuse timer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetFuse(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetObjectFlags)**
---
--- Modifies the actor's primary Object flags.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetObjectFlags(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetObjectFlags2)**
---
--- Modifies the actor's secondary Object flags.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetObjectFlags2(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetRandomTics)**
---
--- Randomly sets the duration of the actor's current state.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetRandomTics(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetReactionTime)**
---
--- Sets the actor's reaction time.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetReactionTime(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetScale)**
---
--- Sets the actor's scale.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetScale(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetTics)**
---
--- Sets the duration of the actor's current state.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetTics(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_BubbleCheck)**
---
--- Checks if the actor is underwater; if not, the actor turns invisible.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_BubbleCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckAmbush)**
---
--- Calls a specified state if the actor is behind its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckAmbush(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckHealth)**
---
--- Calls a specified state depending on the actor's current health.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckHealth(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckHeight)**
---
--- Calls a specified state depending on the height difference between the actor and its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckHeight(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckRandom)**
---
--- Randomly decides whether or not to call a specified state.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckRandom(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckRange)**
---
--- Calls a specified state depending on the actor's horizontal distance to its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckRange(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckRings)**
---
--- Calls a specified state depending on the total number of rings held by all players.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckRings(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckTargetRings)**
---
--- Calls a specified state depending on the number of rings held by the actor's target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckTargetRings(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckThingCount)**
---
--- Calls a specified state depending on number of active Objects of a specified Object type.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckThingCount(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckTotalRings)**
---
--- Calls a specified state if the total number of rings collected by all players is high enough.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckTotalRings(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckTrueRange)**
---
--- Calls a specified state if the actor's target is in range.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckTrueRange(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChickenCheck)**
---
--- Resets a chicken if it is on the ground.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChickenCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Look)**
---
--- Looks for a player and sets them as the actor's new target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Look(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SearchForPlayers)**
---
--- Calls a specified state if the actor has found a player.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SearchForPlayers(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckCustomValue)**
---
--- Calls a specified state depending on the actor's custom value.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckCustomValue(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckCusValMemo)**
---
--- Calls a specified state depending on the actor's custom memory value.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckCusValMemo(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CusValAction)**
---
--- Remotely calls an action, but modifies Var1 and Var2 depending on the actor's custom value.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CusValAction(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RelayCustomValue)**
---
--- Changes the custom value of the actor's target/tracer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RelayCustomValue(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetCustomValue)**
---
--- Changes the actor's custom value.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetCustomValue(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_UseCusValMemo)**
---
--- Saves or reloads the actor's custom value.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_UseCusValMemo(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckBuddy)**
---
--- Checks if actor's "buddy" has at least one hit point left.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckBuddy(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FaceTarget)**
---
--- Makes the actor face its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FaceTarget(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FaceTracer)**
---
--- Makes the actor face its tracer.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FaceTracer(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_InfoState)**
---
--- Switches to an anchor state.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_InfoState(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Repeat)**
---
--- Returns to a specified state a certain number of times. Useful for looping animations.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Repeat(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyAim)**
---
--- Aims the actor towards a general angle and distance from its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyAim(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickySpawn)**
---
--- Spawns a flicky from the actor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickySpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyCenter)**
---
--- Handles flicky setup when used in conjunction with a placed Thing.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyCenter(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyFly)**
---
--- Boosts the actor through the air (or water) towards its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyFly(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickySoar)**
---
--- A version of A_FlickyFly meant for the Puffin.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickySoar(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyCoast)**
---
--- Slows down the actor's movement, and changes its state.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyCoast(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyHop)**
---
--- Makes the actor hop upon reaching the ground.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyHop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyFlounder)**
---
--- Makes the actor flop about on the floor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyFlounder(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyCheck)**
---
--- Checks the actor's airtime and vertical momentum, and changes its state accordingly.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyHeightCheck)**
---
--- Checks the actor's height against its target, and changes its state accordingly.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyHeightCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlickyFlutter)**
---
--- Slows down the actor and cuts its falling speed.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlickyFlutter(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Explode)**
---
--- Damages Objects within range of the actor.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Explode(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Fall)**
---
--- Changes the actor's flags. Used by players who have died.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Fall(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ForceWin)**
---
--- If there are any living players, makes them finish the level, as if they stepped into the exit sector.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ForceWin(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GoopSplat)**
---
--- Changes the actor's flags. Used by the goop projectiles of v2.0's Brak Eggman.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GoopSplat(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_OverlayThink)**
---
--- Thinker for overlay-like Objects. Moves the actor to the position of its target.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_OverlayThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SetSolidSteam)**
---
--- Makes Gas Jets solid.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SetSolidSteam(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SignPlayer)**
---
--- Changes the state and skin color of the Level End Sign.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SignPlayer(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SlingAppear)**
---
--- Used to make the Hidden Chain appear in the map.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SlingAppear(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SpikeRetract)**
---
--- Toggles the solidity of spikes.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SpikeRetract(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ToggleFlameJet)**
---
--- Turns flame jets on and off.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ToggleFlameJet(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_UnsetSolidSteam)**
---
--- Makes solid Gas Jets intangible again.
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_UnsetSolidSteam(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ArrowBonks)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ArrowBonks(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss3ShockThink)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss3ShockThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5BombExplode)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5BombExplode(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5Calm)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5Calm(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5CheckFalling)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5CheckFalling(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5CheckOnGround)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5CheckOnGround(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5ExtraRepeat)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5ExtraRepeat(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5FindWaypoint)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5FindWaypoint(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5Jump)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5Jump(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5MakeItRain)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5MakeItRain(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5MakeJunk)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5MakeJunk(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Boss5PinchShot)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Boss5PinchShot(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeHeight)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeHeight(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeRollAngleAbsolute)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeRollAngleAbsolute(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ChangeRollAngleRelative)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ChangeRollAngleRelative(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CheckFlags2)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CheckFlags2(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CrushclawAim)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CrushclawAim(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CrushclawLaunch)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CrushclawLaunch(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CrushstaceanPunch)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CrushstaceanPunch(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CrushstaceanWalk)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CrushstaceanWalk(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_CryingToMomma)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_CryingToMomma(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DebrisRandom)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DebrisRandom(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DoNPCPain)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DoNPCPain(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DoNPCSkid)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DoNPCSkid(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DragonbomberSpawn)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DragonbomberSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DragonSegment)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DragonSegment(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DragonWing)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DragonWing(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_DustDevilThink)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_DustDevilThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_Dye)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_Dye(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FaceStabHurl)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FaceStabHurl(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FaceStabMiss)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FaceStabMiss(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FaceStabRev)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FaceStabRev(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FadeOverlay)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FadeOverlay(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FallingLavaCheck)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FallingLavaCheck(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FireShrink)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FireShrink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_FlameParticle)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_FlameParticle(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GoldMonitorPop)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GoldMonitorPop(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GoldMonitorRestore)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GoldMonitorRestore(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_GoldMonitorSparkle)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_GoldMonitorSparkle(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_HoodFall)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_HoodFall(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_HoodFire)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_HoodFire(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_KillSegments)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_KillSegments(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_LavafallLava)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_LavafallLava(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_LavafallRocks)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_LavafallRocks(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_LightBeamReset)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_LightBeamReset(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_LookForBetter)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_LookForBetter(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MinecartSparkThink)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MinecartSparkThink(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MineExplode)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MineExplode(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MineRange)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MineRange(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ModuloToState)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ModuloToState(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_MultiShotDist)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_MultiShotDist(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_ParentTriesToSleep)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_ParentTriesToSleep(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PrepareRepeat)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PrepareRepeat(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_PterabyteHover)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_PterabyteHover(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RollAngle)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RollAngle(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RolloutRock)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RolloutRock(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_RolloutSpawn)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_RolloutSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SaloonDoorSpawn)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SaloonDoorSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SharpDecel)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SharpDecel(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SignSpin)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SignSpin(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SnapperSpawn)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SnapperSpawn(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SnapperThinker)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SnapperThinker(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SpawnParticleRelative)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SpawnParticleRelative(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_SpawnPterabytes)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_SpawnPterabytes(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_StateRangeByAngle)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_StateRangeByAngle(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_StateRangeByParameter)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_StateRangeByParameter(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_StatueBurst)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_StatueBurst(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_TNTExplode)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_TNTExplode(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_TrainCameo)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_TrainCameo(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_TrainCameo2)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_TrainCameo2(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VultureBlast)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VultureBlast(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VultureFly)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VultureFly(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_VultureHover)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_VultureHover(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/A_WhoCaresIfYourSonIsABee)**
---
---@param actor mobj_t
---@param var1? INT32
---@param var2? INT32
function A_WhoCaresIfYourSonIsABee(actor, var1, var2) end


---Empty state, automatically removes the Object that uses it from existence
S_NULL = 0
---Used as a fallback when a state cannot be found, displays a warning graphic
S_UNKNOWN = 1
---Generic state with indeterminate duration for invisible Objects
S_INVISIBLE = 2
---Auxiliary state, automatically redirects the Object that uses it to its `SpawnState`
S_SPAWNSTATE = 3
---Automatically redirects the Object that uses it to its `SeeState`
S_SEESTATE = 4
---Automatically redirects the Object that uses it to its `MeleeState`
S_MELEESTATE = 5
---Automatically redirects the Object that uses it to its `MissileState`
S_MISSILESTATE = 6
---Automatically redirects the Object that uses it to its `DeathState`
S_DEATHSTATE = 7
---Automatically redirects the Object that uses it to its `XDeathState`
S_XDEATHSTATE = 8
---Automatically redirects the Object that uses it to its `RaiseState`
S_RAISESTATE = 9
S_THOK = 10
S_PLAY_STND = 11
S_PLAY_WAIT = 12
S_PLAY_WALK = 13
S_PLAY_SKID = 14
S_PLAY_RUN = 15
S_PLAY_DASH = 16
S_PLAY_PAIN = 17
S_PLAY_STUN = 18
S_PLAY_DEAD = 19
S_PLAY_DRWN = 20
S_PLAY_ROLL = 21
S_PLAY_GASP = 22
S_PLAY_JUMP = 23
S_PLAY_SPRING = 24
S_PLAY_FALL = 25
S_PLAY_EDGE = 26
S_PLAY_RIDE = 27
S_PLAY_SPINDASH = 28
S_PLAY_FLY = 29
S_PLAY_SWIM = 30
S_PLAY_FLY_TIRED = 31
S_PLAY_GLIDE = 32
S_PLAY_GLIDE_LANDING = 33
S_PLAY_CLING = 34
S_PLAY_CLIMB = 35
S_PLAY_FLOAT = 36
S_PLAY_FLOAT_RUN = 37
S_PLAY_BOUNCE = 38
S_PLAY_BOUNCE_LANDING = 39
S_PLAY_FIRE = 40
S_PLAY_FIRE_FINISH = 41
S_PLAY_TWINSPIN = 42
S_PLAY_MELEE = 43
S_PLAY_MELEE_FINISH = 44
S_PLAY_MELEE_LANDING = 45
S_PLAY_SUPER_TRANS1 = 46
S_PLAY_SUPER_TRANS2 = 47
S_PLAY_SUPER_TRANS3 = 48
S_PLAY_SUPER_TRANS4 = 49
S_PLAY_SUPER_TRANS5 = 50
S_PLAY_SUPER_TRANS6 = 51
S_OBJPLACE_DUMMY = 52
S_PLAY_BOX1 = 53
S_PLAY_BOX2 = 54
S_PLAY_ICON1 = 55
S_PLAY_ICON2 = 56
S_PLAY_ICON3 = 57
S_PLAY_SIGN = 58
S_PLAY_NIGHTS_TRANS1 = 59
S_PLAY_NIGHTS_TRANS2 = 60
S_PLAY_NIGHTS_TRANS3 = 61
S_PLAY_NIGHTS_TRANS4 = 62
S_PLAY_NIGHTS_TRANS5 = 63
S_PLAY_NIGHTS_TRANS6 = 64
S_PLAY_NIGHTS_STAND = 65
S_PLAY_NIGHTS_FLOAT = 66
S_PLAY_NIGHTS_FLY = 67
S_PLAY_NIGHTS_DRILL = 68
S_PLAY_NIGHTS_STUN = 69
S_PLAY_NIGHTS_PULL = 70
S_PLAY_NIGHTS_ATTACK = 71
S_TAILSOVERLAY_STAND = 72
S_TAILSOVERLAY_0DEGREES = 73
S_TAILSOVERLAY_PLUS30DEGREES = 74
S_TAILSOVERLAY_PLUS60DEGREES = 75
S_TAILSOVERLAY_MINUS30DEGREES = 76
S_TAILSOVERLAY_MINUS60DEGREES = 77
S_TAILSOVERLAY_RUN = 78
S_TAILSOVERLAY_FLY = 79
S_TAILSOVERLAY_TIRE = 80
S_TAILSOVERLAY_PAIN = 81
S_TAILSOVERLAY_GASP = 82
S_TAILSOVERLAY_EDGE = 83
S_TAILSOVERLAY_DASH = 84
S_JETFUMEFLASH = 85
S_POSS_STND = 86
S_POSS_RUN1 = 87
S_POSS_RUN2 = 88
S_POSS_RUN3 = 89
S_POSS_RUN4 = 90
S_POSS_RUN5 = 91
S_POSS_RUN6 = 92
S_SPOS_STND = 93
S_SPOS_RUN1 = 94
S_SPOS_RUN2 = 95
S_SPOS_RUN3 = 96
S_SPOS_RUN4 = 97
S_SPOS_RUN5 = 98
S_SPOS_RUN6 = 99
S_FISH1 = 100
S_FISH2 = 101
S_FISH3 = 102
S_FISH4 = 103
S_BUZZLOOK1 = 104
S_BUZZLOOK2 = 105
S_BUZZFLY1 = 106
S_BUZZFLY2 = 107
S_RBUZZLOOK1 = 108
S_RBUZZLOOK2 = 109
S_RBUZZFLY1 = 110
S_RBUZZFLY2 = 111
S_JETBLOOK1 = 112
S_JETBLOOK2 = 113
S_JETBZOOM1 = 114
S_JETBZOOM2 = 115
S_JETGLOOK1 = 116
S_JETGLOOK2 = 117
S_JETGZOOM1 = 118
S_JETGZOOM2 = 119
S_JETGSHOOT1 = 120
S_JETGSHOOT2 = 121
S_CCOMMAND1 = 122
S_CCOMMAND2 = 123
S_CCOMMAND3 = 124
S_CCOMMAND4 = 125
S_DETON1 = 126
S_DETON2 = 127
S_DETON3 = 128
S_DETON4 = 129
S_DETON5 = 130
S_DETON6 = 131
S_DETON7 = 132
S_DETON8 = 133
S_DETON9 = 134
S_DETON10 = 135
S_DETON11 = 136
S_DETON12 = 137
S_DETON13 = 138
S_DETON14 = 139
S_DETON15 = 140
S_SKIM1 = 141
S_SKIM2 = 142
S_SKIM3 = 143
S_SKIM4 = 144
S_TURRET = 145
S_TURRETFIRE = 146
S_TURRETSHOCK1 = 147
S_TURRETSHOCK2 = 148
S_TURRETSHOCK3 = 149
S_TURRETSHOCK4 = 150
S_TURRETSHOCK5 = 151
S_TURRETSHOCK6 = 152
S_TURRETSHOCK7 = 153
S_TURRETSHOCK8 = 154
S_TURRETSHOCK9 = 155
S_TURRETLOOK = 156
S_TURRETSEE = 157
S_TURRETPOPUP1 = 158
S_TURRETPOPUP2 = 159
S_TURRETPOPUP3 = 160
S_TURRETPOPUP4 = 161
S_TURRETPOPUP5 = 162
S_TURRETPOPUP6 = 163
S_TURRETPOPUP7 = 164
S_TURRETPOPUP8 = 165
S_TURRETSHOOT = 166
S_TURRETPOPDOWN1 = 167
S_TURRETPOPDOWN2 = 168
S_TURRETPOPDOWN3 = 169
S_TURRETPOPDOWN4 = 170
S_TURRETPOPDOWN5 = 171
S_TURRETPOPDOWN6 = 172
S_TURRETPOPDOWN7 = 173
S_TURRETPOPDOWN8 = 174
S_SPINCUSHION_LOOK = 175
S_SPINCUSHION_CHASE1 = 176
S_SPINCUSHION_CHASE2 = 177
S_SPINCUSHION_CHASE3 = 178
S_SPINCUSHION_CHASE4 = 179
S_SPINCUSHION_AIM1 = 180
S_SPINCUSHION_AIM2 = 181
S_SPINCUSHION_AIM3 = 182
S_SPINCUSHION_AIM4 = 183
S_SPINCUSHION_AIM5 = 184
S_SPINCUSHION_SPIN1 = 185
S_SPINCUSHION_SPIN2 = 186
S_SPINCUSHION_SPIN3 = 187
S_SPINCUSHION_SPIN4 = 188
S_SPINCUSHION_STOP1 = 189
S_SPINCUSHION_STOP2 = 190
S_SPINCUSHION_STOP3 = 191
S_SPINCUSHION_STOP4 = 192
S_CRUSHSTACEAN_ROAM1 = 193
S_CRUSHSTACEAN_ROAM2 = 194
S_CRUSHSTACEAN_ROAM3 = 195
S_CRUSHSTACEAN_ROAM4 = 196
S_CRUSHSTACEAN_ROAMPAUSE = 197
S_CRUSHSTACEAN_PUNCH1 = 198
S_CRUSHSTACEAN_PUNCH2 = 199
S_CRUSHCLAW_AIM = 200
S_CRUSHCLAW_OUT = 201
S_CRUSHCLAW_STAY = 202
S_CRUSHCLAW_IN = 203
S_CRUSHCLAW_WAIT = 204
S_CRUSHCHAIN = 205
S_BANPYURA_ROAM1 = 206
S_BANPYURA_ROAM2 = 207
S_BANPYURA_ROAM3 = 208
S_BANPYURA_ROAM4 = 209
S_BANPYURA_ROAMPAUSE = 210
S_CDIAG1 = 211
S_CDIAG2 = 212
S_CDIAG3 = 213
S_CDIAG4 = 214
S_CDIAG5 = 215
S_CDIAG6 = 216
S_CDIAG7 = 217
S_CDIAG8 = 218
S_JETJAW_ROAM1 = 219
S_JETJAW_ROAM2 = 220
S_JETJAW_ROAM3 = 221
S_JETJAW_ROAM4 = 222
S_JETJAW_ROAM5 = 223
S_JETJAW_ROAM6 = 224
S_JETJAW_ROAM7 = 225
S_JETJAW_ROAM8 = 226
S_JETJAW_CHOMP1 = 227
S_JETJAW_CHOMP2 = 228
S_JETJAW_CHOMP3 = 229
S_JETJAW_CHOMP4 = 230
S_JETJAW_CHOMP5 = 231
S_JETJAW_CHOMP6 = 232
S_JETJAW_CHOMP7 = 233
S_JETJAW_CHOMP8 = 234
S_JETJAW_CHOMP9 = 235
S_JETJAW_CHOMP10 = 236
S_JETJAW_CHOMP11 = 237
S_JETJAW_CHOMP12 = 238
S_JETJAW_CHOMP13 = 239
S_JETJAW_CHOMP14 = 240
S_JETJAW_CHOMP15 = 241
S_JETJAW_CHOMP16 = 242
S_JETJAW_SOUND = 243
S_SNAILER1 = 244
S_SNAILER_FLICKY = 245
S_VULTURE_STND = 246
S_VULTURE_DRIFT = 247
S_VULTURE_ZOOM1 = 248
S_VULTURE_ZOOM2 = 249
S_VULTURE_STUNNED = 250
S_POINTY1 = 251
S_POINTYBALL1 = 252
S_ROBOHOOD_LOOK = 253
S_ROBOHOOD_STAND = 254
S_ROBOHOOD_FIRE1 = 255
S_ROBOHOOD_FIRE2 = 256
S_ROBOHOOD_JUMP1 = 257
S_ROBOHOOD_JUMP2 = 258
S_ROBOHOOD_JUMP3 = 259
S_FACESTABBER_STND1 = 260
S_FACESTABBER_STND2 = 261
S_FACESTABBER_STND3 = 262
S_FACESTABBER_STND4 = 263
S_FACESTABBER_STND5 = 264
S_FACESTABBER_STND6 = 265
S_FACESTABBER_CHARGE1 = 266
S_FACESTABBER_CHARGE2 = 267
S_FACESTABBER_CHARGE3 = 268
S_FACESTABBER_CHARGE4 = 269
S_FACESTABBER_PAIN = 270
S_FACESTABBER_DIE1 = 271
S_FACESTABBER_DIE2 = 272
S_FACESTABBER_DIE3 = 273
S_FACESTABBERSPEAR = 274
S_EGGGUARD_STND = 275
S_EGGGUARD_WALK1 = 276
S_EGGGUARD_WALK2 = 277
S_EGGGUARD_WALK3 = 278
S_EGGGUARD_WALK4 = 279
S_EGGGUARD_MAD1 = 280
S_EGGGUARD_MAD2 = 281
S_EGGGUARD_MAD3 = 282
S_EGGGUARD_RUN1 = 283
S_EGGGUARD_RUN2 = 284
S_EGGGUARD_RUN3 = 285
S_EGGGUARD_RUN4 = 286
S_EGGSHIELD = 287
S_EGGSHIELDBREAK = 288
S_SNAPPER_SPAWN = 289
S_SNAPPER_SPAWN2 = 290
S_GSNAPPER_STND = 291
S_GSNAPPER1 = 292
S_GSNAPPER2 = 293
S_GSNAPPER3 = 294
S_GSNAPPER4 = 295
S_SNAPPER_XPLD = 296
S_SNAPPER_LEG = 297
S_SNAPPER_LEGRAISE = 298
S_SNAPPER_HEAD = 299
S_MINUS_INIT = 300
S_MINUS_STND = 301
S_MINUS_DIGGING1 = 302
S_MINUS_DIGGING2 = 303
S_MINUS_DIGGING3 = 304
S_MINUS_DIGGING4 = 305
S_MINUS_BURST0 = 306
S_MINUS_BURST1 = 307
S_MINUS_BURST2 = 308
S_MINUS_BURST3 = 309
S_MINUS_BURST4 = 310
S_MINUS_BURST5 = 311
S_MINUS_POPUP = 312
S_MINUS_AERIAL1 = 313
S_MINUS_AERIAL2 = 314
S_MINUS_AERIAL3 = 315
S_MINUS_AERIAL4 = 316
S_MINUSDIRT1 = 317
S_MINUSDIRT2 = 318
S_MINUSDIRT3 = 319
S_MINUSDIRT4 = 320
S_MINUSDIRT5 = 321
S_MINUSDIRT6 = 322
S_MINUSDIRT7 = 323
S_SSHELL_STND = 324
S_SSHELL_RUN1 = 325
S_SSHELL_RUN2 = 326
S_SSHELL_RUN3 = 327
S_SSHELL_RUN4 = 328
S_SSHELL_SPRING1 = 329
S_SSHELL_SPRING2 = 330
S_SSHELL_SPRING3 = 331
S_SSHELL_SPRING4 = 332
S_YSHELL_STND = 333
S_YSHELL_RUN1 = 334
S_YSHELL_RUN2 = 335
S_YSHELL_RUN3 = 336
S_YSHELL_RUN4 = 337
S_YSHELL_SPRING1 = 338
S_YSHELL_SPRING2 = 339
S_YSHELL_SPRING3 = 340
S_YSHELL_SPRING4 = 341
S_UNIDUS_STND = 342
S_UNIDUS_RUN = 343
S_UNIDUS_BALL = 344
S_CANARIVORE_LOOK = 345
S_CANARIVORE_AWAKEN1 = 346
S_CANARIVORE_AWAKEN2 = 347
S_CANARIVORE_AWAKEN3 = 348
S_CANARIVORE_GAS1 = 349
S_CANARIVORE_GAS2 = 350
S_CANARIVORE_GAS3 = 351
S_CANARIVORE_GAS4 = 352
S_CANARIVORE_GAS5 = 353
S_CANARIVORE_GASREPEAT = 354
S_CANARIVORE_CLOSE1 = 355
S_CANARIVORE_CLOSE2 = 356
S_CANARIVOREGAS_1 = 357
S_CANARIVOREGAS_2 = 358
S_CANARIVOREGAS_3 = 359
S_CANARIVOREGAS_4 = 360
S_CANARIVOREGAS_5 = 361
S_CANARIVOREGAS_6 = 362
S_CANARIVOREGAS_7 = 363
S_CANARIVOREGAS_8 = 364
S_PYREFLY_FLY = 365
S_PYREFLY_BURN = 366
S_PYREFIRE1 = 367
S_PYREFIRE2 = 368
S_PTERABYTESPAWNER = 369
S_PTERABYTEWAYPOINT = 370
S_PTERABYTE_FLY1 = 371
S_PTERABYTE_FLY2 = 372
S_PTERABYTE_FLY3 = 373
S_PTERABYTE_FLY4 = 374
S_PTERABYTE_SWOOPDOWN = 375
S_PTERABYTE_SWOOPUP = 376
S_DRAGONBOMBER = 377
S_DRAGONWING1 = 378
S_DRAGONWING2 = 379
S_DRAGONWING3 = 380
S_DRAGONWING4 = 381
S_DRAGONTAIL_LOADED = 382
S_DRAGONTAIL_EMPTY = 383
S_DRAGONTAIL_EMPTYLOOP = 384
S_DRAGONTAIL_RELOAD = 385
S_DRAGONMINE = 386
S_DRAGONMINE_LAND1 = 387
S_DRAGONMINE_LAND2 = 388
S_DRAGONMINE_SLOWFLASH1 = 389
S_DRAGONMINE_SLOWFLASH2 = 390
S_DRAGONMINE_SLOWLOOP = 391
S_DRAGONMINE_FASTFLASH1 = 392
S_DRAGONMINE_FASTFLASH2 = 393
S_DRAGONMINE_FASTLOOP = 394
S_BOSSEXPLODE = 395
S_SONIC3KBOSSEXPLOSION1 = 396
S_SONIC3KBOSSEXPLOSION2 = 397
S_SONIC3KBOSSEXPLOSION3 = 398
S_SONIC3KBOSSEXPLOSION4 = 399
S_SONIC3KBOSSEXPLOSION5 = 400
S_SONIC3KBOSSEXPLOSION6 = 401
S_JETFUME1 = 402
S_EGGMOBILE_STND = 403
S_EGGMOBILE_ROFL = 404
S_EGGMOBILE_LATK1 = 405
S_EGGMOBILE_LATK2 = 406
S_EGGMOBILE_LATK3 = 407
S_EGGMOBILE_LATK4 = 408
S_EGGMOBILE_LATK5 = 409
S_EGGMOBILE_LATK6 = 410
S_EGGMOBILE_LATK7 = 411
S_EGGMOBILE_LATK8 = 412
S_EGGMOBILE_LATK9 = 413
S_EGGMOBILE_RATK1 = 414
S_EGGMOBILE_RATK2 = 415
S_EGGMOBILE_RATK3 = 416
S_EGGMOBILE_RATK4 = 417
S_EGGMOBILE_RATK5 = 418
S_EGGMOBILE_RATK6 = 419
S_EGGMOBILE_RATK7 = 420
S_EGGMOBILE_RATK8 = 421
S_EGGMOBILE_RATK9 = 422
S_EGGMOBILE_PANIC1 = 423
S_EGGMOBILE_PANIC2 = 424
S_EGGMOBILE_PANIC3 = 425
S_EGGMOBILE_PANIC4 = 426
S_EGGMOBILE_PANIC5 = 427
S_EGGMOBILE_PANIC6 = 428
S_EGGMOBILE_PANIC7 = 429
S_EGGMOBILE_PANIC8 = 430
S_EGGMOBILE_PANIC9 = 431
S_EGGMOBILE_PANIC10 = 432
S_EGGMOBILE_PANIC11 = 433
S_EGGMOBILE_PANIC12 = 434
S_EGGMOBILE_PANIC13 = 435
S_EGGMOBILE_PANIC14 = 436
S_EGGMOBILE_PANIC15 = 437
S_EGGMOBILE_PAIN = 438
S_EGGMOBILE_PAIN2 = 439
S_EGGMOBILE_DIE1 = 440
S_EGGMOBILE_DIE2 = 441
S_EGGMOBILE_DIE3 = 442
S_EGGMOBILE_DIE4 = 443
S_EGGMOBILE_FLEE1 = 444
S_EGGMOBILE_FLEE2 = 445
S_EGGMOBILE_BALL = 446
S_EGGMOBILE_TARGET = 447
S_BOSSEGLZ1 = 448
S_BOSSEGLZ2 = 449
S_EGGMOBILE2_STND = 450
S_EGGMOBILE2_POGO1 = 451
S_EGGMOBILE2_POGO2 = 452
S_EGGMOBILE2_POGO3 = 453
S_EGGMOBILE2_POGO4 = 454
S_EGGMOBILE2_POGO5 = 455
S_EGGMOBILE2_POGO6 = 456
S_EGGMOBILE2_POGO7 = 457
S_EGGMOBILE2_PAIN = 458
S_EGGMOBILE2_PAIN2 = 459
S_EGGMOBILE2_DIE1 = 460
S_EGGMOBILE2_DIE2 = 461
S_EGGMOBILE2_DIE3 = 462
S_EGGMOBILE2_DIE4 = 463
S_EGGMOBILE2_FLEE1 = 464
S_EGGMOBILE2_FLEE2 = 465
S_BOSSTANK1 = 466
S_BOSSTANK2 = 467
S_BOSSSPIGOT = 468
S_GOOP1 = 469
S_GOOP2 = 470
S_GOOP3 = 471
S_GOOPTRAIL = 472
S_EGGMOBILE3_STND = 473
S_EGGMOBILE3_SHOCK = 474
S_EGGMOBILE3_ATK1 = 475
S_EGGMOBILE3_ATK2 = 476
S_EGGMOBILE3_ATK3A = 477
S_EGGMOBILE3_ATK3B = 478
S_EGGMOBILE3_ATK3C = 479
S_EGGMOBILE3_ATK3D = 480
S_EGGMOBILE3_ATK4 = 481
S_EGGMOBILE3_ATK5 = 482
S_EGGMOBILE3_ROFL = 483
S_EGGMOBILE3_PAIN = 484
S_EGGMOBILE3_PAIN2 = 485
S_EGGMOBILE3_DIE1 = 486
S_EGGMOBILE3_DIE2 = 487
S_EGGMOBILE3_DIE3 = 488
S_EGGMOBILE3_DIE4 = 489
S_EGGMOBILE3_FLEE1 = 490
S_EGGMOBILE3_FLEE2 = 491
S_FAKEMOBILE_INIT = 492
S_FAKEMOBILE = 493
S_FAKEMOBILE_ATK1 = 494
S_FAKEMOBILE_ATK2 = 495
S_FAKEMOBILE_ATK3A = 496
S_FAKEMOBILE_ATK3B = 497
S_FAKEMOBILE_ATK3C = 498
S_FAKEMOBILE_ATK3D = 499
S_FAKEMOBILE_DIE1 = 500
S_FAKEMOBILE_DIE2 = 501
S_BOSSSEBH1 = 502
S_BOSSSEBH2 = 503
S_SHOCKWAVE1 = 504
S_SHOCKWAVE2 = 505
S_EGGMOBILE4_STND = 506
S_EGGMOBILE4_LATK1 = 507
S_EGGMOBILE4_LATK2 = 508
S_EGGMOBILE4_LATK3 = 509
S_EGGMOBILE4_LATK4 = 510
S_EGGMOBILE4_LATK5 = 511
S_EGGMOBILE4_LATK6 = 512
S_EGGMOBILE4_RATK1 = 513
S_EGGMOBILE4_RATK2 = 514
S_EGGMOBILE4_RATK3 = 515
S_EGGMOBILE4_RATK4 = 516
S_EGGMOBILE4_RATK5 = 517
S_EGGMOBILE4_RATK6 = 518
S_EGGMOBILE4_RAISE1 = 519
S_EGGMOBILE4_RAISE2 = 520
S_EGGMOBILE4_PAIN1 = 521
S_EGGMOBILE4_PAIN2 = 522
S_EGGMOBILE4_DIE1 = 523
S_EGGMOBILE4_DIE2 = 524
S_EGGMOBILE4_DIE3 = 525
S_EGGMOBILE4_DIE4 = 526
S_EGGMOBILE4_FLEE1 = 527
S_EGGMOBILE4_FLEE2 = 528
S_EGGMOBILE4_MACE = 529
S_EGGMOBILE4_MACE_DIE1 = 530
S_EGGMOBILE4_MACE_DIE2 = 531
S_EGGMOBILE4_MACE_DIE3 = 532
S_JETFLAME = 533
S_EGGROBO1_STND = 534
S_EGGROBO1_BSLAP1 = 535
S_EGGROBO1_BSLAP2 = 536
S_EGGROBO1_PISSED = 537
S_EGGROBOJET = 538
S_FANG_SETUP = 539
S_FANG_INTRO0 = 540
S_FANG_INTRO1 = 541
S_FANG_INTRO2 = 542
S_FANG_INTRO3 = 543
S_FANG_INTRO4 = 544
S_FANG_INTRO5 = 545
S_FANG_INTRO6 = 546
S_FANG_INTRO7 = 547
S_FANG_INTRO8 = 548
S_FANG_INTRO9 = 549
S_FANG_INTRO10 = 550
S_FANG_INTRO11 = 551
S_FANG_INTRO12 = 552
S_FANG_CLONE1 = 553
S_FANG_CLONE2 = 554
S_FANG_CLONE3 = 555
S_FANG_CLONE4 = 556
S_FANG_IDLE0 = 557
S_FANG_IDLE1 = 558
S_FANG_IDLE2 = 559
S_FANG_IDLE3 = 560
S_FANG_IDLE4 = 561
S_FANG_IDLE5 = 562
S_FANG_IDLE6 = 563
S_FANG_IDLE7 = 564
S_FANG_IDLE8 = 565
S_FANG_PAIN1 = 566
S_FANG_PAIN2 = 567
S_FANG_PATHINGSTART1 = 568
S_FANG_PATHINGSTART2 = 569
S_FANG_PATHING = 570
S_FANG_BOUNCE1 = 571
S_FANG_BOUNCE2 = 572
S_FANG_BOUNCE3 = 573
S_FANG_BOUNCE4 = 574
S_FANG_FALL1 = 575
S_FANG_FALL2 = 576
S_FANG_CHECKPATH1 = 577
S_FANG_CHECKPATH2 = 578
S_FANG_PATHINGCONT1 = 579
S_FANG_PATHINGCONT2 = 580
S_FANG_PATHINGCONT3 = 581
S_FANG_SKID1 = 582
S_FANG_SKID2 = 583
S_FANG_SKID3 = 584
S_FANG_CHOOSEATTACK = 585
S_FANG_FIRESTART1 = 586
S_FANG_FIRESTART2 = 587
S_FANG_FIRE1 = 588
S_FANG_FIRE2 = 589
S_FANG_FIRE3 = 590
S_FANG_FIRE4 = 591
S_FANG_FIREREPEAT = 592
S_FANG_LOBSHOT0 = 593
S_FANG_LOBSHOT1 = 594
S_FANG_LOBSHOT2 = 595
S_FANG_WAIT1 = 596
S_FANG_WAIT2 = 597
S_FANG_WALLHIT = 598
S_FANG_PINCHPATHINGSTART1 = 599
S_FANG_PINCHPATHINGSTART2 = 600
S_FANG_PINCHPATHING = 601
S_FANG_PINCHBOUNCE0 = 602
S_FANG_PINCHBOUNCE1 = 603
S_FANG_PINCHBOUNCE2 = 604
S_FANG_PINCHBOUNCE3 = 605
S_FANG_PINCHBOUNCE4 = 606
S_FANG_PINCHFALL0 = 607
S_FANG_PINCHFALL1 = 608
S_FANG_PINCHFALL2 = 609
S_FANG_PINCHSKID1 = 610
S_FANG_PINCHSKID2 = 611
S_FANG_PINCHLOBSHOT0 = 612
S_FANG_PINCHLOBSHOT1 = 613
S_FANG_PINCHLOBSHOT2 = 614
S_FANG_PINCHLOBSHOT3 = 615
S_FANG_PINCHLOBSHOT4 = 616
S_FANG_DIE1 = 617
S_FANG_DIE2 = 618
S_FANG_DIE3 = 619
S_FANG_DIE4 = 620
S_FANG_DIE5 = 621
S_FANG_DIE6 = 622
S_FANG_DIE7 = 623
S_FANG_DIE8 = 624
S_FANG_FLEEPATHING1 = 625
S_FANG_FLEEPATHING2 = 626
S_FANG_FLEEBOUNCE1 = 627
S_FANG_FLEEBOUNCE2 = 628
S_FANG_KO = 629
S_BROKENROBOTRANDOM = 630
S_BROKENROBOTA = 631
S_BROKENROBOTB = 632
S_BROKENROBOTC = 633
S_BROKENROBOTD = 634
S_BROKENROBOTE = 635
S_BROKENROBOTF = 636
S_ALART1 = 637
S_ALART2 = 638
S_VWREF = 639
S_VWREB = 640
S_PROJECTORLIGHT1 = 641
S_PROJECTORLIGHT2 = 642
S_PROJECTORLIGHT3 = 643
S_PROJECTORLIGHT4 = 644
S_PROJECTORLIGHT5 = 645
S_FBOMB1 = 646
S_FBOMB2 = 647
S_FBOMB_EXPL1 = 648
S_FBOMB_EXPL2 = 649
S_FBOMB_EXPL3 = 650
S_FBOMB_EXPL4 = 651
S_FBOMB_EXPL5 = 652
S_FBOMB_EXPL6 = 653
S_TNTDUST_1 = 654
S_TNTDUST_2 = 655
S_TNTDUST_3 = 656
S_TNTDUST_4 = 657
S_TNTDUST_5 = 658
S_TNTDUST_6 = 659
S_TNTDUST_7 = 660
S_TNTDUST_8 = 661
S_FSGNA = 662
S_FSGNB = 663
S_FSGNC = 664
S_FSGND = 665
S_BLACKEGG_STND = 666
S_BLACKEGG_STND2 = 667
S_BLACKEGG_WALK1 = 668
S_BLACKEGG_WALK2 = 669
S_BLACKEGG_WALK3 = 670
S_BLACKEGG_WALK4 = 671
S_BLACKEGG_WALK5 = 672
S_BLACKEGG_WALK6 = 673
S_BLACKEGG_SHOOT1 = 674
S_BLACKEGG_SHOOT2 = 675
S_BLACKEGG_PAIN1 = 676
S_BLACKEGG_PAIN2 = 677
S_BLACKEGG_PAIN3 = 678
S_BLACKEGG_PAIN4 = 679
S_BLACKEGG_PAIN5 = 680
S_BLACKEGG_PAIN6 = 681
S_BLACKEGG_PAIN7 = 682
S_BLACKEGG_PAIN8 = 683
S_BLACKEGG_PAIN9 = 684
S_BLACKEGG_PAIN10 = 685
S_BLACKEGG_PAIN11 = 686
S_BLACKEGG_PAIN12 = 687
S_BLACKEGG_PAIN13 = 688
S_BLACKEGG_PAIN14 = 689
S_BLACKEGG_PAIN15 = 690
S_BLACKEGG_PAIN16 = 691
S_BLACKEGG_PAIN17 = 692
S_BLACKEGG_PAIN18 = 693
S_BLACKEGG_PAIN19 = 694
S_BLACKEGG_PAIN20 = 695
S_BLACKEGG_PAIN21 = 696
S_BLACKEGG_PAIN22 = 697
S_BLACKEGG_PAIN23 = 698
S_BLACKEGG_PAIN24 = 699
S_BLACKEGG_PAIN25 = 700
S_BLACKEGG_PAIN26 = 701
S_BLACKEGG_PAIN27 = 702
S_BLACKEGG_PAIN28 = 703
S_BLACKEGG_PAIN29 = 704
S_BLACKEGG_PAIN30 = 705
S_BLACKEGG_PAIN31 = 706
S_BLACKEGG_PAIN32 = 707
S_BLACKEGG_PAIN33 = 708
S_BLACKEGG_PAIN34 = 709
S_BLACKEGG_PAIN35 = 710
S_BLACKEGG_HITFACE1 = 711
S_BLACKEGG_HITFACE2 = 712
S_BLACKEGG_HITFACE3 = 713
S_BLACKEGG_HITFACE4 = 714
S_BLACKEGG_DIE1 = 715
S_BLACKEGG_DIE2 = 716
S_BLACKEGG_DIE3 = 717
S_BLACKEGG_DIE4 = 718
S_BLACKEGG_DIE5 = 719
S_BLACKEGG_MISSILE1 = 720
S_BLACKEGG_MISSILE2 = 721
S_BLACKEGG_MISSILE3 = 722
S_BLACKEGG_GOOP = 723
S_BLACKEGG_JUMP1 = 724
S_BLACKEGG_JUMP2 = 725
S_BLACKEGG_DESTROYPLAT1 = 726
S_BLACKEGG_DESTROYPLAT2 = 727
S_BLACKEGG_DESTROYPLAT3 = 728
S_BLACKEGG_HELPER = 729
S_BLACKEGG_GOOP1 = 730
S_BLACKEGG_GOOP2 = 731
S_BLACKEGG_GOOP3 = 732
S_BLACKEGG_GOOP4 = 733
S_BLACKEGG_GOOP5 = 734
S_BLACKEGG_GOOP6 = 735
S_BLACKEGG_GOOP7 = 736
S_BLACKEGG_MISSILE = 737
S_CYBRAKDEMON_IDLE = 738
S_CYBRAKDEMON_WALK1 = 739
S_CYBRAKDEMON_WALK2 = 740
S_CYBRAKDEMON_WALK3 = 741
S_CYBRAKDEMON_WALK4 = 742
S_CYBRAKDEMON_WALK5 = 743
S_CYBRAKDEMON_WALK6 = 744
S_CYBRAKDEMON_CHOOSE_ATTACK1 = 745
S_CYBRAKDEMON_MISSILE_ATTACK1 = 746
S_CYBRAKDEMON_MISSILE_ATTACK2 = 747
S_CYBRAKDEMON_MISSILE_ATTACK3 = 748
S_CYBRAKDEMON_MISSILE_ATTACK4 = 749
S_CYBRAKDEMON_MISSILE_ATTACK5 = 750
S_CYBRAKDEMON_MISSILE_ATTACK6 = 751
S_CYBRAKDEMON_FLAME_ATTACK1 = 752
S_CYBRAKDEMON_FLAME_ATTACK2 = 753
S_CYBRAKDEMON_FLAME_ATTACK3 = 754
S_CYBRAKDEMON_FLAME_ATTACK4 = 755
S_CYBRAKDEMON_CHOOSE_ATTACK2 = 756
S_CYBRAKDEMON_VILE_ATTACK1 = 757
S_CYBRAKDEMON_VILE_ATTACK2 = 758
S_CYBRAKDEMON_VILE_ATTACK3 = 759
S_CYBRAKDEMON_VILE_ATTACK4 = 760
S_CYBRAKDEMON_VILE_ATTACK5 = 761
S_CYBRAKDEMON_VILE_ATTACK6 = 762
S_CYBRAKDEMON_NAPALM_ATTACK1 = 763
S_CYBRAKDEMON_NAPALM_ATTACK2 = 764
S_CYBRAKDEMON_NAPALM_ATTACK3 = 765
S_CYBRAKDEMON_FINISH_ATTACK1 = 766
S_CYBRAKDEMON_FINISH_ATTACK2 = 767
S_CYBRAKDEMON_PAIN1 = 768
S_CYBRAKDEMON_PAIN2 = 769
S_CYBRAKDEMON_PAIN3 = 770
S_CYBRAKDEMON_DIE1 = 771
S_CYBRAKDEMON_DIE2 = 772
S_CYBRAKDEMON_DIE3 = 773
S_CYBRAKDEMON_DIE4 = 774
S_CYBRAKDEMON_DIE5 = 775
S_CYBRAKDEMON_DIE6 = 776
S_CYBRAKDEMON_DIE7 = 777
S_CYBRAKDEMON_DIE8 = 778
S_CYBRAKDEMON_DEINVINCIBLERIZE = 779
S_CYBRAKDEMON_INVINCIBLERIZE = 780
S_CYBRAKDEMONMISSILE = 781
S_CYBRAKDEMONMISSILE_EXPLODE1 = 782
S_CYBRAKDEMONMISSILE_EXPLODE2 = 783
S_CYBRAKDEMONMISSILE_EXPLODE3 = 784
S_CYBRAKDEMONFLAMESHOT_FLY1 = 785
S_CYBRAKDEMONFLAMESHOT_FLY2 = 786
S_CYBRAKDEMONFLAMESHOT_FLY3 = 787
S_CYBRAKDEMONFLAMESHOT_DIE = 788
S_CYBRAKDEMONFLAMEREST = 789
S_CYBRAKDEMONELECTRICBARRIER_INIT1 = 790
S_CYBRAKDEMONELECTRICBARRIER_INIT2 = 791
S_CYBRAKDEMONELECTRICBARRIER_PLAYSOUND = 792
S_CYBRAKDEMONELECTRICBARRIER1 = 793
S_CYBRAKDEMONELECTRICBARRIER2 = 794
S_CYBRAKDEMONELECTRICBARRIER3 = 795
S_CYBRAKDEMONELECTRICBARRIER4 = 796
S_CYBRAKDEMONELECTRICBARRIER5 = 797
S_CYBRAKDEMONELECTRICBARRIER6 = 798
S_CYBRAKDEMONELECTRICBARRIER7 = 799
S_CYBRAKDEMONELECTRICBARRIER8 = 800
S_CYBRAKDEMONELECTRICBARRIER9 = 801
S_CYBRAKDEMONELECTRICBARRIER10 = 802
S_CYBRAKDEMONELECTRICBARRIER11 = 803
S_CYBRAKDEMONELECTRICBARRIER12 = 804
S_CYBRAKDEMONELECTRICBARRIER13 = 805
S_CYBRAKDEMONELECTRICBARRIER14 = 806
S_CYBRAKDEMONELECTRICBARRIER15 = 807
S_CYBRAKDEMONELECTRICBARRIER16 = 808
S_CYBRAKDEMONELECTRICBARRIER17 = 809
S_CYBRAKDEMONELECTRICBARRIER18 = 810
S_CYBRAKDEMONELECTRICBARRIER19 = 811
S_CYBRAKDEMONELECTRICBARRIER20 = 812
S_CYBRAKDEMONELECTRICBARRIER21 = 813
S_CYBRAKDEMONELECTRICBARRIER22 = 814
S_CYBRAKDEMONELECTRICBARRIER23 = 815
S_CYBRAKDEMONELECTRICBARRIER24 = 816
S_CYBRAKDEMONELECTRICBARRIER_DIE1 = 817
S_CYBRAKDEMONELECTRICBARRIER_DIE2 = 818
S_CYBRAKDEMONELECTRICBARRIER_DIE3 = 819
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHECK = 820
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMSUCCESS = 821
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMCHOOSE = 822
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM1 = 823
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM2 = 824
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM3 = 825
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM4 = 826
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM5 = 827
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM6 = 828
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM7 = 829
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM8 = 830
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM9 = 831
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM10 = 832
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM11 = 833
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOM12 = 834
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMFAIL = 835
S_CYBRAKDEMONELECTRICBARRIER_SPARK_RANDOMLOOP = 836
S_CYBRAKDEMONELECTRICBARRIER_REVIVE1 = 837
S_CYBRAKDEMONELECTRICBARRIER_REVIVE2 = 838
S_CYBRAKDEMONELECTRICBARRIER_REVIVE3 = 839
S_CYBRAKDEMONTARGETRETICULE1 = 840
S_CYBRAKDEMONTARGETRETICULE2 = 841
S_CYBRAKDEMONTARGETRETICULE3 = 842
S_CYBRAKDEMONTARGETRETICULE4 = 843
S_CYBRAKDEMONTARGETRETICULE5 = 844
S_CYBRAKDEMONTARGETRETICULE6 = 845
S_CYBRAKDEMONTARGETRETICULE7 = 846
S_CYBRAKDEMONTARGETRETICULE8 = 847
S_CYBRAKDEMONTARGETRETICULE9 = 848
S_CYBRAKDEMONTARGETRETICULE10 = 849
S_CYBRAKDEMONTARGETRETICULE11 = 850
S_CYBRAKDEMONTARGETRETICULE12 = 851
S_CYBRAKDEMONTARGETRETICULE13 = 852
S_CYBRAKDEMONTARGETRETICULE14 = 853
S_CYBRAKDEMONTARGETDOT = 854
S_CYBRAKDEMONNAPALMBOMBLARGE_FLY1 = 855
S_CYBRAKDEMONNAPALMBOMBLARGE_FLY2 = 856
S_CYBRAKDEMONNAPALMBOMBLARGE_FLY3 = 857
S_CYBRAKDEMONNAPALMBOMBLARGE_FLY4 = 858
S_CYBRAKDEMONNAPALMBOMBLARGE_DIE1 = 859
S_CYBRAKDEMONNAPALMBOMBLARGE_DIE2 = 860
S_CYBRAKDEMONNAPALMBOMBLARGE_DIE3 = 861
S_CYBRAKDEMONNAPALMBOMBLARGE_DIE4 = 862
S_CYBRAKDEMONNAPALMBOMBSMALL = 863
S_CYBRAKDEMONNAPALMBOMBSMALL_DIE1 = 864
S_CYBRAKDEMONNAPALMBOMBSMALL_DIE2 = 865
S_CYBRAKDEMONNAPALMBOMBSMALL_DIE3 = 866
S_CYBRAKDEMONNAPALMBOMBSMALL_DIE4 = 867
S_CYBRAKDEMONNAPALMBOMBSMALL_DIE5 = 868
S_CYBRAKDEMONNAPALMFLAME_FLY1 = 869
S_CYBRAKDEMONNAPALMFLAME_FLY2 = 870
S_CYBRAKDEMONNAPALMFLAME_FLY3 = 871
S_CYBRAKDEMONNAPALMFLAME_FLY4 = 872
S_CYBRAKDEMONNAPALMFLAME_FLY5 = 873
S_CYBRAKDEMONNAPALMFLAME_FLY6 = 874
S_CYBRAKDEMONNAPALMFLAME_DIE = 875
S_CYBRAKDEMONVILEEXPLOSION1 = 876
S_CYBRAKDEMONVILEEXPLOSION2 = 877
S_CYBRAKDEMONVILEEXPLOSION3 = 878
S_METALSONIC_RACE = 879
S_METALSONIC_FLOAT = 880
S_METALSONIC_VECTOR = 881
S_METALSONIC_STUN = 882
S_METALSONIC_RAISE = 883
S_METALSONIC_GATHER = 884
S_METALSONIC_DASH = 885
S_METALSONIC_BOUNCE = 886
S_METALSONIC_BADBOUNCE = 887
S_METALSONIC_SHOOT = 888
S_METALSONIC_PAIN = 889
S_METALSONIC_DEATH1 = 890
S_METALSONIC_DEATH2 = 891
S_METALSONIC_DEATH3 = 892
S_METALSONIC_DEATH4 = 893
S_METALSONIC_FLEE1 = 894
S_METALSONIC_FLEE2 = 895
S_MSSHIELD_F1 = 896
S_MSSHIELD_F2 = 897
S_RING = 898
S_BLUESPHERE = 899
S_BLUESPHEREBONUS = 900
S_BLUESPHERESPARK = 901
S_BOMBSPHERE1 = 902
S_BOMBSPHERE2 = 903
S_BOMBSPHERE3 = 904
S_BOMBSPHERE4 = 905
S_NIGHTSCHIP = 906
S_NIGHTSCHIPBONUS = 907
S_NIGHTSSTAR = 908
S_NIGHTSSTARXMAS = 909
S_GRAVWELLGREEN = 910
S_GRAVWELLRED = 911
S_TEAMRING = 912
S_TOKEN = 913
S_REDFLAG = 914
S_BLUEFLAG = 915
S_EMBLEM1 = 916
S_EMBLEM2 = 917
S_EMBLEM3 = 918
S_EMBLEM4 = 919
S_EMBLEM5 = 920
S_EMBLEM6 = 921
S_EMBLEM7 = 922
S_EMBLEM8 = 923
S_EMBLEM9 = 924
S_EMBLEM10 = 925
S_EMBLEM11 = 926
S_EMBLEM12 = 927
S_EMBLEM13 = 928
S_EMBLEM14 = 929
S_EMBLEM15 = 930
S_EMBLEM16 = 931
S_EMBLEM17 = 932
S_EMBLEM18 = 933
S_EMBLEM19 = 934
S_EMBLEM20 = 935
S_EMBLEM21 = 936
S_EMBLEM22 = 937
S_EMBLEM23 = 938
S_EMBLEM24 = 939
S_EMBLEM25 = 940
S_EMBLEM26 = 941
S_CEMG1 = 942
S_CEMG2 = 943
S_CEMG3 = 944
S_CEMG4 = 945
S_CEMG5 = 946
S_CEMG6 = 947
S_CEMG7 = 948
S_SHRD1 = 949
S_SHRD2 = 950
S_SHRD3 = 951
S_BUBBLES1 = 952
S_BUBBLES2 = 953
S_BUBBLES3 = 954
S_BUBBLES4 = 955
S_SIGN = 956
S_SIGNSPIN1 = 957
S_SIGNSPIN2 = 958
S_SIGNSPIN3 = 959
S_SIGNSPIN4 = 960
S_SIGNSPIN5 = 961
S_SIGNSPIN6 = 962
S_SIGNPLAYER = 963
S_SIGNSLOW = 964
S_SIGNSTOP = 965
S_SIGNBOARD = 966
S_EGGMANSIGN = 967
S_CLEARSIGN = 968
S_SPIKEBALL1 = 969
S_SPIKEBALL2 = 970
S_SPIKEBALL3 = 971
S_SPIKEBALL4 = 972
S_SPIKEBALL5 = 973
S_SPIKEBALL6 = 974
S_SPIKEBALL7 = 975
S_SPIKEBALL8 = 976
S_SPINFIRE1 = 977
S_SPINFIRE2 = 978
S_SPINFIRE3 = 979
S_SPINFIRE4 = 980
S_SPINFIRE5 = 981
S_SPINFIRE6 = 982
S_TEAM_SPINFIRE1 = 983
S_TEAM_SPINFIRE2 = 984
S_TEAM_SPINFIRE3 = 985
S_TEAM_SPINFIRE4 = 986
S_TEAM_SPINFIRE5 = 987
S_TEAM_SPINFIRE6 = 988
S_SPIKE1 = 989
S_SPIKE2 = 990
S_SPIKE3 = 991
S_SPIKE4 = 992
S_SPIKE5 = 993
S_SPIKE6 = 994
S_SPIKED1 = 995
S_SPIKED2 = 996
S_WALLSPIKE1 = 997
S_WALLSPIKE2 = 998
S_WALLSPIKE3 = 999
S_WALLSPIKE4 = 1000
S_WALLSPIKE5 = 1001
S_WALLSPIKE6 = 1002
S_WALLSPIKEBASE = 1003
S_WALLSPIKED1 = 1004
S_WALLSPIKED2 = 1005
S_STARPOST_IDLE = 1006
S_STARPOST_FLASH = 1007
S_STARPOST_STARTSPIN = 1008
S_STARPOST_SPIN = 1009
S_STARPOST_ENDSPIN = 1010
S_BIGMINE_IDLE = 1011
S_BIGMINE_ALERT1 = 1012
S_BIGMINE_ALERT2 = 1013
S_BIGMINE_ALERT3 = 1014
S_BIGMINE_SET1 = 1015
S_BIGMINE_SET2 = 1016
S_BIGMINE_SET3 = 1017
S_BIGMINE_BLAST1 = 1018
S_BIGMINE_BLAST2 = 1019
S_BIGMINE_BLAST3 = 1020
S_BIGMINE_BLAST4 = 1021
S_BIGMINE_BLAST5 = 1022
S_CANNONLAUNCHER1 = 1023
S_CANNONLAUNCHER2 = 1024
S_CANNONLAUNCHER3 = 1025
S_BOXSPARKLE1 = 1026
S_BOXSPARKLE2 = 1027
S_BOXSPARKLE3 = 1028
S_BOXSPARKLE4 = 1029
S_BOX_FLICKER = 1030
S_BOX_POP1 = 1031
S_BOX_POP2 = 1032
S_GOLDBOX_FLICKER = 1033
S_GOLDBOX_OFF1 = 1034
S_GOLDBOX_OFF2 = 1035
S_GOLDBOX_OFF3 = 1036
S_GOLDBOX_OFF4 = 1037
S_GOLDBOX_OFF5 = 1038
S_GOLDBOX_OFF6 = 1039
S_GOLDBOX_OFF7 = 1040
S_MYSTERY_BOX = 1041
S_RING_BOX = 1042
S_PITY_BOX = 1043
S_ATTRACT_BOX = 1044
S_FORCE_BOX = 1045
S_ARMAGEDDON_BOX = 1046
S_WHIRLWIND_BOX = 1047
S_ELEMENTAL_BOX = 1048
S_SNEAKERS_BOX = 1049
S_INVULN_BOX = 1050
S_1UP_BOX = 1051
S_EGGMAN_BOX = 1052
S_MIXUP_BOX = 1053
S_GRAVITY_BOX = 1054
S_RECYCLER_BOX = 1055
S_SCORE1K_BOX = 1056
S_SCORE10K_BOX = 1057
S_FLAMEAURA_BOX = 1058
S_BUBBLEWRAP_BOX = 1059
S_THUNDERCOIN_BOX = 1060
S_PITY_GOLDBOX = 1061
S_ATTRACT_GOLDBOX = 1062
S_FORCE_GOLDBOX = 1063
S_ARMAGEDDON_GOLDBOX = 1064
S_WHIRLWIND_GOLDBOX = 1065
S_ELEMENTAL_GOLDBOX = 1066
S_SNEAKERS_GOLDBOX = 1067
S_INVULN_GOLDBOX = 1068
S_EGGMAN_GOLDBOX = 1069
S_GRAVITY_GOLDBOX = 1070
S_FLAMEAURA_GOLDBOX = 1071
S_BUBBLEWRAP_GOLDBOX = 1072
S_THUNDERCOIN_GOLDBOX = 1073
S_RING_REDBOX1 = 1074
S_RING_REDBOX2 = 1075
S_REDBOX_POP1 = 1076
S_REDBOX_POP2 = 1077
S_RING_BLUEBOX1 = 1078
S_RING_BLUEBOX2 = 1079
S_BLUEBOX_POP1 = 1080
S_BLUEBOX_POP2 = 1081
S_RING_ICON1 = 1082
S_RING_ICON2 = 1083
S_PITY_ICON1 = 1084
S_PITY_ICON2 = 1085
S_ATTRACT_ICON1 = 1086
S_ATTRACT_ICON2 = 1087
S_FORCE_ICON1 = 1088
S_FORCE_ICON2 = 1089
S_ARMAGEDDON_ICON1 = 1090
S_ARMAGEDDON_ICON2 = 1091
S_WHIRLWIND_ICON1 = 1092
S_WHIRLWIND_ICON2 = 1093
S_ELEMENTAL_ICON1 = 1094
S_ELEMENTAL_ICON2 = 1095
S_SNEAKERS_ICON1 = 1096
S_SNEAKERS_ICON2 = 1097
S_INVULN_ICON1 = 1098
S_INVULN_ICON2 = 1099
S_1UP_ICON1 = 1100
S_1UP_ICON2 = 1101
S_EGGMAN_ICON1 = 1102
S_EGGMAN_ICON2 = 1103
S_MIXUP_ICON1 = 1104
S_MIXUP_ICON2 = 1105
S_GRAVITY_ICON1 = 1106
S_GRAVITY_ICON2 = 1107
S_RECYCLER_ICON1 = 1108
S_RECYCLER_ICON2 = 1109
S_SCORE1K_ICON1 = 1110
S_SCORE1K_ICON2 = 1111
S_SCORE10K_ICON1 = 1112
S_SCORE10K_ICON2 = 1113
S_FLAMEAURA_ICON1 = 1114
S_FLAMEAURA_ICON2 = 1115
S_BUBBLEWRAP_ICON1 = 1116
S_BUBBLEWRAP_ICON2 = 1117
S_THUNDERCOIN_ICON1 = 1118
S_THUNDERCOIN_ICON2 = 1119
S_ROCKET = 1120
S_LASER = 1121
S_LASER2 = 1122
S_LASERFLASH = 1123
S_LASERFLAME1 = 1124
S_LASERFLAME2 = 1125
S_LASERFLAME3 = 1126
S_LASERFLAME4 = 1127
S_LASERFLAME5 = 1128
S_TORPEDO = 1129
S_ENERGYBALL1 = 1130
S_ENERGYBALL2 = 1131
S_MINE1 = 1132
S_MINE_BOOM1 = 1133
S_MINE_BOOM2 = 1134
S_MINE_BOOM3 = 1135
S_MINE_BOOM4 = 1136
S_JETBULLET1 = 1137
S_JETBULLET2 = 1138
S_TURRETLASER = 1139
S_TURRETLASEREXPLODE1 = 1140
S_TURRETLASEREXPLODE2 = 1141
S_CANNONBALL1 = 1142
S_ARROW = 1143
S_ARROWBONK = 1144
S_DEMONFIRE = 1145
S_LETTER = 1146
S_TUTORIALLEAF1 = 1147
S_TUTORIALLEAF2 = 1148
S_TUTORIALLEAF3 = 1149
S_TUTORIALLEAF4 = 1150
S_TUTORIALLEAF5 = 1151
S_TUTORIALLEAF6 = 1152
S_TUTORIALLEAF7 = 1153
S_TUTORIALLEAF8 = 1154
S_TUTORIALLEAF9 = 1155
S_TUTORIALLEAF10 = 1156
S_TUTORIALLEAF11 = 1157
S_TUTORIALLEAF12 = 1158
S_TUTORIALLEAF13 = 1159
S_TUTORIALLEAF14 = 1160
S_TUTORIALLEAF15 = 1161
S_TUTORIALLEAF16 = 1162
S_TUTORIALFLOWER1 = 1163
S_TUTORIALFLOWER2 = 1164
S_TUTORIALFLOWER3 = 1165
S_TUTORIALFLOWER4 = 1166
S_TUTORIALFLOWER5 = 1167
S_TUTORIALFLOWER6 = 1168
S_TUTORIALFLOWER7 = 1169
S_TUTORIALFLOWER8 = 1170
S_TUTORIALFLOWER9 = 1171
S_TUTORIALFLOWER10 = 1172
S_TUTORIALFLOWER11 = 1173
S_TUTORIALFLOWER12 = 1174
S_TUTORIALFLOWER13 = 1175
S_TUTORIALFLOWER14 = 1176
S_TUTORIALFLOWER15 = 1177
S_TUTORIALFLOWER16 = 1178
S_TUTORIALFLOWERF1 = 1179
S_TUTORIALFLOWERF2 = 1180
S_TUTORIALFLOWERF3 = 1181
S_TUTORIALFLOWERF4 = 1182
S_TUTORIALFLOWERF5 = 1183
S_TUTORIALFLOWERF6 = 1184
S_TUTORIALFLOWERF7 = 1185
S_TUTORIALFLOWERF8 = 1186
S_TUTORIALFLOWERF9 = 1187
S_TUTORIALFLOWERF10 = 1188
S_TUTORIALFLOWERF11 = 1189
S_TUTORIALFLOWERF12 = 1190
S_TUTORIALFLOWERF13 = 1191
S_TUTORIALFLOWERF14 = 1192
S_TUTORIALFLOWERF15 = 1193
S_TUTORIALFLOWERF16 = 1194
S_GFZFLOWERA = 1195
S_GFZFLOWERB = 1196
S_GFZFLOWERC = 1197
S_BLUEBERRYBUSH = 1198
S_BERRYBUSH = 1199
S_BUSH = 1200
S_GFZTREE = 1201
S_GFZBERRYTREE = 1202
S_GFZCHERRYTREE = 1203
S_CHECKERTREE = 1204
S_CHECKERSUNSETTREE = 1205
S_FHZTREE = 1206
S_FHZPINKTREE = 1207
S_POLYGONTREE = 1208
S_BUSHTREE = 1209
S_BUSHREDTREE = 1210
S_SPRINGTREE = 1211
S_THZFLOWERA = 1212
S_THZFLOWERB = 1213
S_THZFLOWERC = 1214
S_THZTREE = 1215
S_THZTREEBRANCH1 = 1216
S_THZTREEBRANCH2 = 1217
S_THZTREEBRANCH3 = 1218
S_THZTREEBRANCH4 = 1219
S_THZTREEBRANCH5 = 1220
S_THZTREEBRANCH6 = 1221
S_THZTREEBRANCH7 = 1222
S_THZTREEBRANCH8 = 1223
S_THZTREEBRANCH9 = 1224
S_THZTREEBRANCH10 = 1225
S_THZTREEBRANCH11 = 1226
S_THZTREEBRANCH12 = 1227
S_THZTREEBRANCH13 = 1228
S_ALARM1 = 1229
S_GARGOYLE = 1230
S_BIGGARGOYLE = 1231
S_SEAWEED1 = 1232
S_SEAWEED2 = 1233
S_SEAWEED3 = 1234
S_SEAWEED4 = 1235
S_SEAWEED5 = 1236
S_SEAWEED6 = 1237
S_DRIPA1 = 1238
S_DRIPA2 = 1239
S_DRIPA3 = 1240
S_DRIPA4 = 1241
S_DRIPB1 = 1242
S_DRIPC1 = 1243
S_DRIPC2 = 1244
S_CORAL1 = 1245
S_CORAL2 = 1246
S_CORAL3 = 1247
S_CORAL4 = 1248
S_CORAL5 = 1249
S_BLUECRYSTAL1 = 1250
S_KELP = 1251
S_ANIMALGAETOP1 = 1252
S_ANIMALGAETOP2 = 1253
S_ANIMALGAESEG = 1254
S_DSZSTALAGMITE = 1255
S_DSZ2STALAGMITE = 1256
S_LIGHTBEAM1 = 1257
S_LIGHTBEAM2 = 1258
S_LIGHTBEAM3 = 1259
S_LIGHTBEAM4 = 1260
S_LIGHTBEAM5 = 1261
S_LIGHTBEAM6 = 1262
S_LIGHTBEAM7 = 1263
S_LIGHTBEAM8 = 1264
S_LIGHTBEAM9 = 1265
S_LIGHTBEAM10 = 1266
S_LIGHTBEAM11 = 1267
S_LIGHTBEAM12 = 1268
S_CEZCHAIN = 1269
S_FLAME = 1270
S_FLAMEPARTICLE = 1271
S_FLAMEREST = 1272
S_EGGSTATUE1 = 1273
S_SLING1 = 1274
S_SLING2 = 1275
S_SMALLMACECHAIN = 1276
S_BIGMACECHAIN = 1277
S_SMALLMACE = 1278
S_BIGMACE = 1279
S_SMALLGRABCHAIN = 1280
S_BIGGRABCHAIN = 1281
S_YELLOWSPRINGBALL = 1282
S_YELLOWSPRINGBALL2 = 1283
S_YELLOWSPRINGBALL3 = 1284
S_YELLOWSPRINGBALL4 = 1285
S_YELLOWSPRINGBALL5 = 1286
S_REDSPRINGBALL = 1287
S_REDSPRINGBALL2 = 1288
S_REDSPRINGBALL3 = 1289
S_REDSPRINGBALL4 = 1290
S_REDSPRINGBALL5 = 1291
S_SMALLFIREBAR1 = 1292
S_SMALLFIREBAR2 = 1293
S_SMALLFIREBAR3 = 1294
S_SMALLFIREBAR4 = 1295
S_SMALLFIREBAR5 = 1296
S_SMALLFIREBAR6 = 1297
S_SMALLFIREBAR7 = 1298
S_SMALLFIREBAR8 = 1299
S_SMALLFIREBAR9 = 1300
S_SMALLFIREBAR10 = 1301
S_SMALLFIREBAR11 = 1302
S_SMALLFIREBAR12 = 1303
S_SMALLFIREBAR13 = 1304
S_SMALLFIREBAR14 = 1305
S_SMALLFIREBAR15 = 1306
S_SMALLFIREBAR16 = 1307
S_BIGFIREBAR1 = 1308
S_BIGFIREBAR2 = 1309
S_BIGFIREBAR3 = 1310
S_BIGFIREBAR4 = 1311
S_BIGFIREBAR5 = 1312
S_BIGFIREBAR6 = 1313
S_BIGFIREBAR7 = 1314
S_BIGFIREBAR8 = 1315
S_BIGFIREBAR9 = 1316
S_BIGFIREBAR10 = 1317
S_BIGFIREBAR11 = 1318
S_BIGFIREBAR12 = 1319
S_BIGFIREBAR13 = 1320
S_BIGFIREBAR14 = 1321
S_BIGFIREBAR15 = 1322
S_BIGFIREBAR16 = 1323
S_CEZFLOWER = 1324
S_CEZPOLE = 1325
S_CEZBANNER1 = 1326
S_CEZBANNER2 = 1327
S_PINETREE = 1328
S_CEZBUSH1 = 1329
S_CEZBUSH2 = 1330
S_CANDLE = 1331
S_CANDLEPRICKET = 1332
S_FLAMEHOLDER = 1333
S_FIRETORCH = 1334
S_WAVINGFLAG = 1335
S_WAVINGFLAGSEG1 = 1336
S_WAVINGFLAGSEG2 = 1337
S_CRAWLASTATUE = 1338
S_FACESTABBERSTATUE = 1339
S_SUSPICIOUSFACESTABBERSTATUE_WAIT = 1340
S_SUSPICIOUSFACESTABBERSTATUE_BURST1 = 1341
S_SUSPICIOUSFACESTABBERSTATUE_BURST2 = 1342
S_BRAMBLES = 1343
S_BIGTUMBLEWEED = 1344
S_BIGTUMBLEWEED_ROLL1 = 1345
S_BIGTUMBLEWEED_ROLL2 = 1346
S_BIGTUMBLEWEED_ROLL3 = 1347
S_BIGTUMBLEWEED_ROLL4 = 1348
S_BIGTUMBLEWEED_ROLL5 = 1349
S_BIGTUMBLEWEED_ROLL6 = 1350
S_BIGTUMBLEWEED_ROLL7 = 1351
S_BIGTUMBLEWEED_ROLL8 = 1352
S_LITTLETUMBLEWEED = 1353
S_LITTLETUMBLEWEED_ROLL1 = 1354
S_LITTLETUMBLEWEED_ROLL2 = 1355
S_LITTLETUMBLEWEED_ROLL3 = 1356
S_LITTLETUMBLEWEED_ROLL4 = 1357
S_LITTLETUMBLEWEED_ROLL5 = 1358
S_LITTLETUMBLEWEED_ROLL6 = 1359
S_LITTLETUMBLEWEED_ROLL7 = 1360
S_LITTLETUMBLEWEED_ROLL8 = 1361
S_CACTI1 = 1362
S_CACTI2 = 1363
S_CACTI3 = 1364
S_CACTI4 = 1365
S_CACTI5 = 1366
S_CACTI6 = 1367
S_CACTI7 = 1368
S_CACTI8 = 1369
S_CACTI9 = 1370
S_CACTI10 = 1371
S_CACTI11 = 1372
S_CACTITINYSEG = 1373
S_CACTISMALLSEG = 1374
S_ARIDSIGN_CAUTION = 1375
S_ARIDSIGN_CACTI = 1376
S_ARIDSIGN_SHARPTURN = 1377
S_OILLAMP = 1378
S_OILLAMPFLARE = 1379
S_TNTBARREL_STND1 = 1380
S_TNTBARREL_EXPL1 = 1381
S_TNTBARREL_EXPL2 = 1382
S_TNTBARREL_EXPL3 = 1383
S_TNTBARREL_EXPL4 = 1384
S_TNTBARREL_EXPL5 = 1385
S_TNTBARREL_EXPL6 = 1386
S_TNTBARREL_EXPL7 = 1387
S_TNTBARREL_FLYING = 1388
S_PROXIMITY_TNT = 1389
S_PROXIMITY_TNT_TRIGGER1 = 1390
S_PROXIMITY_TNT_TRIGGER2 = 1391
S_PROXIMITY_TNT_TRIGGER3 = 1392
S_PROXIMITY_TNT_TRIGGER4 = 1393
S_PROXIMITY_TNT_TRIGGER5 = 1394
S_PROXIMITY_TNT_TRIGGER6 = 1395
S_PROXIMITY_TNT_TRIGGER7 = 1396
S_PROXIMITY_TNT_TRIGGER8 = 1397
S_PROXIMITY_TNT_TRIGGER9 = 1398
S_PROXIMITY_TNT_TRIGGER10 = 1399
S_PROXIMITY_TNT_TRIGGER11 = 1400
S_PROXIMITY_TNT_TRIGGER12 = 1401
S_PROXIMITY_TNT_TRIGGER13 = 1402
S_PROXIMITY_TNT_TRIGGER14 = 1403
S_PROXIMITY_TNT_TRIGGER15 = 1404
S_PROXIMITY_TNT_TRIGGER16 = 1405
S_PROXIMITY_TNT_TRIGGER17 = 1406
S_PROXIMITY_TNT_TRIGGER18 = 1407
S_PROXIMITY_TNT_TRIGGER19 = 1408
S_PROXIMITY_TNT_TRIGGER20 = 1409
S_PROXIMITY_TNT_TRIGGER21 = 1410
S_PROXIMITY_TNT_TRIGGER22 = 1411
S_PROXIMITY_TNT_TRIGGER23 = 1412
S_DUSTDEVIL = 1413
S_DUSTLAYER1 = 1414
S_DUSTLAYER2 = 1415
S_DUSTLAYER3 = 1416
S_DUSTLAYER4 = 1417
S_DUSTLAYER5 = 1418
S_ARIDDUST1 = 1419
S_ARIDDUST2 = 1420
S_ARIDDUST3 = 1421
S_MINECART_IDLE = 1422
S_MINECART_DTH1 = 1423
S_MINECARTEND = 1424
S_MINECARTSEG_FRONT = 1425
S_MINECARTSEG_BACK = 1426
S_MINECARTSEG_LEFT = 1427
S_MINECARTSEG_RIGHT = 1428
S_MINECARTSIDEMARK1 = 1429
S_MINECARTSIDEMARK2 = 1430
S_MINECARTSPARK = 1431
S_SALOONDOOR = 1432
S_SALOONDOORCENTER = 1433
S_TRAINCAMEOSPAWNER_1 = 1434
S_TRAINCAMEOSPAWNER_2 = 1435
S_TRAINCAMEOSPAWNER_3 = 1436
S_TRAINCAMEOSPAWNER_4 = 1437
S_TRAINCAMEOSPAWNER_5 = 1438
S_TRAINPUFFMAKER = 1439
S_TRAINDUST = 1440
S_TRAINSTEAM = 1441
S_FLAMEJETSTND = 1442
S_FLAMEJETSTART = 1443
S_FLAMEJETSTOP = 1444
S_FLAMEJETFLAME1 = 1445
S_FLAMEJETFLAME2 = 1446
S_FLAMEJETFLAME3 = 1447
S_FLAMEJETFLAME4 = 1448
S_FLAMEJETFLAME5 = 1449
S_FLAMEJETFLAME6 = 1450
S_FLAMEJETFLAME7 = 1451
S_FLAMEJETFLAME8 = 1452
S_FLAMEJETFLAME9 = 1453
S_FJSPINAXISA1 = 1454
S_FJSPINAXISA2 = 1455
S_FJSPINAXISB1 = 1456
S_FJSPINAXISB2 = 1457
S_FLAMEJETFLAMEB1 = 1458
S_FLAMEJETFLAMEB2 = 1459
S_FLAMEJETFLAMEB3 = 1460
S_LAVAFALL_DORMANT = 1461
S_LAVAFALL_TELL = 1462
S_LAVAFALL_SHOOT = 1463
S_LAVAFALL_LAVA1 = 1464
S_LAVAFALL_LAVA2 = 1465
S_LAVAFALL_LAVA3 = 1466
S_LAVAFALLROCK = 1467
S_ROLLOUTSPAWN = 1468
S_ROLLOUTROCK = 1469
S_BIGFERNLEAF = 1470
S_BIGFERN1 = 1471
S_BIGFERN2 = 1472
S_JUNGLEPALM = 1473
S_TORCHFLOWER = 1474
S_WALLVINE_LONG = 1475
S_WALLVINE_SHORT = 1476
S_GLAREGOYLE = 1477
S_GLAREGOYLE_CHARGE = 1478
S_GLAREGOYLE_BLINK = 1479
S_GLAREGOYLE_HOLD = 1480
S_GLAREGOYLE_FIRE = 1481
S_GLAREGOYLE_LOOP = 1482
S_GLAREGOYLE_COOLDOWN = 1483
S_GLAREGOYLEUP = 1484
S_GLAREGOYLEUP_CHARGE = 1485
S_GLAREGOYLEUP_BLINK = 1486
S_GLAREGOYLEUP_HOLD = 1487
S_GLAREGOYLEUP_FIRE = 1488
S_GLAREGOYLEUP_LOOP = 1489
S_GLAREGOYLEUP_COOLDOWN = 1490
S_GLAREGOYLEDOWN = 1491
S_GLAREGOYLEDOWN_CHARGE = 1492
S_GLAREGOYLEDOWN_BLINK = 1493
S_GLAREGOYLEDOWN_HOLD = 1494
S_GLAREGOYLEDOWN_FIRE = 1495
S_GLAREGOYLEDOWN_LOOP = 1496
S_GLAREGOYLEDOWN_COOLDOWN = 1497
S_GLAREGOYLELONG = 1498
S_GLAREGOYLELONG_CHARGE = 1499
S_GLAREGOYLELONG_BLINK = 1500
S_GLAREGOYLELONG_HOLD = 1501
S_GLAREGOYLELONG_FIRE = 1502
S_GLAREGOYLELONG_LOOP = 1503
S_GLAREGOYLELONG_COOLDOWN = 1504
S_TARGET_IDLE = 1505
S_TARGET_HIT1 = 1506
S_TARGET_HIT2 = 1507
S_TARGET_RESPAWN = 1508
S_TARGET_ALLDONE = 1509
S_GREENFLAME = 1510
S_BLUEGARGOYLE = 1511
S_STG0 = 1512
S_STG1 = 1513
S_STG2 = 1514
S_STG3 = 1515
S_STG4 = 1516
S_STG5 = 1517
S_STG6 = 1518
S_STG7 = 1519
S_STG8 = 1520
S_STG9 = 1521
S_XMASPOLE = 1522
S_CANDYCANE = 1523
S_SNOWMAN = 1524
S_SNOWMANHAT = 1525
S_LAMPPOST1 = 1526
S_LAMPPOST2 = 1527
S_HANGSTAR = 1528
S_MISTLETOE = 1529
S_XMASBLUEBERRYBUSH = 1530
S_XMASBERRYBUSH = 1531
S_XMASBUSH = 1532
S_FHZICE1 = 1533
S_FHZICE2 = 1534
S_ROSY_IDLE1 = 1535
S_ROSY_IDLE2 = 1536
S_ROSY_IDLE3 = 1537
S_ROSY_IDLE4 = 1538
S_ROSY_JUMP = 1539
S_ROSY_WALK = 1540
S_ROSY_HUG = 1541
S_ROSY_PAIN = 1542
S_ROSY_STND = 1543
S_ROSY_UNHAPPY = 1544
S_JACKO1 = 1545
S_JACKO1OVERLAY_1 = 1546
S_JACKO1OVERLAY_2 = 1547
S_JACKO1OVERLAY_3 = 1548
S_JACKO1OVERLAY_4 = 1549
S_JACKO2 = 1550
S_JACKO2OVERLAY_1 = 1551
S_JACKO2OVERLAY_2 = 1552
S_JACKO2OVERLAY_3 = 1553
S_JACKO2OVERLAY_4 = 1554
S_JACKO3 = 1555
S_JACKO3OVERLAY_1 = 1556
S_JACKO3OVERLAY_2 = 1557
S_JACKO3OVERLAY_3 = 1558
S_JACKO3OVERLAY_4 = 1559
S_HHZTREE_TOP = 1560
S_HHZTREE_TRUNK = 1561
S_HHZTREE_LEAF = 1562
S_HHZSHROOM_1 = 1563
S_HHZSHROOM_2 = 1564
S_HHZSHROOM_3 = 1565
S_HHZSHROOM_4 = 1566
S_HHZSHROOM_5 = 1567
S_HHZSHROOM_6 = 1568
S_HHZSHROOM_7 = 1569
S_HHZSHROOM_8 = 1570
S_HHZSHROOM_9 = 1571
S_HHZSHROOM_10 = 1572
S_HHZSHROOM_11 = 1573
S_HHZSHROOM_12 = 1574
S_HHZSHROOM_13 = 1575
S_HHZSHROOM_14 = 1576
S_HHZSHROOM_15 = 1577
S_HHZSHROOM_16 = 1578
S_HHZGRASS = 1579
S_HHZTENT1 = 1580
S_HHZTENT2 = 1581
S_HHZSTALAGMITE_TALL = 1582
S_HHZSTALAGMITE_SHORT = 1583
S_BSZTALLFLOWER_RED = 1584
S_BSZTALLFLOWER_PURPLE = 1585
S_BSZTALLFLOWER_BLUE = 1586
S_BSZTALLFLOWER_CYAN = 1587
S_BSZTALLFLOWER_YELLOW = 1588
S_BSZTALLFLOWER_ORANGE = 1589
S_BSZFLOWER_RED = 1590
S_BSZFLOWER_PURPLE = 1591
S_BSZFLOWER_BLUE = 1592
S_BSZFLOWER_CYAN = 1593
S_BSZFLOWER_YELLOW = 1594
S_BSZFLOWER_ORANGE = 1595
S_BSZSHORTFLOWER_RED = 1596
S_BSZSHORTFLOWER_PURPLE = 1597
S_BSZSHORTFLOWER_BLUE = 1598
S_BSZSHORTFLOWER_CYAN = 1599
S_BSZSHORTFLOWER_YELLOW = 1600
S_BSZSHORTFLOWER_ORANGE = 1601
S_BSZTULIP_RED = 1602
S_BSZTULIP_PURPLE = 1603
S_BSZTULIP_BLUE = 1604
S_BSZTULIP_CYAN = 1605
S_BSZTULIP_YELLOW = 1606
S_BSZTULIP_ORANGE = 1607
S_BSZCLUSTER_RED = 1608
S_BSZCLUSTER_PURPLE = 1609
S_BSZCLUSTER_BLUE = 1610
S_BSZCLUSTER_CYAN = 1611
S_BSZCLUSTER_YELLOW = 1612
S_BSZCLUSTER_ORANGE = 1613
S_BSZBUSH_RED = 1614
S_BSZBUSH_PURPLE = 1615
S_BSZBUSH_BLUE = 1616
S_BSZBUSH_CYAN = 1617
S_BSZBUSH_YELLOW = 1618
S_BSZBUSH_ORANGE = 1619
S_BSZVINE_RED = 1620
S_BSZVINE_PURPLE = 1621
S_BSZVINE_BLUE = 1622
S_BSZVINE_CYAN = 1623
S_BSZVINE_YELLOW = 1624
S_BSZVINE_ORANGE = 1625
S_BSZSHRUB = 1626
S_BSZCLOVER = 1627
S_BIG_PALMTREE_TRUNK = 1628
S_BIG_PALMTREE_TOP = 1629
S_PALMTREE_TRUNK = 1630
S_PALMTREE_TOP = 1631
S_DBALL1 = 1632
S_DBALL2 = 1633
S_DBALL3 = 1634
S_DBALL4 = 1635
S_DBALL5 = 1636
S_DBALL6 = 1637
S_EGGSTATUE2 = 1638
S_ARMA1 = 1639
S_ARMA2 = 1640
S_ARMA3 = 1641
S_ARMA4 = 1642
S_ARMA5 = 1643
S_ARMA6 = 1644
S_ARMA7 = 1645
S_ARMA8 = 1646
S_ARMA9 = 1647
S_ARMA10 = 1648
S_ARMA11 = 1649
S_ARMA12 = 1650
S_ARMA13 = 1651
S_ARMA14 = 1652
S_ARMA15 = 1653
S_ARMA16 = 1654
S_ARMF1 = 1655
S_ARMF2 = 1656
S_ARMF3 = 1657
S_ARMF4 = 1658
S_ARMF5 = 1659
S_ARMF6 = 1660
S_ARMF7 = 1661
S_ARMF8 = 1662
S_ARMF9 = 1663
S_ARMF10 = 1664
S_ARMF11 = 1665
S_ARMF12 = 1666
S_ARMF13 = 1667
S_ARMF14 = 1668
S_ARMF15 = 1669
S_ARMF16 = 1670
S_ARMF17 = 1671
S_ARMF18 = 1672
S_ARMF19 = 1673
S_ARMF20 = 1674
S_ARMF21 = 1675
S_ARMF22 = 1676
S_ARMF23 = 1677
S_ARMF24 = 1678
S_ARMF25 = 1679
S_ARMF26 = 1680
S_ARMF27 = 1681
S_ARMF28 = 1682
S_ARMF29 = 1683
S_ARMF30 = 1684
S_ARMF31 = 1685
S_ARMF32 = 1686
S_ARMB1 = 1687
S_ARMB2 = 1688
S_ARMB3 = 1689
S_ARMB4 = 1690
S_ARMB5 = 1691
S_ARMB6 = 1692
S_ARMB7 = 1693
S_ARMB8 = 1694
S_ARMB9 = 1695
S_ARMB10 = 1696
S_ARMB11 = 1697
S_ARMB12 = 1698
S_ARMB13 = 1699
S_ARMB14 = 1700
S_ARMB15 = 1701
S_ARMB16 = 1702
S_ARMB17 = 1703
S_ARMB18 = 1704
S_ARMB19 = 1705
S_ARMB20 = 1706
S_ARMB21 = 1707
S_ARMB22 = 1708
S_ARMB23 = 1709
S_ARMB24 = 1710
S_ARMB25 = 1711
S_ARMB26 = 1712
S_ARMB27 = 1713
S_ARMB28 = 1714
S_ARMB29 = 1715
S_ARMB30 = 1716
S_ARMB31 = 1717
S_ARMB32 = 1718
S_WIND1 = 1719
S_WIND2 = 1720
S_WIND3 = 1721
S_WIND4 = 1722
S_WIND5 = 1723
S_WIND6 = 1724
S_WIND7 = 1725
S_WIND8 = 1726
S_MAGN1 = 1727
S_MAGN2 = 1728
S_MAGN3 = 1729
S_MAGN4 = 1730
S_MAGN5 = 1731
S_MAGN6 = 1732
S_MAGN7 = 1733
S_MAGN8 = 1734
S_MAGN9 = 1735
S_MAGN10 = 1736
S_MAGN11 = 1737
S_MAGN12 = 1738
S_MAGN13 = 1739
S_FORC1 = 1740
S_FORC2 = 1741
S_FORC3 = 1742
S_FORC4 = 1743
S_FORC5 = 1744
S_FORC6 = 1745
S_FORC7 = 1746
S_FORC8 = 1747
S_FORC9 = 1748
S_FORC10 = 1749
S_FORC11 = 1750
S_FORC12 = 1751
S_FORC13 = 1752
S_FORC14 = 1753
S_FORC15 = 1754
S_FORC16 = 1755
S_FORC17 = 1756
S_FORC18 = 1757
S_FORC19 = 1758
S_FORC20 = 1759
S_FORC21 = 1760
S_ELEM1 = 1761
S_ELEM2 = 1762
S_ELEM3 = 1763
S_ELEM4 = 1764
S_ELEM5 = 1765
S_ELEM6 = 1766
S_ELEM7 = 1767
S_ELEM8 = 1768
S_ELEM9 = 1769
S_ELEM10 = 1770
S_ELEM11 = 1771
S_ELEM12 = 1772
S_ELEM13 = 1773
S_ELEM14 = 1774
S_ELEMF1 = 1775
S_ELEMF2 = 1776
S_ELEMF3 = 1777
S_ELEMF4 = 1778
S_ELEMF5 = 1779
S_ELEMF6 = 1780
S_ELEMF7 = 1781
S_ELEMF8 = 1782
S_ELEMF9 = 1783
S_ELEMF10 = 1784
S_PITY1 = 1785
S_PITY2 = 1786
S_PITY3 = 1787
S_PITY4 = 1788
S_PITY5 = 1789
S_PITY6 = 1790
S_PITY7 = 1791
S_PITY8 = 1792
S_PITY9 = 1793
S_PITY10 = 1794
S_PITY11 = 1795
S_PITY12 = 1796
S_FIRS1 = 1797
S_FIRS2 = 1798
S_FIRS3 = 1799
S_FIRS4 = 1800
S_FIRS5 = 1801
S_FIRS6 = 1802
S_FIRS7 = 1803
S_FIRS8 = 1804
S_FIRS9 = 1805
S_FIRS10 = 1806
S_FIRS11 = 1807
S_FIRSB1 = 1808
S_FIRSB2 = 1809
S_FIRSB3 = 1810
S_FIRSB4 = 1811
S_FIRSB5 = 1812
S_FIRSB6 = 1813
S_FIRSB7 = 1814
S_FIRSB8 = 1815
S_FIRSB9 = 1816
S_FIRSB10 = 1817
S_BUBS1 = 1818
S_BUBS2 = 1819
S_BUBS3 = 1820
S_BUBS4 = 1821
S_BUBS5 = 1822
S_BUBS6 = 1823
S_BUBS7 = 1824
S_BUBS8 = 1825
S_BUBS9 = 1826
S_BUBS10 = 1827
S_BUBS11 = 1828
S_BUBSB1 = 1829
S_BUBSB2 = 1830
S_BUBSB3 = 1831
S_BUBSB4 = 1832
S_BUBSB5 = 1833
S_BUBSB6 = 1834
S_ZAPS1 = 1835
S_ZAPS2 = 1836
S_ZAPS3 = 1837
S_ZAPS4 = 1838
S_ZAPS5 = 1839
S_ZAPS6 = 1840
S_ZAPS7 = 1841
S_ZAPS8 = 1842
S_ZAPS9 = 1843
S_ZAPS10 = 1844
S_ZAPS11 = 1845
S_ZAPS12 = 1846
S_ZAPS13 = 1847
S_ZAPS14 = 1848
S_ZAPS15 = 1849
S_ZAPS16 = 1850
S_ZAPSB1 = 1851
S_ZAPSB2 = 1852
S_ZAPSB3 = 1853
S_ZAPSB4 = 1854
S_ZAPSB5 = 1855
S_ZAPSB6 = 1856
S_ZAPSB7 = 1857
S_ZAPSB8 = 1858
S_ZAPSB9 = 1859
S_ZAPSB10 = 1860
S_ZAPSB11 = 1861
S_THUNDERCOIN_SPARK = 1862
S_IVSP = 1863
S_SSPK1 = 1864
S_SSPK2 = 1865
S_SSPK3 = 1866
S_SSPK4 = 1867
S_SSPK5 = 1868
S_FLICKY_BUBBLE = 1869
S_FLICKY_01_OUT = 1870
S_FLICKY_01_FLAP1 = 1871
S_FLICKY_01_FLAP2 = 1872
S_FLICKY_01_FLAP3 = 1873
S_FLICKY_01_STAND = 1874
S_FLICKY_01_CENTER = 1875
S_FLICKY_02_OUT = 1876
S_FLICKY_02_AIM = 1877
S_FLICKY_02_HOP = 1878
S_FLICKY_02_UP = 1879
S_FLICKY_02_DOWN = 1880
S_FLICKY_02_STAND = 1881
S_FLICKY_02_CENTER = 1882
S_FLICKY_03_OUT = 1883
S_FLICKY_03_AIM = 1884
S_FLICKY_03_HOP = 1885
S_FLICKY_03_UP = 1886
S_FLICKY_03_FLAP1 = 1887
S_FLICKY_03_FLAP2 = 1888
S_FLICKY_03_STAND = 1889
S_FLICKY_03_CENTER = 1890
S_FLICKY_04_OUT = 1891
S_FLICKY_04_AIM = 1892
S_FLICKY_04_HOP = 1893
S_FLICKY_04_UP = 1894
S_FLICKY_04_DOWN = 1895
S_FLICKY_04_SWIM1 = 1896
S_FLICKY_04_SWIM2 = 1897
S_FLICKY_04_SWIM3 = 1898
S_FLICKY_04_SWIM4 = 1899
S_FLICKY_04_STAND = 1900
S_FLICKY_04_CENTER = 1901
S_FLICKY_05_OUT = 1902
S_FLICKY_05_AIM = 1903
S_FLICKY_05_HOP = 1904
S_FLICKY_05_UP = 1905
S_FLICKY_05_DOWN = 1906
S_FLICKY_05_STAND = 1907
S_FLICKY_05_CENTER = 1908
S_FLICKY_06_OUT = 1909
S_FLICKY_06_AIM = 1910
S_FLICKY_06_HOP = 1911
S_FLICKY_06_UP = 1912
S_FLICKY_06_DOWN = 1913
S_FLICKY_06_STAND = 1914
S_FLICKY_06_CENTER = 1915
S_FLICKY_07_OUT = 1916
S_FLICKY_07_AIML = 1917
S_FLICKY_07_HOPL = 1918
S_FLICKY_07_UPL = 1919
S_FLICKY_07_DOWNL = 1920
S_FLICKY_07_AIMR = 1921
S_FLICKY_07_HOPR = 1922
S_FLICKY_07_UPR = 1923
S_FLICKY_07_DOWNR = 1924
S_FLICKY_07_SWIM1 = 1925
S_FLICKY_07_SWIM2 = 1926
S_FLICKY_07_SWIM3 = 1927
S_FLICKY_07_STAND = 1928
S_FLICKY_07_CENTER = 1929
S_FLICKY_08_OUT = 1930
S_FLICKY_08_AIM = 1931
S_FLICKY_08_HOP = 1932
S_FLICKY_08_FLAP1 = 1933
S_FLICKY_08_FLAP2 = 1934
S_FLICKY_08_FLAP3 = 1935
S_FLICKY_08_FLAP4 = 1936
S_FLICKY_08_SWIM1 = 1937
S_FLICKY_08_SWIM2 = 1938
S_FLICKY_08_SWIM3 = 1939
S_FLICKY_08_SWIM4 = 1940
S_FLICKY_08_STAND = 1941
S_FLICKY_08_CENTER = 1942
S_FLICKY_09_OUT = 1943
S_FLICKY_09_AIM = 1944
S_FLICKY_09_HOP = 1945
S_FLICKY_09_UP = 1946
S_FLICKY_09_DOWN = 1947
S_FLICKY_09_STAND = 1948
S_FLICKY_09_CENTER = 1949
S_FLICKY_10_OUT = 1950
S_FLICKY_10_FLAP1 = 1951
S_FLICKY_10_FLAP2 = 1952
S_FLICKY_10_STAND = 1953
S_FLICKY_10_CENTER = 1954
S_FLICKY_11_OUT = 1955
S_FLICKY_11_AIM = 1956
S_FLICKY_11_RUN1 = 1957
S_FLICKY_11_RUN2 = 1958
S_FLICKY_11_RUN3 = 1959
S_FLICKY_11_STAND = 1960
S_FLICKY_11_CENTER = 1961
S_FLICKY_12_OUT = 1962
S_FLICKY_12_AIM = 1963
S_FLICKY_12_RUN1 = 1964
S_FLICKY_12_RUN2 = 1965
S_FLICKY_12_RUN3 = 1966
S_FLICKY_12_STAND = 1967
S_FLICKY_12_CENTER = 1968
S_FLICKY_13_OUT = 1969
S_FLICKY_13_AIM = 1970
S_FLICKY_13_HOP = 1971
S_FLICKY_13_UP = 1972
S_FLICKY_13_DOWN = 1973
S_FLICKY_13_STAND = 1974
S_FLICKY_13_CENTER = 1975
S_FLICKY_14_OUT = 1976
S_FLICKY_14_FLAP1 = 1977
S_FLICKY_14_FLAP2 = 1978
S_FLICKY_14_FLAP3 = 1979
S_FLICKY_14_STAND = 1980
S_FLICKY_14_CENTER = 1981
S_FLICKY_15_OUT = 1982
S_FLICKY_15_AIM = 1983
S_FLICKY_15_HOP = 1984
S_FLICKY_15_UP = 1985
S_FLICKY_15_DOWN = 1986
S_FLICKY_15_STAND = 1987
S_FLICKY_15_CENTER = 1988
S_FLICKY_16_OUT = 1989
S_FLICKY_16_FLAP1 = 1990
S_FLICKY_16_FLAP2 = 1991
S_FLICKY_16_FLAP3 = 1992
S_FLICKY_16_STAND = 1993
S_FLICKY_16_CENTER = 1994
S_SECRETFLICKY_01_OUT = 1995
S_SECRETFLICKY_01_AIM = 1996
S_SECRETFLICKY_01_HOP = 1997
S_SECRETFLICKY_01_UP = 1998
S_SECRETFLICKY_01_DOWN = 1999
S_SECRETFLICKY_01_STAND = 2000
S_SECRETFLICKY_01_CENTER = 2001
S_SECRETFLICKY_02_OUT = 2002
S_SECRETFLICKY_02_FLAP1 = 2003
S_SECRETFLICKY_02_FLAP2 = 2004
S_SECRETFLICKY_02_FLAP3 = 2005
S_SECRETFLICKY_02_STAND = 2006
S_SECRETFLICKY_02_CENTER = 2007
S_FAN = 2008
S_FAN2 = 2009
S_FAN3 = 2010
S_FAN4 = 2011
S_FAN5 = 2012
S_STEAM1 = 2013
S_STEAM2 = 2014
S_STEAM3 = 2015
S_STEAM4 = 2016
S_STEAM5 = 2017
S_STEAM6 = 2018
S_STEAM7 = 2019
S_STEAM8 = 2020
S_BUMPER = 2021
S_BUMPERHIT = 2022
S_BALLOON = 2023
S_BALLOONPOP1 = 2024
S_BALLOONPOP2 = 2025
S_BALLOONPOP3 = 2026
S_BALLOONPOP4 = 2027
S_BALLOONPOP5 = 2028
S_BALLOONPOP6 = 2029
S_YELLOWSPRING = 2030
S_YELLOWSPRING2 = 2031
S_YELLOWSPRING3 = 2032
S_YELLOWSPRING4 = 2033
S_YELLOWSPRING5 = 2034
S_REDSPRING = 2035
S_REDSPRING2 = 2036
S_REDSPRING3 = 2037
S_REDSPRING4 = 2038
S_REDSPRING5 = 2039
S_BLUESPRING = 2040
S_BLUESPRING2 = 2041
S_BLUESPRING3 = 2042
S_BLUESPRING4 = 2043
S_BLUESPRING5 = 2044
S_YDIAG1 = 2045
S_YDIAG2 = 2046
S_YDIAG3 = 2047
S_YDIAG4 = 2048
S_YDIAG5 = 2049
S_YDIAG6 = 2050
S_YDIAG7 = 2051
S_YDIAG8 = 2052
S_RDIAG1 = 2053
S_RDIAG2 = 2054
S_RDIAG3 = 2055
S_RDIAG4 = 2056
S_RDIAG5 = 2057
S_RDIAG6 = 2058
S_RDIAG7 = 2059
S_RDIAG8 = 2060
S_BDIAG1 = 2061
S_BDIAG2 = 2062
S_BDIAG3 = 2063
S_BDIAG4 = 2064
S_BDIAG5 = 2065
S_BDIAG6 = 2066
S_BDIAG7 = 2067
S_BDIAG8 = 2068
S_YHORIZ1 = 2069
S_YHORIZ2 = 2070
S_YHORIZ3 = 2071
S_YHORIZ4 = 2072
S_YHORIZ5 = 2073
S_YHORIZ6 = 2074
S_YHORIZ7 = 2075
S_YHORIZ8 = 2076
S_RHORIZ1 = 2077
S_RHORIZ2 = 2078
S_RHORIZ3 = 2079
S_RHORIZ4 = 2080
S_RHORIZ5 = 2081
S_RHORIZ6 = 2082
S_RHORIZ7 = 2083
S_RHORIZ8 = 2084
S_BHORIZ1 = 2085
S_BHORIZ2 = 2086
S_BHORIZ3 = 2087
S_BHORIZ4 = 2088
S_BHORIZ5 = 2089
S_BHORIZ6 = 2090
S_BHORIZ7 = 2091
S_BHORIZ8 = 2092
S_BOOSTERSOUND = 2093
S_YELLOWBOOSTERROLLER = 2094
S_YELLOWBOOSTERSEG_LEFT = 2095
S_YELLOWBOOSTERSEG_RIGHT = 2096
S_YELLOWBOOSTERSEG_FACE = 2097
S_REDBOOSTERROLLER = 2098
S_REDBOOSTERSEG_LEFT = 2099
S_REDBOOSTERSEG_RIGHT = 2100
S_REDBOOSTERSEG_FACE = 2101
S_RAIN1 = 2102
S_RAINRETURN = 2103
S_SNOW1 = 2104
S_SNOW2 = 2105
S_SNOW3 = 2106
S_SPLISH1 = 2107
S_SPLISH2 = 2108
S_SPLISH3 = 2109
S_SPLISH4 = 2110
S_SPLISH5 = 2111
S_SPLISH6 = 2112
S_SPLISH7 = 2113
S_SPLISH8 = 2114
S_SPLISH9 = 2115
S_LAVASPLISH = 2116
S_SPLASH1 = 2117
S_SPLASH2 = 2118
S_SPLASH3 = 2119
S_SMOKE1 = 2120
S_SMOKE2 = 2121
S_SMOKE3 = 2122
S_SMOKE4 = 2123
S_SMOKE5 = 2124
S_SMALLBUBBLE = 2125
S_MEDIUMBUBBLE = 2126
S_LARGEBUBBLE1 = 2127
S_LARGEBUBBLE2 = 2128
S_EXTRALARGEBUBBLE = 2129
S_POP1 = 2130
S_WATERZAP = 2131
S_SPINDUST1 = 2132
S_SPINDUST2 = 2133
S_SPINDUST3 = 2134
S_SPINDUST4 = 2135
S_SPINDUST_BUBBLE1 = 2136
S_SPINDUST_BUBBLE2 = 2137
S_SPINDUST_BUBBLE3 = 2138
S_SPINDUST_BUBBLE4 = 2139
S_SPINDUST_FIRE1 = 2140
S_SPINDUST_FIRE2 = 2141
S_SPINDUST_FIRE3 = 2142
S_SPINDUST_FIRE4 = 2143
S_FOG1 = 2144
S_FOG2 = 2145
S_FOG3 = 2146
S_FOG4 = 2147
S_FOG5 = 2148
S_FOG6 = 2149
S_FOG7 = 2150
S_FOG8 = 2151
S_FOG9 = 2152
S_FOG10 = 2153
S_FOG11 = 2154
S_FOG12 = 2155
S_FOG13 = 2156
S_FOG14 = 2157
S_SEED = 2158
S_PARTICLE = 2159
S_SCRA = 2160
S_SCRB = 2161
S_SCRC = 2162
S_SCRD = 2163
S_SCRE = 2164
S_SCRF = 2165
S_SCRG = 2166
S_SCRH = 2167
S_SCRI = 2168
S_SCRJ = 2169
S_SCRK = 2170
S_SCRL = 2171
S_ZERO1 = 2172
S_ONE1 = 2173
S_TWO1 = 2174
S_THREE1 = 2175
S_FOUR1 = 2176
S_FIVE1 = 2177
S_ZERO2 = 2178
S_ONE2 = 2179
S_TWO2 = 2180
S_THREE2 = 2181
S_FOUR2 = 2182
S_FIVE2 = 2183
S_FLIGHTINDICATOR = 2184
S_LOCKON1 = 2185
S_LOCKON2 = 2186
S_LOCKON3 = 2187
S_LOCKON4 = 2188
S_LOCKONINF1 = 2189
S_LOCKONINF2 = 2190
S_LOCKONINF3 = 2191
S_LOCKONINF4 = 2192
S_TTAG = 2193
S_GOTFLAG = 2194
S_FINISHFLAG = 2195
S_CORK = 2196
S_LHRT = 2197
S_RRNG1 = 2198
S_RRNG2 = 2199
S_RRNG3 = 2200
S_RRNG4 = 2201
S_RRNG5 = 2202
S_RRNG6 = 2203
S_RRNG7 = 2204
S_BOUNCERINGAMMO = 2205
S_RAILRINGAMMO = 2206
S_INFINITYRINGAMMO = 2207
S_AUTOMATICRINGAMMO = 2208
S_EXPLOSIONRINGAMMO = 2209
S_SCATTERRINGAMMO = 2210
S_GRENADERINGAMMO = 2211
S_BOUNCEPICKUP = 2212
S_BOUNCEPICKUPFADE1 = 2213
S_BOUNCEPICKUPFADE2 = 2214
S_BOUNCEPICKUPFADE3 = 2215
S_BOUNCEPICKUPFADE4 = 2216
S_BOUNCEPICKUPFADE5 = 2217
S_BOUNCEPICKUPFADE6 = 2218
S_BOUNCEPICKUPFADE7 = 2219
S_BOUNCEPICKUPFADE8 = 2220
S_RAILPICKUP = 2221
S_RAILPICKUPFADE1 = 2222
S_RAILPICKUPFADE2 = 2223
S_RAILPICKUPFADE3 = 2224
S_RAILPICKUPFADE4 = 2225
S_RAILPICKUPFADE5 = 2226
S_RAILPICKUPFADE6 = 2227
S_RAILPICKUPFADE7 = 2228
S_RAILPICKUPFADE8 = 2229
S_AUTOPICKUP = 2230
S_AUTOPICKUPFADE1 = 2231
S_AUTOPICKUPFADE2 = 2232
S_AUTOPICKUPFADE3 = 2233
S_AUTOPICKUPFADE4 = 2234
S_AUTOPICKUPFADE5 = 2235
S_AUTOPICKUPFADE6 = 2236
S_AUTOPICKUPFADE7 = 2237
S_AUTOPICKUPFADE8 = 2238
S_EXPLODEPICKUP = 2239
S_EXPLODEPICKUPFADE1 = 2240
S_EXPLODEPICKUPFADE2 = 2241
S_EXPLODEPICKUPFADE3 = 2242
S_EXPLODEPICKUPFADE4 = 2243
S_EXPLODEPICKUPFADE5 = 2244
S_EXPLODEPICKUPFADE6 = 2245
S_EXPLODEPICKUPFADE7 = 2246
S_EXPLODEPICKUPFADE8 = 2247
S_SCATTERPICKUP = 2248
S_SCATTERPICKUPFADE1 = 2249
S_SCATTERPICKUPFADE2 = 2250
S_SCATTERPICKUPFADE3 = 2251
S_SCATTERPICKUPFADE4 = 2252
S_SCATTERPICKUPFADE5 = 2253
S_SCATTERPICKUPFADE6 = 2254
S_SCATTERPICKUPFADE7 = 2255
S_SCATTERPICKUPFADE8 = 2256
S_GRENADEPICKUP = 2257
S_GRENADEPICKUPFADE1 = 2258
S_GRENADEPICKUPFADE2 = 2259
S_GRENADEPICKUPFADE3 = 2260
S_GRENADEPICKUPFADE4 = 2261
S_GRENADEPICKUPFADE5 = 2262
S_GRENADEPICKUPFADE6 = 2263
S_GRENADEPICKUPFADE7 = 2264
S_GRENADEPICKUPFADE8 = 2265
S_THROWNBOUNCE1 = 2266
S_THROWNBOUNCE2 = 2267
S_THROWNBOUNCE3 = 2268
S_THROWNBOUNCE4 = 2269
S_THROWNBOUNCE5 = 2270
S_THROWNBOUNCE6 = 2271
S_THROWNBOUNCE7 = 2272
S_THROWNINFINITY1 = 2273
S_THROWNINFINITY2 = 2274
S_THROWNINFINITY3 = 2275
S_THROWNINFINITY4 = 2276
S_THROWNINFINITY5 = 2277
S_THROWNINFINITY6 = 2278
S_THROWNINFINITY7 = 2279
S_THROWNAUTOMATIC1 = 2280
S_THROWNAUTOMATIC2 = 2281
S_THROWNAUTOMATIC3 = 2282
S_THROWNAUTOMATIC4 = 2283
S_THROWNAUTOMATIC5 = 2284
S_THROWNAUTOMATIC6 = 2285
S_THROWNAUTOMATIC7 = 2286
S_THROWNEXPLOSION1 = 2287
S_THROWNEXPLOSION2 = 2288
S_THROWNEXPLOSION3 = 2289
S_THROWNEXPLOSION4 = 2290
S_THROWNEXPLOSION5 = 2291
S_THROWNEXPLOSION6 = 2292
S_THROWNEXPLOSION7 = 2293
S_THROWNGRENADE1 = 2294
S_THROWNGRENADE2 = 2295
S_THROWNGRENADE3 = 2296
S_THROWNGRENADE4 = 2297
S_THROWNGRENADE5 = 2298
S_THROWNGRENADE6 = 2299
S_THROWNGRENADE7 = 2300
S_THROWNGRENADE8 = 2301
S_THROWNGRENADE9 = 2302
S_THROWNGRENADE10 = 2303
S_THROWNGRENADE11 = 2304
S_THROWNGRENADE12 = 2305
S_THROWNGRENADE13 = 2306
S_THROWNGRENADE14 = 2307
S_THROWNGRENADE15 = 2308
S_THROWNGRENADE16 = 2309
S_THROWNGRENADE17 = 2310
S_THROWNGRENADE18 = 2311
S_THROWNSCATTER = 2312
S_RINGEXPLODE = 2313
S_COIN1 = 2314
S_COIN2 = 2315
S_COIN3 = 2316
S_COINSPARKLE1 = 2317
S_COINSPARKLE2 = 2318
S_COINSPARKLE3 = 2319
S_COINSPARKLE4 = 2320
S_GOOMBA1 = 2321
S_GOOMBA1B = 2322
S_GOOMBA2 = 2323
S_GOOMBA3 = 2324
S_GOOMBA4 = 2325
S_GOOMBA5 = 2326
S_GOOMBA6 = 2327
S_GOOMBA7 = 2328
S_GOOMBA8 = 2329
S_GOOMBA9 = 2330
S_GOOMBA_DEAD = 2331
S_BLUEGOOMBA1 = 2332
S_BLUEGOOMBA1B = 2333
S_BLUEGOOMBA2 = 2334
S_BLUEGOOMBA3 = 2335
S_BLUEGOOMBA4 = 2336
S_BLUEGOOMBA5 = 2337
S_BLUEGOOMBA6 = 2338
S_BLUEGOOMBA7 = 2339
S_BLUEGOOMBA8 = 2340
S_BLUEGOOMBA9 = 2341
S_BLUEGOOMBA_DEAD = 2342
S_FIREFLOWER1 = 2343
S_FIREFLOWER2 = 2344
S_FIREFLOWER3 = 2345
S_FIREFLOWER4 = 2346
S_FIREBALL = 2347
S_FIREBALLTRAIL1 = 2348
S_FIREBALLTRAIL2 = 2349
S_SHELL = 2350
S_PUMA_START1 = 2351
S_PUMA_START2 = 2352
S_PUMA_UP1 = 2353
S_PUMA_UP2 = 2354
S_PUMA_UP3 = 2355
S_PUMA_DOWN1 = 2356
S_PUMA_DOWN2 = 2357
S_PUMA_DOWN3 = 2358
S_PUMATRAIL1 = 2359
S_PUMATRAIL2 = 2360
S_PUMATRAIL3 = 2361
S_PUMATRAIL4 = 2362
S_HAMMER = 2363
S_KOOPA1 = 2364
S_KOOPA2 = 2365
S_KOOPAFLAME1 = 2366
S_KOOPAFLAME2 = 2367
S_KOOPAFLAME3 = 2368
S_AXE1 = 2369
S_AXE2 = 2370
S_AXE3 = 2371
S_MARIOBUSH1 = 2372
S_MARIOBUSH2 = 2373
S_TOAD = 2374
S_NIGHTSDRONE_MAN1 = 2375
S_NIGHTSDRONE_MAN2 = 2376
S_NIGHTSDRONE_SPARKLING1 = 2377
S_NIGHTSDRONE_SPARKLING2 = 2378
S_NIGHTSDRONE_SPARKLING3 = 2379
S_NIGHTSDRONE_SPARKLING4 = 2380
S_NIGHTSDRONE_SPARKLING5 = 2381
S_NIGHTSDRONE_SPARKLING6 = 2382
S_NIGHTSDRONE_SPARKLING7 = 2383
S_NIGHTSDRONE_SPARKLING8 = 2384
S_NIGHTSDRONE_SPARKLING9 = 2385
S_NIGHTSDRONE_SPARKLING10 = 2386
S_NIGHTSDRONE_SPARKLING11 = 2387
S_NIGHTSDRONE_SPARKLING12 = 2388
S_NIGHTSDRONE_SPARKLING13 = 2389
S_NIGHTSDRONE_SPARKLING14 = 2390
S_NIGHTSDRONE_SPARKLING15 = 2391
S_NIGHTSDRONE_SPARKLING16 = 2392
S_NIGHTSDRONE_GOAL1 = 2393
S_NIGHTSDRONE_GOAL2 = 2394
S_NIGHTSDRONE_GOAL3 = 2395
S_NIGHTSDRONE_GOAL4 = 2396
S_NIGHTSPARKLE1 = 2397
S_NIGHTSPARKLE2 = 2398
S_NIGHTSPARKLE3 = 2399
S_NIGHTSPARKLE4 = 2400
S_NIGHTSPARKLESUPER1 = 2401
S_NIGHTSPARKLESUPER2 = 2402
S_NIGHTSPARKLESUPER3 = 2403
S_NIGHTSPARKLESUPER4 = 2404
S_NIGHTSLOOPHELPER = 2405
S_NIGHTSBUMPER1 = 2406
S_NIGHTSBUMPER2 = 2407
S_NIGHTSBUMPER3 = 2408
S_NIGHTSBUMPER4 = 2409
S_NIGHTSBUMPER5 = 2410
S_NIGHTSBUMPER6 = 2411
S_NIGHTSBUMPER7 = 2412
S_NIGHTSBUMPER8 = 2413
S_NIGHTSBUMPER9 = 2414
S_NIGHTSBUMPER10 = 2415
S_NIGHTSBUMPER11 = 2416
S_NIGHTSBUMPER12 = 2417
S_HOOP = 2418
S_HOOP_XMASA = 2419
S_HOOP_XMASB = 2420
S_NIGHTSCORE10 = 2421
S_NIGHTSCORE20 = 2422
S_NIGHTSCORE30 = 2423
S_NIGHTSCORE40 = 2424
S_NIGHTSCORE50 = 2425
S_NIGHTSCORE60 = 2426
S_NIGHTSCORE70 = 2427
S_NIGHTSCORE80 = 2428
S_NIGHTSCORE90 = 2429
S_NIGHTSCORE100 = 2430
S_NIGHTSCORE10_2 = 2431
S_NIGHTSCORE20_2 = 2432
S_NIGHTSCORE30_2 = 2433
S_NIGHTSCORE40_2 = 2434
S_NIGHTSCORE50_2 = 2435
S_NIGHTSCORE60_2 = 2436
S_NIGHTSCORE70_2 = 2437
S_NIGHTSCORE80_2 = 2438
S_NIGHTSCORE90_2 = 2439
S_NIGHTSCORE100_2 = 2440
S_NIGHTSSUPERLOOP = 2441
S_NIGHTSDRILLREFILL = 2442
S_NIGHTSHELPER = 2443
S_NIGHTSEXTRATIME = 2444
S_NIGHTSLINKFREEZE = 2445
S_EGGCAPSULE = 2446
S_ORBITEM1 = 2447
S_ORBITEM2 = 2448
S_ORBITEM3 = 2449
S_ORBITEM4 = 2450
S_ORBITEM5 = 2451
S_ORBITEM6 = 2452
S_ORBITEM7 = 2453
S_ORBITEM8 = 2454
S_ORBIDYA1 = 2455
S_ORBIDYA2 = 2456
S_ORBIDYA3 = 2457
S_ORBIDYA4 = 2458
S_ORBIDYA5 = 2459
S_NIGHTOPIANHELPER1 = 2460
S_NIGHTOPIANHELPER2 = 2461
S_NIGHTOPIANHELPER3 = 2462
S_NIGHTOPIANHELPER4 = 2463
S_NIGHTOPIANHELPER5 = 2464
S_NIGHTOPIANHELPER6 = 2465
S_NIGHTOPIANHELPER7 = 2466
S_NIGHTOPIANHELPER8 = 2467
S_NIGHTOPIANHELPER9 = 2468
S_PIAN_LOOK1 = 2469
S_PIAN_LOOK2 = 2470
S_PIAN_LOOK3 = 2471
S_PIAN_FLY1 = 2472
S_PIAN_FLY2 = 2473
S_PIAN_FLY3 = 2474
S_PIAN_SING = 2475
S_SHLEEP1 = 2476
S_SHLEEP2 = 2477
S_SHLEEP3 = 2478
S_SHLEEP4 = 2479
S_SHLEEPBOUNCE1 = 2480
S_SHLEEPBOUNCE2 = 2481
S_SHLEEPBOUNCE3 = 2482
S_PENGUINATOR_LOOK = 2483
S_PENGUINATOR_WADDLE1 = 2484
S_PENGUINATOR_WADDLE2 = 2485
S_PENGUINATOR_WADDLE3 = 2486
S_PENGUINATOR_WADDLE4 = 2487
S_PENGUINATOR_SLIDE1 = 2488
S_PENGUINATOR_SLIDE2 = 2489
S_PENGUINATOR_SLIDE3 = 2490
S_PENGUINATOR_SLIDE4 = 2491
S_PENGUINATOR_SLIDE5 = 2492
S_POPHAT_LOOK = 2493
S_POPHAT_SHOOT1 = 2494
S_POPHAT_SHOOT2 = 2495
S_POPHAT_SHOOT3 = 2496
S_POPHAT_SHOOT4 = 2497
S_POPSHOT = 2498
S_POPSHOT_TRAIL = 2499
S_HIVEELEMENTAL_LOOK = 2500
S_HIVEELEMENTAL_PREPARE1 = 2501
S_HIVEELEMENTAL_PREPARE2 = 2502
S_HIVEELEMENTAL_SHOOT1 = 2503
S_HIVEELEMENTAL_SHOOT2 = 2504
S_HIVEELEMENTAL_DORMANT = 2505
S_HIVEELEMENTAL_PAIN = 2506
S_HIVEELEMENTAL_DIE1 = 2507
S_HIVEELEMENTAL_DIE2 = 2508
S_HIVEELEMENTAL_DIE3 = 2509
S_BUMBLEBORE_SPAWN = 2510
S_BUMBLEBORE_LOOK1 = 2511
S_BUMBLEBORE_LOOK2 = 2512
S_BUMBLEBORE_FLY1 = 2513
S_BUMBLEBORE_FLY2 = 2514
S_BUMBLEBORE_RAISE = 2515
S_BUMBLEBORE_FALL1 = 2516
S_BUMBLEBORE_FALL2 = 2517
S_BUMBLEBORE_STUCK1 = 2518
S_BUMBLEBORE_STUCK2 = 2519
S_BUMBLEBORE_DIE = 2520
S_BUGGLEIDLE = 2521
S_BUGGLEFLY = 2522
S_SMASHSPIKE_FLOAT = 2523
S_SMASHSPIKE_EASE1 = 2524
S_SMASHSPIKE_EASE2 = 2525
S_SMASHSPIKE_FALL = 2526
S_SMASHSPIKE_STOMP1 = 2527
S_SMASHSPIKE_STOMP2 = 2528
S_SMASHSPIKE_RISE1 = 2529
S_SMASHSPIKE_RISE2 = 2530
S_CACO_LOOK = 2531
S_CACO_WAKE1 = 2532
S_CACO_WAKE2 = 2533
S_CACO_WAKE3 = 2534
S_CACO_WAKE4 = 2535
S_CACO_ROAR = 2536
S_CACO_CHASE = 2537
S_CACO_CHASE_REPEAT = 2538
S_CACO_RANDOM = 2539
S_CACO_PREPARE_SOUND = 2540
S_CACO_PREPARE1 = 2541
S_CACO_PREPARE2 = 2542
S_CACO_PREPARE3 = 2543
S_CACO_SHOOT_SOUND = 2544
S_CACO_SHOOT1 = 2545
S_CACO_SHOOT2 = 2546
S_CACO_CLOSE = 2547
S_CACO_DIE_FLAGS = 2548
S_CACO_DIE_GIB1 = 2549
S_CACO_DIE_GIB2 = 2550
S_CACO_DIE_SCREAM = 2551
S_CACO_DIE_SHATTER = 2552
S_CACO_DIE_FALL = 2553
S_CACOSHARD_RANDOMIZE = 2554
S_CACOSHARD1_1 = 2555
S_CACOSHARD1_2 = 2556
S_CACOSHARD2_1 = 2557
S_CACOSHARD2_2 = 2558
S_CACOFIRE1 = 2559
S_CACOFIRE2 = 2560
S_CACOFIRE3 = 2561
S_CACOFIRE_EXPLODE1 = 2562
S_CACOFIRE_EXPLODE2 = 2563
S_CACOFIRE_EXPLODE3 = 2564
S_CACOFIRE_EXPLODE4 = 2565
S_SPINBOBERT_MOVE_FLIPUP = 2566
S_SPINBOBERT_MOVE_UP = 2567
S_SPINBOBERT_MOVE_FLIPDOWN = 2568
S_SPINBOBERT_MOVE_DOWN = 2569
S_SPINBOBERT_FIRE_MOVE = 2570
S_SPINBOBERT_FIRE_GHOST = 2571
S_SPINBOBERT_FIRE_TRAIL1 = 2572
S_SPINBOBERT_FIRE_TRAIL2 = 2573
S_SPINBOBERT_FIRE_TRAIL3 = 2574
S_HANGSTER_LOOK = 2575
S_HANGSTER_SWOOP1 = 2576
S_HANGSTER_SWOOP2 = 2577
S_HANGSTER_ARC1 = 2578
S_HANGSTER_ARC2 = 2579
S_HANGSTER_ARC3 = 2580
S_HANGSTER_FLY1 = 2581
S_HANGSTER_FLY2 = 2582
S_HANGSTER_FLY3 = 2583
S_HANGSTER_FLY4 = 2584
S_HANGSTER_FLYREPEAT = 2585
S_HANGSTER_ARCUP1 = 2586
S_HANGSTER_ARCUP2 = 2587
S_HANGSTER_ARCUP3 = 2588
S_HANGSTER_RETURN1 = 2589
S_HANGSTER_RETURN2 = 2590
S_HANGSTER_RETURN3 = 2591
S_CRUMBLE1 = 2592
S_CRUMBLE2 = 2593
S_SPRK1 = 2594
S_SPRK2 = 2595
S_SPRK3 = 2596
S_XPLD_FLICKY = 2597
S_XPLD1 = 2598
S_XPLD2 = 2599
S_XPLD3 = 2600
S_XPLD4 = 2601
S_XPLD5 = 2602
S_XPLD6 = 2603
S_XPLD_EGGTRAP = 2604
S_WPLD1 = 2605
S_WPLD2 = 2606
S_WPLD3 = 2607
S_WPLD4 = 2608
S_WPLD5 = 2609
S_WPLD6 = 2610
S_DUST1 = 2611
S_DUST2 = 2612
S_DUST3 = 2613
S_DUST4 = 2614
S_ROCKSPAWN = 2615
S_ROCKCRUMBLEA = 2616
S_ROCKCRUMBLEB = 2617
S_ROCKCRUMBLEC = 2618
S_ROCKCRUMBLED = 2619
S_ROCKCRUMBLEE = 2620
S_ROCKCRUMBLEF = 2621
S_ROCKCRUMBLEG = 2622
S_ROCKCRUMBLEH = 2623
S_ROCKCRUMBLEI = 2624
S_ROCKCRUMBLEJ = 2625
S_ROCKCRUMBLEK = 2626
S_ROCKCRUMBLEL = 2627
S_ROCKCRUMBLEM = 2628
S_ROCKCRUMBLEN = 2629
S_ROCKCRUMBLEO = 2630
S_ROCKCRUMBLEP = 2631
S_GFZDEBRIS = 2632
S_BRICKDEBRIS = 2633
S_WOODDEBRIS = 2634
S_REDBRICKDEBRIS = 2635
S_BLUEBRICKDEBRIS = 2636
S_YELLOWBRICKDEBRIS = 2637
S_NAMECHECK = 2638


---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#abs)**
---
---Returns the [absolute value](https://en.wikipedia.org/wiki/Absolute_value) (the number's distance from zero) of `a`.
---
---Note: `abs(INT32_MIN)` does not have a corresponding value, since it would be out of the 32-bit integer range.
---
---@param a integer
---@return integer
function abs(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#min)**
---
---Returns the smaller value of `a` or `b`.
---
---@param a integer
---@param b integer
---@return integer
function min(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#max)**
---
---Returns the larger value of `a` or `b`.
---
---@param a integer
---@param b integer
---@return integer
function max(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#sin)**
---
---Returns the sine of the given angle as a fixed-point value. Output values range from `-FRACUNIT` to `FRACUNIT`.
---
---@param a angle_t
---@return fixed_t
function sin(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#cos)**
---
---Returns the cosine of the given angle as a fixed-point value. Output values range from `-FRACUNIT` to `FRACUNIT`.
---
---@param a angle_t
---@return fixed_t
function cos(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#tan)**
---
---Returns the tangent of the given angle as a fixed-point value. Output values range from about `-1303*FRACUNIT` to about `1303*FRACUNIT`. Undefined values, such as tan(90°) or tan(270°), are represented by `INT32_MIN`.
---
---@param a angle_t
---@return fixed_t
function tan(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#asin)**
---
---Add a description
---
---@param x fixed_t
---@return angle_t
function asin(x) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#acos)**
---
---Add a description
---
---@param x fixed_t
---@return angle_t
function acos(x) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedAngle)**
---
---Converts an integer in the fixed-point scale to an angle value.
---
---Example: `FixedAngle(90*FRACUNIT)` will return `ANGLE_90`.
---
---@param a fixed_t
---@return angle_t
function FixedAngle(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#AngleFixed)**
---
---Converts an angle value to an integer in the fixed-point scale.
---
---'Example: `AngleFixed(ANGLE_90)` will return `90*FRACUNIT`.
---
---@param a angle_t
---@return fixed_t
function AngleFixed(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#InvAngle)**
---
---Returns the "inverse" of the given angle, i.e., 360° - `a`.
---
---Example: `InvAngle(ANGLE_45)` will return `ANGLE_315`.
---
---@param a angle_t
---@return angle_t
function InvAngle(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedInt)**
---
---Returns the integer component of `a` as a normal integer.
---
---Example: `FixedInt(45*FRACUNIT)` will return 45.
---
---@param a fixed_t
---@return integer
function FixedInt(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedRem)**
---
---Returns the [remainder](https://en.wikipedia.org/wiki/Remainder) of dividing `a` by `b` in the fixed-point scale.
---
---Note: Negative values for `b` are not handled correctly and may slow down the game.
---
---@param a fixed_t
---@param b fixed_t
---@return fixed_t
function FixedRem(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedSqrt)**
---
---Returns the [square root](https://en.wikipedia.org/wiki/Square_root) of `a` in the fixed-point scale.
---
---Example: `FixedSqrt(16*FRACUNIT)` will return `4*FRACUNIT`.
---
---@param a fixed_t
---@return fixed_t
function FixedSqrt(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedHypot)**
---
---Returns the [hypotenuse](https://en.wikipedia.org/wiki/Hypotenuse) of `a` and `b` in the fixed-point scale (i.e., the length of the longest side of a right-angled triangle where the other sides have lengths `a` and `b`).
---
---Example: `FixedHypot(3*FRACUNIT, 4*FRACUNIT)` will return `5*FRACUNIT`.
---
---@param a fixed_t
---@param b fixed_t
---@return fixed_t
function FixedHypot(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedFloor)**
---
---Returns the [floor](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions) of `a` (the largest integer that is not larger than `a`) in the fixed-point scale.
---
---@param a fixed_t
---@return fixed_t
function FixedFloor(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedTrunc)**
---
---Returns the value of `a` rounded to the nearest whole number towards 0 (or `a` truncated to zero decimal digits) in the fixed-point scale.
---
---@param a fixed_t
---@return fixed_t
function FixedTrunc(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedCeil)**
---
---Returns the [ceiling](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions) of `a` (the smallest integer that is not smaller than `a`) in the fixed-point scale.
---
---@param a fixed_t
---@return fixed_t
function FixedCeil(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#FixedRound)**
---
---Returns the value of `a` rounded to the nearest whole number away from 0 in the fixed-point scale.
---
---@param a fixed_t
---@return fixed_t
function FixedRound(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#GetSecSpecial)**
---
---For a given [sector type number](https://wiki.srb2.org/wiki/Sector_types) `special` and a sector type group `section` (expected to be a value between 1 and 4), returns the number of the sector effect from `section` that `special` uses, or 0 if no effect from this group is used. The output values range from 0 to 15 - see [Sector types](https://wiki.srb2.org/wiki/Sector_types) for a list of sector effects and their corresponding effect numbers.
---
---Example: If the sector `sector` uses the [Damage (Fire)](https://wiki.srb2.org/wiki/Damage_(Fire)) sector special from Group 1, `GetSecSpecial(sector.special, 1)` will return 3.
---
---@param special integer
---@param section integer
---@return integer
function GetSecSpecial(special, section) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#All7Emeralds)**
---
---Returns true if `flags` contains all the [emerald](https://wiki.srb2.org/wiki/Chaos_Emerald) flags from `EMERALD1` to `EMERALD7`. Intended to be used for checking either the Single Player/Co-op emeralds collected by all players (`emeralds`), or the multiplayer emeralds (for gametypes [Match](https://wiki.srb2.org/wiki/Match), [CTF](https://wiki.srb2.org/wiki/CTF) and [Tag](https://wiki.srb2.org/wiki/Tag)) collected by a particular player (`player.powers[pw_emeralds]`).
---
---@param flags integer
---@return boolean
function All7Emeralds(flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ColorOpposite)**
---
---Returns both the [opposite skin color](https://wiki.srb2.org/wiki/List_of_skin_colors#Skin_color_opposites) for `color`, and the associated sprite frame number for the opposite color (the latter is used for the [Level End Sign](https://wiki.srb2.org/wiki/Level_End_Sign)).
---
---Example: `ColorOpposite(SKINCOLOR_WHITE)` will return the values `SKINCOLOR_BLACK` and 10.
---
---@param color integer
---@return integer
---@return integer
function ColorOpposite(color) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.linear)**
---
---Linear interpolation. The movement speed will be constant throughout the entire duration of the movement.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.linear(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.insine)**
---
---[https://easings.net/#easeInSine InSine] function. Movement starts slow and accelerates in a sine function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.insine(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outsine)**
---
---[https://easings.net/#easeOutSine OutSine] function. Movement starts fast and decelerates in a sine function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.outsine(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutsine)**
---
---[https://easings.net/#easeInOutSine InOutSine] function. Movement starts slow, accelerates and decelerates again near the end, in a sine function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inoutsine(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inquad)**
---
---[https://easings.net/#easeInQuad InQuad] function. Movement starts slow and accelerates in a quadratic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inquad(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outquad)**
---
---[https://easings.net/#easeOutQuad OutQuad] function. Movement starts fast and decelerates in a quadratic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.outquad(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutquad)**
---
---[https://easings.net/#easeInOutQuad InOutQuad] function. Movement starts slow, accelerates and decelerates again near the end, in a quadratic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inoutquad(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.incubic)**
---
---[https://easings.net/#easeInCubic InCubic] function. Movement starts slow and accelerates in a cubic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.incubic(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outcubic)**
---
---[https://easings.net/#easeOutCubic OutCubic] function. Movement starts fast and decelerates in a cubic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.outcubic(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutcubic)**
---
---[https://easings.net/#easeInOutCubic InOutCubic] function. Movement starts slow, accelerates and decelerates again near the end, in a cubic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inoutcubic(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inquart)**
---
---[https://easings.net/#easeInQuart InQuart] function. Movement starts slow and accelerates in a quartic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inquart(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outquart)**
---
---[https://easings.net/#easeOutQuart OutQuart] function. Movement starts fast and decelerates in a quartic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.outquart(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutquart)**
---
---[https://easings.net/#easeInOutQuart InOutQuart] function. Movement starts slow, accelerates and decelerates again near the end, in a quartic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inoutquart(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inquint)**
---
---[https://easings.net/#easeInQuint InQuint] function. Movement starts slow and accelerates in a quintic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inquint(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outquint)**
---
---[https://easings.net/#easeOutQuint OutQuint] function. Movement starts fast and decelerates in a quintic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.outquint(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutquint)**
---
---[https://easings.net/#easeInOutQuint InOutQuint] function. Movement starts slow, accelerates and decelerates again near the end, in a quintic function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inoutquint(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inexpo)**
---
---[https://easings.net/#easeInExpo InExpo] function. Movement starts slow and accelerates in an exponential function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inexpo(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outexpo)**
---
---[https://easings.net/#easeOutExpo OutExpo] function. Movement starts fast and decelerates in an exponential function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.outexpo(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutexpo)**
---
---[https://easings.net/#easeInOutExpo InOutExpo] function. Movement starts slow, accelerates and decelerates again near the end, in an exponential function rate.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@return fixed_t
function ease.inoutexpo(t, start, finish) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inback)**
---
---[https://easings.net/#easeInBack InBack] function. Movement initially recoils towards `param`, then accelerates towards the end.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@param param? fixed_t
---@return fixed_t
function ease.inback(t, start, finish, param) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.outback)**
---
---[https://easings.net/#easeOutBack OutBack] function. Movement decelerates towards the end and recoils towards `param`.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@param param? fixed_t
---@return fixed_t
function ease.outback(t, start, finish, param) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#ease.inoutback)**
---
---[https://easings.net/#easeInOutBack InOutBack] function. Movement recoils towards `param` both at the start and the end.
---
---@param t fixed_t
---@param start? fixed_t
---@param finish? fixed_t
---@param param? fixed_t
---@return fixed_t
function ease.inoutback(t, start, finish, param) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#hud.enable)**
---
---Enables `huditem` (see [below](https://wiki.srb2.org/wiki/Functions#Togglable_HUD_items) for a list of valid options) if it was disabled by `hud.disable`.
---
---@param huditem huditemtype
---@return nil
function hud.enable(huditem) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#hud.disable)**
---
---Disables `huditem` (see [below](https://wiki.srb2.org/wiki/Functions#Togglable_HUD_items) for a list of valid options), preventing the game from drawing it.
---
---@param huditem huditemtype
---@return nil
function hud.disable(huditem) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#hud.enabled)**
---
---Returns true if `huditem` (see [below](https://wiki.srb2.org/wiki/Functions#Togglable_HUD_items) for a list of valid options) is enabled, false if it was disabled by `hud.disable`.
---
---@param huditem huditemtype
---@return boolean
function hud.enabled(huditem) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#hud.add)**
---
---Adds a new HUD drawing function. `hook` determines when the contents of the function are run. See [below](https://wiki.srb2.org/wiki/Functions#HUD_hooks) for a list of valid options for `hook` and the format functions for them take.
---
---Will assume `"game"` if `hook` is not given.
---
---@param func function
---@param hook? hudtype
---@return nil
function hud.add(func, hook) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.patchExists)**
---
---Returns true if a graphic lump `name` exists in any WAD file loaded, returns false if not.
---
---@param name string
---@return boolean
function v.patchExists(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.cachePatch)**
---
---Caches a new patch using a graphic with `name` as the name. Returns nil if the graphic does not exist.
---
---@param name string
---@return patch_t
function v.cachePatch(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.draw)**
---
---Draws a patch at the screen coordinates given.
---
---Notes:
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as translucency.
---*`c` determines the colormap applied to the patch - use [v.getColormap](https://wiki.srb2.org/wiki/Functions#v.getColormap) or [v.getStringColormap](https://wiki.srb2.org/wiki/Functions#v.getStringColormap) to obtain a value that can be used here.
---
---@param x integer
---@param y integer
---@param patch patch_t
---@param flags? integer
---@param c? colormap
---@return nil
function v.draw(x, y, patch, flags, c) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.getSpritePatch)**
---
---Returns a patch corresponding to the arguments given, and a boolean specifying whether the patch should be flipped. `sprite` may be a sprite number (`SPR_POSS`) or sprite prefix (`"POSS"`). `rotation` is a number between 1 and 8 (1 to 16 for 16 angle sprites). `0` is equivalent to `1` for `rotation` as well. `rollangle` is an angle to rotate the patch counter clockwise.
---
---@param sprite string|integer
---@param frame? integer
---@param rotation? integer
---@param rollangle? angle_t
---@return patch_t
---@return boolean
function v.getSpritePatch(sprite, frame, rotation, rollangle) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.getSprite2Patch)**
---
---Returns a patch corresponding to the arguments given, and a boolean specifying whether the patch should be flipped. For a description of some of these parameters, see [v.getSpritePatch](https://wiki.srb2.org/wiki/Functions#v.getSpritePatch).
---Notes:
---* This is specific to sprites belonging to a [Skin](https://wiki.srb2.org/wiki/Skin), as Skins use a special naming system to avoid naming conflicts between themselves.
---*`super?` determines whether to get the super form sprites. This overrides the FF_SPR2SUPER flag from sprite2 if it was also set there
---
---@param skin string|integer
---@param sprite2 string|integer
---@param super? boolean
---@param frame? integer
---@param rotation? integer
---@param rollangle? angle_t
---@return patch_t
---@return boolean
function v.getSprite2Patch(skin, sprite2, super, frame, rotation, rollangle) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawScaled)**
---
---Draws a patch at the screen coordinates given, but at a specific scale (e.g.: `FRACUNIT` is normal scale, `FRACUNIT/2` is half normal scale, `2*FRACUNIT` is twice normal scale, etc).
---
---Notes:
---*Coordinates are required to be fixed point values (e.g.: `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc).
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as translucency.
---*`c` determines the colormap applied to the patch - use [v.getColormap](https://wiki.srb2.org/wiki/Functions#v.getColormap) or [v.getStringColormap](https://wiki.srb2.org/wiki/Functions#v.getStringColormap) to obtain a value that can be used here.
---
---@param x fixed_t
---@param y fixed_t
---@param scale fixed_t
---@param patch patch_t
---@param flags? integer
---@param c? colormap
---@return nil
function v.drawScaled(x, y, scale, patch, flags, c) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawStretched)**
---
---Draws a patch at the screen coordinates given, but at a specific horizontal (`hscale`) and vertical (`vscale`) scale (e.g.: `FRACUNIT` is normal scale, `FRACUNIT/2` is half normal scale, `2*FRACUNIT` is twice normal scale, etc).
---
---Notes:
---*Coordinates are required to be fixed point values (e.g.: `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc).
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as translucency.
---*`c` determines the colormap applied to the patch - use [v.getColormap](https://wiki.srb2.org/wiki/Functions#v.getColormap) or [v.getStringColormap](https://wiki.srb2.org/wiki/Functions#v.getStringColormap) to obtain a value that can be used here.
---
---@param x fixed_t
---@param y fixed_t
---@param hscale fixed_t
---@param vscale fixed_t
---@param patch patch_t
---@param flags? integer
---@param c? colormap
---@return nil
function v.drawStretched(x, y, hscale, vscale, patch, flags, c) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawCropped)**
---
---Draws a patch at the screen coordinates given, but at a specific horizontal (`hscale`) and vertical (`vscale`) scale, with the sides cut off (`sx`, `sy`, `w`, `h`).
---
---Notes:
---*Coordinates are required to be fixed point values (e.g.: `FRACUNIT` is one pixel, `FRACUNIT/2` is half a pixel, `2*FRACUNIT` is two pixels, etc).
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as translucency - use `0` if you don't want any flags.
---*`c` determines the colormap applied to the patch - use [v.getColormap](https://wiki.srb2.org/wiki/Functions#v.getColormap) or [v.getStringColormap](https://wiki.srb2.org/wiki/Functions#v.getStringColormap) to obtain a value that can be used here, or use `nil` if you don't want a colormap.
---*`sx` and `sy` determine how many pixels to cut off the left and top sides of the patch, respectively, (moving the remaining area left and up in the process,) and `w` and `h` determine how wide and tall an area of the patch to draw, not how much to cut off the right and bottom sides.
---*`sx`, `sy`, `w`, and `h` select a region of the patch to draw regardless of `hscale` and `vscale` – if you set `w` to `5*FRACUNIT` and set `hscale` to `2*FRACUNIT`, the patch will take up 10 pixels of the screen, as the 5 pixels of the patch are doubled in size. The 5 pixels of the patch that get used will be the same regardless of `hscale` and `vscale`'s values, referring to the patch itself.
---
---@param x fixed_t
---@param y fixed_t
---@param hscale fixed_t
---@param vscale fixed_t
---@param patch patch_t
---@param flags integer
---@param c colormap
---@param sx fixed_t
---@param sy fixed_t
---@param w fixed_t
---@param h fixed_t
---@return nil
function v.drawCropped(x, y, hscale, vscale, patch, flags, c, sx, sy, w, h) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawNum)**
---
---Draws a number at the screen coordinates given.
---
---Notes:
---*Numbers drawn by this function will use the same font as numbers from the score/time/rings area of the normal HUD.
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as color and translucency.
---*Unlike `v.drawPaddedNum`, this can also handle negative numbers.
---
---@param x integer
---@param y integer
---@param num integer
---@param flags? integer
---@return nil
function v.drawNum(x, y, num, flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawPaddedNum)**
---
---Draws a number at the screen coordinates given with a set number of digits. Leading zeros will be added as padding if the number is not large enough to fit the number of digits specified.
---Notes:
---*Numbers drawn by this function will use the same font as numbers from the score/time/rings area of the normal HUD.
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as color and translucency.
---*Unlike `v.drawNum` this will not handle negative numbers.
---
---@param x integer
---@param y integer
---@param num integer
---@param digits? integer
---@param flags? integer
---@return nil
function v.drawPaddedNum(x, y, num, digits, flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawFill)**
---
---Fills a box of dimensions width by height with a single palette color number at the screen coordinates given. If no parameters are given, this will default to a black box covering the entire screen.
---
---`color` also determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, if they are added to the palette color number - only the flags `V_NOSCALESTART`, `V_SNAPTOTOP`, `V_SNAPTOBOTTOM`, `V_SNAPTOLEFT` and `V_SNAPTORIGHT` will have any effect, however. Also any of the `V_*TRANS` flags will have any effect for translucency.
---
---
---
---*Note: Setting the `x`/`y` to `0`,`0` and width/height of `320`,`200` will cover the whole screen with the speficied `color` if any plus ignoring any video flags*
---
---@param x? integer
---@param y? integer
---@param width? integer
---@param height? integer
---@param color? integer
---@return nil
function v.drawFill(x, y, width, height, color) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawString)**
---
---Draws text on the screen at the screen coordinates given.
---
---Notes:
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as color and translucency.
---*`align` determines the alignment of the text or otherwise miscellaneous traits - see [below](https://wiki.srb2.org/wiki/Functions#Alignment_types) for a full list of valid options.
---
---@param x integer
---@param y integer
---@param text string
---@param flags? integer
---@param align? stringtype
---@return nil
function v.drawString(x, y, text, flags, align) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawNameTag)**
---
---Draws text in the style of the Character Select name tags at the screen coordinates given.
---
---Notes:
---*`basecolor` and `outlinecolor` should be [SKINCOLOR_*](https://wiki.srb2.org/wiki/Skin_color) constants.
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as alignment and translucency.
---
---@param x integer
---@param y integer
---@param text string
---@param flags? integer
---@param basecolor? integer
---@param outlinecolor? integer
---@return nil
function v.drawNameTag(x, y, text, flags, basecolor, outlinecolor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawScaledNameTag)**
---
---Draws text in the style of the Character Select name tags at the screen coordinates given, but at a specific scale.
---
---Notes:
---*`basecolor` and `outlinecolor` should be [SKINCOLOR_*](https://wiki.srb2.org/wiki/Skin_color) constants.
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as alignment and translucency.
---
---@param x fixed_t
---@param y fixed_t
---@param text string
---@param flags? integer
---@param scale? integer
---@param basecolor? integer
---@param outlinecolor? integer
---@return nil
function v.drawScaledNameTag(x, y, text, flags, scale, basecolor, outlinecolor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.drawLevelTitle)**
---
---Draws text in the style of the titlecard level titles on the screen at the screen coordinates given.
---
---Notes:
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given, which control extra effects such as color and translucency.
---
---@param x integer
---@param y integer
---@param text string
---@param flags? integer
---@return nil
function v.drawLevelTitle(x, y, text, flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.stringWidth)**
---
---Returns what the width of the text displayed as graphics on the screen would be.
---Notes:
---*`flags` determines the [video flags](https://wiki.srb2.org/wiki/video_flags) given to the string, though only the [scaling flags](https://wiki.srb2.org/wiki/Video_flags#Scale) will have any effect on the size of the width returned by the function.
---*`widthtype` determines what font the string is in, which can also affect the size of the width returned by the function - see [below](https://wiki.srb2.org/wiki/Functions#Width_types) for a full list of valid options.
---
---@param text string
---@param flags? integer
---@param widthtype? stringwidthtype
---@return integer
function v.stringWidth(text, flags, widthtype) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.nameTagWidth)**
---
---Returns what the width of the text would be if displayed in the style of the Character Select name tag on the screen.
---
---@param text string
---@return integer
function v.nameTagWidth(text) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.levelTitleWidth)**
---
---Returns what the width of the text would be if displayed in the style of the titlecard level titles on the screen.
---
---@param text string
---@return integer
function v.levelTitleWidth(text) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.levelTitleHeight)**
---
---Returns what the height of the text would be if displayed in the style of the titlecard level titles on the screen. This is affected by whether or not the text has capital characters in it.
---
---@param text string
---@return integer
function v.levelTitleHeight(text) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.getColormap)**
---
---Returns the colormap to apply to a patch for a particular character skin and/or [skin color](https://wiki.srb2.org/wiki/List_of_skin_colors), as a special type of userdata which can only be used by [v.draw](https://wiki.srb2.org/wiki/Functions#v.draw) or [v.drawScaled](https://wiki.srb2.org/wiki/Functions#v.drawScaled). Skin names such as `"sonic"` or `"tails"` can be used, but their skin slot numbers can also be used (e.g., 0 for `"sonic"`, 1 for `"tails"`, etc). If either of these are used, the skin's [startcolor](https://wiki.srb2.org/wiki/S_SKIN#startcolor) value can affect the range of palette colors replaced by the given skin color's palette colors.
---
---Certain skin values have special effects on the colormap returned for a patch to use. They are represented by the following constants:
---Using `translation` makes the colormap to use the color [Translation](https://wiki.srb2.org/wiki/Translation) (if exists, otherwise gives an error) to redefine the colors of the colormap.
---
---@param skin? string|integer
---@param color? integer
---@param translation? string
---@return colormap
function v.getColormap(skin, color, translation) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.getStringColormap)**
---
---Returns the colormap to apply to a patch for a particular text color code as a special type of userdata which can only be used by [v.draw](https://wiki.srb2.org/wiki/Functions#v.draw) or [v.drawScaled](https://wiki.srb2.org/wiki/Functions#v.drawScaled).
---
---See [Video Flags > Color](https://wiki.srb2.org/wiki/Video_flags#Color) for a list of text colors.
---
---@param flag integer
---@return colormap
function v.getStringColormap(flag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.getSectorColormap)**
---
---Returns the sector `sec`'s colormap translation at the specified XYZ coordinates, as a special type of userdata which can only be used by [v.draw](https://wiki.srb2.org/wiki/Functions#v.draw) or [v.drawScaled](https://wiki.srb2.org/wiki/Functions#v.drawScaled).
---
---`sector` can be `nil`, making the call equivalent to `v.getSectorColormap(R_PointInSubsector(x, y).sector, x, y, z)`.
---
---`lightlevel` is optional, and ranges from 0 to 255. If the sector has no colormap applied, this returns the `COLORMAP` file.
---
---
---
---*Note: Sector colormap's lightlevels are actually up to 32 lightlevels, despite `lightlevel` being from 0 up to 255.
---It actually gets right bit shifted to 3 to stay in the range of these 32 lightlevels.*
---
---@param sector? sector_t
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@param lightlevel integer
---@return colormap
function v.getSectorColormap(sector, x, y, z, lightlevel) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.fadeScreen)**
---
---Fades the screen to a certain palette color.
---
---Notes:
---*If `color` is a palette index, the maximum value of `strength` is 10; otherwise, if `color` is one of the special values in the table below, then the maximum value of `strength` is 32.
---*Additionally, certain values of `color` have special effects on the resulting color of the screen pixel:
---
---@param color integer
---@param strength integer
---@return nil
function v.fadeScreen(color, strength) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.width)**
---
---Returns the screen width.
---
---@return integer
function v.width() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.height)**
---
---Returns the screen height.
---
---@return integer
function v.height() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.dupx)**
---
---Returns the screen's X scale, as both an integer and fixed-point value.
---
---@return integer
---@return integer
function v.dupx() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.dupy)**
---
---Returns the screen's Y scale, as both an integer and fixed-point value.
---
---@return integer
---@return integer
function v.dupy() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.renderer)**
---
---Returns the renderer used, as a string.
---
---Possible return values:
---*`"software"` - [Software](https://wiki.srb2.org/wiki/Software) renderer
---*`"opengl"` - [OpenGL](https://wiki.srb2.org/wiki/OpenGL) renderer
---*`"none"` - None (used for [dedicated server](https://wiki.srb2.org/wiki/dedicated_server)s)
---
---@return string
function v.renderer() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.userTransFlag)**
---
---Returns the value of [translucenthud](https://wiki.srb2.org/wiki/Console/Variables#translucenthud), as an alpha video flag, i.e., `V_**TRANS` (see [Video flags > Alpha](https://wiki.srb2.org/wiki/Video_flags#Alpha)).
---
---@return integer
function v.userTransFlag() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.localTransFlag)**
---
---Returns the maximum recommended translucency value for HUD items, as an alpha video flag, i.e., `V_**TRANS` (see [Video flags > Alpha](https://wiki.srb2.org/wiki/Video_flags#Alpha)).
---
---Notes:
---* This function differs from `v.userTransFlag` in that `v.userTransFlag` is specified by the user, but `v.localTransFlag` is specified by the game itself.
---
---@return integer
function v.localTransFlag() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.RandomFixed)**
---
---Returns a random integer between 0 and `FRACUNIT-1` (65535).
---
---@return fixed_t
function v.RandomFixed() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.RandomByte)**
---
---Returns a random integer between 0 and 255.
---
---@return integer
function v.RandomByte() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.RandomKey)**
---
---Returns a random integer between 0 and `a - 1`.
---
---Note: In 2.2.11 and earlier, `a` should not be larger than 65536. Otherwise, there will be only 65536 possible different results this function can return, which will be spread out across the full range given; the rest of the numbers will be skipped. This was fixed in 2.2.12.
---
---@param a integer
---@return integer
function v.RandomKey(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.RandomRange)**
---
---Returns a random integer between `a` and `b`, inclusive.
---
---Note: In 2.2.11 and earlier, the difference between `a` and `b` should not be larger than 65536. Otherwise, there will be only 65536 possible different results this function can return, which are spread out across the full range given; the rest of the numbers will be skipped. This was fixed in 2.2.12.
---
---@param a integer
---@param b integer
---@return integer
function v.RandomRange(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.SignedRandom)**
---
---Returns a random integer between -128 and 127.
---
---@return integer
function v.SignedRandom() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#v.RandomChance)**
---
---Returns true `p`% of the time, where `p` is a fixed-point number between 0 and `FRACUNIT`. For example, `v.RandomChance(FRACUNIT/2)` returns true 50% of the time.
---
---@param p fixed_t
---@return boolean
function v.RandomChance(p) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#COM_AddCommand)**
---
---Format of `fn`: `function([player_t](https://wiki.srb2.org/wiki/player_t) player, [string arg, [...]])`
---
---Registers a console command with the name `name` that executes the specified function when called. The first argument of the function is the player who executed the command, and all subsequent arguments are arguments passed to the command.
---
---`flags` may be any of the flags listed below, OR'ed together, or none.
---
---@param name string
---@param fn function
---@param flags? integer
---@return nil
function COM_AddCommand(name, fn, flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#COM_BufAddText)**
---
---Adds the specified text to `player`'s console buffer, but does not actually execute the command.
---
---@param player player_t
---@param text string
---@return nil
function COM_BufAddText(player, text) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#COM_BufInsertText)**
---
---Executes a console command in `player`'s console.
---
---@param player player_t
---@param text string
---@return nil
function COM_BufInsertText(player, text) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#CV_RegisterVar)**
---
---Format of `t`: `table{string name, string defaultvalue, int flags, table PossibleValue, function(consvar_t var) func}`
---
---Registers a console variable with the name `name` for use in the console and returns the console variable created. `defaultvalue` is the default value for the console variable in string form. `PossibleValue` is a list or range of possible values that are allowed for the variable. `flags` is an integer storing the flags to be given to the console variable; see [Constants > Console variable flags](https://wiki.srb2.org/wiki/Constants#Console_variable_flags) for a list of them. If the `CV_CALL` flag is set, the function `func` is executed when the variable is changed: the sole argument passed to such function is the console variable itself.
---
---`PossibleValue` can either be set to the name of one of the pre-existing PossibleValue ranges listed below, or a table listing possible values, or set to nil if not needed:
---Custom PossibleValue tables need to be formatted as such:
---```lua
---{string1=value1, string2=value2, [...]}
---```
---This gives each possible value listed in the table a string name of its own, which can be used in the console itself when the variable is in use.
---
---If `MIN` and `MAX` are used as string names for possible value entries, these will act as the minimum and maximum of a bounded range of possible values, allowing any value in-between the two to be picked as well. Otherwise, the selectable values for the console variable are limited explicitly only to the possible value entries listed in the table. Example of custom `MIN` and `MAX` values:
---
---```lua
---{MIN = 20, MAX = 50}
---```
---
---The contents of `CV_RegisterVar` can alternatively be laid out as such:
---```lua
---CV_RegisterVar({name = , defaultvalue = , flags = , PossibleValue = , func = })
---```
---Or:
---```lua
---CV_RegisterVar({
---	name = ,
---	defaultvalue = ,
---	flags = ,
---	PossibleValue = ,
---	func =
---})
---```
---
---In the above two layouts, the names of the variables of the table are written out, and so do not need to be placed in any particular order unlike as in the above.
---
---@param t table
---@return consvar_t
function CV_RegisterVar(t) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#CV_FindVar)**
---
---Returns the corresponding console variable named `var`.
---
---@param var string
---@return consvar_t
function CV_FindVar(var) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#CV_Set)**
---
---Sets the value of the target console variable `cvar` to `value`.
---
---This will call the console variable's callback function, if it has one.
---
---@param cvar consvar_t
---@param value string|integer
---@return nil
function CV_Set(cvar, value) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#CV_StealthSet)**
---
---Sets the value of the target console variable `cvar` to `value` without calling its callback function.
---
---@param cvar consvar_t
---@param value string|integer
---@return nil
function CV_StealthSet(cvar, value) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#CV_AddValue)**
---
---Adds the value `increment` to the console variable `cvar`. `increment` can also be a negative number.
---
---If performing the addition causes the variable's value to go below its minimum or above its maximum, the final value will wrap around those bounds.
---
---There are special cases for some console variables:
---* `pointlimit`: If gametype is `GT_MATCH`, `increment` is multiplied by 50.
---* `forceskin`: Cycles through usable skins. Follows the same conditions as `R_SkinUsable` for the resulting value.
---
---@param cvar consvar_t
---@param increment integer
---@return nil
function CV_AddValue(cvar, increment) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#CONS_Printf)**
---
---Prints the text given to the console for `player`. This is similar to [print](https://wiki.srb2.org/wiki/Functions#print)(text), but this will only print for one player.
---
---Certain ASCII characters will have special effects when printed out to the console by this function. These can either be given using decimal (`\nnn`) or hexadecimal codes (`\xnn` or `\xnnnn`), e.g.: `\130` and `\x82` will both cause text following the code to turn yellow. See [Lua > Special characters](https://wiki.srb2.org/wiki/Lua#Special_characters) for a list of these.
---
---@param player player_t
---@param text string
---@return nil
function CONS_Printf(player, text) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#searchBlockmap)**
---
---Does a search through a specified area of the [blockmap](https://wiki.srb2.org/wiki/blockmap). This can be used to find Objects or linedefs in the area and run a function for each them. This function returns `true` if the search was not interrupted at any point, and `false` if it was.
---
---`searchtype` determines what is being searched for:
---* `"objects"` - search for [Object](https://wiki.srb2.org/wiki/Object)s ([mobj_t](https://wiki.srb2.org/wiki/mobj_t)) in the blockmap. Note that Objects with `MF_NOBLOCKMAP` are not in the blockmap, and so will not be found by this function.
---* `"lines"` - search for [linedef](https://wiki.srb2.org/wiki/linedef)s ([line_t](https://wiki.srb2.org/wiki/line_t)) in the blockmap.
---
---`fn` is the function to be used on each found Object/linedef. The format of the function depends on the `searchtype`:
---* `"objects"` search - `function([mobj_t](https://wiki.srb2.org/wiki/mobj_t) refmobj, [mobj_t](https://wiki.srb2.org/wiki/mobj_t) foundmobj)`
---* `"lines"` search - `function([mobj_t](https://wiki.srb2.org/wiki/mobj_t) refmobj, [line_t](https://wiki.srb2.org/wiki/line_t) foundline)`
---
---In both cases, `refmobj` is the same Object given in `searchBlockmap` arguments, while `foundmobj`/`foundline` are an Object/linedef found in the blockmap.
---
---The return value of `fn` affects how searching continues afterwards:
---* `nil` - Continue searching as normal.
---* `false` - Stop searching in the current block and move on to the next block.
---* `true` - End the search entirely.
---
---If `fn` returns `true` or `false` at any point, `searchBlockmap` will return `false`.
---
---`refmobj` is a reference Object of your choice used within searching. If you do not supply X/Y ranges to search in, it defaults to checking within the Object's radius in both axes (relative to its current X/Y position in the map). If `refmobj` was removed mid-search, the search stops and `searchBlockmap` will return `false`. However, `refmobj` is not an optional argument (a dummy Object can be used if necessary).
---
---`x1`, `x2`, `y1`, and `y2` are optional arguments, determining the range of X and Y coordinates in the map to search the blockmap between, if given. They determine the left, right, bottom and top block positions of the blockmap to search in, specifically. If not given, `refmobj` is used to set the range by default. Note that all Objects or linedefs in each block spanned by the range will be checked, not just those within the range itself. To force searching within an exact range, manual position or distance checking needs to be added to the searching function.
---
---@param searchtype string
---@param fn function
---@param refmobj mobj_t
---@param x1? fixed_t
---@param x2? fixed_t
---@param y1? fixed_t
---@param y2? fixed_t
---@return boolean
function searchBlockmap(searchtype, fn, refmobj, x1, x2, y1, y2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.gameControlDown)**
---
---Returns whether the game control `gc` (a [`GC_*`](https://wiki.srb2.org/wiki/Constants#Game_controls) constant) is currently pressed for the first player.
---
---@param gc integer
---@return boolean
function input.gameControlDown(gc) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.gameControl2Down)**
---
---Returns whether the game control `gc` (a [`GC_*`](https://wiki.srb2.org/wiki/Constants#Game_controls) constant) is currently pressed for the second player.
---
---@param gc integer
---@return boolean
function input.gameControl2Down(gc) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.gameControlToKeyNum)**
---
---Returns the numbers of the keys bound to the game control `gc` (a [`GC_*`](https://wiki.srb2.org/wiki/Constants#Game_controls) constant) for the first player.
---
---@param gc integer
---@return integer
---@return integer
function input.gameControlToKeyNum(gc) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.gameControl2ToKeyNum)**
---
---Returns the numbers of the keys bound to the game control `gc` (a [`GC_*`](https://wiki.srb2.org/wiki/Constants#Game_controls) constant) for the second player.
---
---@param gc integer
---@return integer
---@return integer
function input.gameControl2ToKeyNum(gc) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.joyAxis)**
---
---Returns the first player's joystick's position on the axis specified by `axissel` (a [`JA_*`](https://wiki.srb2.org/wiki/Constants#Joystick_axes) constant).
---
---@param axissel integer
---@return integer
function input.joyAxis(axissel) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.joy2Axis)**
---
---Returns the second player's joystick's position on the axis specified by `axissel` (a [`JA_*`](https://wiki.srb2.org/wiki/Constants#Game_Controls)) constant).
---
---@param axissel integer
---@return integer
function input.joy2Axis(axissel) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.keyNumToName)**
---
---Returns the name of the key specified by the key number `keynum`.
---
---@param keynum integer
---@return string
function input.keyNumToName(keynum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.keyNameToNum)**
---
---Returns the number of the key specified by the key name `keyname`.
---
---@param keyname string
---@return integer
function input.keyNameToNum(keyname) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.keyNumPrintable)**
---
---Returns whether the key specified by the key number `keynum` corresponds to a printable character.
---
---@param keynum string
---@return boolean
function input.keyNumPrintable(keynum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.shiftKeyNum)**
---
---Returns the capitalized form of key number `keynum`.
---
---@param keynum string
---@return integer
function input.shiftKeyNum(keynum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.getMouseGrab)**
---
---Returns whether the first player's mouse is grabbed (locked and invisible) by the window.
---
---@return boolean
function input.getMouseGrab() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.setMouseGrab)**
---
---Sets whether the first player's mouse is grabbed (locked and invisible) by the window.
---
---@param grab boolean
---@return nil
function input.setMouseGrab(grab) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#input.getCursorPosition)**
---
---Returns the position of the cursor relative to the top-left corner of the window.
---
---@return integer
---@return integer
function input.getCursorPosition() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.paletteToRgb)**
---
---Converts a palette index into RGB channel values (0-255).
---
---@param color integer
---@return integer
---@return integer
---@return integer
function color.paletteToRgb(color) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.rgbToPalette)**
---
---Alternative versions:
---* `color.rgbToPalette(int rgb)`
---* `color.rgbToPalette(string webcolor)`
---Converts RGB values into a palette index.
---
---@param red integer
---@param green integer
---@param blue integer
---@return integer
function color.rgbToPalette(red, green, blue) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.hslToRgb)**
---
---Converts an HSL color, where the HSL values are `uint8`s, into RGB channel values.
---
---@param hue integer
---@param saturation integer
---@param luminance integer
---@return integer
---@return integer
---@return integer
function color.hslToRgb(hue, saturation, luminance) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.rgbToHsl)**
---
---Alternative versions:
---* `color.rgbToHsl(int rgb)`
---* `color.rgbToHsl(string webcolor)`
---Converts RGB channel values into HSL colors.
---
---@param red integer
---@param green integer
---@param blue integer
---@return integer
---@return integer
---@return integer
function color.rgbToHsl(red, green, blue) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.rgbToHex)**
---
---Alternative versions:
---* `color.rgbToHex(int rgb)`
---* `color.rgbToHex(int rgba)`
---* `color.rgbToHex(string webcolor)`
---Converts an RGB(A) color into a web color, as a string.
---
---Example: `color.rgbToHex(255, 255, 255)` will return `"#FFFFFF"`.
---
---@param red integer
---@param green integer
---@param blue integer
---@param alpha? integer
---@return string
function color.rgbToHex(red, green, blue, alpha) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.hexToRgb)**
---
---Converts a web color (such as `#B22222` or `#7F3`) into RGBA values.
---
---@param webcolor string
---@return integer, integer, integer, integer?
function color.hexToRgb(webcolor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.packRgb)**
---
---Alternative versions:
---* `color.packRgb(int rgb)`
---* `color.packRgb(string webcolor)`
---Packs individual RGB channel values into a number representing a RGB color.
---
---@param red integer
---@param green integer
---@param blue integer
---@return integer
function color.packRgb(red, green, blue) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.packRgba)**
---
---Alternative versions:
---* `color.packRgba(int rgb)`
---* `color.packRgba(int rgba)`
---* `color.packRgba(string webcolor)`
---Packs individual RGBA channel values into a number representing an RGBA color.
---
---@param red integer
---@param green integer
---@param blue integer
---@param alpha integer
---@return integer
function color.packRgba(red, green, blue, alpha) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#color.unpackRgb)**
---
---Alternative versions:
---* `color.unpackRgb(int rgba)`
---Unpacks a number representing an RGB color into red, green, blue channel values.
---
---If a number representing a RGBA color is given, the function will also return an `int` representing the alpha channel.
---
---@param rgb integer
---@return integer, integer, integer, integer?
function color.unpackRgb(rgb) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#print)**
---
---Outputs text in the console. Each output string will be separated into different lines.
---
---Certain ASCII characters will have special effects when printed out to the console by this function. These can either be given using decimal (`\nnn`) or hexadecimal codes (`\xnn` or `\xnnnn`). For example, `\130` and `\x82` will both cause text following the code to turn yellow. See [Lua > Special characters](https://wiki.srb2.org/wiki/Lua#Special_characters) for a list of these.
---
---@param output string
---@param output2? string
---@vararg string
---@return nil
function print(output, output2, ...) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#chatprint)**
---
---Outputs text in the chat window (or the console if it cannot be output in the chat window). Each output string will be separated into different lines. If `sound` is set to true (defaults to false), a sound will be played when sent.
---
---Certain ASCII characters will have special effects when printed out to the chat window or console by this function. These can either be given using decimal (`\nnn`) or hexadecimal codes (`\xnn` or `\xnnnn`).For example, `\130` and `\x82` will both cause text following the code to turn yellow. See [Lua > Special characters](https://wiki.srb2.org/wiki/Lua#Special_characters) for a list of these.
---
---@param output string
---@param sound? boolean
---@return nil
function chatprint(output, sound) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#chatprintf)**
---
---Outputs text in the chat window (or the console if it cannot be output in the chat window). Unlike `chatprint`, the text will only be output for the player supplied in `player`. Each output string will be separated into different lines. If `sound` is set to true (defaults to false), a sound will be played when sent.
---
---Certain ASCII characters will have special effects when printed out to the chat window or console by this function. These can either be given using decimal (`\nnn`) or hexadecimal codes (`\xnn` or `\xnnnn`). For example, `\130` and `\x82` will both cause text following the code to turn yellow. See [Lua > Special characters](https://wiki.srb2.org/wiki/Lua#Special_characters) for a list of these.
---
---@param player player_t
---@param output string
---@param sound? boolean
---@return nil
function chatprintf(player, output, sound) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#freeslot)**
---
---Automatically initializes a new named resource based on the name given, declaring the name for the next [freeslot](https://wiki.srb2.org/wiki/freeslot) available for the appropriate resource type. (e.g.: `"MT_NEWOBJECT"` will add a new Object type). (See [Freeslot](https://wiki.srb2.org/wiki/Freeslot) for more information.) This function will return the integer representing each resource successfully allocated; unsuccessful allocations will not be returned (e.g. one failed freeslot allocation out of a list of four will only return the successful three).
---
---Example: `freeslot("MT_NEWOBJECT", "S_NEWSTATE")` will return `MT_NEWOBJECT`, `S_NEWSTATE`.
---
---Note: Resources that begin with `MT_` (Object type), `S_` (state), or `SPR_` must be in all capital letters, while `sfx_` resources must be all lowercase.
---
---@param resource string
---@param resource2? string
---@vararg string
---@return ... int
function freeslot(resource, resource2, ...) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#addHook)**
---
---Binds a function to a hook (i.e., the function will be run when a particular event happens). See [Lua/Hooks](https://wiki.srb2.org/wiki/Lua/Hooks) for more information on using this function.
---
---@param hook hooktype
---@param fn function
---@param extra? integer|string
---@return nil
function addHook(hook, fn, extra) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#super)**
---
---Only use this inside of an overridden `A_` [action](https://wiki.srb2.org/wiki/Actions). Calls the original version of the action.
---
---@param actor mobj_t
---@param var1 integer
---@param var2 integer
---@return nil
function super(actor, var1, var2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#IsPlayerAdmin)**
---
---Returns true if the player has been given administrative privileges by the server via the [promote](https://wiki.srb2.org/wiki/Console/Commands#promote) command, or has logged as an admin via a preset password; false if not. Note that the host themselves will not necessarily return true to this function, since their administrative powers are there by default.
---
---@param player player_t
---@return boolean
function IsPlayerAdmin(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#userdataType)**
---
---Returns the userdata type of `v` as a string.
---Possible strings that may be returned by this function:
---* `"unknown"`
---* `"state_t"`
---* `"mobjinfo_t"`
---* `"sfxinfo_t"`
---* `"skincolor_t"`
---* `"skincolor_t.ramp"`
---* `"spriteinfo_t"`
---* `"spriteframepivot_t[]"`
---* `"spriteframepivot_t"`
---* `"taglist"`
---* `"mobj_t"`
---* `"mapthing_t"`
---* `"player_t"`
---* `"ticcmd_t"`
---* `"skin_t"`
---* `"player_t.powers"`
---* `"skin_t.soundsid"`
---* `"skin_t.sprites"`
---* `"skin_t.sprites[]"`
---* `"vertex_t"`
---* `"line_t"`
---* `"side_t"`
---* `"subsector_t"`
---* `"sector_t"`
---* `"ffloor_t"`
---* `"pslope_t"`
---* `"vector2_t"`
---* `"vector3_t"`
---* `"mapheader_t"`
---* `"polyobj_t"`
---* `"consvar_t"`
---* `"sector_t.lines"`
---* `"sector_t.taglist"`
---* `"line_t.sidenum"`
---* `"line_t.args"`
---* `"line_t.stringargs"`
---* `"mapthing_t.args"`
---* `"mapthing_t.stringargs"`
---* `"bbox"`
---* `"hudinfo_t"`
---* `"patch_t"`
---* `"colormap"`
---* `"camera_t"`
---* `"action"`
---* `"luabanks[]"`
---
---@param v any
---@return string
function userdataType(v) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#reserveLuabanks)**
---
---Reserves and then returns a `luabanks` array.
---
---`Luabanks` is a method to save and load custom information in a savefile.
---
---The indexes 0 through 15 in the `luabanks` array contains `UINT32` integers, which are freely modifiable by the modder.
---
---When reserved in an addon with custom gamedata, this array is automatically updated when a save file is loaded, and saved alongside the normal save information when the game writes the save to a file, akin to saving the emeralds collected in a save.
---
---Trying to call this function in a hook or otherwise calling it more than once, including if another mod has already called it before, will result in an error. As such, only one `luabanks` mod can be loaded in at any one time.
---
---@return UINT32[]
function reserveLuabanks() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#registerMetatable)**
---
---Rephrase. [https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1224 See merge request] for original description.
---Registers the metatable `metatable`.
---
---Currently, tables passed through NetVars hooks or stored in custom player/mobj fields will not keep their metatable, because SRB2 does not keep track of them by default.
---
---This issue can be solved by calling this function during script loading to have SRB2 register the given `metatable`, in such a way that the tables/userdata this metatable is attached to (via `setmetatable()`) will not lose their metatable when sent to a client connecting to the server.
---
---@param metatable table
---@return nil
function registerMetatable(metatable) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#userdataMetatable)**
---
---Takes a string as only argument and returns the metatable
---associated to the userdata type this string refers to.
---Returns nil if the string does not refer to a valid userdata type.
---
---@param userdataname string
---@return table|nil
function userdataMetatable(userdataname) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#getTimeMicros)**
---
---Rephrase? [https://git.do.srb2.org/STJr/SRB2/-/merge_requests/1647 See merge request].
---Returns a modified value of SDL's high resolution counter.
---
---This is used as a profiling timer function: Two values returned by this function can be substracted from each other to find out how much time (in microseconds) is between them. This can be used to measure the performance of Lua code, and as such shouldn't be used for anything else other than performance measurements.
---
---Warning about OpenGL and HUD hooks: measuring Lua API calls that contain OpenGL API calls can give unreliable/confusing results because of the asynchronous nature of OpenGL. This applies to measuring HUD drawing functions in OpenGL mode.
---
---Example:
---```Lua
---
----- Get the time before the code to be profiled
---local first = getTimeMicros()
---
----- Run a slow function/block, like:
---local nums = {}
---for i = 1,10000 do
---	nums[i] = 0
---
---	for j = 1,i do
---		nums[j] = $ + 1
---	end
---end
---
----- Get the time after the code to be profiled
---local second = getTimeMicros()
---
----- Substract the newest time against the oldest time
---local result = second - first
----- This result will represent the time between [first] and [second], in microseconds
---
---```
---
---@return integer
function getTimeMicros() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_BuildMapName)**
---
---Converts the given map number to a map name in `MAPXX` format, where XX is the [extended map number](https://wiki.srb2.org/wiki/extended_map_number). If no map number is given, the current map's number will be used.
---
---Example: `G_BuildMapName(100)` will return `"MAPA0"`.
---
---@param map? integer
---@return string
function G_BuildMapName(map) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_BuildMapTitle)**
---
---Returns the name and act number of map number `map`.
---
---Example: `G_BuildMapTitle(1)` will return `"Greenflower Zone 1"`.
---
---@param map? integer
---@return string
function G_BuildMapTitle(map) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_FindMap)**
---
---Improve the description
---Returns:
---
---
---[1] => map number
---[2] => map title
---[3] => search frequency table
---
---
---The frequency table is unsorted. It has the following format:
---
---
---{
---	['mapnum'],
---
---	['matchd'] => matches in map title string
---	['keywhd'] => matches in map keywords
---
---	The above two tables have the following format:
---
---	{
---		['pos'] => offset from start of string
---		['siz'] => length of match
---	}...
---
---	['total'] => the total matches
---}...
---
---@param query string
---@return INT32
---@return string
---@return table
function G_FindMap(query) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_FindMapByNameOrCode)**
---
---Improve the description
---Returns:
---
---
---[1] => map number
---[2] => map title
---
---@param query string
---@return INT32
---@return string|nil
function G_FindMapByNameOrCode(query) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_DoReborn)**
---
---Respawns the player whose player number is `playernum`. Avoid calling this function directly in Single Player; set the player's `player.playerstate` to `PST_REBORN` instead.
---
---@param playernum integer
---@return nil
function G_DoReborn(playernum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_EnoughPlayersFinished)**
---
---Checks if the required players to exit the level is reached. The requirement depends of [playersforexit](https://wiki.srb2.org/wiki/Console/Variables#playersforexit).
---
---@return boolean
function G_EnoughPlayersFinished() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_SetCustomExitVars)**
---
---Alternative version:
---* `G_SetCustomExitVars()`
---
---Changes the settings that will apply when the current level is exited, but does not actually exit the level.
---If a value for `nextmap` is given, it sets the map number the game will change to once the level ends.
---If `skipstats` is set to 1 (defaults to 0), the statistics screen will be skipped. If set to 2, it will additionally skip the level end cutscene, if applicable.
---Calling the function with no arguments will clear the custom settings.
---
---@param nextmap? integer
---@param skipstats? integer
---@return nil
function G_SetCustomExitVars(nextmap, skipstats) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_ExitLevel)**
---
---Immediately exits the level.
---If `G_SetCustomExitVars` was called beforehand, the level will exit using the custom settings set.
---
---@return nil
function G_ExitLevel() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_IsSpecialStage)**
---
---Returns true if the map with the given map number is a [Special Stage](https://wiki.srb2.org/wiki/Special_Stage); otherwise returns false. If no map number is given, the current map's number will be used.
---
---@param map? integer
---@return boolean
function G_IsSpecialStage(map) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_AddGametype)**
---
---Registers a custom gametype into the game. See [Custom gametypes](https://wiki.srb2.org/wiki/Game_modes#Custom_gametypes) for more information on using this function.
---
---@param t table
---@return nil
function G_AddGametype(t) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_GametypeUsesLives)**
---
---Returns true if the current gametype has the gametype rule `GTR_LIVES` ([Single Player](https://wiki.srb2.org/wiki/Single_Player), [Coop](https://wiki.srb2.org/wiki/Coop) or [Competition](https://wiki.srb2.org/wiki/Competition)); otherwise returns false. If in [Record Attack](https://wiki.srb2.org/wiki/Record_Attack), a [Special Stage](https://wiki.srb2.org/wiki/Special_Stage) or a [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) level, this returns false regardless of gametype.
---
---@return boolean
function G_GametypeUsesLives() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_GametypeUsesCoopLives)**
---
---Returns true if the current gametype has the gametype rule `GTR_LIVES` and `GTR_FRIENDLY`; otherwise it returns false.
---
---@return boolean
function G_GametypeUsesCoopLives() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_GametypeUsesCoopStarposts)**
---
---Returns true if the current gametype has the gametype rule `GTR_FRIENDLY`; otherwise it returns false.
---
---@return boolean
function G_GametypeUsesCoopStarposts() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_GametypeHasTeams)**
---
---Returns true if the current gametype has the gametype rule `GTR_TEAMS` ([Team Match](https://wiki.srb2.org/wiki/Team_Match) or [CTF](https://wiki.srb2.org/wiki/CTF)); otherwise returns false.
---
---@return boolean
function G_GametypeHasTeams() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_GametypeHasSpectators)**
---
---Returns true if the current gametype has the gametype rule `GTR_SPECTATORS` ([Match](https://wiki.srb2.org/wiki/Match), [CTF](https://wiki.srb2.org/wiki/CTF) or [Tag](https://wiki.srb2.org/wiki/Tag)); otherwise returns false.
---
---@return boolean
function G_GametypeHasSpectators() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_RingSlingerGametype)**
---
---Returns true if the current gametype has the gametype rule `GTR_RINGSLINGER` ([Match](https://wiki.srb2.org/wiki/Match), [CTF](https://wiki.srb2.org/wiki/CTF) or [Tag](https://wiki.srb2.org/wiki/Tag)) or if the [`ringslinger`](https://wiki.srb2.org/wiki/Console/Variables#ringslinger) cvar is enabled; otherwise returns false.
---
---@return boolean
function G_RingSlingerGametype() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_PlatformGametype)**
---
---Returns true if the current gametype doesn't have gametype rule `GTR_RINGSLINGER` ([Single Player](https://wiki.srb2.org/wiki/Single_Player), [Coop](https://wiki.srb2.org/wiki/Coop), [Race](https://wiki.srb2.org/wiki/Race) or [Competition](https://wiki.srb2.org/wiki/Competition)); otherwise returns false.
---
---@return boolean
function G_PlatformGametype() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_CoopGametype)**
---
---Returns true if the current gametype has the gametype rules `GTR_FRIENDLY` and `GTR_CAMPAIGN` ([Single Player](https://wiki.srb2.org/wiki/Single_Player) or [Coop](https://wiki.srb2.org/wiki/Coop)); otherwise returns false.
---
---@return boolean
function G_CoopGametype() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_TagGametype)**
---
---Returns true if the current gametype has the gametype rules `GTR_TAG` ([Tag](https://wiki.srb2.org/wiki/Tag) or Hide and Seek); otherwise returns false.
---
---@return boolean
function G_TagGametype() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_CompetitionGametype)**
---
---Returns true if the current gametype has the gametype rules `GTR_RACE` and `GTR_LIVES` ([Competition](https://wiki.srb2.org/wiki/Competition)); otherwise returns false.
---
---@return boolean
function G_CompetitionGametype() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_AddPlayer)**
---
---Adds a bot to the game. `skin`, `color` and `name` specify how bot will look like. `bottype` can be one of the following values:
---*`BOT_NONE` - Player is not bot
---*`BOT_2PAI` - Bot acts like Tails from SinglePlayer
---*`BOT_2PHUMAN` - Bot acts like Tails but his controls can be taken by human Player 2
---*`BOT_MPAI` - Bot has unique AI. It can be modded with LUA through `BotTiccmd` hook
---
---
---**WARNING: Console commands (COM_BufInsertText) can't be executed as a bot at the moment.**
---
---@param skin integer
---@param color integer
---@param name string
---@param bottype integer
---@return player_t
function G_AddPlayer(skin, color, name, bottype) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_RemovePlayer)**
---
---Removes the bot. (Cannot be applied to human players.)
---
---@param playernum integer
---@return nil
function G_RemovePlayer(playernum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_SetUsedCheats)**
---
---Marks the current game session as cheats has been used, `silent` makes the notice about the game no longer saving progress until restart will not display.
---
---@param silent boolean
---@return nil
function G_SetUsedCheats(silent) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_TicsToHours)**
---
---Converts the given time in tics to hours.
---
---@param tics integer
---@return integer
function G_TicsToHours(tics) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_TicsToMinutes)**
---
---Converts the given time in tics to minutes. By default, this returns only values between 0 and 59, assuming the return value is used for timers with both "hours" and "minutes" displays (e.g., hours:minutes:seconds). If `full?` is given and set to true, then hours (or multiples of 60 minutes) will not be truncated, allowing for return values over 59. This latter case is used for timers without an "hours" display (e.g., minutes:seconds).
---
---@param tics integer
---@param full? boolean
---@return integer
function G_TicsToMinutes(tics, full) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_TicsToSeconds)**
---
---Converts the given time in tics to seconds. This returns only values between 0 and 59, assuming the return value is used for timers with both "minutes" and "seconds" displays (e.g., hours:minutes:seconds).
---
---@param tics integer
---@return integer
function G_TicsToSeconds(tics) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_TicsToCentiseconds)**
---
---Converts the given time in tics to centiseconds. This returns only values between 0 and 99, assuming the return value is used for timers with both "seconds" and "centiseconds" displays (e.g., minutes:seconds.centiseconds).
---
---@param tics integer
---@return integer
function G_TicsToCentiseconds(tics) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#G_TicsToMilliseconds)**
---
---Converts the given time in tics to milliseconds. This returns only values between 0 and 999.
---
---@param tics integer
---@return integer
function G_TicsToMilliseconds(tics) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RandomFixed)**
---
---Returns a random integer between 0 and `FRACUNIT-1` (65535).
---
---@return fixed_t
function P_RandomFixed() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RandomByte)**
---
---Returns a random integer between 0 and 255.
---
---@return integer
function P_RandomByte() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RandomKey)**
---
---Returns a random integer between 0 and `a - 1`.
---
---Note: `a` should not be larger than 65536. Otherwise, there will be only 65536 possible different results this function can return, which will be spread out across the full range given; the rest of the numbers will be skipped.
---
---@param a integer
---@return integer
function P_RandomKey(a) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RandomRange)**
---
---Returns a random integer between `a` and `b`, inclusive.
---
---Note: The difference between `a` and `b` should not be larger than 65536. Otherwise, there will be only 65536 possible different results this function can return, which are spread out across the full range given; the rest of the numbers will be skipped.
---
---@param a integer
---@param b integer
---@return integer
function P_RandomRange(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SignedRandom)**
---
---Returns a random integer between -128 and 127.
---
---@return integer
function P_SignedRandom() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RandomChance)**
---
---Returns true `p`% of the time, where `p` is a fixed-point number between 0 and `FRACUNIT`. For example, `P_RandomChance(FRACUNIT/2)` returns true 50% of the time.
---
---@param p fixed_t
---@return boolean
function P_RandomChance(p) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#M_MoveColorAfter)**
---
---Shifts the given `color` skincolor ahead of the `target` skincolor. Reflected in the multiplayer setup menu and other functions, but will not affect `color`'s index value.
---
---@param color UINT16
---@param target UINT16
---@return nil
function M_MoveColorAfter(color, target) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#M_MoveColorBefore)**
---
---Shifts the given `color` skincolor behind the `target` skincolor. Reflected in the multiplayer setup menu and other functions, but will not affect `color`'s index value.
---
---@param color UINT16
---@param target UINT16
---@return nil
function M_MoveColorBefore(color, target) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#M_GetColorAfter)**
---
---Returns the skincolor after `color` as a `UINT16` value.
---
---@param color UINT16
---@return UINT16
function M_GetColorAfter(color) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#M_GetColorBefore)**
---
---Returns the skincolor before `color` as a `UINT16` value.
---
---@param color UINT16
---@return UINT16
function M_GetColorBefore(color) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#M_MapNumber)**
---
---Returns the map number for a map identified by the last two characters in its name, or 0 if no map corresponds to these characters.
---
---@param name string
---@return INT32
function M_MapNumber(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckMeleeRange)**
---
---Returns true if `actor`'s target is within the actor's melee range, false if not.
---
---@param actor mobj_t
---@return boolean
function P_CheckMeleeRange(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_JetbCheckMeleeRange)**
---
---Same as `P_CheckMeleeRange`, except the melee range is adjusted for use with the [Jetty-Syn Bomber](https://wiki.srb2.org/wiki/Jetty-Syn_Bomber).
---
---@param actor mobj_t
---@return boolean
function P_JetbCheckMeleeRange(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FaceStabCheckMeleeRange)**
---
---Same as `P_CheckMeleeRange`, except the melee range is adjusted for use with the [CastleBot FaceStabber](https://wiki.srb2.org/wiki/CastleBot_FaceStabber).
---
---@param actor mobj_t
---@return boolean
function P_FaceStabCheckMeleeRange(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SkimCheckMeleeRange)**
---
---Same as `P_CheckMeleeRange`, except the melee range is adjusted for use with the [Skim](https://wiki.srb2.org/wiki/Skim).
---
---@param actor mobj_t
---@return boolean
function P_SkimCheckMeleeRange(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckMissileRange)**
---
---Returns true if `actor` is able to shoot its target at the moment. Returns false if `actor.reactiontime` has not reached 0 or `actor` cannot see the target. Otherwise, the result is randomly decided based on the distance between them.
---
---@param actor mobj_t
---@return boolean
function P_CheckMissileRange(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_NewChaseDir)**
---
---Changes `actor.movedir` to be the decided best direction of the actor to be in relation to its target (provided it has one, of course).
---
---Note: These directions include only the 8 basic cardinal directions (N, S, E, W, NE etc.; also see the [`DI_` constants](https://wiki.srb2.org/wiki/Constants#A_Chase_directions)).
---
---@param actor mobj_t
---@return nil
function P_NewChaseDir(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_LookForPlayers)**
---
---Can `actor` find a player with the conditions provided? If yes, this returns true and the actor's target is set to the first player found. Otherwise this returns false and the actor's target is unchanged.
---*`dist` determines the distance limit for the actor to check for players in. If dist is set to 0, the distance limit will be infinite.
---*`allaround?` determines whether the actor will look all around itself for players or just within 90° of the direction it is currently facing.
---*`tracer?` determines whether to use `actor.tracer` instead of `actor.target`. This is useful for homing missiles such as the [Deton](https://wiki.srb2.org/wiki/Deton), since missiles set their target to the Object who shot them and thus cannot harm it.
---
---`dist` defaults to 0 if not given, while `allaround?` and `tracer` both default to false if not given.
---
---@param actor mobj_t
---@param dist? fixed_t
---@param allaround? boolean
---@param tracer? boolean
---@return boolean
function P_LookForPlayers(actor, dist, allaround, tracer) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RemoveShield)**
---
---Removes any [shield](https://wiki.srb2.org/wiki/shield) `player` may be carrying. This will not throw back the player nor play a sound.
---
---@param player player_t
---@return nil
function P_RemoveShield(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DamageMobj)**
---
---Inflicts damage on the `target` Object, causing it to lose a certain amount of health and use the state determined by `target.info.painstate`. However, if `target` has lost all health as a result of this function, `P_KillMobj` is called by this function instead. The return value of this function depends on whether `target` was damaged or not - if it was, this returns true; if not, this returns false.
---
---`inflictor` and `source` determine where the damage came from: `inflictor` is the Object that dealt the damage, `source` is the source of the damage (or where `inflictor` came from). For instance, when a [projectile](https://wiki.srb2.org/wiki/projectile) fired by a player or enemy damages `target`, `inflictor` should be set the projectile itself, and `source` to the Object that fired the projectile. However, in situations where a player or enemy directly damages `target`, `inflictor` and `source` are usually both set to the same Object. If the damage comes from a level hazard such as damaging [sector special](https://wiki.srb2.org/wiki/Sector_types)s or crushers (or otherwise from nowhere at all), it is best to set both these arguments to nil.
---
---`damage` determines the amount of damage to deal to `target`, or the number of health points removed from it. `damagetype` determines the damage type that will be dealt. Should the damage type have the death flag set, the `target` will be killed.
---
---Note that, if not given, `inflictor` and `source` both default to nil, `damage` defaults to 1 and `damagetype` to 0. The hooks [ShouldDamage](https://wiki.srb2.org/wiki/Lua/Hooks#ShouldDamage) and [MobjDamage](https://wiki.srb2.org/wiki/Lua/Hooks#MobjDamage) can be used modify or replace some of the effects of this function.
---
---A list of damage types can be found [here](https://wiki.srb2.org/wiki/Lua/Constants#DamageTypes).
---
---@param target mobj_t
---@param inflictor? mobj_t
---@param source? mobj_t
---@param damage? integer
---@param damagetype? integer
---@return boolean
function P_DamageMobj(target, inflictor, source, damage, damagetype) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_KillMobj)**
---
---Kills the `target` Object, making it become intangible as well as using the state determined by `target.info.deathstate` (if set to nil, the Object will be removed from existence). If `target` is an enemy or boss, and the Object that killed it was a player or one of their projectiles, points may be awarded to this player. [Flickies](https://wiki.srb2.org/wiki/Flickies) (and/or other items) will also be spawned by enemies killed by this function. `damagetype` determines the damage type that was dealt.
---
---`inflictor` and `source` follow the same meanings as in `P_DamageMobj`, and both default to nil if not given. `damagetype` defaults to 0. The hook [MobjDeath](https://wiki.srb2.org/wiki/Lua/Hooks#MobjDeath) can be used to modify or replace some of the effects of this function.
---
---A list of damage types can be found [here](https://wiki.srb2.org/wiki/Lua/Constants#DamageTypes).
---
---Note: This function is not designed to be used to kill players directly; use `P_DamageMobj` with a special damage type instead.
---
---@param target mobj_t
---@param inflictor? mobj_t
---@param source? mobj_t
---@param damagetype? integer
---@return nil
function P_KillMobj(target, inflictor, source, damagetype) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerRingBurst)**
---
---Spills the specified number of rings. Also spills all weapon panels, ammo and emeralds `player` may be carrying at the time, but does not throw back `player`. If `numrings` is not given (or set to -1), it will default to the player's current ring count (i.e. `player.rings`).
---
---In normal gameplay, up to 32 rings will be spilled by this function; the remainder will not be spawned. The speed at which the rings are flung depends on the duration since the last time this function was used (determined by `player.losstime`). In [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) levels, however, the player will drop all rings if they have the player flag `PF_NIGHTSFALL` (given when the player has run out of time as Super Sonic). In addition, the rings will always be flung at the same speed regardless of `player.losstime`'s value.
---
---Note that this function does not actually affect `player.rings`; this must be modified manually in order for the player to actually lose rings. This does not apply to any weapon panels, ammo and/or emeralds also spilled by this function.
---
---@param player player_t
---@param numrings? integer
---@return nil
function P_PlayerRingBurst(player, numrings) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerWeaponPanelBurst)**
---
---Spills all weapon panels that `player` is carrying, but does not throw back `player`. Unlike the rings in `P_PlayerRingBurst`, the player will actually lose the weapon panels spilled by this function.
---
---@param player player_t
---@return nil
function P_PlayerWeaponPanelBurst(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerWeaponAmmoBurst)**
---
---Spills all weapon panels and ammo that `player` is carrying, but does not throw back `player`. Unlike the rings in `P_PlayerRingBurst`, the player will actually lose the weapon ammo spilled by this function.
---
---@param player player_t
---@return nil
function P_PlayerWeaponAmmoBurst(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerWeaponPanelOrAmmoBurst)**
---
---Spills weapon panels/ammo depending of what `player` is carrying, but does not throw back `player`. If `player` doesn't have a weapon but it's ammo, then the ammo is spilled instead. Otherwise, if `player` does have the weapon then the weapon is spilled. Unlike the rings in `P_PlayerRingBurst`, the player will actually lose the weapon panels/ammo spilled by this function.
---
---@param player player_t
---@return nil
function P_PlayerWeaponPanelOrAmmoBurst(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerEmeraldBurst)**
---
---Spills all emeralds that `player` is carrying, but does not throw back `player`. If `toss` is true, all the emeralds are thrown in the player's forward direction and a toss delay of 2 seconds is set (for players tossing emeralds). Otherwise, the emeralds are spilled around the player (for players dropping emeralds after being hurt). Unlike the rings in `P_PlayerRingBurst`, the player will actually lose the emeralds spilled by this function.
---
---@param player player_t
---@param toss? boolean
---@return nil
function P_PlayerEmeraldBurst(player, toss) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerFlagBurst)**
---
---Spills any CTF flags that `player` is carrying, but does not throw back `player`. If `toss` is true, the flag is thrown in the player's forward direction and a toss delay of 2 seconds is set (for players tossing a flag). Otherwise, the direction is random (for players dropping a flag after being hurt).
---
---@param player player_t
---@param toss? boolean
---@return nil
function P_PlayerFlagBurst(player, toss) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayRinglossSound)**
---
---Plays one of the 4 player ring spill sounds randomly, which can vary depending on the skin, or plays the Mario ring loss sound if in [Mario mode](https://wiki.srb2.org/wiki/Mario_mode). `source` is the Object the sound came from.
---
---@param source mobj_t
---@param player? player_t
---@return nil
function P_PlayRinglossSound(source, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayDeathSound)**
---
---Plays one of the 4 player death sounds randomly, which can vary depending on the skin. `source` is the Object the sound came from.
---
---@param source mobj_t
---@param player? player_t
---@return nil
function P_PlayDeathSound(source, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayVictorySound)**
---
---Plays one of the 4 player victory taunt sounds randomly, which can vary depending on the skin. `source` is the Object the sound came from.
---
---@param source mobj_t
---@param player? player_t
---@return nil
function P_PlayVictorySound(source, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayLivesJingle)**
---
---Plays the extra life jingle. By default this is the extra life music, but in [Mario mode](https://wiki.srb2.org/wiki/Mario_mode) maps or if `Use1upSound` is enabled in the [MainCfg](https://wiki.srb2.org/wiki/MainCfg) block, this is instead a sound effect. If the music is used, the player's `pw_extralife` timer is set to `ExtraLifeTics + 1`.
---
---@param player player_t
---@return nil
function P_PlayLivesJingle(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CanPickupItem)**
---
---Returns true if `player` can pick up the item, returns false if `player` is a [bot](https://wiki.srb2.org/wiki/bot) or is flashing after being hurt.
---
---@param player player_t
---@param weapon? boolean
---@return boolean
function P_CanPickupItem(player, weapon) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoNightsScore)**
---
---Awards score to `player` NiGHTS-style; spawns a floating score item which changes appearance depending on the player's current link count and whether the player is in bonus time.
---
---@param player player_t
---@return nil
function P_DoNightsScore(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoMatchSuper)**
---
---Gives invincibility, speed shoes, and steals score from others if `player` has all 7 [Match Emeralds](https://wiki.srb2.org/wiki/Match_Chaos_Emerald_Spawn). Will remove the emeralds afterwards.
---
---@param player player_t
---@return nil
function P_DoMatchSuper(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_AproxDistance)**
---
---Returns the approximate distance between two points, where `dx` is the distance between the X coordinates and `dy` is the distance between the Y coordinates.
---
---Note: This function will normally return a positive value, except if the distance is 38768 fracunits or larger, in which case it will return negative values.
---
---@param dx fixed_t
---@param dy fixed_t
---@return fixed_t
function P_AproxDistance(dx, dy) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ClosestPointOnLine)**
---
---Alternative version: `P_ClosestPointOnLine(fixed_t x, fixed_t y, fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2)`
---
---Returns the X and Y coordinate (as two separate returned values) of the closest point to the point `(x,y)` on the line `line`.
---
---If a set of 4 fixed-point integers (`x1`, `y1`, `x2`, `y2`) is given instead of a `line_t` variable, these become the coordinates of a custom-defined line that goes through the points `(x1,y1)` and `(x2,y2)`.
---
---@param x fixed_t
---@param y fixed_t
---@param line line_t
---@return fixed_t
---@return fixed_t
function P_ClosestPointOnLine(x, y, line) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PointOnLineSide)**
---
---Alternative version: `P_PointOnLineSide(fixed_t x, fixed_t y, fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2)`
---
---Returns 0 if the point `(x,y)` is on the "front" side of the given line, or 1 if it is on the "back" side.
---
---If a set of 4 fixed-point integers (`x1`, `y1`, `x2`, `y2`) is given instead of a `line_t` variable, these become the coordinates of a custom-defined line that goes through the points `(x1,y1)` and `(x2,y2)`.
---
---@param x fixed_t
---@param y fixed_t
---@param line line_t
---@return integer
function P_PointOnLineSide(x, y, line) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnMobj)**
---
---Creates and returns a new [Object](https://wiki.srb2.org/wiki/Object) of the given type at the given coordinates `x`, `y`, and `z`. Various attributes may be given to it as soon as it is spawned, such as a [skin color](https://wiki.srb2.org/wiki/skin_color) or [secondary Object flags](https://wiki.srb2.org/wiki/secondary_Object_flags). Further Objects may be spawned within this function to be linked to the new Object if necessary. If the new Object is given the `MF_RUNSPAWNFUNC` flag during this function, the [action](https://wiki.srb2.org/wiki/actions) set for the Object type's `SpawnState` property will be run by this function.
---
---The hook [MobjSpawn](https://wiki.srb2.org/wiki/Lua/Hooks#MobjSpawn) can be used to modify or replace some of the effects of this function.
---
---Note: This is the basic function for spawning all Objects in SRB2. All other listed Lua functions (including actions) that spawn an Object therefore use this function internally to spawn them, and any changes made to this function by the `MobjSpawn` hook will affect them as well.
---
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@param type integer
---@return mobj_t
function P_SpawnMobj(x, y, z, type) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnMobjFromMobj)**
---
---Same as `P_SpawnMobj`, except the coordinates given are relative to the `origin` Object. The spawned object's scale and vertical flip are inherited from the origin object.
---Note: The coordinates are automatically adjusted to `origin`'s scale. The new Object will copy the `origin`'s interpolation values, and will correct its z-position according to the `origin`'s gravity.
---
---@param origin mobj_t
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@param type integer
---@return mobj_t
function P_SpawnMobjFromMobj(origin, x, y, z, type) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RemoveMobj)**
---
---Removes the Object and its thinker from existence. The hook [MobjRemoved](https://wiki.srb2.org/wiki/Lua/Hooks#MobjRemoved) can be used to apply additional effects to this function.
---
---Note: The removed Object cannot be referenced again in Lua after using this function.
---
---Note 2: This function will produce an error if it attempts to remove an Object belonging to a player (i.e.: `mobj.player` must be nil for this function to work).
---
---@param mobj mobj_t
---@return nil
function P_RemoveMobj(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_IsValidSprite2)**
---
---Returns true if `mobj` can display `sprite2`, false if not. This is specific to objects that have a [Skin](https://wiki.srb2.org/wiki/Skin), as Skins use a special naming system to avoid naming conflicts between themselves.
---
---@param mobj mobj_t
---@param sprite2 integer
---@return boolean
function P_IsValidSprite2(mobj, sprite2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnLockOn)**
---
---Spawns MT_LOCKON in `state` above `mobj`. Lua exclusive.
---
---@param player player_t
---@param target mobj_t
---@param state state_t
---@return nil
function P_SpawnLockOn(player, target, state) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnMissile)**
---
---Spawns a missile Object with the default missile positioning, sending it forward to `dest` at the value of its `Speed` Object type property. This returns the Object spawned by the function.
---
---@param source mobj_t
---@param dest mobj_t
---@param type integer
---@return mobj_t
function P_SpawnMissile(source, dest, type) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnXYZMissile)**
---
---Spawns a missile Object at specific `x`, `y`, and `z` coordinates, sending it forward to `dest` at the value of its `Speed` Object type property. This returns the Object spawned by the function.
---
---@param source mobj_t
---@param dest mobj_t
---@param type integer
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@return mobj_t
function P_SpawnXYZMissile(source, dest, type, x, y, z) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnPointMissile)**
---
---Same as `P_SpawnXYZMissile`, except the destination is given via the coordinates `dest_x`, `dest_y` and `dest_z` instead of a destination Object `dest`. This returns the Object spawned by the function.
---
---@param source mobj_t
---@param dest_x fixed_t
---@param dest_y fixed_t
---@param dest_z fixed_t
---@param type integer
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@return mobj_t
function P_SpawnPointMissile(source, dest_x, dest_y, dest_z, type, x, y, z) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnAlteredDirectionMissile)**
---
---Spawns a missile Object at the value of its `Speed` Object type property, but with an angle relative to the direction its source Object is facing. The source Object must be a missile itself and must have a target set - the spawned missile will also use this target. This returns the Object spawned by the function.
---
---@param source mobj_t
---@param type integer
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@param angle_shift integer
---@return mobj_t
function P_SpawnAlteredDirectionMissile(source, type, x, y, z, angle_shift) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ColorTeamMissile)**
---
---In [Team Match](https://wiki.srb2.org/wiki/Team_Match) or [CTF](https://wiki.srb2.org/wiki/CTF), this changes `missile`'s color to match the player's team color (red if player is in the red team, or steel blue if in the blue team). In any other gametype, this will do nothing.
---
---@param missile mobj_t
---@param player player_t
---@return nil
function P_ColorTeamMissile(missile, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SPMAngle)**
---
---Spawns a missile Object at the value of its `Speed` Object type property, assuming `source` is a player. `angle` sets what direction to fire the missile in. If `allowaim` is set to a non-zero value, the player's vertical aiming angle determines the vertical angle the missile is fired at. Otherwise, it is fired straight forward. `flags2` allows additional flags to be added on to the missile's [secondary Object flags](https://wiki.srb2.org/wiki/secondary_Object_flags) (such as `MF2_RAILRING` to make the missile act like the rail ring weapon). This returns the Object spawned by the function.
---
---@param source mobj_t
---@param type integer
---@param angle angle_t
---@param allowaim? integer
---@param flags2? integer
---@return mobj_t
function P_SPMAngle(source, type, angle, allowaim, flags2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnPlayerMissile)**
---
---Functionally identical to `P_SPMAngle`, except that the missile's angle will always be `source`'s angle and the player's vertical aiming angle will always be used. This returns the Object spawned by the function.
---
---@param source mobj_t
---@param type integer
---@param flags2? integer
---@return mobj_t
function P_SpawnPlayerMissile(source, type, flags2) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_MobjFlip)**
---
---Returns -1 if the object is flipped (i.e., `MFE_VERTICALFLIP` is set in the Object's [extra Object flags](https://wiki.srb2.org/wiki/extra_Object_flags)) or 1 if it is not.
---
---@param mobj mobj_t
---@return integer
function P_MobjFlip(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetMobjGravity)**
---
---Returns the amount of [gravity](https://wiki.srb2.org/wiki/gravity) to be applied to the Object.
---
---@param mobj mobj_t
---@return fixed_t
function P_GetMobjGravity(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_WeaponOrPanel)**
---
---Returns true if the given Object type is any of the weapon ammo/panel types.
---
---@param type integer
---@return boolean
function P_WeaponOrPanel(type) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FlashPal)**
---
---Sets the type and duration of the player's [palette](https://wiki.srb2.org/wiki/palette). This is used in the game to flash the screen in events such as when the player is teleported, or when an [Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) explodes - see [PLAYPAL](https://wiki.srb2.org/wiki/PLAYPAL) for the palette numbers available in the default `PLAYPAL` lump.
---
---@param player player_t
---@param type integer
---@param duration integer
---@return nil
function P_FlashPal(player, type, duration) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetClosestAxis)**
---
---Returns the closest [Axis](https://wiki.srb2.org/wiki/Axis) Object (of type `MT_AXIS`) to `source`.
---
---@param source mobj_t
---@return mobj_t
function P_GetClosestAxis(source) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnParaloop)**
---
---Spawns a loop of Objects at the given coordinates `x`, `y`, and `z`. `radius` determines the radius of the loop, `number` determines how many Objects are in the loop, `type` determines the type of the Objects spawned, `state` is the starting state of the Objects (defaults to `S_NULL` if not set, which means the state will not be changed), and `rotangle` sets the vertical rotation of the loop. If `spawncenter` is true, the Objects will all start at the center and move outwards, otherwise they will start at a distance of 4/5`radius` from the center and move inwards. By default, `spawncenter` is `false`.
---
---In SRB2, this function is called when the player uses the paraloop move while flying on a [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) 2D track. It is also called by the action [A_RingExplode](https://wiki.srb2.org/wiki/A_RingExplode) to create an explosion effect. In both cases, the function is called multiple times in order to form a paraloop "ball". Specifically, this is done by calling the function 16 times with the same values, except that `rotangle` is set to different multiples of `ANGLE_22h` each time.
---
---Below is some example Lua code that recreates `A_RingExplode`'s explosion, using an Object `actor` as a spawn position:
---
---```lua
---
---for i=0,15
---	P_SpawnParaloop(actor.x, actor.y, actor.z + actor.height, FixedMul(actor.info.painchance, actor.scale), 16, MT_NIGHTSSPARKLE, i*ANGLE_22h, S_NULL, true)
---end
---
---```
---
---Notes:
---* For all Objects spawned by this function, `mobj.fuse` is set to `(FixedDiv(radius,5*(FRACUNIT/4))>>(FRACBITS+2)) + 1`, and `mobj.tics` to `mobj.fuse - 7`. The minimum values it can set for them are 2 and 1, respectively. These values are set to make sure that the Objects will all disappear eventually.
---* The horizontal rotation cannot be controlled by this function.
---
---@param x fixed_t
---@param y fixed_t
---@param z fixed_t
---@param radius fixed_t
---@param number integer
---@param type integer
---@param rotangle angle_t
---@param state? integer
---@param spawncenter? boolean
---@return nil
function P_SpawnParaloop(x, y, z, radius, number, type, rotangle, state, spawncenter) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_BossTargetPlayer)**
---
---Used by [boss](https://wiki.srb2.org/wiki/boss)es to search for players. Returns true if a player is targeted, false if not. If `closest` is true, the boss will target the closest player it can find, otherwise the boss will target the first player it finds.
---
---@param actor mobj_t
---@param closest? boolean
---@return boolean
function P_BossTargetPlayer(actor, closest) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SupermanLook4Players)**
---
---Similar to [P_LookForPlayers](https://wiki.srb2.org/wiki/Functions#P_LookForPlayers), except `actor` can search anywhere in the map and even through walls.
---
---@param actor mobj_t
---@return boolean
function P_SupermanLook4Players(actor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SetScale)**
---
---Sets `mobj`'s scale to a new value. Editing `mobj.scale` does the same thing - however, calling `P_SetScale` will not affect `mobj.destscale`, unlike editing `mobj.scale` directly.
---
---@param mobj mobj_t
---@param scale fixed_t
---@param instant? boolean
---@return nil
function P_SetScale(mobj, scale, instant) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_InsideANonSolidFFloor)**
---
---Returns true if the given [FOF](https://wiki.srb2.org/wiki/FOF) exists and is non-solid, and `mobj` is inside it.
---
---@param mobj mobj_t
---@param rover ffloor_t
---@return boolean
function P_InsideANonSolidFFloor(mobj, rover) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckDeathPitCollide)**
---
---Returns true if `mobj` is touching a [death pit](https://wiki.srb2.org/wiki/death_pit) floor/ceiling.
---
---@param mobj mobj_t
---@return boolean
function P_CheckDeathPitCollide(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckSolidLava)**
---
---Returns true if the FOF `rover` is a solid lava block.
---
---@param rover ffloor_t
---@return boolean
function P_CheckSolidLava(rover) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CanRunOnWater)**
---
---Returns true if the FOF `rover` is a water block and `player` is able to run on top of it. This requires the player to be at running speed, but other criteria include whether they have the [swimming](https://wiki.srb2.org/wiki/S_SKIN#ability) or [running on water abilities](https://wiki.srb2.org/wiki/S_SKIN#flags), or if they're currently super.
---
---@param player player_t
---@param rover ffloor_t
---@return boolean
function P_CanRunOnWater(player, rover) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_MaceRotate)**
---
---Rotates all “mace” target-sector `mobj` (e.g., swinging mace heads) around a central point.
---
---* `center`: The pivot mobj (usually the mace anchor).
---* `baserot`: Current rotation angle (fixed-point, 0–360° mapped to 0–65 535).
---* `baseprevrot`: Previous frame’s rotation angle, used to compute delta for smooth motion.  Called during each tic to update rotating mace mechanisms.
---
---@param center mobj_t
---@param baserot integer
---@param baseprevrot integer
---@return nil
function P_MaceRotate(center, baserot, baseprevrot) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CreateFloorSpriteSlope)**
---
---Creates [pslope_t](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t) userdata into `mobj` that allows it to render as a sloped floor sprite. It can then be accessed and manipulated in `mobj.floorspriteslope`.
---
---@param mobj mobj_t
---@return nil
function P_CreateFloorSpriteSlope(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RemoveFloorSpriteSlope)**
---
---Wipes the `mobj.floorspriteslope` field from `mobj`, effectively ceasing its rendering as a sloped floor sprite. Recommended to use when a sloped floor sprite is no longer needed, since they can increase memory usage.
---
---@param mobj mobj_t
---@return nil
function P_RemoveFloorSpriteSlope(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RailThinker)**
---
---Used by the Rail Ring. Instantly moves `mobj` if it has a type of momentum, returns `true` if the movement has failed or `mobj` was removed by movement (like death pit, missile hits wall, etc.).
---
---@param mobj mobj_t
---@return boolean
function P_RailThinker(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_XYMovement)**
---
---Moves `mobj` through the X/Y coordinate if it has momentum.
---
---@param mobj mobj_t
---@return nil
function P_XYMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RingXYMovement)**
---
---Used by rings. Moves `mobj` through the X/Y coordinate if it has momentum but it will always slides to the walls if it collides with one.
---
---@param mobj mobj_t
---@return nil
function P_RingXYMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SceneryXYMovement)**
---
---Used by scenery objects. Moves `mobj` through the X/Y coordinate if it has momentum but it will always slides to the walls if it collides with one and it does not have friction on the air or with the flag `MF_NOCLIPHEIGHT`.
---
---@param mobj mobj_t
---@return nil
function P_SceneryXYMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ZMovement)**
---
---Moves `mobj` through the Z coordinate if it has momentum, returns `false` if `mobj` was killed/exploded/removed, `true` otherwise.
---
---@param mobj mobj_t
---@return boolean
function P_ZMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RingZMovement)**
---
---Used by rings. Moves `mobj` through the Z coordinate if it has momentum. It has special functionallity to avoid getting clipped through FOFs
---
---@param mobj mobj_t
---@return nil
function P_RingZMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SceneryZMovement)**
---
---Used by scenery objects. Moves `mobj` through the Z coordinate if it has momentum, returns `false` if `mobj` was killed/exploded/removed, `true` otherwise. It has special functionallity to avoid getting clipped through FOFs, checking for gravity, collide with death pits, and ajusting with the floors/ceilling
---
---@param mobj mobj_t
---@return boolean
function P_SceneryZMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerZMovement)**
---
---Used by players. Moves `mobj` through the Z coordinate if it has momentum. It has special functionallity to avoid getting clipped through FOFs, checking for gravity, play animations, have slope physics, and some NiGHTs logic.
---
---@param mobj mobj_t
---@return nil
function P_PlayerZMovement(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckSkyHit)**
---
---Checks if the supplied `line` is being touched by `mobj`, and if so, returns `true` if that line is a thok barrier sky or horizon effect wall.
---
---@param mo mobj_t
---@param line line_t
---@return boolean
function P_CheckSkyHit(mo, line) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#polyobjects.GetForNum)**
---
---Retrieves a polyobject by its numeric ID. Returns `nil` if no such polyobject exists.
---
---@param polyobject polyobj_t
---@param id INT32
---@return polyobj_t
function polyobjects.GetForNum(polyobject, id) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetZAt)**
---
---Returns the corresponding Z position on the slope for the X/Y coordinates given. If `slope` is nil, returns `z` instead.
---
---@param slope pslope_t
---@param x fixed_t
---@param y fixed_t
---@param z? fixed_t
---@return fixed_t
function P_GetZAt(slope, x, y, z) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ButteredSlope)**
---
---Slides `mobj` on the slope it is standing on, if it exists.
---
---@param mobj mobj_t
---@return nil
function P_ButteredSlope(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_Thrust)**
---
---Boosts `mobj`'s horizontal momentum by the value of `move` in the direction of `angle`. Note that this will apply momentum relatively; i.e., all existing momentum applied to the Object in any direction is retained - if `P_Thrust` is used every tic, this can result in the Object accelerating in the given direction. If the Object has `MF2_TWOD`, only momentum in the X direction is modified - momentum in the Y direction is unaffected. To replace all existing momentum instead of adding to it, see [P_InstaThrust](https://wiki.srb2.org/wiki/Functions#P_InstaThrust).
---
---@param mobj mobj_t
---@param angle angle_t
---@param move fixed_t
---@return nil
function P_Thrust(mobj, angle, move) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SetMobjStateNF)**
---
---`mobj`'s state is changed to the specified state number, but without running any [actions](https://wiki.srb2.org/wiki/actions). If `statenum` is `S_NULL`, the Object will be removed (does not work on players).
---
---Note: This should not be confused with the normal method of applying new states, which would be using the code `mobj.state = statenum` (where `mobj` and `statenum` follow the same meanings as the arguments for `P_SetMobjStateNF`).
---
---@param mobj mobj_t
---@param statenum integer
---@return boolean
function P_SetMobjStateNF(mobj, statenum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoSuperTransformation)**
---
---Changes `player` into its Super form. If `giverings?` is true, the player is given 50 rings when the function runs. Note that the player still needs all seven [Chaos Emeralds](https://wiki.srb2.org/wiki/Chaos_Emeralds) as well as the SF_SUPER skin flag for this function to work.
---
---@param player player_t
---@param giverings? boolean
---@return nil
function P_DoSuperTransformation(player, giverings) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ExplodeMissile)**
---
---Death sequence for the `missile` Object. Halts `missile`'s momentum, alters its flags, plays its `DeathSound` and sets its state to `DeathState`. Does not do anything if the Object has `MF_NOCLIPTHING` set, as it is used as a dummy flag to indicate when a missile is already "dead".
---
---@param missile mobj_t
---@return nil
function P_ExplodeMissile(missile) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerTouchingSectorSpecial)**
---
---Checks if `player` is touching a sector with the specified [sector special](https://wiki.srb2.org/wiki/Sector_types) from the specified section. If one is found, this will return the sector with the special. Also accounts for FOFs - if the found sector is an FOF, the FOF's control sector is returned.
---
---@param player player_t
---@param section integer
---@param specialnum integer
---@return sector_t
function P_PlayerTouchingSectorSpecial(player, section, specialnum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerTouchingSectorSpecialFlag)**
---
---Checks if `player`if touching a sector with the specified [sector special flags](https://wiki.srb2.org/wiki/Constants#Sector_special_flags_(SSF_*)). If one is found, this will return the sector with the special flags. Also counts for FOFs - if the found sector is a FOF, the FOF's control sector is returned.
---
---@param player player_t
---@param flags integer
---@return sector_t
function P_PlayerTouchingSectorSpecialFlag(player, flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindLowestFloorSurrounding)**
---
---Looks for the sector surrounding the current one whose floor height is lower than the current sector's floor height. If it is found, the floor height is returned. Otherwise, returns itself.
---
---@param sector sector_t
---@return fixed_t
function P_FindLowestFloorSurrounding(sector) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindHighestFloorSurrounding)**
---
---Looks for the sector surrounding the current one whose floor height is higher than the current sector's floor height. If it is found, the floor height is returned. Otherwise, returns itself.
---
---@param sector sector_t
---@return fixed_t
function P_FindHighestFloorSurrounding(sector) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindLowestCeilingSurrounding)**
---
---Looks for the sector surrounding the current one whose ceiling height is lower than the current sector's ceiling height. If it is found, the ceiling height is returned. Otherwise, returns itself.
---
---@param sector sector_t
---@return fixed_t
function P_FindLowestCeilingSurrounding(sector) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindHighestCeilingSurrounding)**
---
---Looks for the sector surrounding the current one whose ceiling height is higher than the current sector's ceiling height. If it is found, the ceiling height is returned. Otherwise, returns itself.
---
---@param sector sector_t
---@return fixed_t
function P_FindHighestCeilingSurrounding(sector) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindNextHighestFloor)**
---
---Looks for a sector whose floor height is higher than the current sector's floor height. If it is found, the floor height is returned. Otherwise, returns itself.
---
---@param sector sector_t
---@param currentheight? fixed_t
---@return fixed_t
function P_FindNextHighestFloor(sector, currentheight) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindNextLowestFloor)**
---
---Looks for a sector whose floor height is lower than the current sector's floor height. If it is found, the floor height is returned. Otherwise, returns itself.
---
---@param sector sector_t
---@param currentheight? fixed_t
---@return fixed_t
function P_FindNextLowestFloor(sector, currentheight) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FindSpecialLineFromTag)**
---
---Finds the first linedef number after `start` which has the specified linedef special and tag. `start` can be -1 to start from the first linedef onwards, or set to another linedef's number to carry on from perhaps the last linedef number found (`start` defaults to -1 if not set).
---
---@param special integer
---@param tag integer
---@param start? integer
---@return integer
function P_FindSpecialLineFromTag(special, tag, start) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SwitchWeather)**
---
---Switches [weather](https://wiki.srb2.org/wiki/weather) in-game with `weathernum` (use the [`PRECIP_` constants](https://wiki.srb2.org/wiki/Constants#Weather_types)). If `player` is or not specified, the weather is applied globally for all players; otherwise, the weather is applied only for the specified player.
---
---@param weathernum integer
---@param player? player_t
---@return nil
function P_SwitchWeather(weathernum, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_LinedefExecute)**
---
---Executes a [linedef executor](https://wiki.srb2.org/wiki/linedef_executor). `tag` is the [tag](https://wiki.srb2.org/wiki/tagging) of the executor's [trigger linedef](https://wiki.srb2.org/wiki/trigger_linedef). If set, `actor` is the Object that activated it, and `caller` is the triggering sector.
---
---@param tag integer
---@param actor? mobj_t
---@param caller? sector_t
---@return nil
function P_LinedefExecute(tag, actor, caller) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnLightningFlash)**
---
---Spawns a lightning flash in `sector`. For this to work in FOFs, `sector` should be the control sector of the FOF to flash in.
---
---@param sector sector_t
---@return nil
function P_SpawnLightningFlash(sector) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_FadeLight)**
---
---Fades all tagged sectors' lighting to a new value set by `destvalue`. `speed` determines how quickly the sector's light fades to the new value, using `ticbased` maked speed to determine the duration instead. Using `force` forcefully replaces already existing fade light thinkers on the tagged sectors.
---
---@param tag integer
---@param destvalue integer
---@param speed integer
---@param ticbased? boolean
---@param force? boolean
---@return nil
function P_FadeLight(tag, destvalue, speed, ticbased, force) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ThingOnSpecial3DFloor)**
---
---If `mobj` is on top of or inside an FOF with a sector special, this function returns the FOF's control sector; otherwise returns nil. 
---
---**WARNING: This function has been deprecated since the introduction of 2.2.11, we recommend you use P_MobjTouchingSectorSpecial or P_MobjTouchingSectorSpecialFlag instead.**
---
---@param mobj mobj_t
---@return sector_t
---@deprecated
function P_ThingOnSpecial3DFloor(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_MobjTouchingSectorSpecial)**
---
---Checks if `mobj` is touching a sector with the specified [sector special](https://wiki.srb2.org/wiki/Sector_types) from the specified section. If one is found, this will return the sector with the special. Also accounts for FOFs - if the found sector is an FOF, the FOF's control sector is returned.
---
---@param mobj mobj_t
---@param section integer
---@param number integer
---@return sector_t
function P_MobjTouchingSectorSpecial(mobj, section, number) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_MobjTouchingSectorSpecialFlag)**
---
---Checks if `mobj`if touching a sector with the specified [sector special flags](https://wiki.srb2.org/wiki/Constants#Sector_special_flags_(SSF_*)). If one is found, this will return the sector with the special flags. Also counts for FOFs - if the found sector is a FOF, the FOF's control sector is returned.
---
---@param mobj mobj_t
---@param flags integer
---@return sector_t
function P_MobjTouchingSectorSpecialFlag(mobj, flags) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_IsFlagAtBase)**
---
---Returns true if the flag of the given type is at its corresponding CTF base. Should only be used with types `MT_BLUEFLAG` and `MT_REDFLAG`.
---
---@param type integer
---@return boolean
function P_IsFlagAtBase(type) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SetupLevelSky)**
---
---Sets the [sky](https://wiki.srb2.org/wiki/sky) seen in-game to the value of `skynum`. If `player` is nil or not specified, the sky is applied globally for all players; otherwise, the sky is applied only for the specified player.
---
---@param skynum integer
---@param player? player_t
---@return nil
function P_SetupLevelSky(skynum, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SetSkyboxMobj)**
---
---Alternative versions:
---* `P_SetSkyboxMobj(mobj_t mobj, boolean/int centerpoint?)`
---* `P_SetSkyboxMobj(mobj_t mobj, player_t user)`
---* `P_SetSkyboxMobj(mobj_t mobj, boolean/int centerpoint?, player_t user)`
---Lua-exclusive: Sets which Object correponds to either the [skybox](https://wiki.srb2.org/wiki/skybox)'s view point or center point (defaults to view point). `user` is the player to apply the new skybox view to, otherwise it applies to all players. If `mobj` is nil, the skybox is removed.
---
---@param mobj? mobj_t
---@param centerpoint? boolean|integer
---@param user? player_t
---@return nil
function P_SetSkyboxMobj(mobj, centerpoint, user) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_StartQuake)**
---
---Lua-exclusive: Starts an earthquake camera effect. `intensity` determines the earthquake's strength, `time` determines its duration.
---`epicenter` determines where the earthquake occurs in, and `radius` determines the radius of the effect.
---
---@param intensity fixed_t
---@param time integer
---@param epicenter? table
---@param radius? fixed_t
---@return nil
function P_StartQuake(intensity, time, epicenter, radius) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#EV_CrumbleChain)**
---
---Alternative version:
---* `EV_CrumbleChain(ffloor_t rover)`
---
---Shatters the FOF `rover`, making it vanish from the map and spawning debris at `sector`. If `sector` is not given, the debris will be spawned in all target sectors linked to the FOF's control sector.
---
---@param sector? sector_t
---@param rover ffloor_t
---@return nil
function EV_CrumbleChain(sector, rover) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#EV_StartCrumble)**
---
---Crumbles the FOF `rover`, making the FOF belonging to `rover` fall from the map and respawning 10 seconds later at `sector` if `crumblereturn` is set to true, otherwise `rover` will not respawn. `player` is the player that made `rover` crumble, if player exists, and `origalpha` is the original alpha of `rover`.
---
---@param sector sector_t
---@param rover ffloor_t
---@param floating? boolean
---@param player? player_t
---@param origalpha? fixed_t
---@param crumblereturn? boolean
---@return boolean
function EV_StartCrumble(sector, rover, floating, player, origalpha, crumblereturn) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetPlayerHeight)**
---
---Returns the player's normal height (default `48*FRACUNIT`, Fang's height is `60*FRACUNIT`). Automatically corrected to match the player's current scale.
---
---@param player player_t
---@return fixed_t
function P_GetPlayerHeight(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetPlayerSpinHeight)**
---
---Returns the player's "spin" height (2/3 of the player's full height; normally `32*FRACUNIT`). Automatically corrected to match the player's current scale.
---
---@param player player_t
---@return fixed_t
function P_GetPlayerSpinHeight(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetPlayerControlDirection)**
---
---Returns a value depending on what is happening with the player's movement controls (forwards, backwards and strafing left/right) at the moment, compared to the current movement of the player itself:
---*0 - no controls pressed/no movement
---*1 - pressing in direction of movement (accelerating)
---*2 - pressing in opposite direction of movement (decelerating)
---
---@param player player_t
---@return integer
function P_GetPlayerControlDirection(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_AddPlayerScore)**
---
---Adds `amount` to player's score. Also ensures that the score does not exceed `MAXSCORE` (999999990), and awards lives for every 50000 points (if not losing points). Handled somewhat differently for NiGHTS stages (both normal and Special Stages), modifying `player.marescore` instead of `player.score`.
---
---@param player player_t
---@param amount integer
---@return nil
function P_AddPlayerScore(player, amount) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_StealPlayerScore)**
---
---Causes `player` to steal from everyone else's score in multiplayer.
---
---@param player player_t
---@param amount integer
---@return nil
function P_StealPlayerScore(player, amount) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GetJumpFlags)**
---
---Checks whether `player`'s skin has `SF_NOJUMPDAMAGE` and returns the appropriate flags to set for their jump.
---
---@param player player_t
---@return integer
function P_GetJumpFlags(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerInPain)**
---
---Returns true if `player` is in its pain state with `pw_flashing` set (and not sliding), false if not.
---
---@param player player_t
---@return boolean
function P_PlayerInPain(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoPlayerPain)**
---
---Throws back the player, setting the state to the player's pain state (does not spill rings/emeralds/flags nor remove health/[shields](https://wiki.srb2.org/wiki/shields)). `source` is the Object the damage (or `inflictor`) came from, and `inflictor` (which is either `source` itself or a projectile from it) the Object that dealt the damage, `inflictor` in particular being used to determine the throw-back speed depending on the flags set. Setting the `source` and `inflictor` Objects is not required.
---
---@param player player_t
---@param source? mobj_t
---@param inflictor? mobj_t
---@return nil
function P_DoPlayerPain(player, source, inflictor) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ResetPlayer)**
---
---Resets the player. This will halt anything the player is currently doing.
---
---@param player player_t
---@return nil
function P_ResetPlayer(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerCanDamage)**
---
---Checks if `player` is capable of damaging `mobj` in their current state and returns true if so.
---
---@param player player_t
---@param mobj mobj_t
---@return boolean
function P_PlayerCanDamage(player, mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_IsObjectInGoop)**
---
---Is `mobj` inside [goop](https://wiki.srb2.org/wiki/linedef_type_124)? Returns true if yes, false if no. If the Object has `MF_NOGRAVITY` or is a spectator player, this will always return false.
---
---@param mobj mobj_t
---@return boolean
function P_IsObjectInGoop(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_IsObjectOnGround)**
---
---Is `mobj` on the ground? Returns true if yes, false if no. The "ground" can be the Object's floorz or ceilingz depending on whether the Object is in reverse gravity or not. If the Object is currently within [goop water](https://wiki.srb2.org/wiki/linedef_type_124), this will always return false.
---
---@param mobj mobj_t
---@return boolean
function P_IsObjectOnGround(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_InSpaceSector)**
---
---Is `mobj` in a [Space Countdown](https://wiki.srb2.org/wiki/Space_Countdown) sector/FOF? Returns true if yes, false if no.
---
---@param mobj mobj_t
---@return boolean
function P_InSpaceSector(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_InQuicksand)**
---
---Is `mobj` in a [Quicksand](https://wiki.srb2.org/wiki/Linedef_type_257) FOF? Returns true if yes, false if no.
---
---@param mobj mobj_t
---@return boolean
function P_InQuicksand(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_InJumpFlipSector)**
---
---Is `mobj` in a [Jump Flip](https://wiki.srb2.org/wiki/Flip_Gravity_on_Jump) sector? Returns true if yes, false if no.
---
---@param mobj mobj_t
---@return boolean
function P_InJumpFlipSector(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SetObjectMomZ)**
---
---Sets `mobj`'s `momz` to the value given. If `relative` is true, this will be added to the Object's previous `momz`; otherwise, it will replace it. (Note: This also corrects for scaling and reverse gravity.)
---
---@param mobj mobj_t
---@param momz fixed_t
---@param relative? boolean
---@return nil
function P_SetObjectMomZ(mobj, momz, relative) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_IsLocalPlayer)**
---
---Returns `true` either if `player` is the local player is in their local machine on netgames or if `player` is the secondary local player on splitscreen.
---Otherwise returns `false` if `player` is on a remote machine.
---Always returns `true` on singleplayer.
---
---@param mobj player_t
---@return boolean
function P_IsLocalPlayer(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_RestoreMusic)**
---
---Restores the music to whatever it should be depending on whether `player` has any powerups or not.
---
---@param player player_t
---@return nil
function P_RestoreMusic(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnShieldOrb)**
---
---Resets `player`'s [shield](https://wiki.srb2.org/wiki/shield) orb appearance to the appropriate one for the player's current shield powers.
---
---@param player player_t
---@return nil
function P_SpawnShieldOrb(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnGhostMobj)**
---
---Spawns a "ghost" of `mobj` (a 50% translucent clone of the Object that lasts only 8 tics normally before disappearing). Useful for creating afterimages of Objects such as players, such as with the [Super Sneakers](https://wiki.srb2.org/wiki/Super_Sneakers) power-up or when a player is in Super form. Returns the ghost Object spawned. If a player Object the ghost was made after possesses a [followitem](https://wiki.srb2.org/wiki/S_SKIN#followitem), a ghost of that item's Object will additionally be spawned and assigned as the player ghost's tracer, and vice versa.
---
---@param mobj mobj_t
---@return mobj_t
function P_SpawnGhostMobj(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GivePlayerRings)**
---
---Adds `amount` to `player`'s ring count. Also corrects ring count if > 9999 or < 0. Also awards extra life bonuses for multiples of 100 rings up to the value of `maxXtraLife` in the [MainCfg](https://wiki.srb2.org/wiki/MainCfg) block (by default this is 2, which allows for extra life bonuses up to 200 rings).
---
---@param player player_t
---@param amount integer
---@return nil
function P_GivePlayerRings(player, amount) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GivePlayerLives)**
---
---Adds `amount` to `player`'s lives count. Also corrects lives count if > 99 or < 1.
---
---@param player player_t
---@param amount integer
---@return nil
function P_GivePlayerLives(player, amount) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GivePlayerSpheres)**
---
---Adds `amount` to `player`'s sphere count. Also corrects sphere count if > 9999 or < 0.
---
---@param player player_t
---@param amount integer
---@return nil
function P_GivePlayerSpheres(player, amount) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_GiveCoopLives)**
---
---Adds `amount` to the lives pool if the game is using shared lives. When not using shared lives, adds `amount` of lives to all individual players.
---
---@param player player_t
---@param amount integer
---@param playsound? boolean
---@return nil
function P_GiveCoopLives(player, amount, playsound) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ResetScore)**
---
---Resets `player`'s `scoreadd` value to 0, ending any score chains in progress.
---
---@param player player_t
---@return nil
function P_ResetScore(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoJumpShield)**
---
---If `player` has the shield power `SH_PROTECTELECTRIC`, this will activate the [Lightning Shield](https://wiki.srb2.org/wiki/Lightning_Shield)'s double jump. In any other case, `player` performs a [Whirlwind Shield](https://wiki.srb2.org/wiki/Whirlwind_Shield)-style jump and switches to their falling animations.
---
---@param player player_t
---@return nil
function P_DoJumpShield(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoBubbleBounce)**
---
---Landing handler for the [Bubble Shield](https://wiki.srb2.org/wiki/Bubble_Shield). Bounces `player` upwards.
---
---@param player player_t
---@return nil
function P_DoBubbleBounce(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_BlackOw)**
---
---This is used by the [Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) to blow up enemies, flash the palettes of all players within the explosion radius (`1536*FRACUNIT`) and destroy the shield currently being held by `player`. Also plays the Armageddon explosion sound.
---
---@param player player_t
---@return nil
function P_BlackOw(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ElementalFire)**
---
---Spawns two [Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield)-style flames for both sides and behind `player`, but needs to be used repeatedly to spawn a true Elemental Shield fire trail. If `cropcircle` is true (default is `false`), this instead spawns flames in a circle pattern like that of the Elemental Shield's ground pound attack.
---
---@param player player_t
---@param cropcircle? boolean
---@return nil
function P_ElementalFire(player, cropcircle) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoPlayerFinish)**
---
---Sets the flag `PF_FINISHED` on the `player`, causing the `player` to "finish" the level, while still allowing them to continue moving.
---If in singleplayer, or if the console variable `exitmove` is not set, this will cause the player thinker to call `P_DoPlayerExit()`.
---
---@param player player_t
---@return nil
function P_DoPlayerFinish(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoPlayerExit)**
---
---This is used to have `player` "complete" the level and become immobile; this will not immediately end the level itself, but prepares to end the level after a set amount of time. If `finishedflag` is true (default is `false`), this will set the flag `PF_FINISHED` on the `player`, allowing the `player` to get level completion bonuses and [Record Attack](https://wiki.srb2.org/wiki/Record_Attack) emblems.
---
---@param player player_t
---@param finishedflag? boolean
---@return nil
function P_DoPlayerExit(player, finishedflag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_InstaThrust)**
---
---Set an Object's horizontal momentum to the value of `move` in the direction of `angle`. Note that this will apply momentum absolutely; i.e., all existing momentum applied to the Object in any direction is lost. If the Object has `MF2_TWOD`, only momentum in the X-direction is modified - momentum in the Y-direction is unaffected. To add to existing momentum rather than completely replace it, see [P_Thrust](https://wiki.srb2.org/wiki/Functions#P_Thrust).
---
---@param mobj mobj_t
---@param angle angle_t
---@param move fixed_t
---@return nil
function P_InstaThrust(mobj, angle, move) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ReturnThrustX)**
---
---Returns the X component of a set thrust value at a specified angle. `mobj` is unused.
---
---@param mobj? mobj_t
---@param angle angle_t
---@param move fixed_t
---@return fixed_t
function P_ReturnThrustX(mobj, angle, move) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ReturnThrustY)**
---
---Returns the Y component of a set thrust value at a specified angle. `mobj` is unused.
---
---@param mobj? mobj_t
---@param angle angle_t
---@param move fixed_t
---@return fixed_t
function P_ReturnThrustY(mobj, angle, move) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_LookForEnemies)**
---
---Returns a nearby Object that `player` can hit, if one is found. This is used by the `CA_HOMINGTHOK` and `CA2_GUNSLINGER` character abilities, as well as the [Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield)'s homing attack ability.
---
---By default, this only looks for shootable [enemies](https://wiki.srb2.org/wiki/enemies) or [boss](https://wiki.srb2.org/wiki/boss)es (not including the [Deton](https://wiki.srb2.org/wiki/Deton)), they must be within `RING_DIST` (= 512 fracunits) from the player's position, and they cannot be more than 24 fracunits above the player's z position. If `nonenemies` is `true` (default is `false`), this function will also look for springs and monitors. If `bullet` is `true` (default is `false`), the function can look upwards but is limited to a looking span of 30 degrees up or down, the searching distance is doubled (= 1024 fracunits), and monitors and Detons are included in the search.
---
---Note that Objects with the [secondary flag](https://wiki.srb2.org/wiki/Object_flags#Secondary_flags) `MF2_INVERTAIMABLE` may invert some of the effects of this function when found by it.
---
---@param player player_t
---@param nonenemies? boolean
---@param bullet? boolean
---@return mobj_t
function P_LookForEnemies(player, nonenemies, bullet) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_NukeEnemies)**
---
---Instantly defeats all enemies and damages bosses (as well as players in shooting gametypes) within a radius around the `inflictor` Object (the Object causing the damage). The `source` Object is where `inflictor` came from, if not the `inflictor` itself.
---
---@param inflictor mobj_t
---@param source mobj_t
---@param radius fixed_t
---@return nil
function P_NukeEnemies(inflictor, source, radius) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_HomingAttack)**
---
---The `source` Object faces the `target` Object and moves towards it; needs to be repeatedly used to work properly. `source`'s movement speed depends on what `source` is - players will move at 2/3 of their `actionspd` value, the [Deton](https://wiki.srb2.org/wiki/Deton) will move at 17/20 of the enemy player's `normalspeed` value, otherwise all other Objects will use their Object type's `Speed` value (a `threshold` of 32000 for the source cuts this in half). Returns `true` if the homing attack was successful, returns `false` if not.
---
---@param source mobj_t
---@param target mobj_t
---@return boolean
function P_HomingAttack(source, target) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_ResetCamera)**
---
---
---
---**WARNING: This function should only be called for the local consoleplayer, otherwise all player cameras will be affected.**Resets `player`'s `camera`.
---
---@param player player_t
---@param camera camera_t
---@return nil
function P_ResetCamera(player, camera) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SuperReady)**
---
---Returns true if the conditions are right for `player` to turn Super, false if not.
---
---@param player player_t
---@return boolean
function P_SuperReady(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoJump)**
---
---Makes the player jump. `player.mo.momz` is set to a particular value depending on the situation, and the `PF_JUMPED` flag is given to `player.pflags`.
---If `soundandstate` is set to true (the default value), `player.mo`'s state will be changed to the appropriate jump states and play the jump sound. If the player has `PF_JUMPSTASIS` in `player.pflags`, or `player.jumpfactor` is 0, this function will do nothing.
---if `allowflip`is set to true (the default value), determines if you should flip from jump flip sectors.
---
---@param player player_t
---@param soundandstate? boolean
---@param allowflip? boolean
---@return nil
function P_DoJump(player, soundandstate, allowflip) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_DoSpinDashDust)**
---
---Spawns spindash dust for `player` at `player`'s location.
---Changes itself when `player` is underwater to bubbles or having the Elemental Shield to fire dust.
---
---@param player player_t
---@return nil
function P_DoSpinDashDust(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnThokMobj)**
---
---Spawns the `player`'s `thokitem` defined in `S_SKIN` at `player`'s location. Defaults to `MT_THOK` if no object is defined.
---
---@param player player_t
---@return nil
function P_SpawnThokMobj(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnSpinMobj)**
---
---Spawns a spin trail Object for `player` at `player`'s location. `type` determines the type of the Object spawned.
---
---@param player player_t
---@param type integer
---@return nil
function P_SpawnSpinMobj(player, type) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_Telekinesis)**
---
---Pushes away all enemies and players within a radius of `range` around `player` with the thrust value `thrust`. If `thrust` is negative, this will instead pull in enemies and players towards `player`.
---
---@param player player_t
---@param thrust fixed_t
---@param range fixed_t
---@return nil
function P_Telekinesis(player, thrust, range) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SwitchShield)**
---
---Switches the current [shield](https://wiki.srb2.org/wiki/shield) `player` has with `shieldtype`. This will also cause an unused [Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) to explode. For the list of possible shield types, see [Shield types](https://wiki.srb2.org/wiki/Constants#Shield_types).
---
---@param player player_t
---@param shield integer
---@return nil
function P_SwitchShield(player, shield) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayJingle)**
---
---Calls [P_PlayJingleMusic](https://wiki.srb2.org/wiki/Functions#P_PlayJingleMusic) for the player `player` with the appropriate arguments as set by `jingletype`. `jingletype` should be one of the [JT_*](https://wiki.srb2.org/wiki/Constants#Jingle_types_(JT_*)) constants.
---
---@param player player_t
---@param jingletype integer
---@return nil
function P_PlayJingle(player, jingletype) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayJingleMusic)**
---
---Pushes the music `musname` to `player`'s music stack with the properties set by `musflags`, `looping`, and `jingletype`, and plays the music for that player. If not specified, `musflags` will be set to 0, `looping` will be set to true, and `jingletype` will be set to `JT_OTHER`.
---Document the music stack (see `s_sound.c`) and musflags (see `doomstat.h`)
---
---@param player player_t
---@param musname string
---@param musflags? integer
---@param looping? boolean
---@param jingletype? integer
---@return nil
function P_PlayJingleMusic(player, musname, musflags, looping, jingletype) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnSkidDust)**
---
---Spawns spindash dust randomly around `player` within a certain `radius`, and plays Knuckles' sliding sound effect if `sound` is true.
---
---@param player player_t
---@param radius fixed_t
---@param playsound? boolean
---@return nil
function P_SpawnSkidDust(player, radius, playsound) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_Earthquake)**
---
---Damages enemies within the given `radius`. Used for Super Knuckles' landing.
---
---@param inflictor mobj_t
---@param source mobj_t
---@param radius fixed_t
---@return nil
function P_Earthquake(inflictor, source, radius) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerFullbright)**
---
---Returns `true` only if `player` is fullbright. Used in NiGHTS mode.
---
---@param player player_t
---@return boolean
function P_PlayerFullbright(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_MovePlayer)**
---
---Makes `player` to handle the entire player movement.
---
---@param player player_t
---@return nil
function P_MovePlayer(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerCanEnterSpinGaps)**
---
---Returns `true` if `player` can enter spin gaps after checking on any possible `PlayerCanEnterSpinGaps` hook and then SRB2's vanilla conditions.
---
---@param player player_t
---@return boolean
function P_PlayerCanEnterSpinGaps(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#P_PlayerShouldUseSpinHeight)**
---
---Returns `true` if `player` should use their skin's spinheight instead of their skin's height.
---
---@param player player_t
---@return boolean
function P_PlayerShouldUseSpinHeight(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_TextureNumForName)**
---
---Returns the texture number for the texture whose name is supplied in `name`. For a list of textures by number, see [List of textures by number](https://wiki.srb2.org/wiki/List_of_textures_by_number).
---
---@param name string
---@return integer
function R_TextureNumForName(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_CheckTextureNumForName)**
---
---If a texture with the name given by `name` exists, returns its texture number. Otherwise, returns -1.
---
---@param name string
---@return integer
function R_CheckTextureNumForName(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_TextureNameForNum)**
---
---Returns the texture name for the texture whose number is supplied in `number`. For a list of textures by number, see [List of textures by number](https://wiki.srb2.org/wiki/List_of_textures_by_number).
---
---@param number integer
---@return string
function R_TextureNameForNum(number) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_CheckTextureNameForNum)**
---
---If a texture with the number given by `number` exists, returns its texture name. Otherwise, returns "-".
---
---@param number integer
---@return string
function R_CheckTextureNameForNum(number) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_GetColorByName)**
---
---Returns the skin color number that is represented by `name`. If no color is found, returns `SKINCOLOR_NONE`.
---
---@param name string
---@return integer
function R_GetColorByName(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_GetSuperColorByName)**
---
---Returns the super color number that is represented by `name`. If no color is found, returns `SKINCOLOR_NONE`.
---
---@param name string
---@return integer
function R_GetSuperColorByName(name) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_GetNameByColor)**
---
---Returns the name of the input color.
---
---The function will raise an error if an out of bounds number is entered.
---
---@param color integer
---@return string
function R_GetNameByColor(color) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_PointToAngle)**
---
---Returns the angle between the camera's X and Y coordinates and `x` and `y`.
---
---
---**WARNING: This will not work consistently among multiple players. Use at your own risk.**
---
---@param x fixed_t
---@param y fixed_t
---@return angle_t
function R_PointToAngle(x, y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_PointToAngle2)**
---
---Returns the angle created by the line from `x` and `y` to `dest_x` and `dest_y`.
---
---@param x fixed_t
---@param y fixed_t
---@param dest_x fixed_t
---@param dest_y fixed_t
---@return angle_t
function R_PointToAngle2(x, y, dest_x, dest_y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_PointToDist)**
---
---Returns the distance from the camera's X and Y coordinates to `x` and `y`.
---
---
---
---**WARNING: This will not work consistently among multiple players. Use at your own risk.**
---
---@param x fixed_t
---@param y fixed_t
---@return fixed_t
function R_PointToDist(x, y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_PointToDist2)**
---
---Returns the distance from `x` and `y` to `dest_x` and `dest_y`.
---
---@param x fixed_t
---@param y fixed_t
---@param dest_x fixed_t
---@param dest_y fixed_t
---@return fixed_t
function R_PointToDist2(x, y, dest_x, dest_y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_PointInSubsector)**
---
---Returns the subsector that the given point is located in. Never returns nil, even if outside of the map.
---
---@param x fixed_t
---@param y fixed_t
---@return subsector_t
function R_PointInSubsector(x, y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_PointInSubsectorOrNil)**
---
---Same as [R_PointInSubsector](https://wiki.srb2.org/wiki/Functions#R_PointInSubsector), but returns nil if point is not in subsector.
---
---@param x fixed_t
---@param y fixed_t
---@return subsector_t|nil
function R_PointInSubsectorOrNil(x, y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_Char2Frame)**
---
---Returns the text character's frame number.
---
---Example: `R_Char2Frame("A")` will return 0.
---
---@param char string
---@return integer
function R_Char2Frame(char) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_Frame2Char)**
---
---Returns the frame number's text character as both a string and its ASCII value.
---
---Example: `R_Frame2Char(0)` will return "A",65.
---
---@param frame integer
---@return string
---@return integer
function R_Frame2Char(frame) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_SetPlayerSkin)**
---
---Sets the player's skin. `skin` can be either a skin number or a skin name string.
---
---@param player player_t
---@param skin integer|string
---@return nil
function R_SetPlayerSkin(player, skin) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#R_SkinUsable)**
---
---Checks if `skin` is legal to switch to and returns true if so. Accounts for factors such as map forcecharacter and multiplayer forceskin.
---
---@param player player_t
---@param skin integer|string
---@return boolean
function R_SkinUsable(player, skin) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StartSound)**
---
---Starts the given sound effect from `origin`, or plays the sound globally if `origin` is nil. If `origin` exists and has a [skin](https://wiki.srb2.org/wiki/skin) applied, certain sounds may be replaced with [custom sounds](https://wiki.srb2.org/wiki/S_SKIN#Custom_sounds) set for the skin. If in a [Mario mode](https://wiki.srb2.org/wiki/Mario_mode) or Christmas NiGHTS level, certain sounds will automatically be swapped with different sounds for the given level type (these take priority over custom skin sounds).
---
---If the third argument is set, the sound will only be played for that player. Otherwise, it will be heard by all players.
---
---@param origin? mobj_t|sector_t
---@param soundnum integer
---@param player? player_t
---@return nil
function S_StartSound(origin, soundnum, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StartSoundAtVolume)**
---
---Starts the given sound effect at a specific volume from `origin`, or plays the sound globally if `origin` is nil. If `origin` exists and has a [skin](https://wiki.srb2.org/wiki/skin) applied, certain sounds may be replaced with [custom sounds](https://wiki.srb2.org/wiki/S_SKIN#Custom_sounds) set for the skin. Unlike `S_StartSound`, Mario mode and Christmas NiGHTS have no effect on the sound used.
---Volume ranges from 0 to 255, inclusive.
---
---@param origin? mobj_t|sector_t
---@param soundnum integer
---@param volume UINT8
---@param player? player_t
---@return nil
function S_StartSoundAtVolume(origin, soundnum, volume, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StopSound)**
---
---Stops any sound that the given `origin` is playing.
---
---@param origin mobj_t|sector_t
---@return nil
function S_StopSound(origin) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StopSoundByID)**
---
---Stops the sound `soundnum` that `origin` may be playing.
---
---@param origin mobj_t|sector_t
---@param soundnum integer
---@return nil
function S_StopSoundByID(origin, soundnum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_ChangeMusic)**
---
---Alternative version: `S_ChangeMusic(int musicslot, [boolean looping?, [[player_t](https://wiki.srb2.org/wiki/player_t) player, [int mflags, [int position, [int prefadems, [int fadeinms]]]]])`
---
---Changes the [music](https://wiki.srb2.org/wiki/List_of_music) to the specified music name or slot number. The music will loop unless `looping?` is specified and is false.
---
---`mflags` can be used to set flags for the music:
---* If `0x4000` is added to the value, the music track will start from the beginning if you attempt to change the music to the same track, instead of having no effect.
---* If `0x8000` is added to the value, the music track will be reset when the current level is reloaded.
---
---If the music format supports multiple tracks, you can supply the track number as well - if the new music's name was given, the track number must be added to `mflags`; if a slot number was given, the track number must be stored in the upper 16 bits (i.e., `musicnum == slot number+(track number<<16)`). This also means that the value given for `mflags` will be ignored.
---
---Other features:
---* `position` determines the position in the music track to start playing from, measured as a time in milliseconds. If set to 0, the music track will be played from the beginning. Note: Has no effect with music formats supported by the [Game Music Emu](https://wiki.srb2.org/wiki/Sound_and_music_tutorial#Game_Music_Emu_formats) library.
---* `prefadems` determines the time in milliseconds to fade out of the current music track before changing to the new track. If set to 0, no fade out effect will be used.
---* `fadeinms` determines the time in milliseconds to fade into the new music track. If set to 0, no fade in effect will be used.
---
---To set a time in seconds for `position`, `prefadems` or `fadeinms`, multiply the time in seconds by the constant `MUSICRATE`; e.g.: `2*MUSICRATE` for 2 seconds.
---
---@param musicname string
---@param looping? boolean
---@param player? player_t
---@param mflags? integer
---@param position? integer
---@param prefadems? integer
---@param fadeinms? integer
---@return nil
function S_ChangeMusic(musicname, looping, player, mflags, position, prefadems, fadeinms) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_SpeedMusic)**
---
---Changes the speed of the music - the speed given must be a multiple of `FRACUNIT`, where `FRACUNIT` is the default music speed.
---
---Note that this function only works with music formats supported by the [Game Music Emu](https://wiki.srb2.org/wiki/Sound_and_music_tutorial#Game_Music_Emu_formats) library. For other music formats, it has no effect.
---
---@param musicspeed fixed_t
---@param player? player_t
---@return nil
function S_SpeedMusic(musicspeed, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StopMusic)**
---
---Stops all music from playing.
---
---@param player? player_t
---@return nil
function S_StopMusic(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_SetInternalMusicVolume)**
---
---Immediately sets the internal volume of the current music track, as a percentage of the user's configured game volume, where 0 is silent and 100 is full volume.
---
---Returns true if the volume change was done for all players or the user's local player, returns false if not.
---
---@param volume integer
---@param player? player_t
---@return boolean
function S_SetInternalMusicVolume(volume, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StopFadingMusic)**
---
---Stops any current fade from running. The music will remain playing at the current internal volume.
---
---Returns true if the fade was done for all players or the user's local player, returns false if not.
---
---@param player? player_t
---@return boolean
function S_StopFadingMusic(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_FadeMusic)**
---
---Alternative version: `S_FadeMusic(int target_volume, int ms, [int source_volume, [[player_t](https://wiki.srb2.org/wiki/player_t) player]])`
---
---Fades the current music track from source volume to target volume, 0-100%. If `source_volume` is not specified, the source volume is the current internal volume. `ms` is the length of the fade, measured in milliseconds. To set a time in seconds, multiply the time in seconds by the constant `MUSICRATE`; e.g.: `2*MUSICRATE` for 2 seconds.
---
---Returns true if the fade was done for all players or the user's local player, returns false if not.
---
---@param target_volume integer
---@param ms integer
---@param player? player_t
---@return boolean
function S_FadeMusic(target_volume, ms, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_FadeOutStopMusic)**
---
---Fades the current music track from current internal volume to 0%, then stop the music. `ms` is the length of the fade, measured in milliseconds. To set a time in seconds, multiply the time in seconds by the constant `MUSICRATE`; e.g.: `2*MUSICRATE` for 2 seconds.
---
---Returns true if the fade was done for all players or the user's local player, returns false if not.
---
---@param ms integer
---@param player? player_t
---@return boolean
function S_FadeOutStopMusic(ms, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_OriginPlaying)**
---
---Returns true if a sound effect with `origin` as the origin is being played, false if not.
---
---
---Example:
---```Lua
---
---if S_OriginPlaying(players[0].mo) -- is a sound being played from the player's mobj?
---	print("beep!") -- beep if yes
---end
---
---```
---
---
---
---**WARNING: This function only checks sounds being played for the local client, and thus isn't network safe. Use at your own risk.**
---
---@param origin mobj_t|sector_t
---@return boolean
function S_OriginPlaying(origin) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_IdPlaying)**
---
---Returns true if a sound effect with the given ID is being played, false if not.
---
---Example:
---```Lua
---
---if S_IdPlaying(sfx_thok) -- is a thok sound being played at all?
---	print("beep!") -- beep if yes
---end
---
---```
---
---
---
---**WARNING: This function only checks sounds being played for the local client, and thus isn't network safe. Use at your own risk.**
---
---@param soundnum integer
---@return boolean
function S_IdPlaying(soundnum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_SoundPlaying)**
---
---Returns true if a sound effect with the given ID and `origin` as the origin is being played, false if not.
---
---Example:
---```Lua
---
---if S_SoundPlaying(players[0].mo, sfx_thok) -- is a thok sound being played from the player's mobj?
---	print("beep!") -- beep if yes
---end
---
---```
---
---
---
---**WARNING: This function only checks sounds being played for the local client, and thus isn't network safe. Use at your own risk.**
---
---@param origin mobj_t|sector_t
---@param soundnum integer
---@return boolean
function S_SoundPlaying(origin, soundnum) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_StartMusicCaption)**
---
---If the user has sound captions enabled, this will display the caption `caption` for the duration specified by `lifespan` in a similar manner to the captions displayed for [Super Sneakers](https://wiki.srb2.org/wiki/Super_Sneakers) and [Invincibility](https://wiki.srb2.org/wiki/Invincibility). If `player` is specified, this will only be displayed for that player.
---
---@param caption string
---@param lifespan tic_t
---@param player? player_t
---@return nil
function S_StartMusicCaption(caption, lifespan, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_GetMusicLength)**
---
---Returns the length of the currently playing music, in milliseconds. 
---
---**WARNING: This function only checks the music being played for the local client, and thus isn't network safe. Use at your own risk.**
---
---@return integer
function S_GetMusicLength() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_GetMusicPosition)**
---
---Returns the position of the currently playing music, in milliseconds. 
---
---**WARNING: This function only checks the music being played for the local client, and thus isn't network safe. Use at your own risk.**
---
---@return integer
function S_GetMusicPosition() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_SetMusicPosition)**
---
---Sets the position of the currently playing music, in milliseconds. Returns false if no music is playing or a MIDI is currently playing (and therefore the position could not be set), and returns true otherwise. Note that this may still return true in some instances where the position could not be set.
---
---Verify this is accurate.
---
---@param position integer
---@return boolean
function S_SetMusicPosition(position) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_MusicExists)**
---
---Returns whether music of name `mname` exists within any of the currently loaded files.
---
---By default, this checks for both digital (`O_`) and MIDI (`D_`) versions of the music file, but the checks can be toggled with the arguments `checkdigi` and `checkmidi`, respectively.
---
---@param mname string
---@param checkmidi? boolean
---@param checkdigi? boolean
---@return boolean
function S_MusicExists(mname, checkmidi, checkdigi) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_MusicPlaying)**
---
---Add a description
---
---@param player? player_t
---@return boolean|nil
function S_MusicPlaying(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_MusicPaused)**
---
---Add a description
---
---@param player? player_t
---@return boolean|nil
function S_MusicPaused(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_MusicName)**
---
---Add a description
---
---@param player? player_t
---@return string|nil
function S_MusicName(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_SetMusicLoopPoint)**
---
---Add a description
---
---@param looppoint UINT32
---@param player? player_t
---@return boolean|nil
function S_SetMusicLoopPoint(looppoint, player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_GetMusicLoopPoint)**
---
---Add a description
---
---@param player? player_t
---@return UINT32|nil
function S_GetMusicLoopPoint(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_PauseMusic)**
---
---Add a description
---
---@param player? player_t
---@return boolean|nil
function S_PauseMusic(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#S_ResumeMusic)**
---
---Add a description
---
---@param player? player_t
---@return boolean|nil
function S_ResumeMusic(player) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#players.iterate)**
---
---Iterates over all [player](https://wiki.srb2.org/wiki/player)s currently playing in the map. Note that `player.mo` will return nil for spectating players.
---
---@return player_t
function players.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#mobjs.iterate)**
---
---Iterates over all [Object](https://wiki.srb2.org/wiki/Object)s in the map that use `P_MobjThinker`. This excludes all precipitation (rain and snow).
---
---Note that this iterator is extremely slow due to the massive amount of thinkers in a typical map, and should not be used repeatedly so as not to cause framerate drops.
---
---@return fun(): mobj_t
function mobjs.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#skins.iterate)**
---
---Iterates over all valid [skin](https://wiki.srb2.org/wiki/skin)s loaded in the game.
---
---@return skin_t
function skins.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#mapthings.iterate)**
---
---Iterates over all map [Thing](https://wiki.srb2.org/wiki/Thing)s in the map. Remember that not all Objects will necessarily have a respective map Thing, and not all map Things will necessarily have a respective Object.
---
---@return mapthing_t
function mapthings.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#mapthings.tagged)**
---
---Iterates over all map [Thing](https://wiki.srb2.org/wiki/Thing)s tags in the map with the matching `tag`.
---
---@param tag INT16
---@return taglist_t
function mapthings.tagged(tag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#sectors.iterate)**
---
---Iterates over all [sector](https://wiki.srb2.org/wiki/sector)s in the map.
---
---@return sector_t
function sectors.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#sectors.tagged)**
---
---Iterates over all [sector](https://wiki.srb2.org/wiki/sector)s tags in the map with the matching `tag`..
---
---@param tag INT16
---@return taglist_t
function sectors.tagged(tag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#subsectors.iterate)**
---
---Iterates over all [subsector](https://wiki.srb2.org/wiki/subsector)s in the map.
---
---@return subsector_t
function subsectors.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#lines.iterate)**
---
---Iterates over all [linedef](https://wiki.srb2.org/wiki/linedef)s in the map.
---
---@return line_t
function lines.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#lines.tagged)**
---
---Iterates over all [linedef](https://wiki.srb2.org/wiki/linedef)s tags in the map with the matching `tag`.
---
---@param tag INT16
---@return taglist_t
function lines.tagged(tag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#sides.iterate)**
---
---Iterates over all [sidedef](https://wiki.srb2.org/wiki/sidedef)s in the map.
---
---@return side_t
function sides.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#vertexes.iterate)**
---
---Iterates over all [vertex](https://wiki.srb2.org/wiki/vertex)es in the map.
---
---@return vertex_t
function vertexes.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#polyobjects.iterate)**
---
---Iterates over all [PolyObject](https://wiki.srb2.org/wiki/PolyObject)s in the map.
---
---@return polyobj_t
function polyobjects.iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#dofile)**
---
---This loads the lua script `file` from the `Lua/` folder in the last loaded add-on, which must be a [PK3](https://wiki.srb2.org/wiki/PK3). For instance, to load the file `Lua/script.lua`, use `dofile("script.lua")`. It is highly recommended this only be used in [init.lua](https://wiki.srb2.org/wiki/PK3#init.lua) as the add-on is loading, though it can technically be used at any time.
---
---@param file string
---@return ... any
function dofile(file) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#io.open)**
---
---* Callback function format: `function(file file, string filename)`
---
---This is the function used for reading from a file owned by the host. It is netsafe.
---
---If called within a netgame, it (automatically) sends the file to all clients and executes `callback` once everyone has downloaded it, so that the game will not desynchronise.
---
---This function does not return a value, but if the file does not exist, `file` will be `nil` inside the callback, so you can still check for file not found errors.
---
---Once the callback function returns or ends, the file handle is closed automatically (no need to call `io.close`).
---
---This function is non-blocking (asynchronous), which means that even in a netgame, the game will not "pause" while all players are downloading the file. Instead, the script will continue to run as normal, except the callback will not be called immediately, but will instead wait for an undetermined amount of time (bandwidth, network latency, etc.) before finally calling the callback. Keep this in mind when setting variables with values found in the file, as those variables will not be updated until an indeterminate amount of time in the future.
---
---@param filename string
---@param mode? string
---@param callback function
---@return nil
function io.open(filename, mode, callback) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#io.openlocal)**
---
---This function opens a file, in the mode specified in the string mode. It returns a new file handle, or, in case of errors, `nil` plus an error message.
---
---The mode string can be any of the following:
---
---* "r": read mode (prefer `io.open` in most scenarios);
---* "w": write mode;
---* "a": append mode;
---* "r+": update mode, all previous data is preserved;
---* "w+": update mode, all previous data is erased;
---* "a+": append update mode, previous data is preserved, writing is only allowed at the end of file.
---The mode string can also have a 'b' at the end, which is needed to open the file in binary (non-text) mode. 
---
---**WARNING: This function is run locally, and thus isn't network safe. It is primarily intended to be used for writing to a file. For reading from a file, it is HIGHLY recommended that you use `io.open` instead, unless you actually need to access data locally, such as a list of passwords. Use at your own risk.**
---
---@param filename string
---@param mode? string
---@return file*|nil
---@return string|nil
function io.openlocal(filename, mode) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#os.clock)**
---
---Returns the time in seconds to the nearest millisecond since SRB2 was running.
---
---@return integer
function os.clock() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#os.difftime)**
---
---Returns the number from time `a` to time `b`, in other words, `a` - `b`.
---
---@param a integer
---@param b integer
---@return integer
function os.difftime(a, b) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#os.date)**
---
---Returns the date and time as a string or table.
---The first argument accepts the `format`. Default is "%c".
---
---* "%a". abbreviated weekday name (e.g., Wed);
---* "%A". full weekday name (e.g., Wednesday);
---* "%b". abbreviated month name (e.g., Sep);
---* "%B". full month name (e.g., September);
---* "%c". date and time (e.g., 09/16/98 23:48:10);
---* "%d". day of the month (e.g., 16) [01-31];
---* "%H". hour, using a 24-hour clock (e.g., 23) [00-23];
---* "%I". hour, using a 12-hour clock (e.g., 11) [01-12];
---* "%M". minute (e.g., 48) [00-59];
---* "%m". month (e.g., 09) [01-12];
---* "%p". either "am" or "pm" (pm);
---* "%S". second (e.g., 10) [00-61];
---* "%w". weekday (e.g., 3) [0-6 = Sunday-Saturday];
---* "%x". date (e.g., 09/16/98);
---* "%X". time (e.g., 23:48:10);
---* "%Y". full year (e.g., 1998);
---* "%y". two-digit year (e.g., 98) [00-99];
---* "%%". the character `%´.
---* "*t". returns the table;
---* "!*t". returns the table (GMT).
---
---If the `format` is "*t", returns the table:
---
---* year (a full year)
---* month (1 - 12)
---* day (1-31)
---* hour (00-23)
---* min (00-59)
---* sec (00-59)
---* wday (day of the week, Sunday is 1)
---* yday (day of the year)
---* isdst (a boolean, true if daylight saving)
---
---The second argument accepts the time in seconds.  If `time` is not given, the function will return the current time.
---
---@param format string
---@param time? integer
---@return string|table
function os.date(format, time) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Functions#os.time)**
---
---Returns the time (the number of seconds elapsed since 00:00:00:00 on January 1, 1970).
---If no argument is specified, returns the current time.
---The argument is a table that must have keys year, month, and day. It can have keys hour, min, sec, and isdst(daytime flag).
---
---@param t table
---@return integer
function os.time(t) end


---
---This userdata type represents an Object. In the examples below, mobj is used as the name of the mobj_t variable. An access to a variable var of mobj_t is written as mobj.var.
---
---Accessibility: Read+Write
---Allows custom variables: Yes
---
---@class mobj_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Returns true if the Object is valid (i.e., still exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's absolute X position in the map. To modify this value, use a function such as [P_SetOrigin](https://wiki.srb2.org/wiki/Lua/Functions#P_SetOrigin) or [P_MoveOrigin](https://wiki.srb2.org/wiki/Lua/Functions#P_MoveOrigin) rather than editing it directly.
---
---@field x fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's absolute Y position in the map. To modify this value, use a function such as [P_SetOrigin](https://wiki.srb2.org/wiki/Lua/Functions#P_SetOrigin) or [P_MoveOrigin](https://wiki.srb2.org/wiki/Lua/Functions#P_MoveOrigin) rather than editing it directly.
---
---@field y fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's absolute Z position in the map.
---
---@field z fixed_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The next Object in the linked list that contains all Objects in the sector.
---
---@field snext mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute angle the Object is facing horizontally. 0 is East, `ANGLE_90` is North, `ANGLE_180` is West, and `ANGLE_270` is South.
---
---@field angle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute angle the Object is facing vertically. 0 is looking at the center, `ANGLE_90` is looking up, and `-ANGLE_90` is looking down.
---Currently only used for Custom Maces, NiGHTS's Hoops and NiGHTS's Bumpers in the base game,
---
---@field pitch angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute angle the Object is rotated on it's own axis.
---Currently has no use in the base game.
---
---@field roll angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The roll angle of the Object's sprite, that is, the rotation of the sprite on-screen relative to the center of the sprite, if SpriteInfo is not set.
---
---Positive angles roll the sprite in a counterclockwise manner.
---
---Note that `mobj.spriteroll` and `mobj.rollangle` are the same variable – they both do the same thing, and changing one will also change the other.
---
---@field spriteroll angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The [sprite](https://wiki.srb2.org/wiki/sprite) prefix of the sprite the Object is currently displaying. Note that each time an Object switches states, this value is automatically reset to the new state's sprite prefix.
---
---@field sprite spritenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The sprite frame the Object is currently displaying, plus additional frame flags that set further properties of the current state, including full brightness, animation, and translucency (see [State > Attributes](https://wiki.srb2.org/wiki/State#Attributes)). Note that each time an Object switches states, this value is automatically reset to the new state's sprite frame.
---
---@field frame UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Usable when `sprite` is `SPR_PLAY`. Refers to the current sprite2, plus additional sprite2 flags. Note that each time an Object switches states containing sprite2, this value is automatically reset to the new state's sprite2, otherwise it defaults to `0`.
---
---@field sprite2 UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---If `mobj.frame` currently has the frame flag `FF_ANIMATE` set, this is the duration in tics between each frame in the state's animation. Otherwise, this has no effect on the Object's animation. By default, this is set to the current state's `Var2` value.
---
---@field anim_duration UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current render flags (use [RF_*](https://wiki.srb2.org/wiki/Constants#Render_flags) constants).
---
---@field renderflags UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current blend mode, which changes the way it is drawn whenever it has some degree of transparency.
---
---@field blendmode alphastyle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The horizontal scale of the Object's sprite. Is `FRACUNIT` by default.
---
---@field spritexscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The vertical scale of the Object's sprite. Is `FRACUNIT` by default.
---
---@field spriteyscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The relative horizontal offset of the Object's sprite. This value is added to the sprite's original X offset, except when the Object has the `RF_ABSOLUTEOFFSETS` render flag, where it's used as the X offset itself.
---
---@field spritexoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The relative vertical offset of the Object's sprite. This value is added to the sprite's original Y offset, except when the Object has the `RF_ABSOLUTEOFFSETS` render flag, where it's used as the Y offset itself.
---
---@field spriteyoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The relative alpha of the Object's sprite. This value ranges from `0` (invisible) to `FRACUNIT` (opaque), can work in conjuntion with any of the `FF_TRANS*` flags of `mobj.frame`. Is `FRACUNIT` by default.
---
---@field alpha fixed_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The plane on which the Object's sprite will be drawn if it is a sloped floor sprite (`RF_SLOPESPLAT`). The [P_CreateFloorSpriteSlope](https://wiki.srb2.org/wiki/Lua/Functions#P_CreateFloorSpriteSlope) function is necessary to modify this field. It has no effect on non-sloped floor sprites.
---
---@field floorspriteslope? pslope_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The subsector the Object is currently in. To obtain the sector the Object is in, use `mobj.subsector.sector`. Note that `mobj.subsector` will be `nil` for Objects currently being removed.
---
---@field subsector subsector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute "floor" position for the Object, i.e., the height that it considers to be the floor. This can be different from the floor height of the sector the Object is in, for example if it is above a solid FOF. Note that this value is not flipped to a ceiling position if the Object is in [reverse gravity](https://wiki.srb2.org/wiki/reverse_gravity).
---
---@field floorz fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute "ceiling" position for the Object, i.e., the height that it considers to be the ceiling. This can be different from the ceiling height of the sector the Object is in, for example if it is below a solid FOF. Note that this value is not flipped to a floor position if the Object is in [reverse gravity](https://wiki.srb2.org/wiki/reverse_gravity).
---
---@field ceilingz fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---If the floor beneath the Object is a [FOF](https://wiki.srb2.org/wiki/Floor_over_floor), this index will return that FOF.
---
---@field floorrover? ffloor_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---If the ceiling above the Object is a [FOF](https://wiki.srb2.org/wiki/Floor_over_floor), this index will return that FOF.
---
---@field ceilingrover? ffloor_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The current radius of the Object. When the Object's scale is modified, this is reset to the default radius for the Object's [Object type](https://wiki.srb2.org/wiki/Object_type), multiplied with the new scale. Otherwise this is freely adjustable; the minimum value is 0.
---
---@field radius fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The current height of the Object. When the Object's scale is modified, this is reset to the default height for the Object's [Object type](https://wiki.srb2.org/wiki/Object_type), multiplied with the new scale. Otherwise this is freely adjustable; the minimum value is 0. For players, however, note that this value is continuously corrected/modified to be either the default player height or a specific height used in special situations, such as when spinning.
---
---@field height fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current X-axis momentum. Positive values will cause the Object to move to the East, negative values to the West. If you want the Object to move horizontally at an angle that is not entirely along the X-axis, the X-axis momentum should be the desired momentum multiplied by the cosine of the angle - if `mom` is the desired momentum and `h-angle` is an `angle_t` variable representing the angle between the X-axis and Y-axis, then you should set `mobj.momx = mom*cos(h-angle)`. If the movement has a vertical component as well, you need to multiply the cosine of the vertical angle between the Z-axis and the horizontal plane as well - if `v-angle` is the vertical angle (with a value of 0 being completely horizontal), then you should set `mobj.momx = mom*cos(h-angle)*cos(v-angle)`.
---
---@field momx fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current Y-axis momentum. Positive values will cause the Object to move to the North, negative values to the South. If you want the Object to move horizontally at an angle that is not entirely along the Y-axis, the Y-axis momentum should be the desired momentum multiplied by the sine of the angle - if `mom` is the desired momentum and `h-angle` is an `angle_t` variable representing the angle between the X-axis and Y-axis, then you should set `mobj.momy = mom*sin(h-angle)`. If the movement has a vertical component as well, you need to multiply the cosine of the vertical angle between the Z-axis and the horizontal plane as well - if `v-angle` is the vertical angle (with a value of 0 being completely horizontal), then you should set `mobj.momy = mom*sin(h-angle)*cos(v-angle)`.
---
---@field momy fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current Z-axis momentum. Positive values cause the Object to move upwards, negative values downwards. If you want the movement to have a horizontal component as well, you need to multiply the sine of the vertical angle between the Z-axis and the horizontal plane as well - if `mom` is the desired momentum and `v-angle` is an `angle_t` variable representing the vertical angle (with a value of 0 being completely horizontal), then you should set `mobj.momz = mom*sin(v-angle)`.
---
---@field momz fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---If the Object is standing on a moving floor, this is the Z-axis momentum of the floor.
---
---@field pmomz fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The current value of the Object's state timer, which decreases by 1 each tic until it reaches 0. At this point, the Object will switch to a new state and this value will be reset to the new state's tic duration. If the value is -1, the current state will have infinite duration.
---
---@field tics INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The number of the [state](https://wiki.srb2.org/wiki/state) the Object is currently in. When the value of this is changed, Lua will automatically switch the current state to the new value. `mobj.sprite`, `mobj.frame`, `mobj.tics` will be changed to the new state's sprite, frame and tics values respectively. Additional adjustments may be made for player Objects specifically however (such as player animation speeds and switching to superform states). Switching to the state `S_NULL` will make the Object disappear, unless it is a player Object (this will cause the game to print an error in the console instead).
---
---Note that changing the value of `mobj.state` directly in Lua will cause the new state's [action](https://wiki.srb2.org/wiki/actions) to be called automatically. To avoid this, the function [P_SetMobjStateNF](https://wiki.srb2.org/wiki/Lua/Functions#P_SetMobjStateNF) should be used instead.
---
---@field state statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current primary Object flags (use [`MF_*`](https://wiki.srb2.org/wiki/Object_flags#Primary_flags) constants). When the Object is first spawned, this is automatically set to the `flags` attribute of the Object's [Object type](https://wiki.srb2.org/wiki/Object_type). Afterwards it can be adjusted freely.
---
---@field flags UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current secondary Object flags (use [`MF2_*`](https://wiki.srb2.org/wiki/Object_flags#Secondary_flags) constants).
---
---@field flags2 UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current extra Object flags (use [`MFE_*`](https://wiki.srb2.org/wiki/Object_flags#Extra_flags) constants).
---
---@field eflags UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The current [skin](https://wiki.srb2.org/wiki/skin) applied to the Object. For Objects with `mobj.sprite` set to `SPR_PLAY`, this will change the appearance of the Object's sprites to that of the character the skin is associated with. This is most commonly used by [player](https://wiki.srb2.org/wiki/player)s, but [Extra Life Monitor](https://wiki.srb2.org/wiki/Extra_Life_Monitor)s, [Level End Sign](https://wiki.srb2.org/wiki/Level_End_Sign)s, ghost trails, and player thok trails also apply a skin in some situations.
---
---@field skin? string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The current [skin color](https://wiki.srb2.org/wiki/skin_color) applied to the Object. When modifying this for regular Objects, this will by default re-map the green range of colors (palette color #s 160-175) to the specified range for the color name given. However, for Objects using `SPR_PLAY` this can use the current skin's startcolor parameter instead to set the range of colors to color remap.
---
---@field color skincolornum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Whether this Object will use the rainbow colormap, tinting the sprite using the color set in `color`.
---
---@field colorized boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---This object's current [translation](https://wiki.srb2.org/wiki/translations). The value of this is meant to match the name of a defined translation, or built-in translation, and will throw an error if not. `nil` represents the lack of a translation, and is also the default value. These are separate from special translations, which use `TC_*` constants.
---
---@field translation? string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---When set to a player, this Object is only visible for that player and anyone spectating that player.
---
---@field drawonlyforplayer player_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---When set to an Object, `mobj` will be hidden if `mobj.dontdrawforviewmobj` is the current camera.
---
---For example, if `mobj.dontdrawforviewmobj` is set to a player Object, then `mobj` will be hidden for that player if the player is in first-person.
---If a player's `awayviewmobj` is in use and is set to the same Object as `mobj.dontdrawforviewmobj`, then `mobj` is hidden for that player.
---
---@field dontdrawforviewmobj mobj_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The next Object in the linked list that contains all Objects in the [blockmap](https://wiki.srb2.org/wiki/blockmap)'s current block.
---
---@field bnext mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The next Object in the "hoop". Originally intended for use with [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) [hoop](https://wiki.srb2.org/wiki/hoop)s, but is usable for other purposes as well.
---
---@field hnext mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The previous Object in the "hoop". Originally intended for use with [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) [hoop](https://wiki.srb2.org/wiki/hoop)s, but is usable for other purposes as well.
---
---@field hprev mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current [Object type](https://wiki.srb2.org/wiki/Object_type). If the value is changed via Lua (which is usually not necessary), `mobj.info` will automatically be modified at the same time to point to the `mobjinfo_t` entry for the new Object type.
---
---Important note: For Objects spawned on the map via a [Thing](https://wiki.srb2.org/wiki/Thing), modifying `mobj.type` to an Object type without a corresponding Thing type (i.e., `mobj.info.doomednum` has a value of -1) will cause the Object and its Thing to not be linked properly for players joining a [netgame](https://wiki.srb2.org/wiki/netgame). This is because, when creating the `$$$.sav` file, the networking code incorrectly assumes Objects of these types will never have a corresponding Thing, regardless of the value of `mobj.spawnpoint` for any particular Object. This results in `mobj.spawnpoint` for such an Object becoming nil for any players joining the netgame.
---
---@field type mobjtype_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---This points to the `mobjinfo_t` entry for the Object's [Object type](https://wiki.srb2.org/wiki/Object_type), which lists the Object type's properties. As such, it is a shortcut for `mobjinfo[mobj.type]`. `mobj.info` itself cannot be changed directly, but if `mobj.type` is changed, `mobj.info` will automatically be changed to point to the `mobjinfo_t` for the new Object type.
---
---@field info mobjinfo_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current amount of health points.  When the Object is first spawned, this is automatically set to the `spawnhealth` attribute of the Object's [Object type](https://wiki.srb2.org/wiki/Object_type). Afterwards it can be adjusted freely. For Objects that do not need a health value, this can be used for miscellaneous purposes if desired.
---
---@field health INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Used to indicate movement direction for [A_Chase](https://wiki.srb2.org/wiki/A_Chase) and related, using the [`DI_*`](https://wiki.srb2.org/wiki/Constants#A_Chase_directions) constants. Otherwise, this can be used for any miscellaneous purpose whatsoever.
---
---@field movedir angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Used as a timer before the Object changes direction (usually if `mobj.movecount == 0`) for [A_Chase](https://wiki.srb2.org/wiki/A_Chase) and related. Otherwise, this can be used for any miscellaneous purpose whatsoever.
---
---@field movecount INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Generally used as a "target" Object for enemies and similar to chase towards/fire at. [Projectile](https://wiki.srb2.org/wiki/Projectile)s (Objects with `MF_MISSILE`) should set this to the Object that fired them, so they cannot harm/crash into the firer. Otherwise, this can be used to link any related Object at all if needed.
---
---@field target? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Used as a timer to delay certain behavior such as attacks (usually if `mobj.reactiontime == 0`) for a number of actions, including [A_Chase](https://wiki.srb2.org/wiki/A_Chase) and related. When the Object is first spawned, this is automatically set to the `reactiontime` attribute for the [Object type](https://wiki.srb2.org/wiki/Object_type) the Object belongs to, but can freely be adjusted afterwards. For players, this is used by some types of teleports to prevent the them from moving until it has reached 0. Otherwise, this can be used for any miscellaneous purpose whatsoever.
---
---@field reactiontime INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Used as a timer before switching targets (usually if `mobj.threshold == 0`) for [A_Chase](https://wiki.srb2.org/wiki/A_Chase) and related. Otherwise, this can be used for any miscellaneous purpose whatsoever.
---
---@field threshold INT32
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---For player Objects, this points to the player's properties (e.g., `mobj.player.pflags` or `mobj.player.powers[pw_invulnerability]`). It is recommended `mobj.player.mo` is not used as this just points back to `mobj` itself, which is redundant. For regular Objects `mobj.player` will return nil.
---
---@field player? player_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Used to store the player number of the last player targeted for [A_Chase](https://wiki.srb2.org/wiki/A_Chase) and related. Otherwise, this can be used for any miscellaneous purpose whatsoever.
---
---@field lastlook INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---For Objects that have been spawned on the map via a [Thing](https://wiki.srb2.org/wiki/Thing) (or "spawn point"), this points to the Thing that spawned it by default. If one doesn't exist, this returns nil. However, this variable can be adjusted to point to a different Thing if needed, or to not point to any Thing at all by using `mobj.spawnpoint = nil`.
---
---Important notes:
---* If an Object belongs to an Object type that does not have a corresponding Thing type number (i.e., `mobj.info.doomednum` has a value of -1), modifying `mobj.spawnpoint` to a non-nil value will cause the Object and its Thing to not be linked properly for players joining a [netgame](https://wiki.srb2.org/wiki/netgame). This is because, when creating the `$$$.sav` file, the networking code incorrectly assumes the Object will never have a corresponding Thing, regardless of the value of `mobj.spawnpoint`. This results in `mobj.spawnpoint` for such an Object becoming nil for any players joining the netgame.
---* It is recommended not to make multiple Objects point to the same Thing; for players joining a [netgame](https://wiki.srb2.org/wiki/netgame), `$$$.sav` will edit `mobj.spawnpoint.mobj` for all Objects with a `mobj.spawnpoint` value (except for Object types with no corresponding Thing type; see note above) to point back to `mobj`, assuming it is the Object that the Thing (`mobj.spawnpoint`) originally spawned. As `mobj.spawnpoint.mobj` can only point to one Object at a time, this may result in it pointing to a different Object for players who have just joined the game.
---* For [special placement patterns](https://wiki.srb2.org/wiki/Thing_types#Special_Placement_Patterns) and [player starts](https://wiki.srb2.org/wiki/Thing_types#Player_starts), `mobj.spawnpoint` is nil for all Objects spawned by these Thing types. For [standard](https://wiki.srb2.org/wiki/Hoop) and [customizable](https://wiki.srb2.org/wiki/Hoop_(Customizable)) Hoops, only the hoop center Object will have a non-nil `mobj.spawnpoint` value.
---
---@field spawnpoint? mapthing_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Generally used as a secondary "target" Object when `mobj.target` is already in use. For players, this is often used to link players to the next waypoint to move towards, or the Object the player is being carried by currently.
---
---@field tracer? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current "friction" value. Contrary to real-life friction physics, this is used as a multiplier for `mobj.momx` and `mobj.momy` to slow down or speed up the Object when touching the ground. The higher the value of `mobj.friction` is, the less sludgy/more slippery the floor surface becomes to the Object.
---In general:
---
---* `mobj.friction` values smaller than `FRACUNIT` will slow down the Object on the ground.
---* `mobj.friction` values greater than `FRACUNIT` will speed up the Object on the ground.
---* `mobj.friction` values equal to `FRACUNIT` will not slow down nor speed up the Object at all.
---The default `mobj.friction` value for most Objects is 59392 (hexadecimal: `0xe800`), which is equivalent to `29*FRACUNIT/32`.
---
---@field friction fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---In Doom, this variable originally determined an Object's "move factor", which affected how fast a player could move. However, in SRB2, it is instead used for miscellaneous purposes.
---
---@field movefactor fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Commonly used as a timer before the Object disappears or does something else (see [Lua/Hooks > MobjFuse](https://wiki.srb2.org/wiki/Lua/Hooks#MobjFuse) to customize the end effect per Object type), which automatically decreases by 1 each tic until it reaches 0. This is also used for miscellaneous purposes, but this has to be kept the same value always for this to work.
---
---@field fuse INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute "water top" position for the Object. If the Object is currently touching a water [FOF](https://wiki.srb2.org/wiki/FOF), this is the top height of the water FOF. Otherwise, it defaults to `mobj.z - 1000*FRACUNIT`.
---
---@field watertop fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The absolute "water bottom" position for the Object. If the Object is currently touching a water [FOF](https://wiki.srb2.org/wiki/FOF), this is the bottom height of the water FOF. Otherwise, it defaults to `mobj.z - 1000*FRACUNIT`.
---
---@field waterbottom fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's current scale. The default scale is `FRACUNIT`. When this is modified by Lua with `mobj.scale = newvalue`, this will automatically use [P_SetScale](https://wiki.srb2.org/wiki/Lua/Functions#P_SetScale)(mobj, newvalue) internally to adjust the Object's radius and height, but will also change `mobj.destscale` to match. This means using [P_SetScale](https://wiki.srb2.org/wiki/Lua/Functions#P_SetScale) itself directly is not redundant as it does not affect `mobj.destscale` internally, allowing gradual scale changes (rather than instantaneous) to be possible.
---
---@field scale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's destination scale. If the Object does not currently have this scale, it will gradually change the value of `mobj.scale` to match this value.
---
---@field destscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's scale-changing speed, for when the Object is gradually changing scale to reach the value of `mobj.destscale`. The value used in most cases is `FRACUNIT/12`, but this can be adjusted to speed up or slow down the scale-changing if needed.
---
---@field scalespeed fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---An extra variable that can be used for miscellaneous purposes. Note that some of SRB2's default Objects already use this variable.
---
---@field extravalue1 INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---An extra variable that can be used for miscellaneous purposes. Note that some of SRB2's default Objects already use this variable. In particular, [A_Repeat](https://wiki.srb2.org/wiki/A_Repeat) uses it to set the repeat count.
---
---@field extravalue2 INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The Object's "custom value", ported from the [v2.0](https://wiki.srb2.org/wiki/v2.0) modification SRB2Morphed. It is unused by SRB2's default Objects and was originally intended as an extra variable for [SOC](https://wiki.srb2.org/wiki/SOC) scripting, although it can be used freely for any purpose. Several [actions](https://wiki.srb2.org/wiki/actions), such as [A_CheckCustomValue](https://wiki.srb2.org/wiki/A_CheckCustomValue) or [A_CusValAction](https://wiki.srb2.org/wiki/A_CusValAction), are available that make use of this value and `mobj.cvmem`.
---
---@field cusval INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---This is intended as a "memory" for the Object's "custom value", allowing you to store a copy of the custom value and then recall it later, after the actual custom value may have changed. The [actions](https://wiki.srb2.org/wiki/actions) [A_CheckCusValMemo](https://wiki.srb2.org/wiki/A_CheckCusValMemo) and [A_UseCusValMemo](https://wiki.srb2.org/wiki/A_UseCusValMemo) are available for using the custom value memory.
---
---@field cvmem INT32
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---The [slope](https://wiki.srb2.org/wiki/slope) that the Object is standing on, or `nil` if the Object is not standing on a slope.
---
---@field standingslope? pslope_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---If true, this Object will be visually mirrored relative to its angle  its left-side sprites will be seen from the right, and vice-versa, and all sprites will be horizontally flipped accordingly.
---
---@field mirrored boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---This controls whether the Object casts a shadow, and how large the shadow is relative to the Object's radius.
---
---@field shadowscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobj_t)**
---
---Used to resolve ordering conflicts when drawing sprites that are in the same position in Software rendering. Sprites with a higher display offset are always drawn in front of sprites with a lower display offset. For instance, the shield orbs all have this set to 1, which means they are always displayed in front of the player when both are in the exact same position. Any integer value can be used here, including negative values; SRB2's Objects only use values up to 2, so anything above that will make the Object take precedence over all of SRB2's default Objects. For most Objects, this can be set to 0.
---
---@field dispoffset INT32
local mobj_t = {}

---@class player_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Returns true if the player is valid (i.e., still exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's name.
---
---@field name string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Points to the `mobj_t` data representing the player Object.
---
---Note: By default, `player.mo` is a pre-determined Object of the type `MT_PLAYER`. It is possible to change `player.mo` to a different Object of any type, but not to nil. However, it is not recommended to use a different Object type than `MT_PLAYER` - the sprites for the player's character will still appear when walking, running, etc. regardless of the Object's type, and the player may also not behave properly when using particular special map effects if they are not using an `MT_PLAYER` Object.
---
---If the player is currently a spectator, `player.mo` will return nil.
---
---@field mo? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Points to the `mobj_t` data representing the player Object. However unlike `player.mo`, it won't return nil if the player is a spectator. However, `player.realmo` will return nil if the player is entering the game, i.e., exiting spectator mode, for 1 tic.
---
---@field realmo? mobj_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Points to the player's button information, i.e., what buttons are currently being pressed. Properties of this can be modified freely, but `player.cmd` itself cannot be assigned a new value.
---
---@field cmd ticcmd_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current player state (either living, dead or respawned).
---
---@field playerstate playerstate_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The scale of the third-person camera's distance from the player. This is normally set from the relevant value of a character's [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN).
---
---@field camerascale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The scale of this player's [Shield](https://wiki.srb2.org/wiki/Shield) orbs. This is normally set from the relevant value of a character's [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN).
---
---@field shieldscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's absolute viewing height (or viewing Z position) used by the first-person [camera](https://wiki.srb2.org/wiki/camera). The game will automatically update this variable every tic; the exact calculation used depends on the player's [gravity](https://wiki.srb2.org/wiki/gravity) direction:
---*Normal gravity: `player.mo.z` + `player.viewheight` + (bobbing displacement)
---*Reverse gravity: `player.mo.z` + `player.mo.height` - `player.viewheight` + (bobbing displacement)
---
---In both cases, (bobbing displacement) is a displacement value calculated using `player.bob`, which causes the player's view to appear to "bob" up and down as they walk. It is only added if the player is on the ground and using the first-person camera.
---
---**Note: If not modified by Lua, this value is only calculated by the game for local players, and thus isn't network safe. Use at your own risk.**
---
---@field viewz fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's relative viewing height used by the first-person camera. Sometimes, it may be reduced for effects such as landing on the ground - in these cases, `player.deltaviewheight` is used to gradually return `player.viewheight` to its normal value.
---
---**Note: If not modified by Lua, this value is only calculated by the game for local players, and thus isn't network safe. Use at your own risk.**
---
---@field viewheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The value to re-adjust `player.viewheight` by the next tic when it has moved away from the normal height (e.g., when landing on the ground, the viewheight dips a bit then rises back up - both the lowering and rising is done by `player.deltaviewheight`).
---
---**Note: If not modified by Lua, this value is only calculated by the game for local players, and thus isn't network safe. Use at your own risk.**
---
---@field deltaviewheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The current range of the player's "bobbing" displacement used by the first-person camera, relative to the base viewing height. The value of this variable normally depends on the player's current speed:
---
---```lua
---player.bob = (FixedMul(player.rmomx,player.rmomx)­ + FixedMul(player.rmomy­,player.rmomy­))/4
---```
---
---The actual bobbing displacement calculated for `player.viewz` oscillates between -(`player.bob`/2) and +(`player.bob`/2). The maximum value for `player.bob` itself is 16*`FRACUNIT`.
---
---**Note: If not modified by Lua, this value is only calculated by the game for local players, and thus isn't network safe. Use at your own risk.**
---
---@field bob fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The angle at which to roll the player's view  0 is default, and positive angles roll the view clockwise. This is usually a purely cosmetic effect, but players in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode will have their controls adjusted to the rolled view as well.
---
---@field viewrollangle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current vertical viewing angle; `player.aiming` = 0 would be facing directly forward, `player.aiming` > 0 would face upwards, and `player.aiming` < 0 would face downwards. If `player.pflags` has the flag `PF_FLIPCAM`, the value of `player.aiming` will be flipped whenever the player is given [reverse gravity](https://wiki.srb2.org/wiki/reverse_gravity) or reverts back to normal gravity.
---
---Note: This value is limited to a maximum of `ANGLE_90` -1 in either direction; however, the [Software](https://wiki.srb2.org/wiki/Software) renderer limits what is seen in-game to `ANGLE_90` - `ANG10`.
---
---@field aiming angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The absolute angle at which the player will be drawn. 0 is East, `ANGLE_90` is North, `ANGLE_180` is West, and `ANGLE_270` is South. This is usually purely a visual effect, but has some gameplay implications, such as affecting the direction of [Amy](https://wiki.srb2.org/wiki/Amy)'s heart projectiles.
---
---@field drawangle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of rings the player possesses.
---
---@field rings INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of spheres the player possesses.
---
---@field spheres INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "pity" hit counter for Match/CTF modes; normally when `player.pity` reaches 3 or above, this will spawn a [Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield) around the player and `player.pity` will be reset to 0.
---
---@field pity SINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The weapon the player currently has selected to be fired (use [`WEP_*`](https://wiki.srb2.org/wiki/Constants#Current_weapon) constants)
---
---@field currentweapon INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Contains all the weapons the player is currently able to use, stored as flags (use [`RW_*`](https://wiki.srb2.org/wiki/Constants#Ring_weapon_flags) constants)
---
---@field ringweapons INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of ammo being removed from the player's current weapon in [Ringslinger](https://wiki.srb2.org/wiki/Ringslinger) modes. This is used in combination with `ammoremovaltimer` and `ammoremovalweapon` to display the ammo removal penalty text on the HUD.
---
---@field ammoremoval UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of tics to display the ammo removal penalty text on the HUD.
---
---@field ammoremovaltimer tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The weapon on which to display the ammo removal penalty text on the HUD.
---
---@field ammoremovalweapon INT32
---
---
---Accessibility:
---Table: Read-only
---Table entries: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---A table containing the current values for all powers for the player, where powername is an integer expected to be one of the [`pw_*`](https://wiki.srb2.org/wiki/Powers) constants. The table itself cannot be directly reassigned, but entries in it can be accessed or modified. Use of the values depends on the power selected - see the [Powers](https://wiki.srb2.org/wiki/Powers) article for more information on each power.
---
---Example usages of this variable:
---```lua
---player.powers[pw_super] = 0
---player.powers[pw_invulnerability] = 20*TICRATE
---player.powers[pw_shield] = ($1 & ~SH_NOSTACK)|SH_WHIRLWIND
---```
---
---@field powers UINT16[]
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Contains the internal player flags currently applied to the player, e.g., `PF_JUMPED` for when the player is currently jumping.
---
---@field pflags playerflags_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current animation - in the [source code](https://wiki.srb2.org/wiki/source_code), this variable is frequently used as a shortcut in place of explicitly checking a range of states for each player animation (e.g., `PA_WALK` covers a state `S_PLAY_WALK`). This can also be modified to allow for custom states to act as if they were the animation for certain extra effects to work with them. Do note that `player.panim` is corrected every time the player's state is changed.
---
---@field panim playeranim_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Amount of time the player is set to the palette set by `player.flashpal`. [P_FlashPal](https://wiki.srb2.org/wiki/Lua/Functions#P_FlashPal) can be used to set this along with `player.flashpal`.
---
---@field flashcount UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Sets the palette number displayed on the screen for the player. `player.flashcount` also has to be set for this to have any affect when modified. [P_FlashPal](https://wiki.srb2.org/wiki/Lua/Functions#P_FlashPal) can be used to set this along with `player.flashcount`.
---
---@field flashpal UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current skin number. In [multiplayer](https://wiki.srb2.org/wiki/multiplayer), it is the player's chosen skin selected in the Player Setup menu or through the console variable [skin](https://wiki.srb2.org/wiki/Console/Variables#skin).
---
---It is important to note that `player.skin` is not the actual skin displayed in-game (which would be `player.mo.skin`), but a backup skin variable for the game to reference for drawing the lives display and the player's icon on the multiplayer scoreboard.
---
---Use [R_SetPlayerSkin](https://wiki.srb2.org/wiki/Lua/Functions#R_SetPlayerSkin) to set this to a different value (and also alters `player.mo.skin` too). However, in almost every case, it's better to use `player.mo.skin`.
---
---@field skin INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "normal" skin color ([`SKINCOLOR_*`](https://wiki.srb2.org/wiki/List_of_skin_colors) constants are to be used). In [Single Player](https://wiki.srb2.org/wiki/Single_Player), this is basically a copy of the prefcolor set for the player's character; in [multiplayer](https://wiki.srb2.org/wiki/multiplayer), it is the player's chosen skin color selected in the Player Setup menu or through the console variable [color](https://wiki.srb2.org/wiki/Console/Variables#color).
---
---It is important to note that `player.skincolor` is not the actual skin color displayed in-game (which would be `player.mo.color`), but a backup skin color variable for `player.mo.color` to reference - this is useful for when the player has turned Super or collected a power-up that changes their skin color (e.g., the [Fire Flower](https://wiki.srb2.org/wiki/Fire_Flower), or [Mario mode](https://wiki.srb2.org/wiki/Mario_mode)'s [invincibility](https://wiki.srb2.org/wiki/invincibility)), where `player.skincolor` can then be used to restore the player's "normal" skin color when they are no longer Super or have lost the power-up.
---
---For instance, when the player has collected a Fire Flower powerup, `player.mo.color` is changed to `SKINCOLOR_WHITE`, while `player.skincolor` remains the original skin color the player had before. Afterwards, if the player lost this power-up, `player.mo.color` is re-set to the value of `player.skincolor`, restoring the player's original skin color.
---
---@field skincolor skincolornum_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current available unlockable skins unlocked that can use.
---
---@field availabilities UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current score. In most cases, this should be modified using [P_AddPlayerScore](https://wiki.srb2.org/wiki/Lua/Functions#P_AddPlayerScore) to account for limits, extra life bonuses, Team Match team scores and NiGHTS mode.
---
---@field score UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current score on the level. Gets reset when changing to a different map or when the player dies and respawns.
---
---@field recordscore UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---A counter for the player's dashmode ability. By default this counter is incremented by 1 each tic, until it exceeds `3*TICRATE` at which point the player will enter into their dashmode state. This variable can be used to check if player is using the ability set by their skin flags `SF_DASHMODE` (see [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN)).
---For example: `if player.dashmode > 3*TICRATE` - This would check if the player is in dashmode.
---
---@field dashmode tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The thrust speed currently charged up for the player's spindash. Normally, this has a value of zero; while the Spin key [control](https://wiki.srb2.org/wiki/controls) is being held down, however, it will slowly increase its value. During the latter phase, `player.mindash` and `player.maxdash` are the minimum and maximum values that `player.dashspeed` can possibly have. When the Spin key is released, `player.dashspeed` becomes the final speed the player's spindash is released at; after this occurs, `player.dashspeed` itself is reset to zero.
---
---@field dashspeed fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current normalspeed value for the character skin used. This is a copy of the skin's actual normalspeed value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (multiplied by `FRACUNIT`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field normalspeed fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current runspeed value for the character skin used. This is a copy of the skin's actual runspeed value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (multiplied by `FRACUNIT`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field runspeed fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current thrustfactor value for the character skin used. This is a copy of the skin's actual thrustfactor value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field thrustfactor UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current accelstart value for the character skin used. This is a copy of the skin's actual accelstart value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field accelstart UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current acceleration value for the character skin used. This is a copy of the skin's actual acceleration value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field acceleration UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current ability value for the character skin used ([`CA_*`](https://wiki.srb2.org/wiki/Constants#Character_abilities) constants should be used). This is a copy of the skin's actual ability value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field charability UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current ability2 value for the character skin used ([`CA2_*`](https://wiki.srb2.org/wiki/Constants#Character_abilities) constants should be used). This is a copy of the skin's actual ability2 value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field charability2 UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current flags value for the character skin used ([`SF_*`](https://wiki.srb2.org/wiki/S_SKIN#flags) constants should be used, combined together as flags). This is a copy of the skin's actual flags value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field charflags UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current thokitem value for the character skin used. This is a copy of the skin's actual thokitem value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (unless it was set to -1, which will default to `MT_THOK`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field thokitem mobjtype_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current spinitem value for the character skin used. This is a copy of the skin's actual spinitem value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (unless it was set to -1, which will default to `MT_THOK`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field spinitem mobjtype_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current revitem value for the character skin used. This is a copy of the skin's actual revitem value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (unless it was set to -1, which will default to `MT_THOK`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field revitem mobjtype_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The [Object type](https://wiki.srb2.org/wiki/List_of_Object_types) of this player's [followitem](https://wiki.srb2.org/wiki/S_SKIN#followitem).
---
---@field followitem mobjtype_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---This serves as a pointer to the actual object being used as the player's [followitem](https://wiki.srb2.org/wiki/S_SKIN#followitem).
---
---@field followmobj? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current actionspd value for the character skin used. This is a copy of the skin's actual actionspd value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (multiplied by `FRACUNIT`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field actionspd fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current mindash value for the character skin used. This is a copy of the skin's actual mindash value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (multiplied by `FRACUNIT`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field mindash fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current maxdash value for the character skin used. This is a copy of the skin's actual maxdash value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (multiplied by `FRACUNIT`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field maxdash fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current jumpfactor value for the character skin used. This is a copy of the skin's actual jumpfactor value from the [S_SKIN](https://wiki.srb2.org/wiki/S_SKIN) (multiplied by `FRACUNIT`) and can be modified freely, keeping in mind it will be reset whenever the skin is switched.
---
---@field jumpfactor fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The standing height for this player's skin, at default scale. Use the [`P_GetPlayerHeight`](https://wiki.srb2.org/wiki/Lua/Functions#P_GetPlayerHeight) function to get the player's height at their current scale.
---
---@field height fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The spinning height for this player's skin, at default scale. Use the [`P_GetPlayerSpinHeight`](https://wiki.srb2.org/wiki/Lua/Functions#P_GetPlayerSpinHeight) function to get the player's height at their current scale.
---
---@field spinheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current lives count.
---
---@field lives SINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's current continues count.
---
---@field continues SINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The ring extra life bonus counter, used to check how many extra lives have been given from collecting 100 rings so that it can stop rewarding them after a certain amount (set by `MaxXtraLife` in the [MainCfg](https://wiki.srb2.org/wiki/MainCfg) block).
---
---@field xtralife SINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in NiGHTS special stages to signify whether the player has collected a continue or not from the current map. This is used as a boolean despite being defined as an integer.
---
---@field gotcontinue UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The absolute "real" speed the player is currently moving at in any direction. This is calculated using `player.rmomx` and `player.rmomy` normally - however, when playing as NiGHTS Super Sonic this is handled completely differently. Modifying this will not change the player's actual speed (modify `player.mo.momx` and `player.mo.momy` to do this).
---
---@field speed fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used by some abilities (Float, Slow fall and Air drill) to set what state in using an ability during a jump the player is in:
---*`CA_FLOAT`: 0 = ability not used yet; 1 = jump button held; 2 = ability has already been used.
---*`CA_SLOWFALL`: 0 = ability not used yet; 1 = jump button held.
---*`CA_AIRDRILL`: Increases when spin button is held to speed up falling down during use of the ability.
---
---@field secondjump UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used by `CA_FLY`/`CA_SWIM` abilities (the non-multiability versions) to boost the player up for as long as `player.fly1` is not 0.
---
---@field fly1 UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's combo bonus counter. Goes up by one every time an enemy is hurt, the higher this gets the greater the score bonus for destroying enemies given. Normally resets to 0 when the player is touching the ground (unless invincibility is being used) or climbing a wall.
---
---@field scoreadd UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's glide timer, the amount of time the player has been gliding for. Used to gradually speed up the horizontal gliding thrust over time.
---
---@field glidetime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used by the climbing ability to determine what state of climbing the player is currently in:
---*`player.climbing` == 0: not climbing
---*`player.climbing` == 1: climbing
---*`player.climbing` > 1: the player thrusts in the direction they are facing to press against the wall, and `player.climbing` decreases until it reaches 1
---
---@field climbing UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's death timer, the amount of time the player has been dead for. Used to automatically trigger effects after some time such as respawning, switching to the continue screen, changing back to the map's usual music, or just ending the game.
---
---@field deadtimer INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "exiting" timer, or the amount of time left in tics until the level automatically ends. By default `player.exiting` is set to 0, to mark that the player is not currently "exiting" the level. When it is set to a non-zero value, the following effects occur:
---* The player becomes invincible but unable to move.
---* The camera moves to a larger distance away from the player (except when playing as NiGHTS Super Sonic).
---* If playing as NiGHTS Super Sonic in a [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) level, the player will rise up towards the ceiling and rotate constantly.
---* Lastly, `player.exiting` itself will automatically decrease over time until it reaches the value 2, after which the level will automatically be finished.
---
---In multiplayer, however, the last of these effects differ depending on the value of [playersforexit](https://wiki.srb2.org/wiki/Console/Variables#playersforexit) - if set to `all`, all living players are required to be in an "exiting" state (i.e., they must all have a non-zero `player.exiting` value) before the level can end; if set to `one`, the level will automatically finish for everyone regardless.
---
---For reference, [P_DoPlayerExit](https://wiki.srb2.org/wiki/Lua/Functions#P_DoPlayerExit) by default sets `player.exiting` to a value of `(14*TICRATE)/5 + 1` (99 tics, or about 2.8 seconds). If the gametype is [Race](https://wiki.srb2.org/wiki/Race) or [Competition](https://wiki.srb2.org/wiki/Competition) and all players have finished, a value of `3*TICRATE` (105 tics, or 3 seconds) is given instead.
---
---@field exiting tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's homing timer, for `CA_HOMINGTHOK`. This will decrease until it reaches 0. For as long as `player.homing` is > 0 the player will be able to home in on a set target enemy, but once `player.homing` reaches 0 this will stop.
---
---@field homing UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's skidding timer, for when the player skids to slow down or land from gliding. This will decrease until it reaches 0. For as long as `player.skidtime` is > 0 the skidding sound is played and skid particles will be spawned behind the player, and for regular skidding this will freeze the state to one of the walking states, but once `player.skidtime` reaches 0 this will stop.
---
---@field skidtime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "conveyor" momx, i.e., the x-momentum from conveyor belts, wind, or currents.
---
---@field cmomx fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "conveyor" momy, i.e., the y-momentum from conveyor belts, wind, or currents.
---
---@field cmomy fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "real" momx, i.e., the x-momentum from the player themselves (`player.mo.momx` - `player.cmomx`). Modifying this will not change the player's actual x-momentum (modify `player.mo.momx` to do this).
---
---@field rmomx fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's "real" momy, i.e., the y-momentum from the player themselves (`player.mo.momy` - `player.cmomy`). Modifying this will not change the player's actual y-momentum (modify `player.mo.momy` to do this).
---
---@field rmomy fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---[Competition](https://wiki.srb2.org/wiki/Competition) mode counter for the number of monitors the player has broken.
---
---@field numboxes INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---[Competition](https://wiki.srb2.org/wiki/Competition) mode counter for the number of rings the player has collected in total during the level. (When rings are lost this is not affected)
---
---@field totalring INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The "real" time displayed in the player's HUD. In most [gametypes](https://wiki.srb2.org/wiki/gametypes), there is normally no difference between the values of this and `leveltime` (i.e., `player.realtime` == `leveltime`). However, in [Race](https://wiki.srb2.org/wiki/Race) and [Competition](https://wiki.srb2.org/wiki/Competition) modes, the 4-second pre-timer means this variable has to start at zero 4 seconds after the level has loaded (i.e., `player.realtime` == `leveltime` - 4*`TICRATE` instead).
---
---Note that when the player has finished the level, `player.realtime` will stop increasing, marking the time the player finished the level at. This final value is then used by the game for awards or bonuses, depending on the game mode or gametype:
---*If in [Single Player](https://wiki.srb2.org/wiki/Single_Player) or [Cooperative](https://wiki.srb2.org/wiki/Cooperative), it will then be used by the game to calculate the [time bonus](https://wiki.srb2.org/wiki/Single_Player#Score_tally_and_bonuses), if it is awarded in the level.
---*If in [Race](https://wiki.srb2.org/wiki/Race), it is compared with that of other players' to calculate the winners of the round.
---*If in [Competition](https://wiki.srb2.org/wiki/Competition), it is compared with that of other players' to calculate who gets the point for the Time category.
---*If in [Record Attack](https://wiki.srb2.org/wiki/Record_Attack), it is saved as the time the replay finished at.
---
---@field realtime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in Circuit [Race](https://wiki.srb2.org/wiki/Race) maps to count the current number of laps the player has passed.
---
---@field laps UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [Team Match](https://wiki.srb2.org/wiki/Team_Match)/[CTF](https://wiki.srb2.org/wiki/CTF) to determine which team the player is in:
---*0 = spectator
---*1 = red team
---*2 = blue team
---
---@field ctfteam INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [CTF](https://wiki.srb2.org/wiki/CTF) to determine which flag the player is carrying:
---*0 - no flags
---*1 (or `GF_REDFLAG`) - carrying the red flag
---*2 (or `GF_BLUEFLAG`) - carrying the blue flag
---
---@field gotflag UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's weapon delay timer; the player cannot shoot again until this has fallen back to 0. This is set whenever a player has fired a weapon to cap the player's firing rate.
---
---@field weapondelay INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's flag/emerald toss delay timer; the player cannot toss or collect flags/emeralds again until this has fallen back to 0. This is set whenever a player tosses a flag or emeralds, to prevent the player from accidentally collecting them again as soon as they are thrown.
---
---@field tossdelay INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved x-position for the last checkpoint the player has touched, to be used when the player respawns at the checkpoint after dying.
---
---@field starpostx INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved y-position for the last checkpoint the player has touched, to be used when the player respawns at the checkpoint after dying.
---
---@field starposty INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved z-position for the last checkpoint the player has touched, to be used when the player respawns at the checkpoint after dying.
---
---@field starpostz INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved starpost number for the last checkpoint the player has touched. Used to prevent the player from skipping starposts in [Circuit](https://wiki.srb2.org/wiki/Circuit) mode maps, as they need to touch every single starpost number in order before completing a lap.
---
---@field starpostnum INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved level time for the last checkpoint the player has touched, to be used for resetting the level time to a particular time when the player respawns at a starpost after dying.
---
---@field starposttime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved angle for the last checkpoint the player has touched, to be used when the player respawns at the checkpoint after dying.
---
---@field starpostangle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The saved scale for the last checkpoint the player has touched, to be used when the player respawns at the checkpoint after dying.
---
---@field starpostscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode for getting the current angle between the player and the axis the player is circling around.
---
---@field angle_pos angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode for getting the previous angle between the player and the axis the player is circling around.
---
---@field old_angle_pos angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as a pointer to the first of 2 axis transfer points the player is travelling between.
---
---@field axis1? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as a pointer to the second of 2 axis transfer points the player is travelling between.
---
---@field axis2? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's bumper timer, for when the player has just hit a [NiGHTS Bumper](https://wiki.srb2.org/wiki/NiGHTS_Bumper). This will decrease until it reaches 0. This is used to prevent the player from continuously touching the same bumper, so the player can be sprung away from it.
---
---@field bumpertime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the player's current horizontal flying angle (values will range from 0 to 359). This is also used by `CA_AIRDRILL` to determine the thrust angle, eventually pointing downwards for falling down.
---
---@field flyangle INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as a drilling timer, mainly for handling which drilling sound to use and when. This will decrease towards 0 whenever the player is drilling, but may not necessarily be at 0 when not drilling.
---
---@field drilltimer tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to count the number of links the player has achieved in a chain, so that more points are awarded the longer the link chain is. This resets back to 0 if `player.linktimer` gets to 0 before the next link however.
---
---@field linkcount INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as the link timer; the player must touch another hoop, ring or wing logo before `player.linktimer` reaches 0, otherwise the whole link chain will be broken.
---
---@field linktimer tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the player's current vertical flying angle (values will range from 0 to 359). This also determines which set of states the player uses for flying or drilling.
---
---@field anotherflyangle INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as the timer before the player returns back to normal gameplay from NiGHTS gameplay. This will decrease until it reaches 0.
---
---@field nightstime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode for the drilling meter, the amount of drilling power the player has left. For as long as this value isn't 0 the player will still be able to drill when NiGHTS Super Sonic.
---
---@field drillmeter INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as the drilling delay timer. This will decrease until it reaches 0. This is used to prevent the player from drilling again immediately after the player has stopped drilling.
---
---@field drilldelay tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine whether the player is in "bonus time" mode or not. This will be false normally, but will be true after the player has destroyed the capsule, allowing the player to be rewarded with more points for links before finishing the mare/level.
---
---@field bonustime boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as a pointer to the current mare's [Ideya Capture](https://wiki.srb2.org/wiki/Ideya_Capture).
---
---@field capsule? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as a pointer to the current mare's [Ideya Drone](https://wiki.srb2.org/wiki/Ideya_Drone).
---
---@field drone? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---When the player transforms into [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS), this variable stores the player Object's pre-transformation scale. When the player falls back into 3D mode, if the player Object's scale isn't already equal to this value, the player Object's `destscale` is set to this value.
---
---@field oldscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the current mare the player is in.
---
---@field mare UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the current mare lap the player is in.
---
---@field marelap UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the current mare lap from bonus time the player is in.
---
---@field marebonuslap UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to save the level time the current mare the player is in started.
---
---@field marebegunat tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to save the starting time for `player.nightstime` in the current mare. This will be reset for each next mare the player plays through.
---
---@field startedtime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to save the finishing time for `player.nightstime` for the mare just completed by the player.
---
---@field finishedtime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the tic when the player started the lap in by `leveltime`.
---
---@field lapbegunat tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the tic when the player started the lap in by `player.nightstime`.
---
---@field lapstartedtime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to save the finishing sphere count for the for the mare just completed by the player.
---
---@field finishedspheres INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to save the finishing ring count for the for the mare just completed by the player.
---
---@field finishedrings INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the player's score in the current mare. In most cases, this should be modified using [P_AddPlayerScore](https://wiki.srb2.org/wiki/Lua/Functions#P_AddPlayerScore) to account for limits and continue bonuses.
---
---@field marescore UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the player's score from the previous mare.
---
---@field lastmarescore UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the total mare score from all mares.
---
---@field totalmarescore UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the previous mare's number.
---
---@field lastmare UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the previous mare's lap.
---
---@field lastmarelap UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the previous mare's lap  from bonus time the player was in.
---
---@field lastmarebonuslap UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the total mare lap.
---
---@field totalmarelap UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the total mare lap from bonus time the player is in.
---
---@field totalmarebonuslap UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to store the highest link count obtained by the player.
---
---@field maxlink INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode as a timer before displayed text disappears from the screen. This will decrease until it reaches 0. This is also used to gradually fade away the text on the screen during the last half-second.
---
---@field texttimer UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) mode to determine the text displayed on the screen, for as long as `player.texttimer` has not reached 0:
---*0 = No text
---*1 = Bonus time start text: "GET TO THE GOAL!" "SCORE MULTIPLIER START!"; also displays "TIME: (finishing time)" "BONUS: (time left * 100)"
---*2 = "GET (capsule health) RING(S)"; in special stages "SPHERE(S)" replaces "RING(S)"
---*3 = "GET (capsule health) MORE RING(S)"; in special stages "SPHERE(S)" replaces "RING(S)"
---*4 = Ending bonuses: "RINGS: (rings)" "BONUS: (rings * 50)" "(score)"; in special stages "ORBS" replaces "RINGS"; in NiGHTS attack mode "* NEW RECORD *" may also be displayed if a new record was obtained.
---
---@field textvar UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used to store the number of the sidedef a character with `CA_GLIDEANDCLIMB` is currently climbing on. If not currently climbing this is set to -1.
---
---@field lastsidehit INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Used to store the number of the linedef a character with `CA_GLIDEANDCLIMB` is currently climbing on. If not currently climbing this is set to -1.
---
---@field lastlinehit INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's ring loss timer, used for determining how far spilled rings will be flung depending on how many times within a given period the player has been hit. This will decrease until it reaches 0, but whenever the player's rings are spilled this is increased by 10*`TICRATE` each time.
---
---@field losstime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The counter for the number of times the player has been hurt by something; used for the Guard Bonus at the end of boss levels.
---
---@field timeshit UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---When the player is in a sector affected by a [pushing](https://wiki.srb2.org/wiki/Pusher_tutorial) or [scrolling](https://wiki.srb2.org/wiki/Scroller_tutorial) effect, `player.onconveyor` will be set to 2 or 4 respectively. `player.onconveyor` is then used to determine when and whether to set `player.cmomx` and `player.cmomy` to 0 or not.
---
---@field onconveyor INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Pointer to the player's current alternate view [camera](https://wiki.srb2.org/wiki/camera) Object, this will be the viewpoint of the player for as long as `player.awayviewtics` has not reached 0.
---
---@field awayviewmobj? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's alternate view camera timer. This will decrease until it reaches 0. Otherwise when `player.awayviewtics` is set, `player.awayviewmobj` is the viewpoint of the player. if `player.awayviewmobj` is not already set when `player.awayviewtics` is set, this will auto-set `player.awayviewmobj` to the player itself (`player.mo`).
---
---@field awayviewtics INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The player's alternate view camera vertical aiming angle. Similar to `player.aiming` except this applies to the alternative view point rather than the actual player's camera for when the camera switches back.
---
---@field awayviewaiming angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Returns true if the player is a spectator, otherwise this will return false.
---
---@field spectator boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Determines if the player has a Game Over or failed the Special Stage.
---
---@field outofcoop boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Determines whether the player is a [bot](https://wiki.srb2.org/wiki/bot) or not:
---* 0 (or `BOT_NONE`) - The player is a normal player
---* 1 (or `BOT_2PAI`) - The player is a bot player currently using bot AI with Singleplayer Player 2's behaviour
---* 2 (or `BOT_2PHUMAN`) - The player is a bot player currently controlled by Player 2's controls
---* 3 (or `BOT_MPAI`) - The player is a bot player currently using bot AI and considered as a individual player
---
---@field bot UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Determines bot players what player is actually chasing to. If not set, it will determine it automatically to a nearby player to chase.
---
---@field botleader? player_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The previous buttons pressed from `player_t.cmd.buttons` last tic.
---
---@field lastbuttons UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of time the player has been inactive (did not make any input). It is increased every tic, pressing any of the `BT_*` buttons by the player will reset this value to 0. This value is used as the AFK counter for things like `idletime` and `idleaction` Console Variables.
---
---@field lastinputtime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---Whether or not player's movement was blocked due to a solid wall or object, it automatically clears each player think.
---At the moment, this variable is not used at all by the vanilla game. And can be freely used by modders.
---
---@field blocked boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of time the player has been in-game, and even counts up when the game is paused.
---
---@field jointime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of time the user has been disconnected, or zero if the user is currently connected.
---
---@field quittime tic_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount to add to the FOV. This is automatically corrected every tic so you will need to set this continually for any real effect.
---
---**WARNING: If not modified by Lua, this value is only calculated by the game locally if the `[fovchange](https://wiki.srb2.org/wiki/Console/Variables#fovchange)` is turned on (otherwise, it is set to zero), and thus isn't network safe. Use at your own risk.**
---
---@field fovadd fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#player_t)**
---
---The amount of ping the player has in miliseconds while connected to a netgame.
---
---@field ping UINT32
local player_t = {}

---@class ticcmd_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ticcmd_t)**
---
---Value related to forwards/backwards buttons; positive values move the player forward, negative values move the player backwards. Ranges from -50 to 50.
---
---@field forwardmove SINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ticcmd_t)**
---
---Value related to strafe left/right buttons; positive values move the player right, negative values move the player left. Ranges from -50 to 50.
---
---@field sidemove SINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ticcmd_t)**
---
---Value related to turn left/right buttons; to use as `angle_t` this needs to be shifted up by 16 bits (`cmd.angleturn<<16` or `cmd.angleturn*65536`).
---
---@field angleturn INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ticcmd_t)**
---
---Value related to look up/down buttons; to use as `angle_t` this needs to be shifted up by 16 bits (`cmd.aiming<<16` or `cmd.aiming*65536`).
---
---@field aiming INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ticcmd_t)**
---
---Contains flags representing buttons currently pressed ([`BT_*`](https://wiki.srb2.org/wiki/Constants#Button_flags) constants should be used).
---
---@field buttons UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ticcmd_t)**
---
---The amount of tics it took to receive the player's ticcmd up to 12 tics.
---
---@field latency UINT8
local ticcmd_t = {}

---@class skin_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns true if the skin is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the internal name string for the skin set by the `S_SKIN` (e.g., `skins["sonic"].name` would return "sonic").
---
---@field name string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the flags given to the skin by the `S_SKIN`.
---
---@field flags skinflags_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the displayed name string for the skin set by the `S_SKIN` (e.g., `skins["sonic"].realname` would return "Sonic").
---
---@field realname string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the [HUD](https://wiki.srb2.org/wiki/HUD) name string for the skin set by the `S_SKIN` (e.g., `skins["knuckles"].hudname` would return "K.T.E").
---
---@field hudname string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the primary ability number for the skin set by the `S_SKIN`. (see [`CA_*`](https://wiki.srb2.org/wiki/Constants#Character_abilities) constants)
---
---@field ability UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the secondary ability number for the skin set by the `S_SKIN`. (see [`CA2_*`](https://wiki.srb2.org/wiki/Constants#Character_abilities) constants)
---
---@field ability2 UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the thok item Object type for the skin set by the `S_SKIN`. (note that this can be -1, which is expected to be changed to `MT_THOK` by default; otherwise, see [`MT_*`](https://wiki.srb2.org/wiki/List_of_Object_types) constants)
---
---@field thokitem INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the spin item Object type for the skin set by the `S_SKIN`. (note that this can be -1, which is expected to be changed to `MT_THOK` by default; otherwise, see [`MT_*`](https://wiki.srb2.org/wiki/List_of_Object_types) constants)
---
---@field spinitem INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the rev item Object type for the skin set by the `S_SKIN`. (note that this can be -1, which is expected to be changed to `MT_THOK` by default; otherwise, see [`MT_*`](https://wiki.srb2.org/wiki/List_of_Object_types) constants)
---
---@field revitem INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the follow item Object type for the skin set by the `S_SKIN` (see [`MT_*`](https://wiki.srb2.org/wiki/List_of_Object_types) constants).
---
---@field followitem INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the ability speed for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field actionspd fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the minimum spindashing speed for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field mindash fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the maximum spindashing speed for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field maxdash fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the maximum movement speed for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field normalspeed fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the speed to switch to running animations for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field runspeed fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the thrust factor value for the skin set by the `S_SKIN`.
---
---@field thrustfactor UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the starting acceleration value for the skin set by the `S_SKIN`.
---
---@field accelstart UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the acceleration value for the skin set by the `S_SKIN`.
---
---@field acceleration UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the jump thrust factor for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field jumpfactor fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the radius value of a hitbox for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field radius fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the height value of a hitbox for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field height fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the spinheight of a hitbox for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field spinheight fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the scale of a shield's sprite size for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field shieldscale fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the scale of the camera's position for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field camerascale fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the starting palette color # for the changeable 16-color range for the skin set by the `S_SKIN` (startcolor).
---
---@field starttranscolor UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the default skincolor for use in Single player for the skin set by the `S_SKIN`. (see [`SKINCOLOR_*`](https://wiki.srb2.org/wiki/List_of_skin_colors) constants).
---
---@field prefcolor UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the skincolor for the signpost background for the skin set by the `S_SKIN`. (see [`SKINCOLOR_*`](https://wiki.srb2.org/wiki/List_of_skin_colors) constants).
---
---@field prefoppositecolor UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the default skincolor for a character's Super form for the skin set by the `S_SKIN`. (see [`SKINCOLOR_*`](https://wiki.srb2.org/wiki/List_of_skin_colors) constants).
---
---@field supercolor UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the relative scale to display sprites at for the skin set by the `S_SKIN` (this will be the `S_SKIN`'s value multiplied by `FRACUNIT`).
---
---@field highresscale fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the value for the continue screen animation speed for the skin set by the `S_SKIN`.
---
---@field contspeed UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the value for the inital angle on the continue screen for the skin set by the `S_SKIN`.
---
---@field contangle UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the value for the unlockable entry required to access and play a character for the skin set by the `S_SKIN`.
---
---@field availability UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---A table containing all of the corresponding sound numbers for all skinsound slots for the skin, where SKSNAME is an integer that is expected to be one of the [`SKS*`](https://wiki.srb2.org/wiki/Constants#Skin_sounds) constants. For example, `skins["sonic"].soundsid[SKSTHOK]` returns `sfx_thok`, the default sound for the `SKSTHOK` skinsound slot; for custom characters who may have a custom sound set for any of the skin sounds, this returns the sound number for the custom sound instead.
---
---@field soundsid soundnum_t[]
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---A table containing all of the corresponding sprites for the skin, where it's index it's one of the `SPR2_*` constants. For example, `skins["sonic"].sprites[SPR2_STND]` returns a `skin_t.sprites[]` userdata.
---
---**WARNING: Using `SPR2_STND` gives a warning instead due to a [https://git.do.srb2.org/STJr/SRB2/-/issues/558 bug] currently present.**
---
---@field sprites skin_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the displayed super form name string for the skin set by `S_SKIN` (e.g `skins["sonic"].supername` would return "Super Sonic")
---
---@field supername string
local skin_t = {}

---@class skin_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skin_t)**
---
---Returns the number of frames this sprite has.
---
---@field numframes number
local skin_t = {}

---@class mobjinfo_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`MapThingNum`: The Thing type number, should be a number between 1 and 4095. If set to -1, the Object type cannot be placed through [Thing](https://wiki.srb2.org/wiki/Thing)s on the map.
---
---@field doomednum INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`SpawnState`: The state that this type of Object calls when it is spawned. Its duration may not be 0. If the `SpawnState` has an action, it will not be performed when the Object is first spawned unless the `MF_RUNSPAWNFUNC` [flag](https://wiki.srb2.org/wiki/Object_flags) is set on the Object. If the `SpawnState` is called again after that, however, the action will be performed even without the flag.
---
---@field spawnstate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`SpawnHealth`: The initial value for the `health` variable for [mobj_t](https://wiki.srb2.org/wiki/Userdata_structures#mobj_t).
---
---@field spawnhealth INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`SeeState`: Called once an Object spots a player, which can be done with the action [A_Look](https://wiki.srb2.org/wiki/A_Look) and certain actions that are made specifically for some of SRB2's specific enemies.
---
---@field seestate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`SeeSound`: Usually played when the `SeeState` is executed. [A_PlaySeeSound](https://wiki.srb2.org/wiki/A_PlaySeeSound) is made specifically to call this sound.
---
---@field seesound soundnum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`ReactionTime`: The initial value for the `reactiontime` variable for [mobj_t](https://wiki.srb2.org/wiki/Userdata_structures#mobj).
---
---@field reactiontime INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`AttackSound`: Usually played by certain attack actions for enemies. The action [A_PlayAttackSound](https://wiki.srb2.org/wiki/A_PlayAttackSound) is made specifically to call this sound.
---
---@field attacksound soundnum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`PainState`: The state that Objects with the flag `MF_SHOOTABLE` go to when they are damaged but not yet dead.
---
---@field painstate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`PainChance`: Used for miscellaneous purposes and will be unused for most Objects.
---
---@field painchance INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`PainSound`: Usually played when the `PainState` is executed. The action [A_Pain](https://wiki.srb2.org/wiki/A_Pain) is made specifically to call this sound.
---
---@field painsound soundnum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`MeleeState`: The first of two attack states. Actions call this or `MissileState` when the Object should attack.
---
---@field meleestate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`MissileState`: The second of two attack states. Actions call this or `MeleeState` when the Object should attack.
---
---@field missilestate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`DeathState`: The state that Objects go to when they are destroyed, i.e., have no health points left. For regular enemies, this sequence of states should eventually point to `S_NULL`, which is used for Objects that have disappeared.
---
---@field deathstate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`XDeathState`: Usually used as the fleeing state for bosses. It is called by the action [A_BossDeath](https://wiki.srb2.org/wiki/A_BossDeath).
---
---@field xdeathstate statenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`DeathSound`: Usually played when the `DeathState` is executed. The action [A_Scream](https://wiki.srb2.org/wiki/A_Scream) is made specifically to call this sound.
---
---@field deathsound soundnum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`Speed`: Usage depends on situation; can be just a regular number in some cases, other cases this needs to be a multiple of `FRACUNIT`
---
---@field speed fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`Radius`: The initial value for the `radius` variable for [mobj_t](https://wiki.srb2.org/wiki/Userdata_structures#mobj_t). This may also be referenced when an Object's scale is modified.
---
---@field radius fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`Height`: The initial value for the `height` variable for [mobj_t](https://wiki.srb2.org/wiki/Userdata_structures#mobj_t). This may also be referenced when an Object's scale is modified.
---
---@field height fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`DispOffset`: Used to resolve ordering conflicts when drawing sprites that are in the same position in Software rendering. Sprites with a higher display offset are always drawn in front of sprites with a lower display offset. For instance, the shield orbs all have this set to 1, which means they are always displayed in front of the player when both are in the exact same position. Any integer value can be used here, including negative values; SRB2's Objects only use values up to 2, so anything above that will make the Object take precedence over all of SRB2's default Objects. For most Objects, this can be set to 0.
---
---@field dispoffset INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`Mass`: Used to determine the [damage type](https://wiki.srb2.org/wiki/Constants#Damage.2FDeath_types_.28DMG_.2A.29) of Objects with the primary flags `MF_PAIN` or `MF_MISSILE`. Otherwise, it's used for miscellaneous purposes and will be unused for most Objects. It has no relation to the heaviness of an Object.
---
---@field mass INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`Damage`: Used for miscellaneous purposes and will be unused for most Objects.
---
---@field damage INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`ActiveSound`: Used for miscellaneous sounds that are part of an Object's animation. [A_PlayActiveSound](https://wiki.srb2.org/wiki/A_PlayActiveSound) is made specifically to call this sound.
---
---@field activesound soundnum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`Flags`: The initial value given to the `flags` variable for [mobj_t](https://wiki.srb2.org/wiki/Userdata_structures#mobj_t). (Use [`MF_*`](https://wiki.srb2.org/wiki/Object_flags#Primary_flags) constants)
---
---@field flags INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mobjinfo_t)**
---
---`RaiseState`: Used for miscellaneous purposes. For example, [A_ShootBullet](https://wiki.srb2.org/wiki/A_ShootBullet), [A_DropMine](https://wiki.srb2.org/wiki/A_DropMine) and [A_JetgShoot](https://wiki.srb2.org/wiki/A_JetgShoot) all spawn Objects with this state.
---
---@field raisestate statenum_t
local mobjinfo_t = {}

---@class state_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`SpriteName`: Sprite prefix number used for the state.
---
---@field sprite spritenum_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`SpriteFrame`: Frame number of the sprite used for the state; also contains full brightness/translucency information. (See [`tr_*`](https://wiki.srb2.org/wiki/Constants#Translucency_levels) and [`FF_*`](https://wiki.srb2.org/wiki/Constants#Frame_settings) constants)
---
---@field frame UINT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`Duration`: Duration of the state, in tics. -1 is infinite, 0 is instantaneous.
---
---@field tics INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`Action`: The [action](https://wiki.srb2.org/wiki/Actions) used by the state, run when an Object switches to the state. Can be set to a pre-existing action, or a custom one created using Lua, or be just nil if none is set. The return value is the function the action calls.
---
---@field action function
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`Var1`: The Var1 value built-in to be used by `state.action`, when an Object first switches to the state.
---
---@field var1 INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`Var2`: The Var2 value built-in to be used by `state.action`, when an Object first switches to the state
---
---@field var2 INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#state_t)**
---
---`Next`: The next state number to go to after the state has finished being used. A state.nextstate of `S_NULL` will make the Object using the current state be removed from the map when about to switch to the new state.
---
---@field nextstate statenum_t
local state_t = {}

---@class sfxinfo_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sfxinfo_t)**
---
---The name of the sound following the `sfx_` prefix, e.g., `S_sfx[sfx_thok].name` would return `"thok"`.
---
---@field name string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sfxinfo_t)**
---
---`Singular`: Determines whether only one of the sound can be played at a time (true) or not (false).
---
---@field singular boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sfxinfo_t)**
---
---`Priority`: The priority of the sound, i.e., this determines how important it is to play this sound; if a sound with a higher priority is playing this sound will be drowned out, otherwise if vice versa this sound will drown out the other instead. Usually a value between 0 and 255.
---
---@field priority INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sfxinfo_t)**
---
---`Flags`: (Known as "pitch" in the source code) Sets/returns the sound flags set for the sound. (use [`SF_*`](https://wiki.srb2.org/wiki/Sound#Attributes) constants, not to be confused with skin flags)
---
---@field flags INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sfxinfo_t)**
---
---Skin sound id number; for sounds that are not changeable by the skin this will be -1. (See [`SKS*`](https://wiki.srb2.org/wiki/Constants#Skin_sounds) constants)
---
---@field skinsound INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sfxinfo_t)**
---
---`Caption`: The caption to display onscreen when this sound is played with Closed Captioning enabled.
---
---@field caption string
local sfxinfo_t = {}

---@class hudinfo_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#hudinfo_t)**
---
---X coordinate of the HUD item (from the left of the screen). Should be a value between 0 and 320.
---
---@field x INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#hudinfo_t)**
---
---Y coordinate of the HUD item (from the top of the screen). Should be a value between 0 and 200.
---
---@field y INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#hudinfo_t)**
---
---[Video flags](https://wiki.srb2.org/wiki/Video_flags) of the HUD item (use [`V_*`](https://wiki.srb2.org/wiki/Video_flags) constants). Note that some flags are always applied for certain HUD items in addition to those that you set here.
---
---@field f INT32
local hudinfo_t = {}

---@class mapheader_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[LevelName](https://wiki.srb2.org/wiki/Level_header#LevelName)
---
---@field lvlttl string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SubTitle](https://wiki.srb2.org/wiki/Level_header#SubTitle)
---
---@field subttl string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Act](https://wiki.srb2.org/wiki/Level_header#Act)
---
---@field actnum UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[TypeOfLevel](https://wiki.srb2.org/wiki/Level_header#TypeOfLevel), as a set of flags stored in an integer. See [`TOL_*`](https://wiki.srb2.org/wiki/Constants#TypeOfLevel_flags) constants.
---
---@field typeoflevel UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[NextLevel](https://wiki.srb2.org/wiki/Level_header#NextLevel), as an integer.
---
---@field nextlevel INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MarathonNext](https://wiki.srb2.org/wiki/Level_header#MarathonNext), as an integer.
---
---@field marathonnext INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Keywords](https://wiki.srb2.org/wiki/Level_header#Keywords)
---
---@field keywords string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Music](https://wiki.srb2.org/wiki/Level_header#Music)
---
---@field musname string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicTrack](https://wiki.srb2.org/wiki/Level_header#MusicTrack)
---
---@field mustrack UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicPos](https://wiki.srb2.org/wiki/Level_header#MusicPos)
---
---@field muspos UINT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicInterFadeOut](https://wiki.srb2.org/wiki/Level_header#MusicInterFadeOut)
---
---@field musinterfadeout UINT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicInter](https://wiki.srb2.org/wiki/Level_header#MusicInter)
---
---@field musintername string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicPostBoss](https://wiki.srb2.org/wiki/Level_header#MusicPostBoss)
---
---@field muspostbossname string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicPostBossTrack](https://wiki.srb2.org/wiki/Level_header#MusicPostBossTrack)
---
---@field muspostbosstrack UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicPostBossPos](https://wiki.srb2.org/wiki/Level_header#MusicPostBossPos)
---
---@field muspostbosspos UINT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MusicPostBossFadeIn](https://wiki.srb2.org/wiki/Level_header#MusicPostBossFadeIn)
---
---@field muspostbossfadein UINT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[ForceResetMusic](https://wiki.srb2.org/wiki/Level_header#ForceResetMusic):
---* -1 = uses user's settings
---* 0 = Music is always restarted.
---* 1 = Music is never restarted.
---
---@field musforcereset INT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[ForceCharacter](https://wiki.srb2.org/wiki/Level_header#ForceCharacter)
---
---@field forcecharacter string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Weather](https://wiki.srb2.org/wiki/Level_header#Weather). See [`PRECIP_*`](https://wiki.srb2.org/wiki/Constants#Weather_types) constants.
---
---@field weather UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SkyNum](https://wiki.srb2.org/wiki/Level_header#SkyNum)
---
---@field skynum INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SkyboxScaleX](https://wiki.srb2.org/wiki/Level_header#SkyboxScaleX)
---
---@field skybox_scalex INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SkyboxScaleY](https://wiki.srb2.org/wiki/Level_header#SkyboxScaleY)
---
---@field skybox_scaley INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SkyboxScaleZ](https://wiki.srb2.org/wiki/Level_header#SkyboxScaleZ)
---
---@field skybox_scalez INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[TitleCardActDiamond](https://wiki.srb2.org/wiki/Level_header#TitleCardActDiamond)
---
---@field ltactdiamond string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MaxBonusLives](https://wiki.srb2.org/wiki/Level_header#MaxBonusLives)
---
---@field maxbonuslives INT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[TitleCardZigZag](https://wiki.srb2.org/wiki/Level_header#TitleCardZigZag)
---
---@field ltzzpatch string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[TitleCardZigZagText](https://wiki.srb2.org/wiki/Level_header#TitleCardZigZagText)
---
---@field ltzztext string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[InterScreen](https://wiki.srb2.org/wiki/Level_header#InterScreen)
---
---@field interscreen string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[RunSOC](https://wiki.srb2.org/wiki/Level_header#RunSOC)
---
---@field runsoc string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[ScriptName](https://wiki.srb2.org/wiki/Level_header#ScriptName)
---
---@field scriptname string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[PreCutsceneNum](https://wiki.srb2.org/wiki/Level_header#PreCutsceneNum)
---
---@field precutscenenum UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[CutsceneNum](https://wiki.srb2.org/wiki/Level_header#CutsceneNum)
---
---@field cutscenenum UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Countdown](https://wiki.srb2.org/wiki/Level_header#Countdown)
---
---@field countdown INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Palette](https://wiki.srb2.org/wiki/Level_header#Palette)
---
---@field palette UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[NumLaps](https://wiki.srb2.org/wiki/Level_header#NumLaps)
---
---@field numlaps UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Unlockable](https://wiki.srb2.org/wiki/Level_header#Unlockable) minus 1:
---* -1 = no unlockable required
---* 0 = unlockable #1 required
---* etc.
---
---@field unlockrequired SINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[LevelSelect](https://wiki.srb2.org/wiki/Level_header#LevelSelect)
---
---@field levelselect UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[BonusType](https://wiki.srb2.org/wiki/Level_header#BonusType):
---* -1 = `None`
---* 0 = `Normal`
---* 1 = `Boss`
---* 2 = `ERZ3`
---
---@field bonustype SINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[LevelFlags](https://wiki.srb2.org/wiki/Level_header#LevelFlags). See [`LF_*`](https://wiki.srb2.org/wiki/Constants#Level_flags) constants.
---
---@field levelflags UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[MenuFlags](https://wiki.srb2.org/wiki/Level_header#MenuFlags). See [`LF2_*`](https://wiki.srb2.org/wiki/Constants#Menu_flags) constants.
---
---@field menuflags UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SelectHeading](https://wiki.srb2.org/wiki/Level_header#SelectHeading)
---
---@field selectheading string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[StartRings](https://wiki.srb2.org/wiki/Level_header#StartRings)
---
---@field startrings UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SpecialStageTime](https://wiki.srb2.org/wiki/Level_header#SpecialStageTime)
---
---@field sstimer INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[SpecialStageSpheres](https://wiki.srb2.org/wiki/Level_header#SpecialStageSpheres)
---
---@field ssspheres UINT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapheader_t)**
---
---[Gravity](https://wiki.srb2.org/wiki/Level_header#Gravity)
---
---@field gravity fixed_t
local mapheader_t = {}

---@class skincolor_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skincolor_t)**
---
---The name of the skincolor. Used in the console and Player Setup menu. Names containing spaces must be put in quotes in the console.
---
---@field name string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skincolor_t)**
---
---An array of 16 palette indices, which in whole represent the skincolor's color ramp.
---
---@field ramp UINT8[]
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skincolor_t)**
---
---The opposite skincolor. Used on the Goal Sign.
---
---@field invcolor UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skincolor_t)**
---
---The shade of the opposite skincolor, from 0 (lightest) to 15 (darkest). Used on the Goal Sign.
---
---@field invshade UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skincolor_t)**
---
---Color to use when coloring a player name in the chat. Accepts `V_*MAP` constants.
---
---@field chatcolor UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#skincolor_t)**
---
---Skincolor accessibility. Determines whether the color can be accessed from the Player Setup menu or from the console.
---
---**WARNING: This attribute is read-only for default skincolors.**
---
---@field accessible boolean
local skincolor_t = {}

---@class spriteframepivot_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#spriteframepivot_t)**
---
---The X coordinate of the pivot from where to rotate this frame.
---
---@field x INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#spriteframepivot_t)**
---
---The Y coordinate of the pivot from where to rotate this frame.
---
---@field y INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#spriteframepivot_t)**
---
---The axis to rotate this frame in, for which `ROTAXIS_X` represents the roll axis, `ROTAXIS_Y` the pitch axis, and `ROTAXIS_Z` the yaw. This is set to `ROTAXIS_X` in all frames by default. 
---
---**WARNING: This field has been deprecated since the introduction of 2.2.12.**
---
---@field rotaxis rotaxis_t
local spriteframepivot_t = {}

---@class mapthing_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---Returns true if the Thing is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The X coordinate of the Thing in the map, in fracunits.
---
---@field x INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The Y coordinate of the Thing in the map, in fracunits.
---
---@field y INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The angle the map Thing is facing horizontally, in degrees. For most purposes, this is a value from 0 to 359 - 0 is East, 90 is North, 180 is West and 270 is South. However, some Object types use this variable for other purposes; in these cases, it can be any value from -32768 to 32767.
---
---@field angle INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The angle the map Thing is facing vertically, in degrees. For most purposes, this is a value from 0 to 359 - 0 is Center, 90 is Up and -90 is Down. However, some Object types use this variable for other purposes; in these cases, it can be any value from -32768 to 32767.
---
---@field pitch INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The angle the map Thing is rotating into it's own axis, in degress. For most purposes, this is a value from 0 to 359. However, some Object types use this variable for other purposes; in these cases, it can be any value from -32768 to 32767.
---
---@field roll INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The scale of the map Thing, in fracunits.
---
---@field scale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The map Thing number of the Object (or otherwise) to spawn with the map Thing. Does not include the multiples of 4096 added on by the map (see `mapthing.extrainfo`).
---
---@field type UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The flags for the map Thing (see [`MTF_*`](https://wiki.srb2.org/wiki/Thing#Flags) constants). Also contains Z position information, shifted up by 4 bits (`options = flags + z<<4`).
---
---@field options UINT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The Z position of the map Thing above the sector floor, in fracunits. Usually pre-calculated by the game as `mapthing.options>>4`.
---
---@field z INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---An extra [parameter](https://wiki.srb2.org/wiki/Thing#Parameter) calculated as the number of multiples of 4096 added onto the map Thing number. Used by a few Object types for extra effects.
---
---@field extrainfo UINT8
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---Points to the Object spawned by the map Thing. This is not set for Thing types that have no corresponding Object type, such as special placement patterns. In these cases, the value of `mobj` is `nil`.
---
---@field mobj? mobj_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The tag of this map Thing, used for being referenced.
---
---@field tag INT16
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The list of tags on this map Thing, used for being referenced.
---
---@field taglist taglist_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---A table of arguments as integers, indexed from 0 to 9.
---
---@field args mapthing_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---A table of arguments as strings, indexed from 0 to 1.
---
---@field stringargs mapthing_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The sprite's X scale of this map Thing, in fracunits.
---
---@field spritexscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mapthing_t)**
---
---The sprite's Y scale of this map Thing, in fracunits.
---
---@field spriteyscale fixed_t
local mapthing_t = {}

---@class sector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---Returns true if the sector is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The absolute height of the sector's floor in the map.
---
---@field floorheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The absolute height of the sector's ceiling in the map.
---
---@field ceilingheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The name of the sector's floor [flat](https://wiki.srb2.org/wiki/flat).
---
---@field floorpic string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The name of the sector's ceiling flat.
---
---@field ceilingpic string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The brightness level of the sector. This should be a value between 0 and 255.
---
---@field lightlevel INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The total of the sector's [sector special](https://wiki.srb2.org/wiki/Sector_types) values in all 4 sections given to the sector (`section1 + section2<<4 + section3<<8 + section4<<12`). Use `GetSecSpecial(sector.special, n)` to get the sector special set in a particular section n.
---
---@field special INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The [tag](https://wiki.srb2.org/wiki/tagging) of the sector. Due to the way this is set up, all tags from 32768 to 65535 (seen when using map editors) are in fact -32768 to -1, although either can be used for assigning a new tag value (it will be automatically converted to the latter version anyway). Changing the value of `sector.tag` will have the same effect as changing it with [Linedef type 409](https://wiki.srb2.org/wiki/Linedef_type_409) or [Linedef type 410](https://wiki.srb2.org/wiki/Linedef_type_410).
---
---@field tag INT16
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The list of tags of this sector.
---
---@field taglist taglist_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---To be used in an iterator function, e.g., `for mobj in sector.thinglist()`. This iterates through all the Objects within the sector, returning a [mobj_t](https://wiki.srb2.org/wiki/Userdata_structures#mobj_t) variable for use within the loop's contents.
---
---@field thinglist function
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The control sector for a sector's [Fake Floor/Ceiling Planes](https://wiki.srb2.org/wiki/Linedef_type_63) linedef special, if one exists.
---
---@field heightsec? sector_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The control sector for a sector's [camera](https://wiki.srb2.org/wiki/camera) clipping heights, if one exists - this is set by combining the [Special Sector Properties](https://wiki.srb2.org/wiki/Linedef_type_8) linedef special with the [Intangible to the Camera](https://wiki.srb2.org/wiki/Intangible_to_the_Camera) sector special in the linedef's front sector.
---
---@field camsec? sector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---A table storing all the sector's linedefs, indexed from 0 to `#sector.lines - 1`.
---
---@field lines line_t[]
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---To be used in an iterator function, e.g., `for rover in sector.ffloors()`. This iterates through all the FOFs within the sector, returning a [ffloor_t](https://wiki.srb2.org/wiki/Userdata_structures#ffloor_t) variable for use within the loop's contents.
---
---@field ffloors fun(): fun(): ffloor_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's floor slope. This is nil if no floor slope is set.
---
---@field f_slope? pslope_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's ceiling slope. This is nil if no ceiling slope is set.
---
---@field c_slope? pslope_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's X floor texture offset (negative is to the left, positive is to the right).
---
---@field floorxoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's Y floor texture offset (negative is downwards, positive is upwards).
---
---@field flooryoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the sector's floor texture. Is `FRACUNIT` by default.
---
---@field floorxscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the sector's floor texture. Is `FRACUNIT` by default.
---
---@field flooryscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's floor texture angle.
---
---@field floorangle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's X ceiling texture offset (negative is to the left, positive is to the right).
---
---@field ceilingxoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's Y ceiling texture offset (negative is downwards, positive is upwards).
---
---@field ceilingyoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the sector's ceiling texture. Is `FRACUNIT` by default.
---
---@field ceilingxscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the sector's ceiling texture. Is `FRACUNIT` by default.
---
---@field ceilingyscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's ceiling texture angle.
---
---@field ceilingangle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's floor light is copied from another sector's floor light with [Linedef type 402](https://wiki.srb2.org/wiki/Linedef_type_402).
---
---@field floorlightsec INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's ceiling light is copied from another sector's ceiling light with [Linedef type 402](https://wiki.srb2.org/wiki/Linedef_type_402).
---
---@field ceilinglightsec INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's floor light level relative to the sector's brightness level.
---
---@field floorlightlevel INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---If the sector's floor light level should be absolute from the sector's brightness level.
---
---@field floorlightabsolute boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's ceiling light level relative to the sector's brightness level.
---
---@field ceilinglightlevel INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---If the sector's ceiling light level should be absolute from the sector's brightness level.
---
---@field ceilinglightabsolute boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's flags.
---
---@field flags sectorflags_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's special flags.
---
---@field specialflags sectorspecialflags_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's damage type.
---
---@field damagetype sectordamage_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector calls the specified trigger tag upon triggering.
---
---@field triggertag INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---Determines what can trigger this sector's trigger.
---
---* 1 = Any player in the area.
---* 2 = All the players in the area.
---* 3 = Any mobj in the area.
---
---@field triggerer UINT8
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's own friction, in fracunits.
---
---@field friction fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The sector's own gravity, in fracunits.
---
---@field gravity fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#sector_t)**
---
---The colormap of the sector, if it has one.
---
---@field colormap? extracolormap_t
local sector_t = {}

---@class subsector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#subsector_t)**
---
---Returns true if the subsector is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#subsector_t)**
---
---Points to the sector this subsector is linked to.
---
---@field sector sector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#subsector_t)**
---
---A variable used internally to get the number of segs within this subsector.
---
---@field numlines INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#subsector_t)**
---
---A variable used internally to get the number of the first seg within this subsector.
---
---@field firstline UINT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#subsector_t)**
---
---To be used in an iterator function, e.g., `for polyobj in subsector.polyList()`. This iterates through all the PolyObjects witin the subsector, returning a `polyobject_t` variable for use within the loop's contents.
---
---@field polyList function
local subsector_t = {}

---@class line_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Returns true if the linedef is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the first of the two vertices the linedef is connected to.
---
---@field v1 vertex_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the second of the two vertices the linedef is connected to.
---
---@field v2 vertex_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Pre-calculated distance between the linedef's two vertex X coordinates (`line.v2.x-line.v1.x`).
---
---@field dx fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Pre-calculated distance between the linedef's two vertex Y coordinates (`line.v2.y-line.v1.y`).
---
---@field dy fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Precalculated angle between `mobj.dx` and `mobj.dy`.
---
---@field angle angle_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Contains the linedef flags for the linedef (see [`ML_*`](https://wiki.srb2.org/wiki/Linedef#Flags) constants).
---
---@field flags INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---The linedef's [linedef type](https://wiki.srb2.org/wiki/Linedef_types) number.
---
---@field special INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---The tag number set for the linedef. Due to the way this is set up, all tags from 32768 to 65535 (seen when using map editors) are in fact -32768 to -1, although either can be used for assigning a new tag value (it will be automatically converted to the latter version anyway).
---
---@field tag INT16
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---The list of tags this linedef has.
---
---@field taglist taglist_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---A table of arguments as integers, indexed from 0 to 9.
---
---@field args mapthing_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---A table of arguments as strings, indexed from 0 to 1.
---
---@field stringargs mapthing_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---This is a small table containing the sidedef numbers for both the front sidedef (`line.sidenum[0]`) and the back sidedef if one exists (`line.sidenum[1]`). To get the sidedef userdata for these, use `sides[line.sidenum[i]]`, i being either 0 (front) or 1 (back). To check if either sidedef is valid, use `line.sidenum[i].valid`, which will return either true or false.
---
---@field sidenum UINT16[]
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the linedef's front sidedef (same as `sides[line.sidenum[0]]`).
---
---@field frontside side_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the linedef's back sidedef, if it exists (same as `sides[line.sidenum[1]]`); this will return nil if not.
---
---@field backside side_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---The alpha of this linedef.
---
---@field alpha fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---The amount of delay in tics this linedef trigger will hold to execute.
---
---@field executordelay INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---A string representing the linedef's orientation in the map:
---*`"horizontal"`: directly horizontal (`line.dy` is 0)
---*`"vertical"`: directly vertical (`line.dx` is 0)
---*`"positive"`: gradient is positive (`line.dy/line.dx` > 0)
---*`"negative"`: gradient is negative (`line.dy/line.dx` < 0)
---
---@field slopetype string
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the linedef's front sector.
---
---@field frontsector sector_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the linedef's back sector, if it exists.
---
---@field backsector? sector_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Points to the linedef's poly object, if it exists.
---
---@field polyobj? polyobj_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---A variable used internally by functions that search for linedefs by tag.
---
---@field firsttag INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---A variable used internally by functions that search for linedefs by tag.
---
---@field nexttag INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---Concatenation of all front and back texture name strings, for linedef types that require text in any of them.
---
---@field text string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#line_t)**
---
---The number of calls left before triggering, used for "X calls" linedefs specials.
---
---@field callcount INT16
local line_t = {}

---@class side_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---Returns true if the sidedef is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's X texture offset (negative is to the left, positive is to the right).
---
---@field textureoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's Y texture offset (negative is downwards, positive is upwards).
---
---@field rowoffset fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's upper texture number. This is 0 if no valid texture is set. See [List of textures by number](https://wiki.srb2.org/wiki/List_of_textures_by_number) for the numbers of SRB2's textures.
---
---@field toptexture INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's lower texture number. This is 0 if no valid texture is set. See [List of textures by number](https://wiki.srb2.org/wiki/List_of_textures_by_number) for the numbers of SRB2's textures.
---
---@field bottomtexture INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's middle texture number. This is 0 if no valid texture is set. See [List of textures by number](https://wiki.srb2.org/wiki/List_of_textures_by_number) for the numbers of SRB2's textures.
---
---@field midtexture INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---Points to the line this sidedef belongs to.
---
---@field line line_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---Points to the sector the sidedef is facing.
---
---@field sector sector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The [linedef type](https://wiki.srb2.org/wiki/Linedef_types) special of the linedef the sidedef belongs to.
---
---@field special INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The number of times to repeat the sidedef's middle texture.
---
---@field repeatcnt INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---Concatenation of the upper, middle and lower texture name strings, for linedef types that require text in any of them.
---
---@field text string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's X top texture offset (negative is to the left, positive is to the right).
---
---@field offsetx_top fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's Y top texture offset (negative is downwards, positive is upwards).
---
---@field offsety_top fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's X medium texture offset (negative is to the left, positive is to the right).
---
---@field offsetx_mid fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's Y medium texture offset (negative is downwards, positive is upwards).
---
---@field offsety_mid fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's X bottom texture offset (negative is to the left, positive is to the right).
---
---@field offsetx_bot fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---The sidedef's Y bottom texture offset (negative is downwards, positive is upwards).
---
---@field offsety_bot fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the sidedef's top texture. Is `FRACUNIT` by default.
---
---@field scalex_top fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the sidedef's top texture. Is `FRACUNIT` by default.
---
---@field scaley_top fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the sidedef's middle texture. Is `FRACUNIT` by default.
---
---@field scalex_mid fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the sidedef's middle texture. Is `FRACUNIT` by default.
---
---@field scaley_mid fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the sidedef's bottom texture. Is `FRACUNIT` by default.
---
---@field scalex_bottom fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the sidedef's bottom texture. Is `FRACUNIT` by default.
---
---@field scaley_bottom fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The sidedef's light level relative to the sidedef's sector brightness level.
---
---@field light INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**If the sidedef's light level should be absolute from the sidedef's sector brightness level.
---
---@field lightabsolute boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently this does nothing.**The sidedef's top light level relative to the sidedef's light level.
---
---@field light_top INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently this does nothing.**If the sidedef's top light level should be absolute from the sidedef's light level.
---
---@field lightabsolute_top boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently this does nothing.**The sidedef's middle light level relative to the sidedef's light level.
---
---@field light_mid INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently this does nothing.**If the sidedef's middle light level should be absolute from the sidedef's light level.
---
---@field lightabsolute_mid boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently this does nothing.**The sidedef's bottom light level relative to the sidedef's light level.
---
---@field light_bottom INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#side_t)**
---
---
---
---**WARNING: Currently this does nothing.**If the sidedef's bottom light level should be absolute from the sidedef's light level.
---
---@field lightabsolute_bottom boolean
local side_t = {}

---@class vertex_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---Returns true if the vertex is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---The absolute X coordinate of the vertex in the map.
---
---@field x fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---The absolute Y coordinate of the vertex in the map.
---
---@field y fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---The absolute Z floor coordinate of the vertex in the map, only if the floor Z is set.
---
---@field floorz fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---Returns true if the vertex's Z floor coordinate is set, false if not.
---
---@field floorzset boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---The absolute Z ceiling coordinate of the vertex in the map, only if the Ceiling Z is set.
---
---@field ceilingz fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#vertex_t)**
---
---Returns true if the vertex's Z ceiling coordinate is set, false if not.
---
---@field ceilingzset boolean
local vertex_t = {}

---@class ffloor_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---Returns true if the FOF is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The absolute Z position of the FOF's top surface in the map. Modifying this will also modify the ceiling height of the FOF's control sector at the same time.
---
---@field topheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The name of the FOF's top surface flat. Modifying this will also modify the ceiling flat of the FOF's control sector at the same time.
---
---@field toppic string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The brightness level of the FOF. This should be a value between 0 and 255. Modifying this will also modify the brightness level of the FOF's control sector at the same time.
---
---@field toplightlevel INT16
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The FOF's X top surface offset (negative is to the left, positive is to the right).
---
---@field topxoffs fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The FOF's Y top surface offset (negative is downwards, positive is upwards).
---
---@field topyoffs fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the FOF's top surface. Is `FRACUNIT` by default.
---
---@field topxscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the FOF's top surface. Is `FRACUNIT` by default.
---
---@field topyscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The absolute Z position of the FOF's bottom surface in the map. Modifying this will also modify the floor height of the FOF's control sector at the same time.
---
---@field bottomheight fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The name of the FOF's bottom surface flat. Modifying this will also modify the floor flat of the FOF's control sector at the same time.
---
---@field bottompic string
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The FOF's X bottom surface offset (negative is to the left, positive is to the right).
---
---@field bottomxoffs fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The FOF's Y bottom surface offset (negative is downwards, positive is upwards).
---
---@field bottomyoffs fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The horizontal scale of the FOF's bottom surface. Is `FRACUNIT` by default.
---
---@field bottomxscale fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---
---
---**WARNING: Currently only exists in 2.2.14 nightly.**The vertical scale of the FOF's bottom surface. Is `FRACUNIT` by default.
---
---@field bottomyscale fixed_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's top slope. This is nil if no top slope is set.
---
---@field t_slope pslope_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's bottom slope. This is nil if no bottom slope is set.
---
---@field b_slope pslope_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's control sector.
---
---@field sector sector_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's flags.
---
---@field fofflags fofflags_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's pre-UDMF flags.
---
---@field flags ffloorflags_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's control linedef.
---
---@field master line_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The target sector the FOF is located in.
---
---@field target sector_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The next FOF in the target sector's FOF list. This is nil if the FOF is the last in the list.
---
---@field next ffloor_t
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The previous FOF in the target sector's FOF list. This is nil if the FOF is the first in the list.
---
---@field prev ffloor_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's alpha/translucency value. This should be a value between 1 and 256.
---
---@field alpha INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's blending value.
---
---@field blend alphastyle_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The bustable flags this FOF has.
---
---@field bustflags fofbustflags_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The FOF's bustable type.
---
---@field busttype fofbusttype_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The linedef executor tag this bustable FOF will trigger when shattered only if has the `FB_EXECUTOR` flag.
---
---@field busttag INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The speed to sink the player each tic when the FOF is a Quicksand.
---
---@field sinkspeed fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The amount of friction the Quicksand FOF has, which affects the player's momentum.
---
---@field friction fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#ffloor_t)**
---
---The amount of bounce strength the Bouncy FOF has to bounce the player back.
---
---@field bouncestrength fixed_t
local ffloor_t = {}

---@class pslope_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---Returns true if the slope is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility:
---Userdata: Read+Write
---Userdata variables: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The slope's origin vector.
---
---For sector-based slopes, the origin's X/Y position is placed a fixed horizontal distance (known as the "extent" internally) away from the middle point of the linedef that defines the slope, at an angle of `xydistance`. The Z position is set as the un-sloped height of the floor or ceiling plane the slope is created for.
---
---Currently, the only way to modify this variable is by assigning to it a custom table with x, y and z fields, such as below:
---```lua
---
---slope.o = {x = 1*FRACUNIT, y = 2*FRACUNIT, z = 3*FRACUNIT} -- change the origin's position to (1; 2; 3)
---
---```
---
---If `SL_DYNAMIC` is set in the slope's flags, the origin's Z position (`slope.o.z`) will be automatically corrected accordingly with the sector heights or vertices used to create the slope. This means that `slope.o.z` cannot be modified by Lua unless the flag is set.
---
---@field o vector3_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The slope's 2D (X,Y) direction vector.  Used to determine distance from the origin in 2D mapspace. The values are normalised, i.e.: they are equivalent to a thrust of `FRACUNIT`, though in the opposite direction to the angle `xydirection`.
---
---@field d vector2_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The rate at which Z changes based on distance from the origin.
---
---For sector-based slopes, this is calculated as the un-sloped height of the sector plane on the other side of the linedef that defines the slope's plane, minus the un-sloped height of the slope's own plane, and divided by the slope's "extent" value (see `o` for explanation). (i.e.: zdelta = (plane2-plane1)/ extent)
---
---If `SL_DYNAMIC` is set in the slope's flags, this value will be automatically corrected accordingly with the sector heights or vertices used to create the slope. This means that this value cannot be modified by Lua unless the flag is set. Otherwise, modifying this value will also automatically update `zangle` and `normal` accordingly.
---
---@field zdelta fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The [normal vector](https://en.wikipedia.org/wiki/Normal_(geometry)) of the slope's plane.
---
---If `SL_DYNAMIC` is set in the slope's flags, this value will be automatically corrected accordingly with the sector heights or vertices used to create the slope.
---
---@field normal vector3_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The vertical angle of the slope's plane, going up from the ground (i.e. a "flat" slope plane would have a `zangle` of 0).
---
---If `SL_DYNAMIC` is set in the slope's flags, this value will be automatically corrected accordingly with the sector heights or vertices used to create the slope. This means that this value cannot be modified by Lua unless the flag is set. Otherwise, modifying this value will also automatically update `zdelta` and `normal` accordingly.
---
---`ANGLE_90` and `ANGLE_270` are not accepted as values for this variable; the game will print an error message if you attempt to assign them to it.
---
---@field zangle angle_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The horizontal angle of the slope's plane.
---
---Modifying this value will also automatically update `d` and `normal` accordingly.
---
---@field xydirection angle_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#pslope_t)**
---
---The slope's flags (see [SL_*](https://wiki.srb2.org/wiki/Constants#Slope_flags) constants).
---
---@field flags UINT8
local pslope_t = {}

---@class polyobj_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Returns true if the polyobject is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The ID used to reference the PolyObject in the map.
---
---@field id INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The ID of the parent PolyObject, or -1 if it doesn't have one.
---
---@field parent INT32
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---An array containing all the PolyObject's vertices. Use `#polyobj.vertices` to get the number of vertices it has.
---
---@field vertices vertex_t[]
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---An array containing all the PolyObject's linedefs. Use `#polyobj.lines` to get the number of lines it has.
---
---@field lines line_t[]
---
---
---Accessibility:
---Userdata: Read-only
---Userdata variables: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The PolyObject's control sector.
---
---@field sector sector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The PolyObject's angle.
---
---@field angle angle_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Setting this value to non-zero will make the PolyObject able to crush players.
---
---@field damage INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Amount of thrust applied to objects that block the PolyObject's movement. By default this is set to FRACUNIT, but it may be modified by some of the linedef executor actions for PolyObjects.
---
---@field thrust fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The PolyObject's flags ([POF_*](https://wiki.srb2.org/wiki/Constants#PolyObject_flags_(POF_*))).
---
---@field flags INT32
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The PolyObject's translucency level, as a number from 0-9.
---
---@field translucency INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---The tag of linedef executor to trigger on touch.
---
---@field triggertag INT32
local polyobj_t = {}

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Special function to check if a XY position is inside the bounds of the PolyObject.
---
---@param x fixed_t
---@param y fixed_t
---@return boolean
function polyobj_t:pointInside(x, y) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Special function to check if a mobj's XY position intersects with the lines of the PolyObject.
---
---@param mobj mobj_t
---@return boolean
function polyobj_t:mobjTouching(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Special function to check if a mobj's XY position is inside the bounds of the PolyObject.
---
---@param mobj mobj_t
---@return boolean
function polyobj_t:mobjInside(mobj) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Special function that moves a PolyObject horizontally, `x` is the X distance to move, `y` is the Y distance to move, `checkmobjs?` is a boolean to enable/disable physics with mobjs (enabled by default). Returns `true` if moved successfully, `false` if not.
---
---@param x fixed_t
---@param y fixed_t
---@param checkmobjs? boolean
---@return boolean
function polyobj_t:moveXY(x, y, checkmobjs) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#polyobj_t)**
---
---Special function that rotates a PolyObject, `delta` is the angle to rotate, `turnthings`is an integer to determine if and which mobjs should be rotated with it (0 = nothing, 1 = turn only non-players, 2 = turn everything), `checkmobjs?` is a boolean to enable/disable physics with mobjs (enabled by default). Returns `true` if rotated successfully, `false` if not.
---
---@param delta angle_t
---@param turnthings? integer
---@param checkmobjs? boolean
---@return boolean
function polyobj_t:rotate(delta, turnthings, checkmobjs) end

---@class taglist_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Returns true if the list is valid (i.e., still exists), false if not.
---
---@field valid boolean
local taglist_t = {}

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Returns an iterator function to iterate the list.
---
---@return function
function taglist_t:iterate() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Returns true if the list contains `tag`.
---
---@param tag INT16
---@return boolean
function taglist_t:has(tag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Alias for `taglist:has`.
---
---@param tag INT16
---@return boolean
function taglist_t:find(tag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Returns true if the list shares at least one tag with `othertaglist`.
---
---@param othertaglist taglist_t
---@return boolean
function taglist_t:shares(othertaglist) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Adds `tag` to the end of the list.
---
---@param tag INT16
---@return nil
function taglist_t:add(tag) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#taglist_t)**
---
---Removes `tag` from the list.
---
---@param tag INT16
---@return nil
function taglist_t:remove(tag) end

---@class extracolormap_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---Returns true if the colormap is valid (i.e., it exists), false if not.
---
---@field valid boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field red integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field green integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field blue integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field alpha integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field color integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_red integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_green integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_blue integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_alpha integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_color integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_start integer
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#extracolormap_t)**
---
---TODO
---
---@field fade_end integer
local extracolormap_t = {}

---@class camera_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---Returns true if the third-person camera is enabled, false if not.
---
---@field chase boolean
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The vertical viewing angle of the camera.
---
---@field aiming angle_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The camera's absolute X position in the map.
---
---@field x fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The camera's absolute Y position in the map.
---
---@field y fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The camera's absolute Z position in the map.
---
---@field z fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The absolute angle the camera is facing. 0 is East, `ANGLE_90` is North, `ANGLE_180` is West, and `ANGLE_270` is South.
---
---@field angle angle_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The subsector the camera is currently in. To obtain the sector the camera is in, use `camera.subsector.sector`.
---
---@field subsector subsector_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The absolute "floor" position for the camera, i.e., the height that it considers to be the floor. This can be different from the floor height of the sector the camera is in, for example if it is above a solid FOF.
---
---@field floorz fixed_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The absolute "ceiling" position for the camera, i.e., the height that it considers to be the ceiling. This can be different from the ceiling height of the sector the camera is in, for example if it is below a solid FOF.
---
---@field ceilingz fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The current radius of the camera. By default this is `20*FRACUNIT`, but it will automatically scale along with the corresponding player's scale.
---
---@field radius fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The current height of the camera. By default this is `16*FRACUNIT`, but it will automatically scale along with the corresponding player's scale.
---
---@field height fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The camera's current X-axis momentum. Positive values shift the camera to the East, negative values to the West.
---
---@field momx fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The camera's current Y-axis momentum. Positive values shift the camera to the North, negative values to the South.
---
---@field momy fixed_t
---
---
---Accessibility: Read+Write
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#camera_t)**
---
---The camera's current Z-axis momentum. Positive values shift the camera upwards, negative values downwards.
---
---@field momz fixed_t
local camera_t = {}

---@class mouse_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mouse_t)**
---
---The change in position along the x-axis.
---
---@field dx INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mouse_t)**
---
---The change in position along the y-axis.
---
---@field dy INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mouse_t)**
---
---The change in position along the y-axis for use in mouse-looking.
---
---@field mlookdy INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mouse_t)**
---
---The real change in position along the x-axis unadjusted for sensitivity settings.
---
---@field rdx INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mouse_t)**
---
---The real change in position along the y-axis unadjusted for sensitivity settings.
---
---@field rdy INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#mouse_t)**
---
---Contains flags representing mouse buttons currently pressed (See [`MB_*`](https://wiki.srb2.org/wiki/Constants#Mouse_button_flags) constants).
---
---@field buttons UINT16
local mouse_t = {}

---@class keyevent_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#keyevent_t)**
---
---The name of the key that triggered this event.
---
---@field name string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#keyevent_t)**
---
---The number of the key that triggered this event.
---
---@field num INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#keyevent_t)**
---
---Whether this event is a continuation of a previously triggered event. For the KeyDown hook, this is true when the key is being held; for the KeyUp hook, this is always false.
---
---@field repeated boolean
local keyevent_t = {}

---@class consvar_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#consvar_t)**
---
---The name of the console variable, as it should be written in the console.
---
---@field name string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#consvar_t)**
---
---The default value set for the console variable, expressed as a string.
---
---@field defaultvalue string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#consvar_t)**
---
---Contains the flags set for the console variable (see [`CV_*`](https://wiki.srb2.org/wiki/Constants#Console_variable_flags) constants).
---
---@field flags INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#consvar_t)**
---
---The current value set for the console variable, expressed as a number.
---
---@field value INT32
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#consvar_t)**
---
---The current value set for the console variable, expressed as a string.
---
---@field string string
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#consvar_t)**
---
---Returns whether the console variable has been changed by the player (true) or not (false).
---
---@field changed boolean
local consvar_t = {}

---@class patch_t
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#patch_t)**
---
---Returns true if the patch is valid (i.e., it exists), false if not. (Patches are invalidated when renderers are changed)
---
---@field valid boolean
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#patch_t)**
---
---The width of the patch, in fracunits/pixels.
---
---@field width INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#patch_t)**
---
---The height of the patch, in fracunits/pixels.
---
---@field height INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#patch_t)**
---
---The X offset of the patch (positive is left, negative is right), in fracunits/pixels.
---
---@field leftoffset INT16
---
---
---Accessibility: Read-only
---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#patch_t)**
---
---The Y offset of the patch (positive is down, negative is up), in fracunits/pixels.
---
---@field topoffset INT16
local patch_t = {}

---@class file_t
local file_t = {}

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#file*)**
---
---Returns an iterator function that, each time it is called, returns a new line from the file as a string. Therefore, the construction
---```Lua
---for line in file:lines() do
---    -- body
---end
---```
---will iterate over all lines of the file.
---
---@return function
function file_t:lines() end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#file*)**
---
---Reads the file `file`, according to the given formats, which specify what to read. For each format, the function returns a string (or a number) with the characters read, or nil if it cannot read data with the specified format. When called without formats, it uses a default format that reads the entire next line (see below).
---
---The available formats are:
---
---* `"*n"`: reads a number; this is the only format that returns a number instead of a string.
---* `"*a"`: reads the whole file, starting at the current position. On end of file, it returns the empty string.
---* `"*l"`: reads the next line (skipping the end of line), returning nil on end of file. This is the default format.
---* `number`: reads a string with up to this number of characters, returning nil on end of file. If number is zero, it reads nothing and returns an empty string, or nil on end of file.
---
---@param format? any
---@return ... any
function file_t:read(format) end

---
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Userdata_structures#file*)**
---
---Sets and gets the file position, measured from the beginning of the file, to the position given by `offset` plus a base specified by the string `whence`, as follows:
---
---* `"set"`: base is position 0 (beginning of the file);
---* `"cur"`: base is current position;
---* `"end"`: base is end of file;
---In case of success, function seek returns the final file position, measured in bytes from the beginning of the file. If this function fails, it returns nil, plus a string describing the error.
---
---The default value for `whence` is "cur", and for `offset` is 0. Therefore, the call `file:seek()` returns the current file position, without changing it; the call `file:seek("set")` sets the position to the beginning of the file (and returns 0); and the call `file:seek("end")` sets the position to the end of the file, and returns its size.
---
---@param whence? string
---@param offset? integer
---@return string|nil
function file_t:seek(whence, offset) end


---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the map is in [UDMF](https://wiki.srb2.org/wiki/User:MascaraSnake/UDMF), false if not.
---@type boolean
udmf = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the [map](https://wiki.srb2.org/wiki/map) currently being played.
---@type number
gamemap = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The [TypeOfLevel](https://wiki.srb2.org/wiki/Level_header#TypeOfLevel) of the map currently being played. See [Constants > TypeOfLevel flags](https://wiki.srb2.org/wiki/Constants#TypeOfLevel_flags).
---@type number
maptol = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The game's current "state". See [Constants > Game states](https://wiki.srb2.org/wiki/Constants#Game_states).
---@type number
gamestate = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---It is used to indicate whether the player failed to successfully complete a special stage. It is assigned by the function `G_IsSpecialStage(gamemap)`, which checks if the current stage is a special stage and whether the player has met the necessary requirements to not fail.
---@type boolean
stagefailed = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if playing in [Ultimate mode](https://wiki.srb2.org/wiki/Ultimate_mode), false if not.
---@type boolean
ultimatemode = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the map is in [Mario mode](https://wiki.srb2.org/wiki/Mario_mode), false if not.
---@type boolean
mariomode = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the map is in [2D mode](https://wiki.srb2.org/wiki/2D_mode), false if not.
---@type boolean
twodlevel = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the map is a [Circuit](https://wiki.srb2.org/wiki/Circuit) map, false if not.
---@type boolean
circuitmap = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the timer was stopped, false if not.
---@type boolean
stoppedclock = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if currently in a [netgame](https://wiki.srb2.org/wiki/netgame), false if not.
---@type boolean
netgame = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if currently playing a [multiplayer](https://wiki.srb2.org/wiki/multiplayer) game, false if not.
---@type boolean
multiplayer = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if playing in [Record Attack](https://wiki.srb2.org/wiki/Record_Attack) or [NiGHTS Mode](https://wiki.srb2.org/wiki/NiGHTS_Mode), false if not.
---@type boolean
modeattacking = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if [Metal Sonic recording](https://wiki.srb2.org/wiki/Metal_Sonic_race_tutorial#Recording_the_replay) is active, false if not.
---@type boolean
metalrecording = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if playing in [two-player mode](https://wiki.srb2.org/wiki/two-player_mode), false if not.
---@type boolean
splitscreen = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the game has been completed in the current savefile, false if not.
---@type boolean
gamecomplete = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current [Marathon Mode](https://wiki.srb2.org/wiki/Marathon_Run) flags. See [Constants > Marathon Mode flags](https://wiki.srb2.org/wiki/Constants#Marathon_mode).
---@type number
marathonmode = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the game is being run with the [command line parameter](https://wiki.srb2.org/wiki/command_line_parameters) `-debug`, false if not.
---@type boolean
devparm = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the game has been modified and the modification does not have a custom gamedata file, false if not.
---@type boolean
modifiedgame = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if cheat commands found [here](https://wiki.srb2.org/wiki/Console/Commands#Development_tools/Game_cheats) have been used, false if not.
---@type boolean
usedCheats = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the game is currently paused, false if not.
---@type boolean
paused = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The number of Blue Team score have in [Team Match](https://wiki.srb2.org/wiki/Match#Team_Match) and [CTF](https://wiki.srb2.org/wiki/Capture_the_Flag).
---@type number
bluescore = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The number of Red Team score have in [Team Match](https://wiki.srb2.org/wiki/Match#Team_Match) and [CTF](https://wiki.srb2.org/wiki/Capture_the_Flag).
---@type number
redscore = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The time limit before a round ends.
---@type number
timelimit = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The number of points required before a round can end.
---@type number
pointlimit = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---This refers to the current Red Team flag's mobj in [CTF](https://wiki.srb2.org/wiki/Capture_the_Flag), becomes `nil` when a player picked up the flag.
---@type mobj_t
redflag = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---This refers to the current Blue Team flag's mobj in [CTF](https://wiki.srb2.org/wiki/Capture_the_Flag), becomes `nil` when a player picked up the flag.
---@type mobj_t
blueflag = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---This refers to the current Red Team flag's spawnpoint in [CTF](https://wiki.srb2.org/wiki/Capture_the_Flag), normally to respawn the flag when tossed for a long time or when falling into a bottomless pit.
---@type mapthing_t
rflagpoint = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---This refers to the current Blue Team flag's spawnpoint in [CTF](https://wiki.srb2.org/wiki/Capture_the_Flag), normally to respawn the flag when tossed for a long time or when falling into a bottomless pit.
---@type mapthing_t
bflagpoint = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the first map in the [Single Player](https://wiki.srb2.org/wiki/Single_Player) campaign.
---@type number
spstage_start = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the first map of [Marathon Mode](https://wiki.srb2.org/wiki/Marathon_Run).
---@type number
spmarathon_start = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the first Single Player [Special Stage](https://wiki.srb2.org/wiki/Special_Stage).
---@type number
sstage_start = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the final Single Player [Special Stage](https://wiki.srb2.org/wiki/Special_Stage), including the unlockable [Black Hole Zone](https://wiki.srb2.org/wiki/Black_Hole_Zone). This will always be equal to `sstage_start + 7`.
---@type number
sstage_end = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the first [Coop](https://wiki.srb2.org/wiki/Coop) Special Stage.
---@type number
smpstage_start = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the final [Coop](https://wiki.srb2.org/wiki/Coop) Special Stage. This will always be equal to `smpstage_start + 6`.
---@type number
smpstage_end = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number used as the background for the title screen.
---@type number
titlemap = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if a titlemap is currently active, false if not.
---@type boolean
titlemapinaction = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number to warp to immediately when starting the game.
---@type number
bootmap = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The map number of the [tutorial map](https://wiki.srb2.org/wiki/Tutorial_Zone).
---@type number
tutorialmap = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if playing in tutorial mode, false if not.
---@type boolean
tutorialmode = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The skin color of the Red Team in Team Match and CTF.
---@type number
skincolor_redteam = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The skin color of the Blue Team in Team Match and CTF.
---@type number
skincolor_blueteam = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The skin color of the Red Team thrown ring in Team Match and CTF.
---@type number
skincolor_redring = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The skin color of the Blue Team thrown ring in Team Match and CTF.
---@type number
skincolor_bluering = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the [Invincibility](https://wiki.srb2.org/wiki/Invincibility) power-up lasts for.
---@type number
invulntics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the [Super Sneakers](https://wiki.srb2.org/wiki/Super_Sneakers) power-up lasts for.
---@type number
sneakertics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long a player flashes and is invincible after taking damage.
---@type number
flashingtics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long [Tails](https://wiki.srb2.org/wiki/Tails) can fly before getting tired.
---@type number
tailsflytics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the player can stay underwater before drowning.
---@type number
underwatertics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the player can survive in a [space countdown](https://wiki.srb2.org/wiki/Space_Countdown) before suffocating.
---@type number
spacetimetics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the extra life music plays.
---@type number
extralifetics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long it takes for a [NiGHTS link](https://wiki.srb2.org/wiki/NiGHTS#Link) to fade out.
---@type number
nightslinktics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the game stays at a Game Over screen before switching to the continue screen or the title screen.
---@type number
gameovertics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---How long the ammo removal warning will be displayed when shooting a weapon ring without regular rings in [Match](https://wiki.srb2.org/wiki/Match) and related gametypes.
---@type number
ammoremovaltics = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---When set, the game always plays a 1up sound effect, no matter the client-side setting.
---@type UINT8
use1upSound = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Defines maximum amount of extra lifes the player can get per 100 rings. By default, only 2 extra lifes per 100 rings.
---@type UINT8
maxXtraLife = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---When set, continues avaliable outside of no-save sessions. By default, continues are only avaliable on no-save game sessions.
---@type UINT8
useContinues = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---When set, the gamedata being synced with the server's gamedata. By default, this is not the case.
---@type UINT8
shareEmblems = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current [gametype](https://wiki.srb2.org/wiki/gametype) being played. See [Constants > Gametypes](https://wiki.srb2.org/wiki/Constants#Gametypes).
---@type number
gametype = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The rules of the current [gametype](https://wiki.srb2.org/wiki/gametype) being played as a set of `GTR_*` flags. See [Game modes > Custom gametypes](https://wiki.srb2.org/wiki/Game_modes#Custom_gametypes).
---@type number
gametyperules = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The amount of time that has passed in the current level since it has been loaded, measured in tics. In most [gametypes](https://wiki.srb2.org/wiki/gametypes), this is normally equal to the time displayed on the [HUD](https://wiki.srb2.org/wiki/HUD) (when converted to tics). However, in [Race](https://wiki.srb2.org/wiki/Race) and [Competition](https://wiki.srb2.org/wiki/Competition) modes, `leveltime` includes the 4-second pre-timer, meaning that `leveltime` will be `4*TICRATE` tics ahead of the HUD's displayed time once the latter has started running. Note that `leveltime` will continue to increase after the level is finished, even after the HUD time has stopped, until the tally screen appears. The actual time displayed on the player's HUD is set by `player.realtime` (see [player_t](https://wiki.srb2.org/wiki/player_t)).
---@type number
leveltime = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Time of how long the special stage can last for, in tics. Default is `90*TICRATE` (90 seconds).
---@type number
sstimer = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current weather type set globally.
---@type number
globalweather = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current sky set globally.
---@type number
globallevelskynum = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The server's host player.
---@type player_t
server = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---This variable stores which [Chaos Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald)s have been obtained in the current Single Player or Co-op session, as a set of `EMERALDn` flags. See [Chaos Emerald > Technical information](https://wiki.srb2.org/wiki/Chaos_Emerald#Technical_information).
---@type number
emeralds = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The number of [Special Stage Token](https://wiki.srb2.org/wiki/Special_Stage_Token)s collected in the current level.
---@type number
token = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current global [gravity](https://wiki.srb2.org/wiki/gravity) value. The default value is `FRACUNIT/2`.
---@type number
gravity = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The game's major version number. For SRB2 v2.2.'x', this will return 202.
---@type number
VERSION = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The game's subversion number. For SRB2 v2.2.13, this will return 13.
---@type number
SUBVERSION = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The game's version string. For SRB2 v2.2.13, this will return `"v2.2.13"`.
---@type string
VERSIONSTRING = nil

---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current [weather](https://wiki.srb2.org/wiki/weather) type set locally.
---@type number
curWeather = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The current [sky](https://wiki.srb2.org/wiki/sky) set locally.
---@type number
levelskynum = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The name of the main [music](https://wiki.srb2.org/wiki/List_of_music) track currently used for playback, if there is no active jingle track being played back. This is by default the music set by current map's level header, but it will be modified when the console command [tunes](https://wiki.srb2.org/wiki/Console/Commands#tunes) is used, or [linedef type 413](https://wiki.srb2.org/wiki/linedef_type_413) is executed in the map. Note: if a jingle track is active, this does not change to the name of the currently playing jingle music track. `S_ChangeMusic` also does not modify this variable.
---@type string
mapmusname = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The flags set for the main music track currently used for playback, if there is no active jingle track being played back:
---* The lowest 12 bits (bits 0-11) are the [subtrack number](https://wiki.srb2.org/wiki/Level_header##MusicTrack); this can be retrieved by checking `mapmusflags & 0x0FFF`
---* If the 14th bit (`mapmusflags & 0x4000`) is set, the music track will start from the beginning if you attempt to change the music to the same track, instead of having no effect
---* If the 15th bit (`mapmusflags & 0x8000`) is set, the music track will be reset when the current level is reloaded.
---
---Note:  if a jingle track is active, this does not change to the flags set for the currently playing jingle track. `S_ChangeMusic` also does not modify this variable.
---@type number
mapmusflags = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Position in which the music starts at.
---@type number
mapmusposition = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The local player.
---@type player_t
consoleplayer = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The player visible on screen.
---@type player_t
displayplayer = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The secondary player, when splitscreen mode is active.
---@type player_t
secondarydisplayplayer = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the game is hosting a server, false if not.
---@type boolean
isserver = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the game is a dedicated server, false if not.
---@type boolean
isdedicatedserver = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The primary camera in-game.
---@type camera_t
camera = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The secondary camera in-game, only on splitscreen.
---@type camera_t
camera2 = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The first player's mouse.
---@type mouse_t
mouse = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---The second player's mouse.
---@type mouse_t
mouse2 = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if a menu is currently active, false if not.
---@type boolean
menuactive = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Variables)**
---
---Returns true if the chat is currently open, false if not.
---@type boolean
chatactive = nil

---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or modify attributes for a specific [Object type](https://wiki.srb2.org/wiki/Object_type), where `MT_NAME` is an integer that is expected to be the [`MT_*`](https://wiki.srb2.org/wiki/List_of_Object_types) constant for the Object type in question.
---
---Example usage:
---```lua
---mobjinfo[MT_RING_BOX].reactiontime = 20
---local playerh = mobjinfo[MT_PLAYER].height
----- Example usage with mobj_t variables, using "mobj" as an example:
---mobj.state = mobjinfo[mobj.type].spawnstate
----- mobj.info is a shortcut for mobjinfo[mobj.type],
-----  i.e., mobj.info.VARIABLE == mobjinfo[mobj.type].VARIABLE
-----  so this last example could be written more concisely as "mobj.state = mobj.info.spawnstate"
---```
---Whole entries for `mobjinfo[]` can be recreated from scratch if needed (see [Lua/Freeslots and Object resources](https://wiki.srb2.org/wiki/Lua/Freeslots_and_Object_resources)).
---@type table<integer, mobjinfo_t>
mobjinfo = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or modify attributes for a specific [state](https://wiki.srb2.org/wiki/state), where `S_NAME` is an integer that is expected to be the [`S_*`](https://wiki.srb2.org/wiki/List_of_states) constant for the state in question.
---
---Example usage:
---```lua
---states[S_SPOS_STND].sprite = SPR_RBUZ
---local standtics = states[S_PLAY_STND].tics
----- Example usage with mobj_t variables, using "mobj" as an example:
---local st = states[mobj.state]
---st.action(mobj, st.var1, st.var2)
----- calls the action for mobj's current state
---```
---Whole entries for `states[]` can be recreated from scratch if needed (see [Lua/Freeslots and Object resources](https://wiki.srb2.org/wiki/Lua/Freeslots_and_Object_resources)).
---@type table<integer, state_t>
states = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or modify attributes for a specific [sound](https://wiki.srb2.org/wiki/sound), where `sfx_name` is an integer that is expected to be the [`sfx_*`](https://wiki.srb2.org/wiki/List_of_sounds) constant for the sound in question.
---
---Whole entries for `sfxinfo[]` can be recreated from scratch if needed (see [Lua/Freeslots and Object resources](https://wiki.srb2.org/wiki/Lua/Freeslots_and_Object_resources)).
---@type table<integer, sfxinfo_t>
sfxinfo = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---Converts a [sprite](https://wiki.srb2.org/wiki/sprite) prefix number to a string consisting of the 4-letter sprite name, or vice versa. `SPR_NAME` is an integer that is expected to be the [`SPR_*`](https://wiki.srb2.org/wiki/List_of_sprites) constant for the sprite prefix number in question. Likewise, `"NAME"` must be a four-letter prefix belonging to an existing sprite set.
---
---Example usage:
---```lua
---print(sprnames[SPR_NULL]) -- prints "NULL"
---print(sprnames["NULL"]) -- prints 0 (the value of SPR_NULL)
----- Example usage with mobj_t variables, using "mobj" as an example:
---print("sprite = SPR_"..sprnames[mobj.sprite])
----- prints out prefix of mobj's sprite
---```
---@type table<integer|string, integer|string>
sprnames = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---Converts a [sprite2](https://wiki.srb2.org/wiki/sprite2) prefix number to a string consisting of the 4-letter sprite2 name, or vice versa. `SPR2_NAME` is an integer that is expected to be the `SPR2_*` constant for the sprite2 prefix number in question. Likewise, `"NAME"` must be a four-letter prefix belonging to an existing sprite2.
---@type table<integer|string, integer|string>
spr2names = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [player](https://wiki.srb2.org/wiki/player), where `playernum` is an integer between 0 and 31.
---For example, `players[0]` is the `player_t` userdata for player 1, `players[1]` for player 2, and so on.
---@type table<integer, player_t>
players = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [skin](https://wiki.srb2.org/wiki/skin), where `skinnum` is an integer between 0 and 31. Alternatively, `skinname` is the skin's [name](https://wiki.srb2.org/wiki/S_SKIN#name) attribute, which can be given instead of the skin number.
---
---Example usage:
---```lua
---print(skins[0].name) -- prints "sonic"
---print(skins["sonic"].name) -- also prints "sonic"
---S_StartSound(nil, skins[0].soundsid[SKSTHOK]) -- plays sfx_thok
----- Example usage with mobj_t variables, using "mobj" as an example:
---print("my character's name is "..skins[mobj.skin].realname)
----- prints out the "real" name for the mobj's skin
---mobj.color = skins[mobj.skin].prefcolor
----- changes mobj's color to skin's prefcolor
---```
---@type table<integer|string, skin_t>
skins = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [Thing](https://wiki.srb2.org/wiki/Thing).
---@type table<integer, mapthing_t>
mapthings = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [vertex](https://wiki.srb2.org/wiki/vertex).
---@type table<integer, vertex_t>
vertexes = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [linedef](https://wiki.srb2.org/wiki/linedef).
---@type table<integer, line_t>
lines = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [sidedef](https://wiki.srb2.org/wiki/sidedef).
---@type table<integer, side_t>
sides = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a subsector.
---@type table<integer, subsector_t>
subsectors = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [sector](https://wiki.srb2.org/wiki/sector).
---@type table<integer, sector_t>
sectors = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [polyobject](https://wiki.srb2.org/wiki/polyobject).
---@type table<integer, polyobj_t>
polyobjects = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up the properties of a [level header](https://wiki.srb2.org/wiki/level_header).
---@type table<integer, mapheader_t>
mapheaderinfo = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or modify attributes for a specific [HUD item](https://wiki.srb2.org/wiki/HUD_item), where `HUD_NAME` is an integer that is expected to be the [`HUD_*`](https://wiki.srb2.org/wiki/Head-up_display#List_of_HUD_items) constant for the HUD item in question.
---@type table<integer, hudinfo_t>
hudinfo = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to access the pivots of each of a sprite's frames, where `SPR2_NAME` is an integer expected to be the `SPR_*` constant for the sprite in question. Likewise, `"NAME"` must be a four-letter prefix belonging to an existing sprite set. Each of the entries of this table contain an array of [spriteframepivot_t](https://wiki.srb2.org/wiki/Lua/Userdata_structures#spriteframepivot_t) userdata, each index corresponding to a frame of animation the sprite possesses.
---
---Example usage:
---```lua
---
-----Editing pivot properties for frame A of SPR_BUS2
---spriteinfo[SPR_BUS2] = {
---    pivot = {
---        A = {x = 18, y = 60},
---    },
---}
---
-----Editing pivot properties for frames B to E of SPR_BUS2
---spriteinfo[SPR_BUS2].pivot["B"] = {x = 420, y = 69}
---spriteinfo[SPR_BUS2].pivot["C"] = spriteinfo[SPR_BUS2].pivot["B"]
---spriteinfo[SPR_BUS2].pivot["D"].x = 128
---spriteinfo[SPR_BUS2].pivot["E"].y = 64
---
---```
---@type table<integer, spriteinfo_t>
spriteinfo = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or set the sprite to fallback to on a specific sprite2, if a character is missing such sprite, where `SPR2_NAME` is an integer that is expected to be the `SPR2_*` constant for the sprite2 in question. Likewise, "NAME" must be a four-letter prefix belonging to an existing sprite set. Note that only custom sprite2 defaults can be modified.
---
---Example usage:
---```lua
----- Okay usage of spr2defaults
---spr2defaults[SPR2_RAIL] = SPR2_ROLL
----- Will cause an error to be shown on attempt to modify
---spr2defaults[SPR2_WAIT] = SPR2_SKID
---
---```
---@type table<integer, playersprite_t>
spr2defaults = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or modify attributes for a specific [skin color](https://wiki.srb2.org/wiki/skin_color), where `SKINCOLOR_NAME` is an integer that is expected to be the [`SKINCOLOR_*`](https://wiki.srb2.org/wiki/List_of_skin_colors) constant for the skin color in question.
---@type table<integer, skincolor_t>
skincolors = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up or modify the pressed state for a specific key.
---@type table<integer, boolean>
gamekeydown = {}
---**[View on wiki](https://wiki.srb2.org/wiki/Lua/Global_variables#Tables)**
---
---This table is used to look up for unique tags on the map around all sectors, things and lines.
---@type table<integer, integer>
tags = {}


---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Signed 8-bit integer minimum
INT8_MIN = -128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Signed 16-bit integer minimum
INT16_MIN = -32768
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Signed 32-bit integer minimum
INT32_MIN = -2147483648
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Signed 8-bit integer maximum
INT8_MAX = 127
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Signed 16-bit integer maximum
INT16_MAX = 32767
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Signed 32-bit integer maximum
INT32_MAX = 2147483647
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Unsigned 8-bit integer maximum
UINT8_MAX = 255
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Unsigned 16-bit integer maximum
UINT16_MAX = 65535
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Unsigned 32-bit integer maximum
UINT32_MAX = 4294967295

---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The basic unit of measurement for lengths, speeds, Object scales and sometimes angles. Values for these measurements are interpreted as fixed-point numbers with `FRACUNIT` as the base unit, i.e., `FRACUNIT` represents one unit (or in some cases one pixel), `2*FRACUNIT` represents 2.0 units, `FRACUNIT/2` represents 0.5 units, and so on.
FRACUNIT = 65535
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The basic unit of measurement for lengths, speeds, Object scales and sometimes angles. Values for these measurements are interpreted as fixed-point numbers with `FRACUNIT` as the base unit, i.e., `FRACUNIT` represents one unit (or in some cases one pixel), `2*FRACUNIT` represents 2.0 units, `FRACUNIT/2` represents 0.5 units, and so on.
FU = 65535
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The number of bits to shift up to convert integers to fixed-point numbers in `FRACUNIT` scale, or the number of bits to shift down for vice versa. This constant is used to define the value of `FRACUNIT` itself - modifying the value of `FRACBITS` in the [source code](https://wiki.srb2.org/wiki/source_code) would also modify `FRACUNIT`'s value.
---
---Note that bit-shifting an integer by `FRACBITS` in either direction is equivalent to multiplication or division by `FRACUNIT` - i.e., `x<<FRACBITS` is the same as `x*FRACUNIT`, and `x>>FRACBITS` is the same as `x/FRACUNIT`.
FRACBITS = 16
---@type tic_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The number of tics in a second, i.e., anything multiplied by this value is a measurement in seconds.
TICRATE = 35
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---TODO
NEWTICRATERATIO = 1
---@type tic_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---TODO
NEWTICRATE = 35
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The music playback rate, or the number of milliseconds in a second, i.e., anything multiplied by this value is a measurement in seconds (in the context of music playback). This is intended for use with [SOC](https://wiki.srb2.org/wiki/SOC) parameters and [Lua](https://wiki.srb2.org/wiki/Lua) functions that change or set positions within music tracks and/or applying fade in/out effects to them.
MUSICRATE = 1000
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The maximum distance that [ring](https://wiki.srb2.org/wiki/ring)s can be from players with an [Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield) to be attracted to them. This is also used by the homing attack character ability as the maximum distance an enemy, spring or monitor can be to able to home in on it.
RING_DIST = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The speed at which [pushable](https://wiki.srb2.org/wiki/pushable) Objects with `MF2_SLIDEPUSH` will be pushed.
PUSHACCEL = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The executable's Mod ID. In SRB2 v2.2, 18 is the default value for this constant.
MODID = 18
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The executable's Mod Version. In SRB2 v2.2.13, 54 is the default value for this constant.
MODVERSION = 54
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The SRB2 version number the executable is based on. In SRB2 v2.2, 220 is the default value for this constant.
CODEBASE = 220
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The game's version number.
VERSION = 202
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The game's version, as a string.
VERSIONSTRING = "v2.2.13"
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The game's sub-version number. In SRB2 2.2.13, it's 13.
SUBVERSION = 13
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Vertical movement speed for Objects with `MF_FLOAT`.
FLOATSPEED = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The maximum height an Object can step up/down without being blocked by a wall or falling down.
MAXSTEPMOVE = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Doom's Use button effect range. Unused in SRB2.
USERANGE = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Doom's melee attack range. Used in SRB2 by [P_CheckMeleeRange](https://wiki.srb2.org/wiki/Lua/Functions#P_CheckMeleeRange) and [P_SkimCheckMeleeRange](https://wiki.srb2.org/wiki/Lua/Functions#P_SkimCheckMeleeRange).
MELEERANGE = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Doom's missile attack range. Used in SRB2 by [A_UnidusBall](https://wiki.srb2.org/wiki/A_UnidusBall).
MISSILERANGE = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Used by the map [Thing](https://wiki.srb2.org/wiki/Thing) spawning code to signify that the Thing's Z position is on the sector's floor. This is corrected to the appropriate height in [P_SpawnMobj](https://wiki.srb2.org/wiki/Lua/Functions#P_SpawnMobj) for newly spawned Objects.
ONFLOORZ = nil
---@type fixed_t
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Used by the map Thing spawning code to signify that the Thing's Z position is on the sector's ceiling. This is corrected to the appropriate height in `P_SpawnMobj` for newly spawned Objects.
ONCEILINGZ = nil
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Used by `player.lives` to indicate that this player has infinite lives.
INFLIVES = 127
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The maximum magnitude for values returned by [`input.joyAxis`](https://wiki.srb2.org/wiki/Lua/Functions#input.joyAxis) and [`input.joyAxis2`](https://wiki.srb2.org/wiki/Lua/Functions#input.joyAxis2).
JOYAXISRANGE = 1023

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---10% translucent (90% opaque)
tr_trans10 = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---20% translucent (80% opaque)
tr_trans20 = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---30% translucent (70% opaque)
tr_trans30 = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---40% translucent (60% opaque)
tr_trans40 = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---50% translucent (50% opaque)
tr_trans50 = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---60% translucent (40% opaque)
tr_trans60 = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---70% translucent (30% opaque)
tr_trans70 = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---80% translucent (20% opaque)
tr_trans80 = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---90% translucent (10% opaque)
tr_trans90 = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Number of translucency maps
NUMTRANSMAPS = 10

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans10` for SOCs (`tr_trans10<<FF_TRANSSHIFT`)
TR_TRANS10 = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans20` for SOCs (`tr_trans20<<FF_TRANSSHIFT`)
TR_TRANS20 = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans30` for SOCs (`tr_trans30<<FF_TRANSSHIFT`)
TR_TRANS30 = 196608
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans40` for SOCs (`tr_trans40<<FF_TRANSSHIFT`)
TR_TRANS40 = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans50` for SOCs (`tr_trans50<<FF_TRANSSHIFT`)
TR_TRANS50 = 327680
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans60` for SOCs (`tr_trans60<<FF_TRANSSHIFT`)
TR_TRANS60 = 393216
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans70` for SOCs (`tr_trans70<<FF_TRANSSHIFT`)
TR_TRANS70 = 458752
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans80` for SOCs (`tr_trans80<<FF_TRANSSHIFT`)
TR_TRANS80 = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`tr_trans90` for SOCs (`tr_trans90<<FF_TRANSSHIFT`)
TR_TRANS90 = 589824

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Frame number mask
FF_FRAMEMASK = 255
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Super sprite2
FF_SPR2SUPER = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---State change at the end of sprite2 animation
FF_SPR2ENDSTATE = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---50% chance of starting in the middle of sprite2 animation
FF_SPR2MIDSTART = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Blending mode mask
FF_BLENDMASK = 28672
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Number of bits to shift up to convert `AST_` constants to `FF_` constants
FF_BLENDSHIFT = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite uses additive blending
FF_ADD = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite uses subtractive blending
FF_SUBTRACT = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite uses reverse subtractive blending
FF_REVERSESUBTRACT = 12288
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite uses modulative blending
FF_MODULATE = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Translucency mask
FF_TRANSMASK = 983040
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Number of bits to shift up to convert `tr_transxx` constants to `FF_TRANSxx` constants
FF_TRANSSHIFT = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 10% translucent (90% opaque)
FF_TRANS10 = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 20% translucent (80% opaque)
FF_TRANS20 = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 30% translucent (70% opaque)
FF_TRANS30 = 196608
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 40% translucent (60% opaque)
FF_TRANS40 = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 50% translucent (50% opaque)
FF_TRANS50 = 327680
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 60% translucent (40% opaque)
FF_TRANS60 = 393216
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 70% translucent (30% opaque)
FF_TRANS70 = 458752
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 80% translucent (20% opaque)
FF_TRANS80 = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is 90% translucent (10% opaque)
FF_TRANS90 = 589824
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Brightness mask
FF_BRIGHTMASK = 3145728
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is always at full brightness, not affected by lighting
FF_FULLBRIGHT = 1048576
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is always at full darkness, not affected by lighting
FF_FULLDARK = 2097152
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is drawn between full brightness & lighting
FF_SEMIBRIGHT = 3145728
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is drawn along a vertical plane
FF_PAPERSPRITE = 4194304
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is drawn along a horizontal plane
FF_FLOORSPRITE = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is flipped vertically
FF_VERTICALFLIP = 16777216
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite is flipped horizontally
FF_HORIZONTALFLIP = 33554432
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---State is animated and cycles through several frames
FF_ANIMATE = 268435456
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Animation is synced to a global timer
FF_GLOBALANIM = 536870912
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Animation starts at a random frame
FF_RANDOMANIM = 1073741824

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Flips the sprite horizontally.
RF_HORIZONTALFLIP = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Flips the sprite vertically.
RF_VERTICALFLIP = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will use the values of `spritexoffset` and `spriteyoffset` absolutely, instead of relatively to the sprite's original offsets.
RF_ABSOLUTEOFFSETS = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The values of `spritexoffset` and `spriteyoffset` will be applied flipped to the sprite's original offsets.
RF_FLIPOFFSETS = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Floor sprite mask
RF_SPLATMASK = 240
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The floor sprite will be drawn along a slope plane.
RF_SLOPESPLAT = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The floor sprite will adjust to the slope its Object is standing on.
RF_OBJECTSLOPESPLAT = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will face its Object's angle rather than the camera.
RF_NOSPLATBILLBOARD = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The Object will use angle sprites instead of a single rotated sprite.
RF_NOSPLATROLLANGLE = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Lighting mask
RF_BRIGHTMASK = 768
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will always be drawn at full brightness.
RF_FULLBRIGHT = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will be drawn completely dark.
RF_FULLDARK = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will be drawn between full brightness and sector brightness.
RF_SEMIBRIGHT = 768
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will not be affected by colormaps.
RF_NOCOLORMAPS = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sprite type mask
RF_SPRITETYPEMASK = 12288
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will be drawn in a vertical plane, also known as a papersprite.
RF_PAPERSPRITE = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will be drawn in a horizontal plane, also known as a floor sprite, or a "splat".
RF_FLOORSPRITE = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will be skewed and stretched onto the floor as if it was a projected shadow.
RF_SHADOWDRAW = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will be scaled and made transparent as if it was a projected shadow.
RF_SHADOWEFFECTS = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sprite will fully behave as a projected shadow. Is a combination of `RF_SHADOWDRAW`, `RF_SHADOWEFFECTS` and `RF_FULLDARK`.
RF_DROPSHADOW = 49664

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---No blending
AST_COPY = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Default translucency effect
AST_TRANSLUCENT = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Additive blend mode
AST_ADD = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Subtractive blend mode
AST_SUBTRACT = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Difference blend mode
AST_REVERSESUBTRACT = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Multiply blend mode
AST_MODULATE = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Overlay blend mode
AST_OVERLAY = 6

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Default colormap
TC_DEFAULT = -1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Boss flash colormap
TC_BOSS = -2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) boss flash colormap
TC_METALSONIC = -3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---All-white flash colormap (used by [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman))
TC_ALLWHITE = -4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Remaps all colors to a skincolor range
TC_RAINBOW = -5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Remaps all colors to a single color index
TC_BLINK = -6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---For Metal Sonic's dashmode
TC_DASHMODE = -7

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---No direction
DI_NODIR = -1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---East
DI_EAST = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Northeast
DI_NORTHEAST = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---North
DI_NORTH = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Northwest
DI_NORTHWEST = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---West
DI_WEST = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Southwest
DI_SOUTHWEST = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---South
DI_SOUTH = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Southeast
DI_SOUTHEAST = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Total number of directions
NUMDIRS = 8

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Damage dealt by liquids
DMG_WATER = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Damage dealt by fire objects and sectors
DMG_FIRE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Damage dealt by electricity
DMG_ELECTRIC = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Damage dealt by spikes
DMG_SPIKE = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Damage dealt by the bomb shield
DMG_NUKE = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Death
DMG_INSTAKILL = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Death dealt by drowning (in liquids)
DMG_DROWNED = 129
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Death dealt by drowning (in space)
DMG_SPACEDROWN = 130
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Death dealt by pits
DMG_DEATHPIT = 131
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Death dealt by being crushed
DMG_CRUSHED = 132
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Death dealt to spectators (Other damage types do not kill spectators)
DMG_SPECTATOR = 133
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Flag - Whether the source is able to damage itself or their team
DMG_CANHURTSELF = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Flag - Whether this damage type is a death type
DMG_DEATHMASK = 128

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is playing
PST_LIVE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is dead and waiting to respawn
PST_DEAD = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player just respawned after being dead
PST_REBORN = 2

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_spin` replacement sound
SKSSPIN = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_putput` replacement sound
SKSPUTPUT = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_pudpud` replacement sound
SKSPUDPUD = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altow1` replacement sound
SKSPLPAN1 = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altow2` replacement sound
SKSPLPAN2 = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altow3` replacement sound
SKSPLPAN3 = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altow4` replacement sound
SKSPLPAN4 = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altdi1` replacement sound
SKSPLDET1 = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altdi2` replacement sound
SKSPLDET2 = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altdi3` replacement sound
SKSPLDET3 = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_altdi4` replacement sound
SKSPLDET4 = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_victr1` replacement sound
SKSPLVCT1 = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_victr2` replacement sound
SKSPLVCT2 = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_victr3` replacement sound
SKSPLVCT3 = 13
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_victr4` replacement sound
SKSPLVCT4 = 14
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_thok` replacement sound
SKSTHOK = 15
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_spndsh` replacement sound
SKSSPNDSH = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_zoom` replacement sound
SKSZOOM = 17
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_skid` replacement sound
SKSSKID = 18
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_gasp` replacement sound
SKSGASP = 19
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---`sfx_jump` replacement sound
SKSJUMP = 20

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Enables third-person [camera](https://wiki.srb2.org/wiki/camera) flipping in [reverse gravity](https://wiki.srb2.org/wiki/reverse_gravity) (controlled by the console variable [flipcam](https://wiki.srb2.org/wiki/Console/Variables#flipcam)).
PF_FLIPCAM = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is using [analog control](https://wiki.srb2.org/wiki/analog_control).
PF_ANALOGMODE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has the Character Angle option set to "Movement".
PF_DIRECTIONCHAR = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has Automatic Braking enabled.
PF_AUTOBRAKE = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The [player](https://wiki.srb2.org/wiki/player) is invincible to everything, including instant kill hazards like bottomless pits and crushers (controlled by the console command [god](https://wiki.srb2.org/wiki/Console/Commands#god)).
PF_GODMODE = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Turns off the player's collision, allowing them to walk through solid walls, as well as immediately move on top of raised ground regardless of height (controlled by the console command [noclip](https://wiki.srb2.org/wiki/Console/Commands#noclip)).
PF_NOCLIP = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Prevents enemies and bosses from noticing the player, except after the player has attacked them (controlled by the console command [notarget](https://wiki.srb2.org/wiki/Console/Commands#notarget)).
PF_INVIS = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The Ring Toss [control](https://wiki.srb2.org/wiki/controls) button was pressed the previous tic.
PF_ATTACKDOWN = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The Spin [control](https://wiki.srb2.org/wiki/controls) button was pressed the previous tic.
PF_SPINDOWN = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The Jump [control](https://wiki.srb2.org/wiki/controls) button was pressed the previous tic.
PF_JUMPDOWN = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The Next Weapon or Prev Weapon [control](https://wiki.srb2.org/wiki/controls) buttons were pressed the previous tic.
PF_WPNDOWN = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is not allowed to move, except for jumping. This flag can be given if the player has a value set for `pw_nocontrol`, or the player has `PF_GLIDING` and is skidding; otherwise, the flag will automatically be removed the following tic.
PF_STASIS = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is not allowed to jump. This flag can be given if the 16th bit (`1<<15`) of `pw_nocontrol` is set, or the player has `PF_GLIDING` and is skidding; otherwise, the flag will automatically be removed the following tic.
PF_JUMPSTASIS = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is not allowed to move or jump (`PF_STASIS` and `PF_JUMPSTASIS` combined). This flag can be given if the player has a value set for `pw_nocontrol`, or the player has `PF_GLIDING` and is skidding; otherwise, the flag will automatically be removed the following tic.
PF_FULLSTASIS = 6144
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is slowing down due to automatic braking.
PF_APPLYAUTOBRAKE = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has started a jump and not yet cut their upwards momentum in half by releasing the jump button.
PF_STARTJUMP = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is jumping.
PF_JUMPED = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player's jump will not damage enemies.
PF_NOJUMPDAMAGE = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is spinning.
PF_SPINNING = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is charging up their spindash.
PF_STARTDASH = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has used their character's ability.
PF_THOKKED = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has used their Shield ability.
PF_SHIELDABILITY = 1048576
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is gliding.
PF_GLIDING = 2097152
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is tail-bouncing.
PF_BOUNCING = 4194304
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is in a slide, e.g., [Deep Sea Zone](https://wiki.srb2.org/wiki/Deep_Sea_Zone)'s waterslides.
PF_SLIDING = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Super Sonic is being transferred to the next [axis](https://wiki.srb2.org/wiki/axis).
PF_TRANSFERTOCLOSEST = 16777216
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Super Sonic is drilling.
PF_DRILLING = 33554432
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has received a Time Over in [Race](https://wiki.srb2.org/wiki/Race) mode, or is has been tagged in [Hide & Seek](https://wiki.srb2.org/wiki/Hide_&_Seek) mode.
PF_GAMETYPEOVER = 67108864
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player is "it" in [Tag](https://wiki.srb2.org/wiki/Tag) mode.
PF_TAGIT = 134217728
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Forces the turn left/right [controls](https://wiki.srb2.org/wiki/controls) to become strafing controls. Reserved for [Lua](https://wiki.srb2.org/wiki/Lua) scripting purposes.
PF_FORCESTRAFE = 268435456
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player can carry another player as Tails with their flight.
PF_CANCARRY = 536870912
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The player has finished the level. Separate from `exiting`, as it's for cases where players can move around while waiting for others to finish the level.
PF_FINISHED = 1073741824

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Animations that do not fit into the below
PA_ETC = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Idle animations (standing, waiting)
PA_IDLE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Edge teetering animation
PA_EDGE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Walking animations
PA_WALK = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Running animations
PA_RUN = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Dash Mode animation
PA_DASH = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Pain animations
PA_PAIN = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Rolling animations
PA_ROLL = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Jumping animation
PA_JUMP = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Spring up animation
PA_SPRING = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Falling animations
PA_FALL = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Character-specific main ability animations
PA_ABILITY = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Character-specific secondary ability animations
PA_ABILITY2 = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Riding/carried animation
PA_RIDE = 13

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Weapon slot buttons. When checking `(player.cmd.buttons & BT_WEAPONMASK)`, returns the value of the weapon slot button pressed, from 1 to 7.
BT_WEAPONMASK = 15
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Next Weapon
BT_WEAPONNEXT = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Previous Weapon
BT_WEAPONPREV = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Ring Toss
BT_ATTACK = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Spin
BT_SPIN = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Rotate Camera L
BT_CAMLEFT = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Rotate Camera R
BT_CAMRIGHT = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Toss Flag
BT_TOSSFLAG = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Jump
BT_JUMP = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Ring Toss Normal
BT_FIRENORMAL = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom Action 1
BT_CUSTOM1 = 8196
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom Action 2
BT_CUSTOM2 = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom Action 3
BT_CUSTOM3 = 32768

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 1 (Left Click)
MB_BUTTON1 = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 2 (Right Click)
MB_BUTTON2 = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 3 (Middle Click)
MB_BUTTON3 = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 4
MB_BUTTON4 = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 5
MB_BUTTON5 = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 6
MB_BUTTON6 = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 7
MB_BUTTON7 = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mouse Button 8
MB_BUTTON8 = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Scroll Up
MB_SCROLLUP = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Scroll Down
MB_SCROLLDOWN = 512

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Automatic Ring](https://wiki.srb2.org/wiki/Automatic_Ring)
WEP_AUTO = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring)
WEP_BOUNCE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring)
WEP_SCATTER = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring)
WEP_GRENADE = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring)
WEP_EXPLODE = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring)
WEP_RAIL = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Total number of weapons
NUM_WEAPONS = 7

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Automatic Ring](https://wiki.srb2.org/wiki/Automatic_Ring)
RW_AUTO = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring)
RW_BOUNCE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring)
RW_SCATTER = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring)
RW_GRENADE = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring)
RW_EXPLODE = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring)
RW_RAIL = 32

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player is carrying the [red CTF flag](https://wiki.srb2.org/wiki/CTF_Red_Flag)
GF_REDFLAG = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player is carrying the [blue CTF flag](https://wiki.srb2.org/wiki/CTF_Blue_Flag)
GF_BLUEFLAG = 2

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Single Player](https://wiki.srb2.org/wiki/Single_Player)
TOL_SP = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Co-op](https://wiki.srb2.org/wiki/Co-op)
TOL_COOP = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Competition](https://wiki.srb2.org/wiki/Competition)
TOL_COMPETITION = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Race](https://wiki.srb2.org/wiki/Race)
TOL_RACE = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Match](https://wiki.srb2.org/wiki/Match)
TOL_MATCH = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Tag](https://wiki.srb2.org/wiki/Tag)
TOL_TAG = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Capture the Flag](https://wiki.srb2.org/wiki/Capture_the_Flag)
TOL_CTF = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom (Lua-scripted, etc.)
TOL_CUSTOM = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[2D](https://wiki.srb2.org/wiki/2D)
TOL_2D = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Mario](https://wiki.srb2.org/wiki/Mario)
TOL_MARIO = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[NiGHTS](https://wiki.srb2.org/wiki/NiGHTS)
TOL_NIGHTS = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---ERZ3
TOL_ERZ3 = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Christmas NiGHTS](https://wiki.srb2.org/wiki/Christmas_NiGHTS)
TOL_XMAS = 4096

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Single Player](https://wiki.srb2.org/wiki/Single_Player)/[Co-op](https://wiki.srb2.org/wiki/Co-op)
GT_COOP = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Competition](https://wiki.srb2.org/wiki/Competition)
GT_COMPETITION = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Race](https://wiki.srb2.org/wiki/Race)
GT_RACE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Match](https://wiki.srb2.org/wiki/Match)
GT_MATCH = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Team Match](https://wiki.srb2.org/wiki/Team_Match)
GT_TEAMMATCH = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Tag](https://wiki.srb2.org/wiki/Tag)
GT_TAG = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Hide & Seek](https://wiki.srb2.org/wiki/Hide_&_Seek)
GT_HIDEANDSEEK = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Capture the Flag](https://wiki.srb2.org/wiki/Capture_the_Flag)
GT_CTF = 7

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Marathon Mode Run in Progress
MA_RUNNING = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Marathon Mode Run Startup
MA_INIT = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Disables Cutscenes for Marathon Mode
MA_NOCUTSCENES = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player in Marathon Mode Run
MA_INGAME = 8

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---F grade
GRADE_F = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---E grade
GRADE_E = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---D grade
GRADE_D = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---C grade
GRADE_C = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---B grade
GRADE_B = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---A grade
GRADE_A = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Rainbow A grade
GRADE_S = 6

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Slope physics are disabled for this [slope](https://wiki.srb2.org/wiki/slope).
SL_NOPHYSICS = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Slope is dynamic and can be moved during level runtime.
SL_DYNAMIC = 2

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Test against lines for collision.
POF_CLIPLINES = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Test against tops and bottoms for collision.
POF_CLIPPLANES = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Clips things.
POF_SOLID = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Test line collision with heights.
POF_TESTHEIGHT = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Renders the sides.
POF_RENDERSIDES = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Renders the top.
POF_RENDERTOP = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Renders the bottom.
POF_RENDERBOTTOM = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Renders top and bottom.
POF_RENDERPLANES = 48
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Renders everything.
POF_RENDERALL = 56
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Inverts collision (like a cage).
POF_INVERT = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Render inside planes.
POF_INVERTPLANES = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Only render inside planes.
POF_INVERTPLANESONLY = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Pushables will stop movement.
POF_PUSHABLESTOP = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---This PO triggers a linedef executor.
POF_LDEXEC = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Only use the first side of the linedef.
POF_ONESIDE = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Don't apply sector specials.
POF_NOSPECIALS = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Use splat flat renderer (treat cyan pixels as invisible).
POF_SPLAT = 8192

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is on the outer space, lack of oxygen.
SSF_OUTERSPACE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is a ramp sector, doubling the step up/down size.
SSF_DOUBLESTEPUP = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is a non-ramp sector, negating any step up/down.
SSF_NOSTEPDOWN = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector has a wind current.
SSF_WINDCURRENT = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is a convellor belt.
SSF_CONVEYOR = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is a speed pad.
SSF_SPEEDPAD = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector activates any starpost inside.
SSF_STARPOSTACTIVATOR = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is marked as the end of the level.
SSF_EXIT = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is a special stage's pit, causing players fail the stage.
SSF_SPECIALSTAGEPIT = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector returns instantly any Capture The Flag's flag to their respective base.
SSF_RETURNFLAG = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is marked as part of Red Team's base.
SSF_REDTEAMBASE = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is marked as part of Blue Team's base.
SSF_BLUETEAMBASE = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector behaves like a fan, pushes players upwards.
SSF_FAN = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector automatically transforms any player to their super form, requires having all 7 Chaos Emeralds.
SSF_SUPERTRANSFORM = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector forces any players to spin.
SSF_FORCESPIN = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is marked as the start of a zoom tube.
SSF_ZOOMTUBESTART = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is marked as the end of a zoom tube.
SSF_ZOOMTUBEEND = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is marked as the Finish Line for Race/Circuit
SSF_FINISHLINE = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector behaves like a Rope Hang like on ACZ and ERZ.
SSF_ROPEHANG = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector flips the gravity of any players that jumps.
SSF_JUMPFLIP = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector makes reverse gravity temporary.
SSF_GRAVITYOVERRIDE = 1048576
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector has slope physics disabled on the floor.
SSF_NOPHYSICSFLOOR = 2097152
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector has slope physics disabled on the ceiling.
SSF_NOPHYSICSCEILING = 4194304

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector triggers linedef executor via touching its floor plane.
MSF_FLIPSPECIAL_FLOOR = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector triggers linedef executor via touching its ceiling plane.
MSF_FLIPSPECIAL_CEILING = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector triggers linedef executor via touching both of its planes.
MSF_FLIPSPECIAL_BOTH = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector triggers linedef executor via touching one of its edges.
MSF_TRIGGERSPECIAL_TOUCH = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector triggers linedef executors via bumping with the head.
MSF_TRIGGERSPECIAL_HEADBUMP = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector requires to touch its planes to trigger linedef executors.
MSF_TRIGGERLINE_PLANE = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector allows non-pushable objects to trigger linedef executors.
MSF_TRIGGERLINE_MOBJ = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector inverts precipitation effects going from the floor to the ceiling.
MSF_INVERTPRECIP = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector flips any objects in reverse gravity.
MSF_GRAVITYFLIP = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector produces a heatwave effect.
MSF_HEATWAVE = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The sector is intangible to the camera.
MSF_NOCLIPCAMERA = 1024

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---No type of damage applied.
SD_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Generic type of damage.
SD_GENERIC = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Acid type of damage.
SD_WATER = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Fire type of damage.
SD_FIRE = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Lava type of damage
SD_LAVA = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Electrical type of damage.
SD_ELECTRIC = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Spike type of damage.
SD_SPIKE = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Instakills like a death pit, the camera tilts to focus the pit.
SD_DEATHPITTILT = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Instakills like a death pit, except the camera doesn't tilts to focus the pit.
SD_DEATHPITNOTILT = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Instakills totally even with invulnerability, and even if not touching the sector's floor/ceiling.
SD_INSTAKILL = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Old special stage damage, doesn't kills, only removes shield (if any) and knockbacks, and removes 5 seconds on the timer.
SD_SPECIALSTAGE = 10

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Emblem of the NiGHTS track, required to be pulled.
GE_NIGHTSPULL = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Emblem on the NiGHTS track, acts like a NiGHTS's item.
GE_NIGHTSITEM = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Requires to have all the 7 Chaos Emeralds to be collected.
ME_ALLEMERALDS = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Requires to be played on Ultimate Mode to be collected.
ME_ULTIMATE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Requires a Perfect Bonus to be collected.
ME_PERFECT = 4

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Null state
JT_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Other state
JT_OTHER = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Main level music
JT_MASTER = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Extra life
JT_1UP = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Speed shoes
JT_SHOES = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Invincibility
JT_INV = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Mario Invincibility
JT_MINV = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Drowning
JT_DROWN = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Super Sonic
JT_SUPER = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Game Over
JT_GOVER = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Time Out (10 seconds)
JT_NIGHTSTIMEOUT = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Special Stage Time Out (10 seconds)
JT_SSTIMEOUT = 11

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The [console variable's](https://wiki.srb2.org/wiki/Console/Variables) value is saved to [config.cfg](https://wiki.srb2.org/wiki/config.cfg) when changed. Currently does not really work for custom Lua-defined console variables because they are erased from [config.cfg](https://wiki.srb2.org/wiki/config.cfg) if they are not defined (i.e., if the script that defines them is not loaded) when the game is launched.
CV_SAVE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---A function is called when the variable is changed.
CV_CALL = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable is synchronized for everyone in netgames; only the server or admin can modify it.
CV_NETVAR = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---If a function is called when the variable is changed (`CV_CALL`), the function is not called when the variable is first registered.
CV_NOINIT = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable takes floating-point values, i.e., non-whole numbers such as 0.5 and 0.45 are accepted. These are then converted to a fixed-point integer value (e.g.: "0.5" becomes `FRACUNIT/2`).
CV_FLOAT = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable cannot be changed in netgames.
CV_NOTINNET = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---This flag is set when the variable is modified.
CV_MODIFIED = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The console displays a message when the variable is modified.
CV_SHOWMODIF = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The console displays a message when the variable is modified, but only once.
CV_SHOWMODIFONETIME = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable is not shown in the list generated by the [help](https://wiki.srb2.org/wiki/Console/Commands#help) console command.
CV_NOSHOWHELP = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable is not accessible by the console.
CV_HIDDEN = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable is not accessible by the console.
CV_HIDEN = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable is a cheat, and can be reset to its default value by using [cheats](https://wiki.srb2.org/wiki/Console/Commands#cheats) off in the console.
CV_CHEAT = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The variable can be set from Lua. Custom Lua-defined console variables will automatically have this flag set.
CV_ALLOWLUA = 4096

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The command is only available to server hosts or administrators.
COM_ADMIN = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The command is only available in [Splitscreen](https://wiki.srb2.org/wiki/Multiplayer#Two-player_mode) mode.
COM_SPLITSCREEN = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---The command is not synchronised over the network, and should only affect the client who executed the command.
COM_LOCAL = 4

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Kicked intentionally by the server or an admin
KR_KICK = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Broke ping limit
KR_PINGLIMIT = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Synch failure
KR_SYNCH = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Connection timeout
KR_TIMEOUT = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player was banned from the server
KR_BAN = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player quit
KR_LEAVE = 6

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---None, Game Load
GS_NULL = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Gameplay
GS_LEVEL = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Intermission screen
GS_INTERMISSION = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Continue screen
GS_CONTINUING = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Title screen
GS_TITLESCREEN = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Record Attack/NiGHTS Mode menu
GS_TIMEATTACK = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Credits
GS_CREDITS = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Singleplayer/Marathon Run evaluation screen
GS_EVALUATION = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Game End Screen
GS_GAMEEND = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Intro cutscene
GS_INTRO = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Ending
GS_ENDING = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---[Cutscene](https://wiki.srb2.org/wiki/Cutscene)
GS_CUTSCENE = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Dedicated server
GS_DEDICATEDSERVER = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Waiting For Players in Multiplayer
GS_WAITINGPLAYERS = 13

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Unmapped
GC_NULL = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Move Forward
GC_FORWARD = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Move Backward
GC_BACKWARD = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Move Left
GC_STRAFELEFT = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Move Right
GC_STRAFERIGHT = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Look Left
GC_TURNLEFT = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Look Right
GC_TURNRIGHT = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Next Weapon
GC_WEAPONNEXT = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Prev Weapon
GC_WEAPONPREV = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Normal/Infinity
GC_WEPSLOT1 = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Automatic
GC_WEPSLOT2 = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Bounce
GC_WEPSLOT3 = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Scatter
GC_WEPSLOT4 = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Grenade
GC_WEPSLOT5 = 13
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Explosion
GC_WEPSLOT6 = 14
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Rail
GC_WEPSLOT7 = 15
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Weapon Slot 8
GC_WEPSLOT8 = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Weapon Slot 9
GC_WEPSLOT9 = 17
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Weapon Slot 10
GC_WEPSLOT10 = 18
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Fire
GC_FIRE = 19
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Fire Normal
GC_FIRENORMAL = 20
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Toss Flag
GC_TOSSFLAG = 21
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Spin
GC_SPIN = 22
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Toggle Third-Person
GC_CAMTOGGLE = 23
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Reset Camera
GC_CAMRESET = 24
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Look Up
GC_LOOKUP = 25
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Look Down
GC_LOOKDOWN = 26
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Center View
GC_CENTERVIEW = 27
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Toggle Mouselook
GC_MOUSEAIMING = 28
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Talk
GC_TALKKEY = 29
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Talk (Team only)
GC_TEAMKEY = 30
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Game Status
GC_SCORES = 31
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Jump
GC_JUMP = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Console
GC_CONSOLE = 33
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Pause/Run Retry
GC_PAUSE = 34
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Open/Close Menu (ESC)
GC_SYSTEMMENU = 35
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Screenshot
GC_SCREENSHOT = 36
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Toggle GIF Recording
GC_RECORDGIF = 37
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Change to Next Viewpoint
GC_VIEWPOINTNEXT = 38
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Change to Previous Viewpoint
GC_VIEWPOINTPREV = 39
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom Action 1
GC_CUSTOM1 = 40
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom Action 2
GC_CUSTOM2 = 41
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Custom Action 3
GC_CUSTOM3 = 42
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Total number of game controls
NUM_GAMECONTROLS = 43

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Null axis
JA_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Turn axis
JA_TURN = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Move axis
JA_MOVE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Vertical look axis
JA_LOOK = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Side-step axis
JA_STRAFE = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---All axes below are digital rather than analog.
JA_DIGITAL = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Jump axis
JA_JUMP = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Spin axis
JA_SPIN = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Fire axis
JA_FIRE = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Normal fire axis
JA_FIRENORMAL = 8

---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Not in-menu.
MN_NONE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Main menu.
MN_MAIN = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Singleplayer.
MN_SP_MAIN = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---New GameLoad Game.
MN_SP_LOAD = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Character Select.
MN_SP_PLAYER = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Level Select.
MN_SP_LEVELSELECT = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Level Stadistics.
MN_SP_LEVELSTATS = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Time Attack.
MN_SP_TIMEATTACK = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Time Attack's Level Select.
MN_SP_TIMEATTACK_LEVELSELECT = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Time Attack's Guest Replay.
MN_SP_GUESTREPLAY = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Time Attack's Replay.
MN_SP_REPLAY = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Time Attack' Ghost Replay.
MN_SP_GHOST = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Attack.
MN_SP_NIGHTSATTACK = 13
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Attack's Level Select.
MN_SP_NIGHTS_LEVELSELECT = 14
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Attack's Guest Replay.
MN_SP_NIGHTS_GUESTREPLAY = 15
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Attack's Replay.
MN_SP_NIGHTS_REPLAY = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---NiGHTS Attack's Ghost Replay..
MN_SP_NIGHTS_GHOST = 17
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Multiplayer.
MN_MP_MAIN = 18
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Play Splitscreen game
MN_MP_SPLITSCREEN = 19
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Host Game
MN_MP_SERVER = 20
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Join Game
MN_MP_CONNECT = 21
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Master Server room selection
MN_MP_ROOM = 22
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player Setup
MN_MP_PLAYERSETUP = 23
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Host Game's Server options.
MN_MP_SERVER_OPTIONS = 24
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Options.
MN_OP_MAIN = 25
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 1 controls.
MN_OP_P1CONTROLS = 26
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Change controls.
MN_OP_CHANGECONTROLS = 27
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 1 mouse.
MN_OP_P1MOUSE = 28
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 1 joystick/controller.
MN_OP_P1JOYSTICK = 29
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Joystick/Controller selection.
MN_OP_JOYSTICKSET = 30
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 1 camera.
MN_OP_P1CAMERA = 31
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 2 controls.
MN_OP_P2CONTROLS = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 2 mouse.
MN_OP_P2MOUSE = 33
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 2 joystick.
MN_OP_P2JOYSTICK = 34
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Player 2 camera.
MN_OP_P2CAMERA = 35
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Select playstyle.
MN_OP_PLAYSTYLE = 36
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Video Options.
MN_OP_VIDEO = 37
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Video Mode selection.
MN_OP_VIDEOMODE = 38
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Color Options.
MN_OP_COLOR = 39
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---OpenGL Options.
MN_OP_OPENGL = 40
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---OpenGL Coronas Lighting options?
MN_OP_OPENGL_LIGHTING = 41
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sound Options.
MN_OP_SOUND = 42
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Server Options.
MN_OP_SERVER = 43
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Gameplay Monitor Toggles.
MN_OP_MONITORTOGGLE = 44
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Data Options.
MN_OP_DATA = 45
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Addons Options.
MN_OP_ADDONS = 46
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Screenshots Options.
MN_OP_SCREENSHOTS = 47
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Delete Data.
MN_OP_ERASEDATA = 48
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Extras Menu.
MN_SR_MAIN = 49
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Pandora's Box.
MN_SR_PANDORA = 50
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Secret Level Select.
MN_SR_LEVELSELECT = 51
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Unlockables Checklist
MN_SR_UNLOCKCHECKLIST = 52
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Emblem Hints.
MN_SR_EMBLEMHINT = 53
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Character Select from Secret Level Select.
MN_SR_PLAYER = 54
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Sound Test.
MN_SR_SOUNDTEST = 55
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Addons.
MN_AD_MAIN = 56
---**[View on wiki](https://wiki.srb2.org/wiki/Constants)**
---
---Misc.
MN_SPECIAL = 57

---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---When an Object with this flag is touched by the player, the function `P_TouchSpecialThing` is called to determine what should happen with the Object and/or the player. Objects that interact with the player in some way upon being touched, such as enemies, hazards or collectible items, should have this flag. Objects with `MF_ENEMY`, `MF_BOSS` and/or `MF_FIRE` in particular require this flag to be able to damage the player on touch or be damaged by the player on touch. If there is no existing behavior set, touching the Object will by default kill the Object (sending it to its `DeathState`) and play its `DeathSound`. [Lua](https://wiki.srb2.org/wiki/Lua) is capable of modifying the effect of this flag for particular Object types, using the [TouchSpecial](https://wiki.srb2.org/wiki/Lua/Hooks#TouchSpecial) Lua hook.
MF_SPECIAL = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This makes the Object solid, and it will act as such to the player.
MF_SOLID = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object can be damaged. Combined with `MF_SOLID`, this makes it vulnerable to missiles, but not normal attacks.
MF_SHOOTABLE = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Removes the Object from the sector links, making it invisible. Don't change this flag during runtime. To make something invisible during the game, use `MF2_DONTDRAW` or set the [sprite](https://wiki.srb2.org/wiki/sprite) to `SPR_NULL`.
MF_NOSECTOR = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Removes the Object from the [blockmap](https://wiki.srb2.org/wiki/blockmap), making it intangible. Just like `MF_NOSECTOR` though, don't change this flag during runtime - use `MF_NOCLIP` instead.
MF_NOBLOCKMAP = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object's hitbox will be treated as a line instead of a box, lining up with the appearance of [state](https://wiki.srb2.org/wiki/state)s with the `FF_PAPERSPRITE` flag.
MF_PAPERCOLLISION = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a pushable, and as such can be pushed by players and other pushables. See the [Pushable](https://wiki.srb2.org/wiki/Pushable) article for further details.
MF_PUSHABLE = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a boss and will use a boss thinker. See the [Boss](https://wiki.srb2.org/wiki/Boss) article for further details.
MF_BOSS = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object spawns on the ceiling rather than the floor, unless the Flip flag is checked on the Object's map Thing.
MF_SPAWNCEILING = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is unaffected by gravity and will keep its height unless moved by something else.
MF_NOGRAVITY = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is an ambient sound effect. The Object's `SeeSound` is constantly played. `SpawnHealth` sets the interval between each time `SeeSound` is played. See the [Ambient sound effect](https://wiki.srb2.org/wiki/Ambient_sound_effect) article for further details.
MF_AMBIENT = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object will slide along walls when colliding with them.
MF_SLIDEME = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is intangible and will go through walls and other Objects. When [noclip](https://wiki.srb2.org/wiki/Console/Commands#noclip) is turned on, the player will be given this flag.
MF_NOCLIP = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object will automatically floats up or down to the height of its target, unless `MF2_INFLOAT` or `MF2_SKULLFLY` are set. This is most commonly used by flying or underwater enemies and bosses that need to chase the player vertically. `MF_NOGRAVITY` has to be checked for this to work as intended. The Object will move up/down at a fixed speed of 4 fracunits/tic. Note that the [Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile)'s floating behavior and speed works differently to that of other Objects that use this flag.
MF_FLOAT = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a monitor icon and will float upwards upon being spawned. `Damage` sets how high the Object will rise before disappearing, and `Speed` sets how fast it will rise.
MF_BOXICON = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a projectile of some sort. See the [Projectile](https://wiki.srb2.org/wiki/Projectile) article for further details.
MF_MISSILE = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a spring and will be treated as such when touched. See the [Spring](https://wiki.srb2.org/wiki/Spring) article for further details.
MF_SPRING = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object will bounce off walls and other Objects, playing its `ActiveSound` whenever this happens.
MF_BOUNCE = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a monitor; it will be popped when hit by a normal attack from the player and award a power. If the Object falls on a player, the player will be crushed and die - in multiplayer, a player is awarded points if they manage to pop the monitor Object before it falls on another player. See the [Monitor](https://wiki.srb2.org/wiki/Monitor) article for further details.
MF_MONITOR = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object has no AI. Use this to save CPU power for static scenery Objects. Objects with this flag will not animate and cannot use any [actions](https://wiki.srb2.org/wiki/actions).
---
---*Note: Objects that spawned with this flag in their spawn flags will never receive a thinker, no matter if you removed the flag after being spawned and/or use a MobjThinker hook as it will do nothing.
---And it becomes not synched in netgames, making it client-side entirely.*
MF_NOTHINK = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is flaming; it will hurt players without an [Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield) (provided `MF_SPECIAL` or `MF_PAIN` is also checked) and vanish when it touches water.
MF_FIRE = 1048576
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is not restricted to the top and bottom heights of the sector it is in, and can go into the floor or ceiling.
MF_NOCLIPHEIGHT = 2097152
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is an enemy; provided it has `MF_SPECIAL` also checked it can hurt the player on touch, can be killed by various means, and gives the player who killed it 100 points. See the [Enemy](https://wiki.srb2.org/wiki/Enemy) article for further details.
MF_ENEMY = 4194304
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is a scenery item and will use a reduced thinker, taking up less CPU power than a regular Object would.
MF_SCENERY = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object hurts players on contact. This effect will override any extra effects on touch from flags such as `MF_SPECIAL`.
MF_PAIN = 16777216
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object will stick to any surface or solid Object it touches.
MF_STICKY = 33554432
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Used by [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) power-up items. When the Object is paralooped, it goes into its `SeeState` and adds the `MF_SPECIAL` flag, allowing the player to collect it. See the [NiGHTS power-up](https://wiki.srb2.org/wiki/NiGHTS_power-up) article for further details.
MF_NIGHTSITEM = 67108864
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is partially intangible, it will pass through other Objects, but not walls. This is used for the [flickies](https://wiki.srb2.org/wiki/flickies) that are released from destroyed enemies, for example. Objects with the `MF_MISSILE` flag use this for an extra purpose: When a missile explodes, this flag is set to indicate that is has exploded and prevent it from exploding again.
MF_NOCLIPTHING = 134217728
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Used by grenade-like projectiles, such as the [Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring), to be used with `MF_MISSILE`. Instead of exploding on collision with the floor, it will bounce off it instead. `ActiveSound` is played for every collision.
MF_GRENADEBOUNCE = 268435456
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---When an Object is spawned and its `SpawnState` has an action, the action will normally not be performed. If this flag is set, the action will be performed. Note that some actions rely on information that is not yet available when the Object is still being spawned, such as the Object's target or tracer. These actions may crash the game when performed on spawn, so use caution with this flag.
MF_RUNSPAWNFUNC = 536870912

---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is automatically set for the NiGHTS [Axis](https://wiki.srb2.org/wiki/Axis), [Axis Transfer](https://wiki.srb2.org/wiki/Axis_Transfer) and [Axis Transfer Line](https://wiki.srb2.org/wiki/Axis_Transfer_Line). It is used internally to make it more convenient to check if an Object is one of those three.
MF2_AXIS = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to Objects if they are in [2D mode](https://wiki.srb2.org/wiki/2D_mode) or are supposed to behave as such. In general this prevents movement along the y-axis, with exceptions such as being propelled by [spring](https://wiki.srb2.org/wiki/spring)s. Can be given to/removed from players through [linedef type 432](https://wiki.srb2.org/wiki/linedef_type_432).
MF2_TWOD = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object does not respawn. Given to any rings, ammo and panels dropped by players who have been hit. This does not do anything for most Objects otherwise.
MF2_DONTRESPAWN = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object does not generate a visible sprite. Frequently used for sprite flickering effects, such as when a player is recovering from being hit, usually by turning on and off this flag every other tic.
MF2_DONTDRAW = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to thrown [Automatic Ring](https://wiki.srb2.org/wiki/Automatic_Ring)s to identify them as such.
MF2_AUTOMATIC = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to thrown [Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring)s to identify them as such. This does not in fact allow Objects to instantanously fly across the map as with Rail Rings themselves, unless when fired by a player specifically. For players that have just been hit by an Object with this flag, they will have a greatly increased knockback speed (45 FU/tic); combined with `MF2_EXPLOSION` however, this is slightly decreased to 38 FU/tic. Overridden by the knockback effect of `MF2_SCATTER`.
MF2_RAILRING = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to thrown [Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring)s to identify them as such.
MF2_BOUNCERING = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to thrown [Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring)s and [Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring)s to identify them as such. For players that have just been hit by an Object with this flag, they will have a greatly increased knockback speed (30 FU/tic); combined with `MF2_RAILRING` this is further increased to 38 FU/tic. Overridden by the knockback effect of `MF2_SCATTER`.
MF2_EXPLOSION = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to thrown [Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring)s to identify them as such. For players that have just been hit by an Object with this flag, their knockback speed will depend on how far away the Object has moved from the Object that fired it if one exists; players very close to the firer will receive a massive knockback speed up to 128 FU/tic maximum, players far away meanwhile will receive a much smaller knockback (minimum is 4 FU/tic, the normal knockback speed).
MF2_SCATTER = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to projectiles when the player who threw them has since died and respawned.
MF2_BEYONDTHEGRAVE = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object slides after being pushed. `MF_SOLID` and `MF_PUSHABLE` have to be checked for this to work. The maximum speed at which an Object with this flag can slide is set by its `Speed` value. Also used by flung emeralds in Match/CTF to prevent them from being collected if they are moving upwards.
MF2_SLIDEPUSH = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---If the Object is falling, it will stop all horizontal movement and drop straight down. This flag is given to pushables whose map Things have both the Special and Ambush flag checked. Also used by [Metal Sonic (Battle)](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) to trigger the boss's "spinning out" phase.
MF2_CLASSICPUSH = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Inverts the conditions for this Object to be able to be targeted by [A_LookForEnemies](https://wiki.srb2.org/wiki/A_LookForEnemies), for mechanics such as Fang's pop gun. Objects with the `MF_SHOOTABLE` flag and at least one of `MF_ENEMY`, `MF_BOSS`, and/or `MF_MONITOR` normally are the only targets, but this flag will disallow those objects & allow others.
MF2_INVERTAIMABLE = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---If an Object has the `MF_FLOAT` flag set, it automatically floats to the height of its target. If it shouldn't do that, this flag is used. This flag is automatically given and removed during use of [A_Chase](https://wiki.srb2.org/wiki/A_Chase)-style actions, when the actor Object's movement is blocked and the actor has to concentrate on adjusting its height to get past a blocking wall.
MF2_INFLOAT = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Exploded [Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring)s and [Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring)s are given this flag to signify that they have already exploded. Missile Objects with this flag will not play `DeathSound` when exploding.
MF2_DEBRIS = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is used for the item attraction in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS). Spheres, rings and coins that are inside the player's attraction radius are given this flag.
MF2_NIGHTSPULL = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object has just attacked, and cannot attack again immediately. Objects using actions such as [A_Chase](https://wiki.srb2.org/wiki/A_Chase), [A_FaceStabChase](https://wiki.srb2.org/wiki/A_FaceStabChase), [A_SkimChase](https://wiki.srb2.org/wiki/A_SkimChase), [A_Boss1Chase](https://wiki.srb2.org/wiki/A_Boss1Chase) or [A_BrakChase](https://wiki.srb2.org/wiki/A_BrakChase) add this flag when they first attack - when they try to attack again, this flag is removed instead of attacking, and then the process repeats again once they are ready to attack again. CTF flags have this flag set when they are outside their respective bases.
MF2_JUSTATTACKED = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is used signify that an Object is currently firing some type of projectile. Used by the [Turret](https://wiki.srb2.org/wiki/Turret) and the [Flame Jet](https://wiki.srb2.org/wiki/Flame_Jet_(Horizontal))s. [A_TurretFire](https://wiki.srb2.org/wiki/A_TurretFire) and [A_SuperTurretFire](https://wiki.srb2.org/wiki/A_SuperTurretFire) add this flag to the Object, [A_TurretStop](https://wiki.srb2.org/wiki/A_TurretStop) removes it, while [A_ToggleFlameJet](https://wiki.srb2.org/wiki/A_ToggleFlameJet) can do either depending on whether the flag is already set or not.
MF2_FIRING = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Missile Objects with this flag will be able to make even Super players be flung back when collided with; however, it will not make them lose rings as with normal players. Objects with `MF2_FIRING` and this flag will pass on this flag to the missiles they fire.
MF2_SUPERFIRE = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object's sprite is automatically drawn with `tr_trans80` translucency and full brightness, overriding the current state's settings. Set by the [Force Shield](https://wiki.srb2.org/wiki/Force_Shield) when it has only one health point left. Also used in [Single Player](https://wiki.srb2.org/wiki/Single_Player) to make the player translucent when the camera is too close.
MF2_SHADOW = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to [Strong Random Monitor](https://wiki.srb2.org/wiki/Strong_Random_Monitor)s to identify them as such. This flag is also given to Objects with `MF_NIGHTSITEM` whose map Things have the Special flag checked, to mark that the item can only be activated during bonus time.
MF2_STRONGBOX = 1048576
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag forces Objects to have permanently flipped [gravity](https://wiki.srb2.org/wiki/gravity), regardless of the current gravity in the sector (unless the Object is a player). For players however, this can be combined with the [gravity boots](https://wiki.srb2.org/wiki/Gravity_Boots_Monitor) powerup to cancel out the flipped gravity temporarily. Can be given to/removed from players through [linedef type 433](https://wiki.srb2.org/wiki/linedef_type_433), and will be given to any Object whose map Things have the Flip flag checked.
MF2_OBJECTFLIP = 2097152
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is set by the action [A_SkullAttack](https://wiki.srb2.org/wiki/A_SkullAttack) to signify that the Object is currently flying at the player. If the Object is the [Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile) or a custom Object with `MF_BOSS`, ghost trails of the Object will be spawned while this flag is set.
MF2_SKULLFLY = 4194304
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is used to signify that a boss has been hit by the player. Among other things, it makes the boss's outlines flash white and makes it temporarily immune to the player. The [Crawla Commander](https://wiki.srb2.org/wiki/Crawla_Commander) also uses this in a similar fashion.
MF2_FRET = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to bosses whose map Things have the Special flag checked. If the flag is set and [A_BossDeath](https://wiki.srb2.org/wiki/A_BossDeath) is called, no [Egg Capsule](https://wiki.srb2.org/wiki/Egg_Capsule) will appear and the level will end instead. Also given to [spinning maces](https://wiki.srb2.org/wiki/Linedef_type_9) when Special is checked to make them silent.
MF2_BOSSNOTRAP = 16777216
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to bosses who are fleeing to control their movement.
MF2_BOSSFLEE = 33554432
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to bosses who have died but are not necessarily fleeing. While SRB2 itself never makes use of this flag, it can be used in [Lua](https://wiki.srb2.org/wiki/Lua) scripts to identify bosses that have been defeated.
MF2_BOSSDEAD = 67108864
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is used for various purposes, usually to signify an alternate type of behavior for an Object. Its effect depends on the Object's other flags and the actions being used. Checking the Ambush flag on a [Thing](https://wiki.srb2.org/wiki/Thing) will usually activate this flag for the corresponding Object.
MF2_AMBUSH = 134217728
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This Object will be drawn immediately before or after its tracer is drawn, depending on its dispoffset and position, essentially creating multi-sprite Objects that are drawn as a single Object. This is notably used for character followitems, such as Tails' tail overlay and Metal Sonic's jet fume.
MF2_LINKDRAW = 268435456
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This Object's thinker calls P_AddShield and P_ShieldLook. Used for Shield overlay objects. For this flag to work, the `MF_SCENERY` flag also needs applied.
MF2_SHIELD = 536870912
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object will be drawn on a horizontal plane, also called a floor sprite, or a "splat".
MF2_SPLAT = 1073741824

---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given when the Object's "ground" is a solid floor, whether it is the sector's main floor or the top of an FOF/PolyObject. If the Object's ground is instead an Object with `MF_SOLID`, this flag will not be given.
MFE_ONGROUND = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to mark when the Object has just landed on the floor from falling down (or on the ceiling when in flipped [gravity](https://wiki.srb2.org/wiki/gravity)); the flag will subsequently be removed on the next tic afterwards.
MFE_JUSTHITFLOOR = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is "touching" water - i.e. the Object's bottom is below the surface of a water FOF, but the Object's top is still above.
MFE_TOUCHWATER = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is "underwater" - i.e. the Object is submerged at least half its height into a water FOF. For players, this causes the underwater timer to activate, which may result in drowning unless the player escapes or is wearing an [Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield). However, it allows characters with [the Swim ability](https://wiki.srb2.org/wiki/S_SKIN#ability) (`CA_SWIM`) to use their ability while this flag is set.
MFE_UNDERWATER = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to mark when a player has just "stepped" down from a floor to another floor under 24 fracunits below it (the flag is not given for non-player Objects). However, if the [Non-Ramp Sector](https://wiki.srb2.org/wiki/Non-Ramp_Sector) sector special is applied to the sector floor the player is standing in, the player will instead fall down and this flag will not be given.
MFE_JUSTSTEPPEDDOWN = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---This flag is given to mark when the Object's sprites/physics should be vertically flipped. Not to be confused with `MF2_OBJECTFLIP`, which forces this flag on constantly for permanent reverse gravity. See [reverse gravity](https://wiki.srb2.org/wiki/reverse_gravity) for more details on flipping gravity.
MFE_VERTICALFLIP = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object is at least partially submerged in [THZ goop](https://wiki.srb2.org/wiki/Linedef_type_124), so must have THZ goop gravity/physics applied to it.
MFE_GOOWATER = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The mobj is touching a lava block.
MFE_TOUCHLAVA = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object was already pushed this tic.
MFE_PUSHED = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---The Object was already sprung this tic.
MFE_SPRUNG = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Used to tell the game when to apply Z momentum from platforms.
MFE_APPLYPMOMZ = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Compute and trigger on mobj angle relative to tracer. See [Linedef type 457](https://wiki.srb2.org/wiki/Linedef_type_457) (Track mobj angle to point).
MFE_TRACERANGLE = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Forces an object to use super sprites with SPR_PLAY.
MFE_FORCESUPER = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Forces an object to NOT use super sprites with SPR_PLAY.
MFE_FORCENOSUPER = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Object_flags)**
---
---Makes an object use super sprites where they wouldn't have otherwise and vice-versa. Equivalent of combining `MFE_FORCESUPER|MFE_FORCENOSUPER`.
MFE_REVERSESUPER = 12288

---**[View on wiki](https://wiki.srb2.org/wiki/Thing)**
---
---This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. These will usually be labeled in Zone Builder.
MTF_EXTRA = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Thing)**
---
---This flag inverts the Thing's [gravity](https://wiki.srb2.org/wiki/gravity) direction, and also inverts whether the Thing's [Z position](https://wiki.srb2.org/wiki/Thing#Z_position) is measured from the floor or ceiling. For instance, [power-up monitors](https://wiki.srb2.org/wiki/Thing_types#Monitors) will be flipped upside-down and laid on the ceiling instead of the floor, while Things that hang from the ceiling by default (e.g., [chain](https://wiki.srb2.org/wiki/chain)s) will be flipped upside-down but laid on the floor instead of the ceiling.
---
---In most cases, this flag will also give the corresponding [Object](https://wiki.srb2.org/wiki/Object)(s) the [secondary Object flag](https://wiki.srb2.org/wiki/Object_flags#Secondary_Object_flags) `MF2_OBJECTFLIP` when checked. Exceptions to this include the following Thing types:
---* [NiGHTS Bumper](https://wiki.srb2.org/wiki/NiGHTS_Bumper)
---* [Hoop](https://wiki.srb2.org/wiki/Hoop)s (including [customizable hoops](https://wiki.srb2.org/wiki/Hoop_(Customizable)))
---* All [Circles of Rings and/or Blue Spheres](https://wiki.srb2.org/wiki/Circle_of_Rings)
MTF_OBJECTFLIP = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Thing)**
---
---This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. These will usually be labeled in Zone Builder.
MTF_OBJECTSPECIAL = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Thing)**
---
---This is a special flag that has no general effect but is rather used by certain Thing types for turning on extra features or alternative behavior. These will usually be labeled in Zone Builder.
---
---In binary maps, this flag will also give the corresponding [Object](https://wiki.srb2.org/wiki/Object)(s) the [Object flag](https://wiki.srb2.org/wiki/Object_flags#Primary_Object_flags) `MF2_AMBUSH` when checked. Exceptions to this include the following Thing types:
---* [Axis](https://wiki.srb2.org/wiki/Axis), [Axis Transfer](https://wiki.srb2.org/wiki/Axis_Transfer) and [Axis Transfer Line](https://wiki.srb2.org/wiki/Axis_Transfer_Line)
---* [NiGHTS Bumper](https://wiki.srb2.org/wiki/NiGHTS_Bumper)
---* [Star Post](https://wiki.srb2.org/wiki/Star_Post)
---* All [monitor](https://wiki.srb2.org/wiki/monitor)s that cannot turn into [WRM](https://wiki.srb2.org/wiki/WRM)s.
---* [Pushable](https://wiki.srb2.org/wiki/Pushable) Objects if `MTF_OBJECTSPECIAL` is also set.
MTF_AMBUSH = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Thing)**
---
---This flag toggles whether the Thing's Z position is absolute, unaffected by floor or ceiling height. Note that this flag is not available in the binary map format, due to the way it stores a thing's Z position.
MTF_ABSOLUTEZ = 16

---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Empty sprite, for invisible Objects
SPR_NULL = 0
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Thok trail
SPR_THOK = 2
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Player](https://wiki.srb2.org/wiki/Player)
SPR_PLAY = 3
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Crawla (Blue)](https://wiki.srb2.org/wiki/Crawla_(Blue))
SPR_POSS = 4
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Crawla (Red)](https://wiki.srb2.org/wiki/Crawla_(Red))
SPR_SPOS = 5
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Stupid Dumb Unnamed RoboFish](https://wiki.srb2.org/wiki/Stupid_Dumb_Unnamed_RoboFish)
SPR_FISH = 6
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Buzz (Gold)](https://wiki.srb2.org/wiki/Buzz_(Gold))
SPR_BUZZ = 7
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Buzz (Red)](https://wiki.srb2.org/wiki/Buzz_(Red))
SPR_RBUZ = 8
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Jetty-Syn Bomber](https://wiki.srb2.org/wiki/Jetty-Syn_Bomber)
SPR_JETB = 9
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Jetty-Syn Gunner](https://wiki.srb2.org/wiki/Jetty-Syn_Gunner)
SPR_JETG = 10
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Crawla Commander](https://wiki.srb2.org/wiki/Crawla_Commander)
SPR_CCOM = 11
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Deton](https://wiki.srb2.org/wiki/Deton)
SPR_DETN = 12
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Skim](https://wiki.srb2.org/wiki/Skim)
SPR_SKIM = 13
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret)
SPR_TRET = 14
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pop-up Turret](https://wiki.srb2.org/wiki/Pop-up_Turret)
SPR_TURR = 15
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Spincushion](https://wiki.srb2.org/wiki/Spincushion)
SPR_SHRP = 16
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Crushstacean](https://wiki.srb2.org/wiki/Crushstacean)
SPR_CRAB = 17
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Banpyura](https://wiki.srb2.org/wiki/Banpyura)
SPR_CR2B = 18
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Banpyura spring
SPR_CSPR = 19
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Jet Jaw](https://wiki.srb2.org/wiki/Jet_Jaw)
SPR_JJAW = 20
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Snailer](https://wiki.srb2.org/wiki/Snailer)
SPR_SNLR = 21
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bird Aircraft Strike Hazard](https://wiki.srb2.org/wiki/Bird_Aircraft_Strike_Hazard)
SPR_VLTR = 22
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pointy](https://wiki.srb2.org/wiki/Pointy), and its spikeballs
SPR_PNTY = 23
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Robo-Hood](https://wiki.srb2.org/wiki/Robo-Hood)
SPR_ARCH = 24
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Lance-a-Bot](https://wiki.srb2.org/wiki/Lance-a-Bot)
SPR_CBFS = 25
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Lance-a-Bot spear aura
SPR_STAB = 26
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Egg Guard](https://wiki.srb2.org/wiki/Egg_Guard)
SPR_SPSH = 27
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Egg Guard's shield
SPR_ESHI = 28
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Green Snapper](https://wiki.srb2.org/wiki/Green_Snapper)
SPR_GSNP = 29
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Green Snapper leg
SPR_GSNL = 30
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Green Snapper head
SPR_GSNH = 31
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Minus](https://wiki.srb2.org/wiki/Minus)
SPR_MNUS = 32
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Minus dirt
SPR_MNUD = 33
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Spring Shells ([green](https://wiki.srb2.org/wiki/Spring_Shell_(Green)) and [yellow](https://wiki.srb2.org/wiki/Spring_Shell_(Yellow)))
SPR_SSHL = 34
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Unidus](https://wiki.srb2.org/wiki/Unidus), and its spikeballs
SPR_UNID = 35
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Canarivore](https://wiki.srb2.org/wiki/Canarivore)
SPR_CANA = 36
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Canarivore gas
SPR_CANG = 37
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pyre Fly](https://wiki.srb2.org/wiki/Pyre_Fly)
SPR_PYRE = 38
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pterabyte](https://wiki.srb2.org/wiki/Pterabyte_Spawner)
SPR_PTER = 39
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Dragonbomber](https://wiki.srb2.org/wiki/Dragonbomber)
SPR_DRAB = 40
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Boss jet fume
SPR_JETF = 41
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile)
SPR_EGGM = 42
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Egg Mobile laser cannon
SPR_EGLZ = 43
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Egg Slimer](https://wiki.srb2.org/wiki/Egg_Slimer)
SPR_EGGN = 44
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Egg Slimer tanks
SPR_TANK = 45
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Egg Slimer goop
SPR_GOOP = 46
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg)
SPR_EGGO = 47
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Sea Egg bottom
SPR_SEBH = 48
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Sea Egg decoy
SPR_FAKE = 49
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Sea Egg shockwave
SPR_SHCK = 50
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Egg Colosseum](https://wiki.srb2.org/wiki/Egg_Colosseum)
SPR_EGGP = 51
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Egg Colosseum jet flame
SPR_EFIR = 52
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Spectator Eggrobo](https://wiki.srb2.org/wiki/Spectator_Eggrobo)
SPR_EGR1 = 53
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Fang](https://wiki.srb2.org/wiki/Fang_(Boss))
SPR_FANG = 54
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fang broken robots
SPR_BRKN = 55
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fang exclamation mark explosion
SPR_WHAT = 56
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Greyscale Fang teleport hoop
SPR_VWRE = 57
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fang projector light
SPR_PROJ = 58
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fang bomb
SPR_FBOM = 59
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fang sign
SPR_FSGN = 60
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[TNT Barrel](https://wiki.srb2.org/wiki/TNT_Barrel) explosion
SPR_BARX = 61
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---TNT Barrel dust
SPR_BARD = 62
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Placeholder for [Red Volcano Zone](https://wiki.srb2.org/wiki/Red_Volcano_Zone)'s boss
SPR_EGGR = 63
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brak Eggman (Old) goop
SPR_BGOO = 65
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brak Eggman (Old) missile
SPR_BMSL = 66
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Placeholder for [Egg Rock Zone](https://wiki.srb2.org/wiki/Egg_Rock_Zone)'s boss
SPR_EGGT = 67
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brak Eggman electric barrier
SPR_ELEC = 69
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brak Eggman target reticule
SPR_TARG = 70
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brak Eggman napalm bomb (large)
SPR_NPLM = 71
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brak Eggman napalm bomb (small)
SPR_MNPL = 72
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic) ([Race](https://wiki.srb2.org/wiki/Metal_Sonic_(Race)) and [Battle](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)))
SPR_METL = 73
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Metal Sonic shield
SPR_MSCF = 74
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Unused
SPR_MSCB = 75
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Ring](https://wiki.srb2.org/wiki/Ring)
SPR_RING = 76
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---CTF Team Ring ([red](https://wiki.srb2.org/wiki/CTF_Team_Ring_(Red)) and [blue](https://wiki.srb2.org/wiki/CTF_Team_Ring_(Blue)))
SPR_TRNG = 77
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Emerald Token](https://wiki.srb2.org/wiki/Emerald_Token)
SPR_TOKE = 78
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CTF Red Flag](https://wiki.srb2.org/wiki/CTF_Red_Flag)
SPR_RFLG = 79
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CTF Blue Flag](https://wiki.srb2.org/wiki/CTF_Blue_Flag)
SPR_BFLG = 80
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Blue Sphere](https://wiki.srb2.org/wiki/Blue_Sphere)
SPR_SPHR = 81
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) chip
SPR_NCHP = 82
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) star
SPR_NSTR = 83
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Emblem](https://wiki.srb2.org/wiki/Emblem)
SPR_EMBM = 84
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Chaos Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald)s ([1](https://wiki.srb2.org/wiki/Chaos_Emerald_1_(Green)), [2](https://wiki.srb2.org/wiki/Chaos_Emerald_2_(Purple)), [3](https://wiki.srb2.org/wiki/Chaos_Emerald_3_(Blue)), [4](https://wiki.srb2.org/wiki/Chaos_Emerald_4_(Light_Blue)), [5](https://wiki.srb2.org/wiki/Chaos_Emerald_5_(Orange)), [6](https://wiki.srb2.org/wiki/Chaos_Emerald_6_(Red)), [7](https://wiki.srb2.org/wiki/Chaos_Emerald_7_(Gray)))
SPR_CEMG = 85
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Emerald Hunt shard](https://wiki.srb2.org/wiki/Emerald_Hunt_Location)
SPR_SHRD = 86
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Air Bubble Patch](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
SPR_BBLS = 87
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Signpost](https://wiki.srb2.org/wiki/Signpost)
SPR_SIGN = 88
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Spikeball](https://wiki.srb2.org/wiki/Spikeball)
SPR_SPIK = 89
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield)'s fire trail
SPR_SFLM = 90
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield)'s fire trail (Player Colored)
SPR_SFLM = 91
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Spike](https://wiki.srb2.org/wiki/Spike)
SPR_USPK = 92
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Wall Spike](https://wiki.srb2.org/wiki/Wall_Spike)
SPR_WSPK = 93
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Wall Spike base
SPR_WSPB = 94
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Star Post](https://wiki.srb2.org/wiki/Star_Post)
SPR_STPT = 95
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Big Floating Mine](https://wiki.srb2.org/wiki/Big_Floating_Mine)
SPR_BMNE = 96
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Rollout Rock](https://wiki.srb2.org/wiki/Rollout_Rock)
SPR_PUMI = 97
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Miscellaneous monitor sprites
SPR_MSTV = 98
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Golden monitor
SPR_XLTV = 99
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CTF Team Ring Monitor (Red)](https://wiki.srb2.org/wiki/CTF_Team_Ring_Monitor_(Red))
SPR_TRRI = 100
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CTF Team Ring Monitor (Blue)](https://wiki.srb2.org/wiki/CTF_Team_Ring_Monitor_(Blue))
SPR_TBRI = 101
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Super Ring Monitor (10 Rings)](https://wiki.srb2.org/wiki/Super_Ring_Monitor_(10_Rings))
SPR_TVRI = 102
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pity Shield Monitor](https://wiki.srb2.org/wiki/Pity_Shield_Monitor)
SPR_TVPI = 103
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Attraction Shield Monitor](https://wiki.srb2.org/wiki/Attraction_Shield_Monitor)
SPR_TVAT = 104
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Force Shield Monitor](https://wiki.srb2.org/wiki/Force_Shield_Monitor)
SPR_TVFO = 104
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Armageddon Shield Monitor](https://wiki.srb2.org/wiki/Armageddon_Shield_Monitor)
SPR_TVAR = 105
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Whirlwind Shield Monitor](https://wiki.srb2.org/wiki/Whirlwind_Shield_Monitor)
SPR_TVWW = 106
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Elemental Shield Monitor](https://wiki.srb2.org/wiki/Elemental_Shield_Monitor)
SPR_TVEL = 107
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Super Sneakers Monitor](https://wiki.srb2.org/wiki/Super_Sneakers_Monitor)
SPR_TVSS = 108
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Invincibility Monitor](https://wiki.srb2.org/wiki/Invincibility_Monitor)
SPR_TVIV = 109
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Extra Life Monitor](https://wiki.srb2.org/wiki/Extra_Life_Monitor)
SPR_TV1U = 110
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Extra Life Monitor (textless)
SPR_TV1P = 111
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Eggman Monitor](https://wiki.srb2.org/wiki/Eggman_Monitor)
SPR_TVEG = 112
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Teleporter Monitor](https://wiki.srb2.org/wiki/Teleporter_Monitor)
SPR_TVMX = 113
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Random Monitor](https://wiki.srb2.org/wiki/Random_Monitor)
SPR_TVMY = 114
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Gravity Boots Monitor](https://wiki.srb2.org/wiki/Gravity_Boots_Monitor)
SPR_TVGV = 115
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Recycler Monitor](https://wiki.srb2.org/wiki/Recycler_Monitor)
SPR_TVRC = 116
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Score Monitor (1,000 Points)](https://wiki.srb2.org/wiki/Score_Monitor_(1,000_Points))
SPR_TV1K = 117
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Score Monitor (10,000 Points)](https://wiki.srb2.org/wiki/Score_Monitor_(10,000_Points))
SPR_TVTK = 118
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Flame Shield](https://wiki.srb2.org/wiki/Flame_Shield)
SPR_TVFL = 119
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bubble Shield](https://wiki.srb2.org/wiki/Bubble_Shield)
SPR_TVBB = 120
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Lightning Shield](https://wiki.srb2.org/wiki/Lightning_Shield)
SPR_TVZP = 121
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Snailer](https://wiki.srb2.org/wiki/Snailer) missile
SPR_MISL = 122
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg) torpedo
SPR_TORP = 123
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic) energy ball projectile
SPR_ENRG = 124
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Jetty-Syn Bomber](https://wiki.srb2.org/wiki/Jetty-Syn_Bomber)'s/[Skim](https://wiki.srb2.org/wiki/Skim)'s mine
SPR_MINE = 125
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Jetty-Syn Gunner](https://wiki.srb2.org/wiki/Jetty-Syn_Gunner)'s bullet
SPR_JBUL = 126
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret) laser
SPR_TRLS = 127
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Cannonball](https://wiki.srb2.org/wiki/Cannonball)
SPR_CBLL = 128
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Robo-Hood](https://wiki.srb2.org/wiki/Robo-Hood) arrow
SPR_AROW = 129
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Glaregoyle](https://wiki.srb2.org/wiki/Glaregoyle) fire
SPR_CFIR = 130
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Letter
SPR_LETR = 131
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[GFZ Flower](https://wiki.srb2.org/wiki/GFZ_Flower)
SPR_FWR1 = 132
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Sunflower](https://wiki.srb2.org/wiki/Sunflower)
SPR_FWR2 = 133
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Budding Flower](https://wiki.srb2.org/wiki/Budding_Flower)
SPR_FWR3 = 134
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CEZ Flower](https://wiki.srb2.org/wiki/CEZ_Flower)
SPR_FWR4 = 135
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Berry Bush](https://wiki.srb2.org/wiki/Berry_Bush)
SPR_BUS1 = 136
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bush](https://wiki.srb2.org/wiki/Bush)
SPR_BUS2 = 137
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Blueberry Bush](https://wiki.srb2.org/wiki/Blueberry_Bush)
SPR_BUS3 = 138
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[GFZ Tree](https://wiki.srb2.org/wiki/GFZ_Tree), [GFZ Berry Tree](https://wiki.srb2.org/wiki/GFZ_Berry_Tree), [GFZ Cherry Tree](https://wiki.srb2.org/wiki/GFZ_Cherry_Tree)
SPR_TRE1 = 139
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Checkered Tree](https://wiki.srb2.org/wiki/Checkered_Tree), [Checkered Tree (Sunset)](https://wiki.srb2.org/wiki/Checkered_Tree_(Sunset))
SPR_TRE2 = 140
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Crystal Tree (Aqua)](https://wiki.srb2.org/wiki/Crystal_Tree_(Aqua)), [Crystal Tree (Pink)](https://wiki.srb2.org/wiki/Crystal_Tree_(Pink))
SPR_TRE3 = 141
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Polygon Tree](https://wiki.srb2.org/wiki/Polygon_Tree)
SPR_TRE4 = 142
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bush Tree](https://wiki.srb2.org/wiki/Bush_Tree), [Red Bush Tree](https://wiki.srb2.org/wiki/Red_Bush_Tree)
SPR_TRE5 = 143
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Spring Tree](https://wiki.srb2.org/wiki/Spring_Tree)
SPR_TRE6 = 144
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[THZ Steam Flower](https://wiki.srb2.org/wiki/THZ_Steam_Flower)
SPR_THZP = 145
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[THZ Spin Flower (Red)](https://wiki.srb2.org/wiki/THZ_Spin_Flower_(Red))
SPR_FWR5 = 146
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[THZ Spin Flower (Yellow)](https://wiki.srb2.org/wiki/THZ_Spin_Flower_(Yellow))
SPR_FWR6 = 147
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Whistlebush](https://wiki.srb2.org/wiki/Whistlebush)
SPR_THZT = 148
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Alarm](https://wiki.srb2.org/wiki/Alarm)
SPR_ALRM = 149
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Gargoyle](https://wiki.srb2.org/wiki/Gargoyle)
SPR_GARG = 150
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Seaweed](https://wiki.srb2.org/wiki/Seaweed)
SPR_SEWE = 151
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Dripping Water](https://wiki.srb2.org/wiki/Dripping_Water)
SPR_DRIP = 152
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Coral (Green)](https://wiki.srb2.org/wiki/Coral_(Green)), [Coral (Red)](https://wiki.srb2.org/wiki/Coral_(Red)), [Coral (Orange)](https://wiki.srb2.org/wiki/Coral_(Orange)), [Large Coral (Brown)](https://wiki.srb2.org/wiki/Large_Coral_(Brown)), [Large Coral (Beige)](https://wiki.srb2.org/wiki/Large_Coral_(Beige))
SPR_CORL = 153
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Blue Crystal](https://wiki.srb2.org/wiki/Blue_Crystal)
SPR_BCRY = 154
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Kelp](https://wiki.srb2.org/wiki/Kelp)
SPR_KELP = 155
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Animated Kelp](https://wiki.srb2.org/wiki/Animated_Kelp) top
SPR_ALGA = 156
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Animated Kelp segment
SPR_ALGB = 157
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Stalagmite (DSZ1)](https://wiki.srb2.org/wiki/Stalagmite_(DSZ1)), [Stalagmite (DSZ2)](https://wiki.srb2.org/wiki/Stalagmite_(DSZ2))
SPR_DSTG = 158
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Light Beam](https://wiki.srb2.org/wiki/Light_Beam)
SPR_LIBE = 159
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Chain (Decorative)](https://wiki.srb2.org/wiki/Chain_(Decorative))
SPR_CHAN = 160
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Torch](https://wiki.srb2.org/wiki/Torch)
SPR_FLAM = 161
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Eggman Statue](https://wiki.srb2.org/wiki/Eggman_Statue) and [Eggman Disco Statue](https://wiki.srb2.org/wiki/Eggman_Disco_Statue)
SPR_ESTA = 162
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Chain](https://wiki.srb2.org/wiki/Chain_Spawnpoint) (Small)
SPR_SMCH = 163
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Chain (Large)
SPR_BMCH = 164
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Mace](https://wiki.srb2.org/wiki/Mace_Spawnpoint) (Small)
SPR_SMCE = 165
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Mace (Large)
SPR_BMCE = 166
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Yellow Spring Ball](https://wiki.srb2.org/wiki/Yellow_Spring_Ball)
SPR_YSPB = 167
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Red Spring Ball](https://wiki.srb2.org/wiki/Red_Spring_Ball)
SPR_RSPB = 168
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Firebar](https://wiki.srb2.org/wiki/Firebar_Spawnpoint) (Small)
SPR_SFBR = 169
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Firebar (Large)
SPR_BFBR = 170
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pole Banner (Red)](https://wiki.srb2.org/wiki/Pole_Banner_(Red)), [Pole Banner (Blue)](https://wiki.srb2.org/wiki/Pole_Banner_(Blue))
SPR_BANR = 171
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pine Tree](https://wiki.srb2.org/wiki/Pine_Tree)
SPR_PINE = 172
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CEZ Shrub (Small)](https://wiki.srb2.org/wiki/CEZ_Shrub_(Small)), [CEZ Shrub (Large)](https://wiki.srb2.org/wiki/CEZ_Shrub_(Large))
SPR_CEZB = 173
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Candle](https://wiki.srb2.org/wiki/Candle), [Candle Pricket](https://wiki.srb2.org/wiki/Candle_Pricket)
SPR_CNDL = 174
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Flame Holder](https://wiki.srb2.org/wiki/Flame_Holder)
SPR_FLMH = 175
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Fire Torch](https://wiki.srb2.org/wiki/Fire_Torch)
SPR_CTRC = 176
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Waving Flag (Red)](https://wiki.srb2.org/wiki/Waving_Flag_(Red)), [Waving Flag (Blue)](https://wiki.srb2.org/wiki/Waving_Flag_(Blue))
SPR_CFLG = 177
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Crawla Statue](https://wiki.srb2.org/wiki/Crawla_Statue)
SPR_CSTA = 178
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Lance-a-Bot Statue](https://wiki.srb2.org/wiki/Lance-a-Bot_Statue)
SPR_CBBS = 179
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Brambles](https://wiki.srb2.org/wiki/Brambles)
SPR_CABR = 180
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tumbleweed (Big)](https://wiki.srb2.org/wiki/Tumbleweed_(Big))
SPR_BTBL = 181
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tumbleweed (Small)](https://wiki.srb2.org/wiki/Tumbleweed_(Small))
SPR_STBL = 182
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Cacti](https://wiki.srb2.org/wiki/Cacti)
SPR_CACT = 183
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Caution Sign](https://wiki.srb2.org/wiki/Caution_Sign)
SPR_WWSG = 184
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Cacti Sign](https://wiki.srb2.org/wiki/Cacti_Sign)
SPR_WWS2 = 185
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Sharp Turn Sign](https://wiki.srb2.org/wiki/Sharp_Turn_Sign)
SPR_WWS3 = 186
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Mine Oil Lamp](https://wiki.srb2.org/wiki/Mine_Oil_Lamp)
SPR_OILL = 187
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Mine Oil Lamp flare
SPR_OILF = 188
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[TNT Barrel](https://wiki.srb2.org/wiki/TNT_Barrel)
SPR_BARR = 189
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[TNT Proximity Shell](https://wiki.srb2.org/wiki/TNT_Proximity_Shell)
SPR_REMT = 190
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Dust Devil](https://wiki.srb2.org/wiki/Dust_Devil)
SPR_TAZD = 191
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Dust
SPR_ADST = 192
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Minecart](https://wiki.srb2.org/wiki/Minecart_Spawner)
SPR_MCRT = 193
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Minecart spark
SPR_MCSP = 194
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Minecart Saloon Door](https://wiki.srb2.org/wiki/Minecart_Saloon_Door)
SPR_SALD = 195
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Train cameo](https://wiki.srb2.org/wiki/Train_Cameo_Spawner) locomotive
SPR_TRAE = 196
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Train cameo wagon
SPR_TRAI = 197
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Train steam
SPR_STEA = 198
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Flame from a [flame jet](https://wiki.srb2.org/wiki/Flame_Jet_(Horizontal))
SPR_FLME = 199
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Flame from a [spinning flame jet](https://wiki.srb2.org/wiki/Spinning_Flame_Jet_(Counter-Clockwise))
SPR_DFLM = 200
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Lavafall](https://wiki.srb2.org/wiki/Lavafall)
SPR_LFAL = 201
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Big Fern](https://wiki.srb2.org/wiki/Big_Fern), [Jungle Palm](https://wiki.srb2.org/wiki/Jungle_Palm)
SPR_JPLA = 202
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Torch Flower](https://wiki.srb2.org/wiki/Torch_Flower)
SPR_TFLO = 203
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[RVZ1 Wall Vine (Long)](https://wiki.srb2.org/wiki/RVZ1_Wall_Vine_(Long)), [RVZ1 Wall Vine (Short)](https://wiki.srb2.org/wiki/RVZ1_Wall_Vine_(Short))
SPR_WVIN = 204
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Christmas Pole](https://wiki.srb2.org/wiki/Christmas_Pole)
SPR_XMS1 = 205
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Candy Cane](https://wiki.srb2.org/wiki/Candy_Cane)
SPR_XMS2 = 206
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Snowman](https://wiki.srb2.org/wiki/Snowman), [Snowman (With Hat)](https://wiki.srb2.org/wiki/Snowman_(With_Hat))
SPR_XMS3 = 207
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Lamp Post](https://wiki.srb2.org/wiki/Lamp_Post), [Lamp Post (Snow)](https://wiki.srb2.org/wiki/Lamp_Post_(Snow))
SPR_XMS4 = 208
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Hanging Star](https://wiki.srb2.org/wiki/Hanging_Star)
SPR_XMS5 = 209
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Mistletoe](https://wiki.srb2.org/wiki/Mistletoe)
SPR_XMS6 = 210
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Ice Shard (Small)](https://wiki.srb2.org/wiki/Ice_Shard_(Small)), [Ice Shard (Large)](https://wiki.srb2.org/wiki/Ice_Shard_(Large))
SPR_FHZI = 211
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Amy Cameo](https://wiki.srb2.org/wiki/Amy_Cameo)
SPR_ROSY = 212
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Jack-o'-lantern 1](https://wiki.srb2.org/wiki/Jack-o'-lantern_1), [Jack-o'-lantern 2](https://wiki.srb2.org/wiki/Jack-o'-lantern_2), [Jack-o'-lantern 3](https://wiki.srb2.org/wiki/Jack-o'-lantern_3)
SPR_PUMK = 213
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[HHZ Tree](https://wiki.srb2.org/wiki/HHZ_Tree)
SPR_HHPL = 214
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Purple Mushroom](https://wiki.srb2.org/wiki/Purple_Mushroom)
SPR_SHRM = 215
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[HHZ Grass](https://wiki.srb2.org/wiki/HHZ_Grass), [HHZ Tentacle 1](https://wiki.srb2.org/wiki/HHZ_Tentacle_1), [HHZ Tentacle 2](https://wiki.srb2.org/wiki/HHZ_Tentacle_2), [HHZ Stalagmite (Tall)](https://wiki.srb2.org/wiki/HHZ_Stalagmite_(Tall)), [HHZ Stalagmite (Short)](https://wiki.srb2.org/wiki/HHZ_Stalagmite_(Short))
SPR_HHZM = 216
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Glaregoyle](https://wiki.srb2.org/wiki/Glaregoyle), [Blue Gargoyle](https://wiki.srb2.org/wiki/Blue_Gargoyle)
SPR_BGAR = 217
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[ATZ Target](https://wiki.srb2.org/wiki/ATZ_Target)
SPR_RCRY = 218
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Green Flame](https://wiki.srb2.org/wiki/Green_Flame)
SPR_CFLM = 219
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tall Flowers (BSZ)](https://wiki.srb2.org/wiki/Tall_Flowers_(BSZ))
SPR_BSZ1 = 220
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Medium Flowers (BSZ)](https://wiki.srb2.org/wiki/Medium_Flowers_(BSZ))
SPR_BSZ2 = 221
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Short Flowers (BSZ)](https://wiki.srb2.org/wiki/Short_Flowers_(BSZ))
SPR_BSZ3 = 222
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tulip (Red)](https://wiki.srb2.org/wiki/Tulip_(Red))
SPR_BST1 = 223
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tulip (Purple)](https://wiki.srb2.org/wiki/Tulip_(Purple))
SPR_BST2 = 224
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tulip (Blue)](https://wiki.srb2.org/wiki/Tulip_(Blue))
SPR_BST3 = 225
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tulip (Cyan)](https://wiki.srb2.org/wiki/Tulip_(Cyan))
SPR_BST4 = 226
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tulip (Yellow)](https://wiki.srb2.org/wiki/Tulip_(Yellow))
SPR_BST5 = 227
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tulip (Orange)](https://wiki.srb2.org/wiki/Tulip_(Orange))
SPR_BST6 = 228
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Clusters (BSZ)](https://wiki.srb2.org/wiki/Clusters_(BSZ))
SPR_BSZ5 = 229
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bushes (BSZ)](https://wiki.srb2.org/wiki/Bushes_(BSZ))
SPR_BSZ6 = 230
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Vines (BSZ)](https://wiki.srb2.org/wiki/Vines_(BSZ))
SPR_BSZ7 = 231
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[BSZ Shrub](https://wiki.srb2.org/wiki/BSZ_Shrub), [BSZ Clover](https://wiki.srb2.org/wiki/BSZ_Clover), [Palm Tree (Big)](https://wiki.srb2.org/wiki/Palm_Tree_(Big)), [Palm Tree (Small)](https://wiki.srb2.org/wiki/Palm_Tree_(Small))
SPR_BSZ8 = 232
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Stalagmites](https://wiki.srb2.org/wiki/Stalagmites)
SPR_STLG = 233
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Disco Ball](https://wiki.srb2.org/wiki/Disco_Ball)
SPR_DBAL = 234
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) orb
SPR_ARMA = 235
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Armageddon Shield ring, front
SPR_ARMF = 236
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Armageddon Shield ring, back
SPR_ARMB = 237
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Whirlwind Shield](https://wiki.srb2.org/wiki/Whirlwind_Shield) orb
SPR_WIND = 238
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield) orb
SPR_MAGN = 239
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield) orb and fire
SPR_ELEM = 240
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Force Shield](https://wiki.srb2.org/wiki/Force_Shield) orb
SPR_FORC = 241
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield) orb
SPR_PITY = 242
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Flame Shield](https://wiki.srb2.org/wiki/Flame_Shield) orb
SPR_FIRS = 243
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bubble Shield](https://wiki.srb2.org/wiki/Bubble_Shield) orb
SPR_BUBS = 244
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Lightning Shield](https://wiki.srb2.org/wiki/Lightning_Shield) orb
SPR_ZAPS = 245
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Invincibility sparkle
SPR_IVSP = 246
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Super Sonic](https://wiki.srb2.org/wiki/Super_Sonic) spark
SPR_SSPK = 247
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) goal sign
SPR_GOAL = 248
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Flicky-sized bubble
SPR_FBUB = 249
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Bluebird
SPR_FL01 = 250
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rabbit
SPR_FL02 = 251
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Chicken
SPR_FL03 = 252
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Seal
SPR_FL04 = 253
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Pig
SPR_FL05 = 254
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Chipmunk
SPR_FL06 = 255
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Penguin
SPR_FL07 = 256
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fish
SPR_FL08 = 257
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Ram
SPR_FL09 = 258
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Puffin
SPR_FL10 = 259
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Cow
SPR_FL11 = 260
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rat
SPR_FL12 = 261
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Bear
SPR_FL13 = 262
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Dove
SPR_FL14 = 263
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Cat
SPR_FL15 = 264
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Canary
SPR_FL16 = 265
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Spider
SPR_FS01 = 266
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Bat
SPR_FS02 = 267
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Fan](https://wiki.srb2.org/wiki/Fan)
SPR_FANS = 268
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Gas Jet](https://wiki.srb2.org/wiki/Gas_Jet)
SPR_STEM = 269
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bumper](https://wiki.srb2.org/wiki/Bumper)
SPR_BUMP = 270
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Balloon](https://wiki.srb2.org/wiki/Balloon)
SPR_BLON = 271
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Yellow Spring](https://wiki.srb2.org/wiki/Yellow_Spring)
SPR_SPRY = 272
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Red Spring](https://wiki.srb2.org/wiki/Red_Spring)
SPR_SPRR = 273
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Blue Spring](https://wiki.srb2.org/wiki/Blue_Spring)
SPR_SPRB = 274
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Diagonal Yellow Spring](https://wiki.srb2.org/wiki/Diagonal_Yellow_Spring)
SPR_YSPR = 275
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Diagonal Red Spring](https://wiki.srb2.org/wiki/Diagonal_Red_Spring)
SPR_RSPR = 276
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Diagonal Blue Spring](https://wiki.srb2.org/wiki/Diagonal_Blue_Spring)
SPR_BSPR = 277
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Horizontal Yellow Spring](https://wiki.srb2.org/wiki/Horizontal_Yellow_Spring)
SPR_SSWY = 278
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Horizontal Red Spring](https://wiki.srb2.org/wiki/Horizontal_Red_Spring)
SPR_SSWR = 279
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Horizontal Blue Spring](https://wiki.srb2.org/wiki/Horizontal_Blue_Spring)
SPR_SSWB = 280
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Yellow Boost Panel](https://wiki.srb2.org/wiki/Yellow_Boost_Panel)
SPR_BSTY = 281
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Red Boost Panel](https://wiki.srb2.org/wiki/Red_Boost_Panel)
SPR_BSTR = 282
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Precipitation
SPR_RAIN = 283
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Snowflake
SPR_SNO1 = 284
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Water splish
SPR_SPLH = 285
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Lava splish
SPR_LSPL = 286
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Precipitation water splash
SPR_SPLA = 287
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Puff of smoke
SPR_SMOK = 288
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Air bubbles](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
SPR_BUBL = 289
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Water zap
SPR_WZAP = 290
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Spindash dust
SPR_DUST = 291
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Spindash dust ([Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield))
SPR_FPRT = 292
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Chaos](https://wiki.srb2.org/wiki/Chaos) mode enemy entrance fog
SPR_TFOG = 293
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Seed](https://wiki.srb2.org/wiki/Level_header#FlickyList) spawned by destroyed enemies
SPR_SEED = 294
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Fan particle](https://wiki.srb2.org/wiki/Fan_Particle_Generator)
SPR_PRTL = 295
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Score markers
SPR_SCOR = 296
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Drowning countdown numbers
SPR_DRWN = 297
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tails bot](https://wiki.srb2.org/wiki/Bot) flight indicator
SPR_FLII = 298
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Lockon target
SPR_LCKN = 299
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Tag](https://wiki.srb2.org/wiki/Tag) "IT!" sign
SPR_TTAG = 300
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[CTF](https://wiki.srb2.org/wiki/CTF) "GOT FLAG!" sign
SPR_GFLG = 301
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---"Level finished" flag
SPR_FNSF = 302
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Fang](https://wiki.srb2.org/wiki/Fang) cork
SPR_CORK = 303
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Amy](https://wiki.srb2.org/wiki/Amy) heart
SPR_LHRT = 304
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Thrown Red Ring
SPR_RRNG = 305
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring) (pickup and thrown)
SPR_RNGB = 306
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring) (pickup)
SPR_RNGR = 307
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Infinity Ring](https://wiki.srb2.org/wiki/Infinity_Ring)
SPR_RNGI = 308
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Automatic Ring](https://wiki.srb2.org/wiki/Automatic_Ring) (pickup)
SPR_RNGA = 309
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring) (pickup and thrown)
SPR_RNGE = 310
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring) (pickup)
SPR_RNGS = 311
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring) (pickup)
SPR_RNGG = 312
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bounce Ring Panel](https://wiki.srb2.org/wiki/Bounce_Ring_Panel)
SPR_PIKB = 313
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Rail Ring Panel](https://wiki.srb2.org/wiki/Rail_Ring_Panel)
SPR_PIKR = 314
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Automatic Ring Panel](https://wiki.srb2.org/wiki/Automatic_Ring_Panel)
SPR_PIKA = 315
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Explosion Ring Panel](https://wiki.srb2.org/wiki/Explosion_Ring_Panel)
SPR_PIKE = 316
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Scatter Ring Panel](https://wiki.srb2.org/wiki/Scatter_Ring_Panel)
SPR_PIKS = 317
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Grenade Ring Panel](https://wiki.srb2.org/wiki/Grenade_Ring_Panel)
SPR_PIKG = 318
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Thrown Automatic Ring
SPR_TAUT = 319
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Thrown Grenade Ring
SPR_TGRE = 320
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Thrown Scatter Ring
SPR_TSCR = 321
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Coin](https://wiki.srb2.org/wiki/Coin)
SPR_COIN = 322
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Coin pickup spark
SPR_CPRK = 323
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Goomba](https://wiki.srb2.org/wiki/Goomba)
SPR_GOOM = 324
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Goomba (Blue)](https://wiki.srb2.org/wiki/Goomba_(Blue))
SPR_BGOM = 325
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Fire Flower](https://wiki.srb2.org/wiki/Fire_Flower)
SPR_FFWR = 326
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Fire Flower fireball
SPR_FBLL = 327
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Koopa Shell](https://wiki.srb2.org/wiki/Koopa_Shell)
SPR_SHLL = 328
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Puma](https://wiki.srb2.org/wiki/Puma)
SPR_PUMA = 329
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---King Bowser's hammer
SPR_HAMM = 330
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[King Bowser](https://wiki.srb2.org/wiki/King_Bowser)
SPR_KOOP = 331
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---King Bowser's flame
SPR_BFLM = 332
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Axe](https://wiki.srb2.org/wiki/Axe)
SPR_MAXE = 333
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Mario Bush (Short)](https://wiki.srb2.org/wiki/Mario_Bush_(Short))
SPR_MUS1 = 334
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Mario Bush (Tall)](https://wiki.srb2.org/wiki/Mario_Bush_(Tall))
SPR_MUS2 = 335
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Toad](https://wiki.srb2.org/wiki/Toad)
SPR_TOAD = 336
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Ideya Drone](https://wiki.srb2.org/wiki/Ideya_Drone)
SPR_NDRN = 337
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---NiGHTS sparkle
SPR_NSPK = 338
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[NiGHTS Bumper](https://wiki.srb2.org/wiki/NiGHTS_Bumper)
SPR_NBMP = 339
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Hoop](https://wiki.srb2.org/wiki/Hoop) segment
SPR_HOOP = 340
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---NiGHTS score markers
SPR_NSCR = 341
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[NiGHTS power-up](https://wiki.srb2.org/wiki/NiGHTS_power-up)s:
---*[Super Paraloop](https://wiki.srb2.org/wiki/Super_Paraloop)
---*[Drill Refill](https://wiki.srb2.org/wiki/Drill_Refill)
---*[Nightopian Helper](https://wiki.srb2.org/wiki/Nightopian_Helper)
---*[Extra Time](https://wiki.srb2.org/wiki/Extra_Time)
---*[Link Freeze](https://wiki.srb2.org/wiki/Link_Freeze)
SPR_NPRU = 342
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Ideya Capture](https://wiki.srb2.org/wiki/Ideya_Capture)
SPR_CAPS = 343
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Ideya](https://wiki.srb2.org/wiki/Ideya_Anchor)
SPR_IDYA = 344
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pian](https://wiki.srb2.org/wiki/Pian)
SPR_NTPN = 345
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Shleep](https://wiki.srb2.org/wiki/Shleep)
SPR_SHLP = 346
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Penguinator](https://wiki.srb2.org/wiki/Penguinator)
SPR_PENG = 347
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Pophat](https://wiki.srb2.org/wiki/Pophat)
SPR_POPH = 348
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Hive Elemental](https://wiki.srb2.org/wiki/Hive_Elemental)
SPR_HIVE = 349
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Bumblebore](https://wiki.srb2.org/wiki/Bumblebore)
SPR_BUMB = 350
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Buggle](https://wiki.srb2.org/wiki/Buggle)
SPR_BBUZ = 351
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Smashing Spikeball](https://wiki.srb2.org/wiki/Smashing_Spikeball)
SPR_FMCE = 352
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Smashing Spikeball (Large, unused)
SPR_HMCE = 353
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Cacolantern](https://wiki.srb2.org/wiki/Cacolantern)
SPR_CACO = 354
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Cacolantern projectile
SPR_BAL2 = 355
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Spinbobert](https://wiki.srb2.org/wiki/Spinbobert)
SPR_SBOB = 356
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Spinbobert fire trail
SPR_SBFL = 357
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Spinbobert fire ghost
SPR_SBSK = 358
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Hangster](https://wiki.srb2.org/wiki/Hangster)
SPR_HBAT = 359
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Pickup spark
SPR_SPRK = 360
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Robot explosion
SPR_BOM1 = 361
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Boss explosion 1
SPR_BOM2 = 362
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Boss explosion 2
SPR_BOM3 = 363
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Underwater explosion
SPR_BOM4 = 364
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Big Floating Mine](https://wiki.srb2.org/wiki/Big_Floating_Mine) explosion
SPR_BMNB = 365
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---[Rock debris](https://wiki.srb2.org/wiki/Rock_Spawner)
SPR_ROIA = 366
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIB = 367
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIC = 368
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROID = 369
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIE = 370
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIF = 371
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIG = 372
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIH = 373
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Ice debris
SPR_ROII = 374
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIJ = 375
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIK = 376
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Rock debris
SPR_ROIL = 377
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Brick debris
SPR_BRIC = 383
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Wood debris
SPR_WDDB = 384
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Green gravity well sprites for [Pull Point](https://wiki.srb2.org/wiki/Pull_Point)
SPR_GWLG = 385
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sprites)**
---
---Red gravity well sprites for [Push Point](https://wiki.srb2.org/wiki/Push_Point)
SPR_GWLR = 386

---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---n/a
sfx_none = 0
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for [custom character](https://wiki.srb2.org/wiki/Custom_character_tutorial) death sound
sfx_altdi1 = 1
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character death sound
sfx_altdi2 = 2
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character death sound
sfx_altdi3 = 3
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character death sound
sfx_altdi4 = 4
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character hurt sound
sfx_altow1 = 5
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character hurt sound
sfx_altow2 = 6
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character hurt sound
sfx_altow3 = 7
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character hurt sound
sfx_altow4 = 8
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character victory sound
sfx_victr1 = 9
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character victory sound
sfx_victr2 = 10
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character victory sound
sfx_victr3 = 11
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder slot for custom character victory sound
sfx_victr4 = 12
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Player grabbing an [air bubble](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
sfx_gasp = 13
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Player jumping
sfx_jump = 14
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Tails exhausted from flying
sfx_pudpud = 15
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Tails flying
sfx_putput = 16
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Player spinning
sfx_spin = 17
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Spindash charge
sfx_spndsh = 18
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Sonic thokking/Ring being fired
sfx_thok = 19
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Spindash release
sfx_zoom = 20
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Player skidding
sfx_skid = 21
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Disco Ambience](https://wiki.srb2.org/wiki/Disco_Ambience)
sfx_ambint = 22
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Alarm](https://wiki.srb2.org/wiki/Alarm)
sfx_alarm = 23
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Mechanical buzzing, [Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg) electrifying water
sfx_buzz1 = 24
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Mechanical buzzing (unused)
sfx_buzz2 = 25
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Mechanical alarm sound
sfx_buzz3 = 26
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Mechanical beep, [Buzz](https://wiki.srb2.org/wiki/Buzz_(Gold)) flying
sfx_buzz4 = 27
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Crumbling FOF
sfx_crumbl = 28
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Flamethrower](https://wiki.srb2.org/wiki/Flame_Jet_(Horizontal)) sound
sfx_fire = 29
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Mechanical grinding (unused)
sfx_grind = 30
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Laser](https://wiki.srb2.org/wiki/Laser)
sfx_laser = 31
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Spinning mace](https://wiki.srb2.org/wiki/Linedef_type_9)
sfx_mswing = 32
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Placeholder crusher slot
sfx_pstart = 33
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Crusher
sfx_pstop = 34
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Gas Jet](https://wiki.srb2.org/wiki/Gas_Jet)
sfx_steam1 = 35
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Gas Jet](https://wiki.srb2.org/wiki/Gas_Jet)
sfx_steam2 = 36
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Wood breaking, [Egg Guard](https://wiki.srb2.org/wiki/Egg_Guard)'s shield breaking
sfx_wbreak = 37
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Machinery
sfx_ambmac = 38
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Smashing Spikeball](https://wiki.srb2.org/wiki/Smashing_Spikeball) hitting the ground.
sfx_spsmsh = 39
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Rain
sfx_rainin = 40
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Lightning
sfx_litng2 = 41
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Lightning
sfx_litng3 = 42
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Lightning
sfx_litng4 = 43
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Thunder
sfx_athun1 = 45
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Thunder
sfx_athun2 = 46
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience A (Large)](https://wiki.srb2.org/wiki/Water_Ambience_A_(Large))
sfx_amwtr1 = 47
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience B (Large)](https://wiki.srb2.org/wiki/Water_Ambience_B_(Large))
sfx_amwtr2 = 48
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience C (Medium)](https://wiki.srb2.org/wiki/Water_Ambience_C_(Medium))
sfx_amwtr3 = 49
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience D (Medium)](https://wiki.srb2.org/wiki/Water_Ambience_D_(Medium))
sfx_amwtr4 = 50
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience E (Small)](https://wiki.srb2.org/wiki/Water_Ambience_E_(Small))
sfx_amwtr5 = 51
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience F (Small)](https://wiki.srb2.org/wiki/Water_Ambience_F_(Small))
sfx_amwtr6 = 52
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience G (Extra Large)](https://wiki.srb2.org/wiki/Water_Ambience_G_(Extra_Large))
sfx_amwtr7 = 53
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water Ambience H (Extra Large)](https://wiki.srb2.org/wiki/Water_Ambience_H_(Extra_Large))
sfx_amwtr8 = 54
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bubbling - getting in/out of water
sfx_bubbl1 = 55
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bubbling - getting in/out of water
sfx_bubbl2 = 56
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bubbling - getting in/out of water
sfx_bubbl3 = 57
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bubbling - getting in/out of water
sfx_bubbl4 = 58
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bubbling - getting in/out of water
sfx_bubbl5 = 59
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Shallow water
sfx_floush = 60
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water bubble sound; crumbling platform bobbling into water; running on lava
sfx_splash = 61
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Falling into water
sfx_splish = 62
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Water dripping](https://wiki.srb2.org/wiki/Dripping_Water)
sfx_wdrip1 = 63
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip2 = 64
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip3 = 65
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip4 = 66
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip5 = 67
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip6 = 68
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip7 = 69
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water dripping
sfx_wdrip8 = 70
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Water skipping
sfx_wslap = 71
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Door opening - mechanical
sfx_doora1 = 72
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Door opening - mechanical
sfx_doorb1 = 73
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Door opening - wooden
sfx_doorc1 = 74
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Door slamming shut - wooden, [Egg Colosseum](https://wiki.srb2.org/wiki/Egg_Colosseum)'s cage landing
sfx_doorc2 = 75
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Gate opening, [Egg Colosseum](https://wiki.srb2.org/wiki/Egg_Colosseum)'s cage rising
sfx_doord1 = 76
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Gate slamming shut (unused)
sfx_doord2 = 77
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Elevator type A starting
sfx_eleva1 = 78
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Elevator type A running
sfx_eleva2 = 79
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Elevator type A stopping
sfx_eleva3 = 80
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Elevator type B starting
sfx_elevb1 = 81
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Elevator type B running
sfx_elevb2 = 82
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Elevator type B stopping
sfx_elevb3 = 83
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Volcano Ambience](https://wiki.srb2.org/wiki/Volcano_Ambience)
sfx_ambin2 = 84
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bubbling lava (unused)
sfx_lavbub = 85
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Falling rocks](https://wiki.srb2.org/wiki/Rock_Spawner)
sfx_rocks1 = 86
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Falling rocks
sfx_rocks2 = 87
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Falling rocks
sfx_rocks3 = 88
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Falling rocks
sfx_rocks4 = 89
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Rumbling noise (unused)
sfx_rumbam = 90
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---RVZ earthquake rumbling
sfx_rumble = 91
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Appearing FOF sound](https://wiki.srb2.org/wiki/Linedef_type_64)
sfx_appear = 92
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) explosion
sfx_bkpoof = 93
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bounce - sharp, [Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring) being fired
sfx_bnce1 = 94
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bounce - bass, [Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring) being fired
sfx_bnce2 = 95
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Cannonball](https://wiki.srb2.org/wiki/Cannonball_Launcher)/[Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring) being fired
sfx_cannon = 96
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a [Chaos Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald)
sfx_cgot = 97
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Boss being destroyed, [Cannonball](https://wiki.srb2.org/wiki/Cannonball_Launcher) crashing sound
sfx_cybdth = 98
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Deton](https://wiki.srb2.org/wiki/Deton) chasing after player
sfx_deton = 99
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[ATZ Target](https://wiki.srb2.org/wiki/ATZ_Target) "ding" sound (old appearing FOF sound)
sfx_ding = 100
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Boss/[Crawla Commander](https://wiki.srb2.org/wiki/Crawla_Commander) getting hurt
sfx_dmpain = 101
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Drowning
sfx_drown = 102
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret) being destroyed; [Brak Eggman's](https://wiki.srb2.org/wiki/Brak_Eggman) electric barrier deactivating
sfx_fizzle = 103
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Big Floating Mine](https://wiki.srb2.org/wiki/Big_Floating_Mine) approaching the player
sfx_gbeep = 104
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Firing a Weapon Ring
sfx_wepfir = 105
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[THZ goo water](https://wiki.srb2.org/wiki/Linedef_type_124), [Egg Slimer](https://wiki.srb2.org/wiki/Egg_Slimer) goop landing on ground
sfx_ghit = 106
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Plunging into water
sfx_gloop = 107
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Egg Slimer](https://wiki.srb2.org/wiki/Egg_Slimer) throwing goop
sfx_gspray = 108
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Recycler](https://wiki.srb2.org/wiki/Recycler)
sfx_gravch = 109
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a [ring](https://wiki.srb2.org/wiki/ring)
sfx_itemup = 110
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Bird Aircraft Strike Hazard](https://wiki.srb2.org/wiki/Bird_Aircraft_Strike_Hazard) flying
sfx_jet = 111
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Transferring a life in multiplayer;Unused sound from [XSRB2](https://wiki.srb2.org/wiki/2.0:XSRB2) (collecting a jewel shard)
sfx_jshard = 112
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Time up ([Special Stage](https://wiki.srb2.org/wiki/Special_Stage)), Wrong [Star Post](https://wiki.srb2.org/wiki/Star_Post) (Race)
sfx_lose = 113
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Level End Sign](https://wiki.srb2.org/wiki/Level_End_Sign) spinning; picking up a flag (CTF)
sfx_lvpass = 114
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Minus](https://wiki.srb2.org/wiki/Minus) tunneling underground
sfx_mindig = 115
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Teleport](https://wiki.srb2.org/wiki/Teleport)
sfx_mixup = 116
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Golden Monitor](https://wiki.srb2.org/wiki/Golden_Monitor) activating
sfx_monton = 117
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Egg Slimer](https://wiki.srb2.org/wiki/Egg_Slimer) jumping
sfx_pogo = 118
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Enemy or monitor being destroyed
sfx_pop = 119
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring) being fired
sfx_rail1 = 120
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring) crashing sound
sfx_rail2 = 121
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile)/[Snailer](https://wiki.srb2.org/wiki/Snailer) firing missile
sfx_rlaunc = 122
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A [Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield) spawning around the player
sfx_shield = 123
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A [Whirlwind Shield](https://wiki.srb2.org/wiki/Whirlwind_Shield) spawning around the player
sfx_wirlsg = 124
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A [Force Shield](https://wiki.srb2.org/wiki/Force_Shield) spawning around the player
sfx_forcsg = 125
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Weak Force Shield
sfx_frcssg = 126
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---An [Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield) spawning around the player
sfx_elemsg = 127
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---An [Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) spawning around the player
sfx_armasg = 128
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---An [Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield) spawning around the player
sfx_attrsg = 129
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Losing a shield
sfx_shldls = 130
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Speed pad](https://wiki.srb2.org/wiki/Linedef_type_4)
sfx_spdpad = 131
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Spike](https://wiki.srb2.org/wiki/Spikes) hitting a player
sfx_spkdth = 132
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Spring](https://wiki.srb2.org/wiki/Spring) being hit
sfx_spring = 133
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Gargoyle](https://wiki.srb2.org/wiki/Gargoyle) being pushed (unused)
sfx_statu1 = 134
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Gargoyle](https://wiki.srb2.org/wiki/Gargoyle) being pushed
sfx_statu2 = 135
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Star Post](https://wiki.srb2.org/wiki/Star_Post) being activated
sfx_strpst = 136
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Super transformation
sfx_supert = 137
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile) dashing
sfx_telept = 138
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Chaos Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald) appearing on [Special Stage](https://wiki.srb2.org/wiki/Special_Stage) results screen
sfx_tink = 139
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Special Stage Token](https://wiki.srb2.org/wiki/Special_Stage_Token) being collected
sfx_token = 140
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret)/[Pop-up Turret](https://wiki.srb2.org/wiki/Pop-up_Turret) firing shot
sfx_trfire = 141
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret) loading
sfx_trpowr = 142
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret) laser hitting a target
sfx_turhit = 143
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Whirlwind Shield](https://wiki.srb2.org/wiki/Whirlwind_Shield) jump, launching out of a Dust Devil
sfx_wdjump = 144
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Spincushion](https://wiki.srb2.org/wiki/Spincushion)
sfx_shrpsp = 145
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A Spincushion launching toward the player
sfx_shrpgo = 146
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) spinning out
sfx_mswarp = 147
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) bouncing off the walls/breaking through spikes
sfx_mspogo = 148
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Fang the Sniper](https://wiki.srb2.org/wiki/Fang_the_Sniper) bouncing on his tail
sfx_boingf = 149
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Fang firing his cork gun
sfx_corkp = 150
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Cork hitting an obstacle
sfx_corkh = 151
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Fang getting caught.
sfx_alart = 152
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A clone fighter spawning. (Sound from Sonic the Fighters)
sfx_vwre = 153
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A [TNT Barrel](https://wiki.srb2.org/wiki/TNT_Barrel) being launched.
sfx_bowl = 154
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---The train in [Arid Canyon Zone Act 2](https://wiki.srb2.org/wiki/Arid_Canyon_Zone_Act_2) [and 3](https://wiki.srb2.org/wiki/Arid_Canyon_Zone_Act_3).
sfx_chuchu = 155
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SRB2: Touching an Egg Robo in [Castle Eggman Zone Act 3](https://wiki.srb2.org/wiki/Castle_Eggman_Zone_Act_3)
---SRB2Kart: Hitting someone in the head with a Banana.
---Super Smash Bros.: The Home-Run Bat hitting another player.DRRR: Hitting someone with a Kitchen Sink or Banana in the head
sfx_bsnipe = 156
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Amy Rose](https://wiki.srb2.org/wiki/Amy_Rose) hitting a Spring with her hammer.
sfx_sprong = 157
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A [Lavafall](https://wiki.srb2.org/wiki/Lavafall) about to erupt.
sfx_lvfal1 = 158
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A [Pterabyte](https://wiki.srb2.org/wiki/Pterabyte) swooping towards the player.
sfx_pscree = 159
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Ice cracking
sfx_iceb = 160
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Shattered object
sfx_shattr = 161
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Rings being depleted from the player's count
sfx_antiri = 162
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Score tally cashier noise
sfx_chchng = 163
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Air countdown
sfx_dwnind = 164
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Emerald Hunt](https://wiki.srb2.org/wiki/Emerald_Hunt)/[Emblem](https://wiki.srb2.org/wiki/Emblem) radar
sfx_emfind = 165
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Flag captured
sfx_flgcap = 166
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Menu sound
sfx_menu1 = 167
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Alternate one-up jingle
sfx_oneup = 168
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Score tally point counter
sfx_ptally = 169
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Netgame chat sound
sfx_radio = 170
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Weapon changing in [Match](https://wiki.srb2.org/wiki/Match)
sfx_wepchg = 171
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Underwater sound
sfx_wtrdng = 172
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Legend of Zelda chimes
sfx_zelda = 173
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---An error has occurred while loading a file
sfx_adderr = 174
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---A file could not be added
sfx_notadd = 175
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---File added
sfx_addfil = 176
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Finishing a stage
sfx_ideya = 177
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Finishing a stage (Christmas)
sfx_xideya = 178
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[NiGHTS Bumper](https://wiki.srb2.org/wiki/NiGHTS_Bumper)
sfx_nbmper = 179
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---NiGHTS Bumper (Christmas)
sfx_nxbump = 180
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a [Chip](https://wiki.srb2.org/wiki/Chip)
sfx_ncchip = 181
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a [star](https://wiki.srb2.org/wiki/Ring)
sfx_ncitem = 182
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a [bell](https://wiki.srb2.org/wiki/Ring) (Christmas)
sfx_nxitem = 183
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bonus time start
sfx_ngdone = 184
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Bonus time start (Christmas)
sfx_nxdone = 185
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Starting a drill
sfx_drill1 = 186
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Drilling
sfx_drill2 = 187
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a power-up
sfx_ncspec = 188
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Super Sonic being hurt
sfx_nghurt = 189
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Immediate stop
sfx_ngskid = 190
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Flying through a [hoop](https://wiki.srb2.org/wiki/hoop) (normal)
sfx_hoop1 = 191
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Flying through a [hoop](https://wiki.srb2.org/wiki/hoop) (link number is between 6 and 10)
sfx_hoop2 = 192
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Flying through a [hoop](https://wiki.srb2.org/wiki/hoop) (link number is 11 or above)/[CTF](https://wiki.srb2.org/wiki/CTF): Opposing team's flag returned to base
sfx_hoop3 = 193
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Uncovering a power-up
sfx_hidden = 194
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Paraloop
sfx_prloop = 195
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Ten seconds left on the timer (unused)
sfx_timeup = 196
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---The player jumping in a NiGHTS map.
sfx_ngjump = 197
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Unknown
sfx_peww = 198
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Cacolantern](https://wiki.srb2.org/wiki/Cacolantern) awaking
sfx_lntsit = 199
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Killing a [Cacolantern](https://wiki.srb2.org/wiki/Cacolantern)
sfx_lntdie = 200
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Destroying a pumpkin
sfx_pumpkin = 201
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Hit by a [Spinbobert](https://wiki.srb2.org/wiki/Spinbobert)
sfx_ghosty = 202
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[King Bowser](https://wiki.srb2.org/wiki/King_Bowser) breathing fire
sfx_koopfr = 203
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Hitting a ceiling
sfx_mario1 = 204
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Hitting a [Koopa Shell](https://wiki.srb2.org/wiki/Koopa_Shell)
sfx_mario2 = 205
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a power-up
sfx_mario3 = 206
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Collecting a [coin](https://wiki.srb2.org/wiki/coin)
sfx_mario4 = 207
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Killing a [Goomba](https://wiki.srb2.org/wiki/Goomba)
sfx_mario5 = 208
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Jumping
sfx_mario6 = 209
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Thokking/Throwing Fireballs
sfx_mario7 = 210
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Getting hurt
sfx_mario8 = 211
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Opening a power-up
sfx_mario9 = 212
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Extra life](https://wiki.srb2.org/wiki/Extra_Life_Monitor)
sfx_marioa = 213
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---[Thwomp block](https://wiki.srb2.org/wiki/Thwomp_block) hitting the floor
sfx_thwomp = 214
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman bomb explosion (unused)
sfx_bebomb = 215
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman charging up his gun for a laser blast (unused)
sfx_bechrg = 216
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Unused Brak Eggman sound
sfx_becrsh = 217
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman hit, [Egg Colosseum](https://wiki.srb2.org/wiki/Egg_Colosseum)'s cage being destroyed
sfx_bedeen = 218
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman dying (unused)
sfx_bedie1 = 219
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman dying
sfx_bedie2 = 220
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman firing (unused)
sfx_beeyow = 221
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman landing
sfx_befall = 222
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman firing goop
sfx_befire = 223
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman jumping
sfx_beflap = 224
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman cannonball fire
sfx_begoop = 225
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman hitting antenna
sfx_begrnd = 226
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman getting hurt
sfx_behurt = 227
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman charging up jetpack (unused)
sfx_bejet1 = 228
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman jumping
sfx_belnch = 229
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman firing when out of bullets (unused)
sfx_beoutb = 230
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman screaming (unused)
sfx_beragh = 231
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman shooting missiles
sfx_beshot = 232
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman walking
sfx_bestep = 233
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman walking
sfx_bestp2 = 234
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman laughing
sfx_bewar1 = 235
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman laughing
sfx_bewar2 = 236
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman laughing
sfx_bewar3 = 237
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman laughing
sfx_bewar4 = 238
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman missile exploding
sfx_bexpld = 239
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman exploding
sfx_bgxpld = 240
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman's electric barrier
sfx_beelec = 206
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman launching a rocket
sfx_brakrl = 242
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---Brak Eggman's rocket exploding
sfx_brakrx = 243
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Jumping
sfx_s1a0 = 244
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Checkpoint
sfx_s1a1 = 245
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Spike pop-up sound
sfx_s1a2 = 246
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Death, losing a shield
sfx_s1a3 = 247
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Skidding
sfx_s1a4 = 248
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1a5 = 249
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Spike death, spike hitting a player with shield
sfx_s1a6 = 250
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Pushing an object
sfx_s1a7 = 251
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Leaving a Special Stage
sfx_s1a8 = 252
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Increasing/decreasing Special Stage speed
sfx_s1a9 = 253
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Falling into water
sfx_s1aa = 254
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: 
---SRB2: Jet Jaw approaching the player
sfx_s1ab = 255
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Eggman hurt
sfx_s1ac = 256
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Touching an air bubble
sfx_s1ad = 257
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Fireball emerging, lava bubble
sfx_s1ae = 258
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: ShieldDRRR: Casting a barrier (Battle Mode)
sfx_s1af = 259
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Scrap Brain Zone saw blades
sfx_s1b0 = 260
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Electricity
sfx_s1b1 = 261
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: DrowningDRRR: Getting caught in a Bubble Shield trap
sfx_s1b2 = 262
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Scrap Brain flame jet
sfx_s1b3 = 263
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Bumper
---DRRR: Toggling ALL items in Random Item Toggles
sfx_s1b4 = 264
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Collecting a ring - stereoDRRR: Using a Ring
sfx_s1b5 = 265
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Spike pop-up sound; stereo
sfx_s1b6 = 266
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Final Zone piston moving
sfx_s1b7 = 267
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1b8 = 268
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Crumbling platform
sfx_s1b9 = 269
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Color Block
---DRRR: Toggling an item in Random Item Toggles
sfx_s1ba = 270
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Trapdoor opening
---DRRR: Podium platforms rising
sfx_s1bb = 271
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1bc = 272
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1bd = 273
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Player spinning
sfx_s1be = 274
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Continue got
sfx_s1bf = 275
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1c0 = 276
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Enemy or monitor destroyed
sfx_s1c1 = 277
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Underwater sound
sfx_s1c2 = 278
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Entering a Big Ring
sfx_s1c3 = 279
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Small explosion
sfx_s1c4 = 280
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Score tally finishedDRRR: Ring Box/Capsule finishes giving rings
sfx_s1c5 = 281
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Rings lostDRRR: Rings lost
sfx_s1c6 = 282
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Marble Zone crushers being lifted
sfx_s1c7 = 283
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1c8 = 284
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Bonus pointsSRB2Kart: Hitting a player with an item, with "Character voices" set to `never`.DRRR: Item box collected
sfx_s1c9 = 285
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Entering a Special Stage
sfx_s1ca = 286
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1:
sfx_s1cb = 287
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Spring
sfx_s1cc = 288
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Menu sound
sfx_s1cd = 289
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Collecting a ring - mono
sfx_s1ce = 290
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S1: Level End Sign spinning
sfx_s1cf = 291
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Player jumping
sfx_s220 = 292
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Checkpoint, "COOL!" message in Special Stages
sfx_s221 = 293
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Spike pop-out sound
sfx_s222 = 294
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Dying, losing a shield
sfx_s223 = 295
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Skidding
sfx_s224 = 296
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: A Rumble sound
sfx_s225 = 297
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Spike death, spike hitting a player with shield
sfx_s226 = 298
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Title screen shineDRRR: Collecting a Ring
sfx_s227 = 299
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Menu beep
sfx_s228 = 300
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s229 = 301
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Falling into water
sfx_s22a = 302
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s22b = 303
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Boss hurt
sfx_s22c = 304
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Touching an air bubble
sfx_s22d = 305
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Fireball emerging
sfx_s22e = 306
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Shield
sfx_s22f = 307
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Robo-Sonic spinning
sfx_s230 = 308
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Electrical sound
sfx_s231 = 309
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Drowned
sfx_s232 = 310
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Fire Spread
sfx_s233 = 311
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Bumper
sfx_s234 = 312
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Collecting a ring
sfx_s235 = 313
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Spike Retract
sfx_s236 = 314
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s237 = 315
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Door?
sfx_s238 = 316
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Big wall smash
sfx_s239 = 317
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s23a = 318
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s23b = 319
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Spindash release
---SRB2Kart: Drift boost
sfx_s23c = 320
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: 
---SRB2Kart: Ballhog bouncing
sfx_s23d = 321
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Player spinning
sfx_s23e = 322
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Continue got
sfx_s23f = 323
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Casino Night Zone slot machine
sfx_s240 = 324
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Enemy or monitor destroyed
sfx_s241 = 325
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Underwater sound
sfx_s242 = 326
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Big Ring (Sonic 1 Leftover)
sfx_s243 = 327
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: bomb explode
sfx_s244 = 328
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Score tally finished
sfx_s245 = 329
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Rings lost
sfx_s246 = 330
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s247 = 331
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s248 = 332
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Bonus Points (Sonic 1 Leftover)
sfx_s249 = 333
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Entering a Special Stage
sfx_s24a = 334
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Crumbling platform
sfx_s24b = 335
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Spring
sfx_s24c = 336
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Menu sound
sfx_s24d = 337
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Collecting a ring
sfx_s24e = 338
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Level End Sign spinningDRRR: Resetting button mappings back to default
sfx_s24f = 339
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Electric spark
sfx_s250 = 340
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s251 = 341
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s252 = 342
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Player finishes in 2 Player VS mode
---SRB2Kart: 1st place finishes
sfx_s253 = 343
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Oil Pipe cap launching
sfx_s254 = 344
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Oil Ocean Zone spikes
sfx_s255 = 345
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Casino Night Zone elevator
sfx_s256 = 346
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s257 = 347
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Casino Night Zone bouncy bars
---DRRR: Toggling Drop Target in Random Item Toggles
sfx_s258 = 348
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Casino Night Zone triangular bumper
---SRB2Kart: Throwable items colliding with one another
sfx_s259 = 349
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Chemical Plant Zone slime balls
sfx_s25a = 350
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s25b = 351
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s25c = 352
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2:
sfx_s25d = 353
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Eggman flies away
sfx_s25e = 354
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Transformation
---SRB2Kart: Boost start
sfx_s25f = 355
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S2: Spindash charge
sfx_s260 = 356
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Collecting a Chaos Emerald - stereo (Note: both sounds are identical in SRB2)
sfx_s3k2b = 357
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Collecting a ring - stereo (Note: both sounds are identical in SRB2)
sfx_s3k33 = 358
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Collecting a ring - mono (Note: both sounds are identical in SRB2)
sfx_s3k34 = 359
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death, losing a shield
sfx_s3k35 = 360
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Skidding
sfx_s3k36 = 361
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Spike death, spike hitting a player with shield
sfx_s3k37 = 362
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Touching an air bubble
sfx_s3k38 = 363
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Falling in water
sfx_s3k39 = 364
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Orbinaut, Jawz, or Rocket Sneakers deployed
sfx_s3k3a = 365
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Drowning
sfx_s3k3b = 366
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Spinning
sfx_s3k3c = 367
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Popping a badnik or monitor
sfx_s3k3d = 368
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Flame shield
sfx_s3k3e = 369
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Bubble shield
sfx_s3k3f = 370
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
---SRB2: [Attraction Shield](https://wiki.srb2.org/wiki/Shields) homing attack
sfx_s3k40 = 371
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Thunder shield
sfx_s3k41 = 372
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Insta-shield
---SRB2: Twin-Spin ability
sfx_s3k42 = 373
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Fire shield's fireball attack, Launch Base Zone flamethrower
sfx_s3k43 = 374
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Water shield's bounce attack, Signpost bouncing off hidden monitor
sfx_s3k44 = 375
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Lightning shield's double-jump
---SRB2: [ERZ2](https://wiki.srb2.org/wiki/ERZ2) sound effect
sfx_s3k45 = 376
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Turning super in Doomsday Zone
sfx_s3k46 = 377
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sandopolis rising sand wall
sfx_s3k47 = 378
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Rinobot skidding, Spiked crushing platforms from Lava Reef Zone flying
---SRB2: Button sound used in [CEZ2](https://wiki.srb2.org/wiki/CEZ2)
sfx_s3k48 = 379
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Big rock falling down (used in a Knuckles cutscene) 
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Player or Orbinaut bumping off a wall
sfx_s3k49 = 380
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Grabbing onto Tails or a bar, Knuckles latching onto wall
---SRB2: Grabbing onto Tails or a [rope pulley](https://wiki.srb2.org/wiki/Rope_Hang), Knuckles latching onto wall
sfx_s3k4a = 381
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Disappearing rock platforms from Angel Island Zone, Angel Island Zone's boss appearing/disappearing from waterfall
---SRB2: Entering a Dust Devil
sfx_s3k4b = 382
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Knuckles landing after gliding, Angel Island Zone's flipping bridges, Player decending using rappel wire in Sandopolis Zone
sfx_s3k4c = 383
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Enemy firing a projectile
---SRB2: [Jetty-Syn Gunner](https://wiki.srb2.org/wiki/Jetty-Syn_Gunner) firing bullet
sfx_s3k4d = 384
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Explosion sound, Hydrocity Zone's boss's depth charges exploding
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) napalm bomb exploding
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Explosion sound
sfx_s3k4e = 385
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Angel Island Zone's mini-boss's flamethrower
sfx_s3k4f = 386
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launch Base Zone's mini-boss siren
sfx_s3k50 = 387
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Projectile falling
---SRB2: [Jetty-Syn Bomber](https://wiki.srb2.org/wiki/Jetty-Syn_Bomber) or [Skim](https://wiki.srb2.org/wiki/Skim) dropping bomb
sfx_s3k51 = 388
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Spike pop-up sound
sfx_s3k52 = 389
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Charging sound
---SRB2: ERZ2 sound effect, [Brak Eggman (Old)](https://wiki.srb2.org/wiki/Brak_Eggman_(Old)) preparing to destroy platform
sfx_s3k53 = 390
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Firing sound
---SRB2: ERZ2 sound effect, [Brak Eggman (Old)](https://wiki.srb2.org/wiki/Brak_Eggman_(Old)) destroying platform, [Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) firing energy balls
sfx_s3k54 = 391
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Pushable rock moving on track in Sandopolis Zone
---SRB2: [Rope pulley](https://wiki.srb2.org/wiki/Rope_Hang) sound
sfx_s3k55 = 392
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound for Angel Island Zone 2's end bridge (?)
sfx_s3k56 = 393
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Water sound from Hydrocity Zone
sfx_s3k57 = 394
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Door closing sound
---SRB2: ERZ2 sound effect
sfx_s3k58 = 395
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Collapsing platform
sfx_s3k59 = 396
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
---SRB2: Metal Sonic aiming at the player
sfx_s3k5a = 397
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Menu/Results screen beep, Player pressing a buttonDRRR: Menu beep, Activating the buttons on Chrome Gadget and Desert Palace Zones
sfx_s3k5b = 398
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mecha Sonic flashing
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman)'s electric barrier spark sound
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Mine pulsing
sfx_s3k5c = 399
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's boss dropping ball, Stalactite from Ice Cap Zone landing
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) napalm bomb/thrown [Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring) bouncing off floor
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Orbinaut or Jawz destroyed after bumping into (too many/a) wall(s)
sfx_s3k5d = 400
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launch Base Zone's Corkey enemy firing laser
sfx_s3k5e = 401
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Crusher smashing
sfx_s3k5f = 402
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's boss moving into the background
sfx_s3k60 = 403
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's boss drilling into ground
sfx_s3k61 = 404
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Jump sound
sfx_s3k62 = 405
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Checkpoint, Menu confirm soundDRRR: Menu confirm
sfx_s3k63 = 406
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Player grabbing pulley in Marble Garden Zone
---SRB2: [Pop-up Turret](https://wiki.srb2.org/wiki/Pop-up_Turret)/[Spike](https://wiki.srb2.org/wiki/Spike) pop-up sound, [Tumbleweed](https://wiki.srb2.org/wiki/Tumbleweed_(Big)) rolling around
sfx_s3k64 = 407
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Blue Sphere collected
---SRB2: Blue Sphere collected
sfx_s3k65 = 408
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Blue Sphere clear
---SRB2: Multiplayer Super form end, time runs out in a Special Stage
sfx_s3k66 = 409
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Head statue shooting arrows in Marble Garden Zone, Flying Battery Zone's missiles
sfx_s3k67 = 410
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Player can now be super
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Final Lap
sfx_s3k68 = 411
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Pushing a rock/switch in Sandopolis Zone
sfx_s3k69 = 412
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Special Stage finish
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Race Completed
sfx_s3k6a = 413
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k6b = 414
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sandopolis Zone's Sandworm enemy jumping out of quicksand
sfx_s3k6c = 415
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k6d = 416
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Boss hit
---SRB2: [Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) being destroyed
sfx_s3k6e = 417
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Rumble
sfx_s3k6f = 418
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Hydrocity Zone's mini-boss flying up
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) small napalm bomb exploding
sfx_s3k70 = 419
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k71 = 420
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's hover fans, Launch Base Zone's cup elevator
sfx_s3k72 = 421
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's vertical one-way tunnel sound, Teleporter from Hidden Palace Zone/Sky Sanctuary Zone, Death Egg Zone's gravity-reversal button
---SRB2: ERZ2 sound effect
sfx_s3k73 = 422
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's horizontal one-way tunnel sound, Ice Cap Zone's mini-boss summoning ice balls, Death Egg Zone's Chainspike enemy moving, Puzzle bumpers from Death Egg Zone 1's engine room
---SRB2: ERZ2 sound effect
sfx_s3k74 = 423
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's rising platforms
sfx_s3k75 = 424
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Trap door closing after player is ejected from a corkscrew in Carnival Night Zone
---SRB2: Player riding in a minecart
sfx_s3k76 = 425
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Balloon pop
sfx_s3k77 = 426
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's boss's magnet
sfx_s3k78 = 427
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's Sparkle enemy emitting electrical charge, Lightning from Death Egg Zone
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman)'s electric barrier respawning sound
sfx_s3k79 = 428
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Lava Reef Zone's boss appearing
sfx_s3k7a = 429
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone's ratchet rack bumpers
---SRB2: Player bouncing off [Egg Guard](https://wiki.srb2.org/wiki/Egg_Guard)'s shield or [Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg) decoy
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Orbinaut or Jawz hitting a player
sfx_s3k7b = 430
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Flying Battery Zone's magnetic platform
sfx_s3k7c = 431
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k7d = 432
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Knuckles skidding after landing from a glide
---SRB2: [Knuckles](https://wiki.srb2.org/wiki/Knuckles) skidding after landing from a glide
sfx_s3k7e = 433
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Freezer from Ice Cap Zone
sfx_s3k7f = 434
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Harmful ice spike ball from Ice Cap Zone being broken
sfx_s3k80 = 435
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Cannon launching/Player ejected from pipes in Launch Base Zone 2
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) firing napalm bomb
sfx_s3k81 = 436
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launching out of ground in Launch Base Zone 1, Falling into ground and launching out in Sandopolis Zone 1, Sandopolis rising sand wall destroyed
---SRB2: [Minus](https://wiki.srb2.org/wiki/Minus) popping up
sfx_s3k82 = 437
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Angel Island Zone 2's end bridge collapsing
---SRB2Kart: Player's engine backfires as a result of failed start boostDRRR: Player falling off the map during POSITION phase
sfx_s3k83 = 438
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k84 = 439
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k85 = 440
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launch Base Zone's alarm sound
sfx_s3k86 = 441
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Bouncing on a mushroom, Death Egg Zone's boss dropping crawling bombs
sfx_s3k87 = 442
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone's hand-operated elevator sound
sfx_s3k88 = 443
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone's boss satellite dish sound
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Jawz lock-on reticle
sfx_s3k89 = 444
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sandopolis Zone's ghosts disappearing, Sky Sanctuary Zone's bouncy clouds, Death Egg Zone's Spikebonker enemy shooting its spikeball
sfx_s3k8a = 445
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone's mini-boss chopping wood
---SRB2: Amy's hammer hitting the ground
sfx_s3k8b = 446
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone's mini-boss stuck in a log
sfx_s3k8c = 447
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k8d = 448
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k8e = 449
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Door opening
sfx_s3k8f = 450
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Door closing in Sandopolis Zone 2, Knuckles defeated
---SRB2: Fang defeated
sfx_s3k90 = 451
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Door closed in Sandopolis Zone 2
sfx_s3k91 = 452
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sandopolis Zone 2's ghosts appearing
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Hyudoro stealing an item
sfx_s3k92 = 453
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sandopolis Zone's boss's shell re-appearing
sfx_s3k93 = 454
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's Bubbles enemy protracting its spikes, Chained platforms from Lava Reef Zone
sfx_s3k94 = 455
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Lava Reef Zone's mini-boss's hand appearing
sfx_s3k95 = 456
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Crushers/falling columns from Ice Cap Zone
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Orbinaut rolling + dropped (from spinning out)
sfx_s3k96 = 457
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone's Cluckoid enemy releasing a gust of wind
sfx_s3k97 = 458
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Falling spike in Lava Reef Zone
sfx_s3k98 = 459
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) small napalm bomb bouncing off wall
sfx_s3k99 = 460
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3k9a = 461
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sandopolis Zone's boss walking, Lava Reef Zone's mini-boss slamming hand onto ground, Lava Reef Zone's boss hit, Death Egg Zone's final boss walking/slamming fingers onto ground, Doomsday Zone's boss hit
sfx_s3k9b = 462
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Super Emerald collected
sfx_s3k9c = 463
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Eggman aiming at platforms in Lava Reef Zone 2
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) targeting sound
sfx_s3k9d = 464
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Flying Battery Zone's rotating sphere chain
sfx_s3k9e = 465
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Super transformation, Lava Reef Zone 2 boss cutscene sound, Death Egg Zone's vertical gravity-reversal tunnel
sfx_s3k9f = 466
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg launching Egg Robos in Sky Sanctuary Zone
sfx_s3ka0 = 467
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3ka1 = 468
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Hydrocity Zone's Turbo Spiker enemy firing its shell, Launcher from Flying Battery Zone/Death Egg Zone
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Sparks/Mini-Turbo charged
sfx_s3ka2 = 469
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone's swinging platform lift
sfx_s3ka3 = 470
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mecha Sonic transforming super
sfx_s3ka4 = 471
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3ka5 = 472
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
---SRB2: Failed Attraction Shield homing attack
sfx_s3ka6 = 473
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Countdown beep for Competition mode/Death Egg Zone's light tunnel launcher
---SRB2: Competition/Race starting/Time Over countdown, Tag/H&S hiding period countdown, Ringslinger ending countdown (3, 2, 1)
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Starting Countdown (3, 2, 1)
sfx_s3ka7 = 474
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launch Base Zone's gate laser, Death Egg Zone's energy bridge
sfx_s3ka8 = 475
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Underwater counter
sfx_s3ka9 = 476
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Bumper
sfx_s3kaa = 477
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Continue got
sfx_s3kac = 494
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: "GO" beep for Competition mode/Death Egg Zone's light tunnel launcher
---SRB2: Competition/Race starting countdown, Tag/H&S hiding period countdown (GO)
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Starting Countdown (GO)
sfx_s3kad = 495
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Pinball flipper
sfx_s3kae = 496
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Warp to bonus/special stage
sfx_s3kaf = 497
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Score tally done
sfx_s3kb0 = 498
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Spring
sfx_s3kb1 = 499
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Error sound
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Wrong way/Too many checkpoints skipped
sfx_s3kb2 = 500
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Big Ring warp/collected
sfx_s3kb3 = 501
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Boss explosion
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) sniper attack explosion
sfx_s3kb4 = 502
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound
sfx_s3kb5 = 503
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Spindash release
sfx_s3kb6 = 504
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Save screen select sound, Slot Machine
sfx_s3kb7 = 505
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Signpost falling sound, Super Emerald sound
sfx_s3kb8 = 506
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Rings lost
sfx_s3kb9 = 507
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Tails flying
sfx_s3kba = 508
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Tails tired
sfx_s3kbb = 509
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Short)
sfx_s3kbcs = 510
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Long)
sfx_s3kbcl = 511
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Battleship flying over Angel Island Zone/Flying Battery flying over Mushroom Hill Zone (Short)
sfx_s3kbds = 512
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Battleship flying over Angel Island Zone/Flying Battery flying over Mushroom Hill Zone (Long)
---SRB2Kart: Egg Zeppelin Zone ambience
sfx_s3kbdl = 513
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Eggman flying away (Short)
sfx_s3kbes = 514
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Eggman flying away (Long)
sfx_s3kbel = 515
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Water spinning at Hydrocity Zone's mini-boss, Ice Cap Zone's mini-boss flying (Short)
sfx_s3kbfs = 516
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Water spinning at Hydrocity Zone's mini-boss, Ice Cap Zone's mini-boss flying (Long)
sfx_s3kbfl = 517
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Large fan from Hydrocity Zone, Horizontal turbines from Lava Reef Zone (Short)
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Jawz fired
sfx_s3kc0s = 518
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Large fan from Hydrocity Zone, Horizontal turbines from Lava Reef Zone (Long)
sfx_s3kc0l = 519
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Small fan from Hydrocity Zone (Short)
sfx_s3kc1s = 520
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Small fan from Hydrocity Zone (Long)
sfx_s3kc1l = 521
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Flying Battery Zone/Lava Reef Zone flamethrower (Short)
---SRB2: [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) flamethrower
sfx_s3kc2s = 522
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Flying Battery Zone/Lava Reef Zone flamethrower (Long)
sfx_s3kc2l = 523
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone's gravity switch tunnel sound, Death Egg Zone's mini-boss orb rotating, Competition mode character select sound (Short)
sfx_s3kc3s = 524
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone's gravity switch tunnel sound, Death Egg Zone's mini-boss orb rotating, Competition mode character select sound (Long)
sfx_s3kc3l = 525
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone's mini-boss firing laser (Short)
sfx_s3kc4s = 526
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone's mini-boss firing laser (Long)
sfx_s3kc4l = 527
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Short)
sfx_s3kc5s = 528
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Long)
sfx_s3kc5l = 529
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Rotating vertical mesh from Carnival Night Zone, Death Egg Zone's mini-boss's second form flying, Death Egg Zone's boss flying, Orbiting around magnetic ball in Glowing Spheres bonus stage (Short)
sfx_s3kc6s = 530
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Rotating vertical mesh from Carnival Night Zone, Death Egg Zone's mini-boss's second form flying, Death Egg Zone's boss flying, Orbiting around magnetic ball in Glowing Spheres bonus stage (Long)
sfx_s3kc6l = 531
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone cannon aiming (short)
sfx_s3kc7s = 532
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Carnival Night Zone cannon aiming (long)
sfx_s3kc7l = 533
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sonic riding snowboard in Ice Cap Zone 1, Ice Cap Zone's Penguinator enemy sliding, Sandopolis Zone's sand chutes, Sand rising after cork is broken in Sandopolis Zone 2 (Short)
sfx_s3kc8s = 534
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Sonic riding snowboard in Ice Cap Zone 1, Ice Cap Zone's Penguinator enemy sliding, Sandopolis Zone's sand chutes, Sand rising after cork is broken in Sandopolis Zone 2 (Long)
sfx_s3kc8l = 535
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's swinging spikeball, Door closing in Flying Battery Zone, Flying Battery Zone's boss swinging (Short)
sfx_s3kc9s = 536
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's swinging spikeball, Door closing in Flying Battery Zone, Flying Battery Zone's boss swinging (Long)
sfx_s3kc9l = 537
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Player going through light tunnel in Death Egg Zone (Short) 
---[SRB2Kart](https://wiki.srb2.org/wiki/SRB2Kart): Player respawning from falling off the track
sfx_s3kcas = 538
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Player going through light tunnel in Death Egg Zone (Long)
sfx_s3kcal = 539
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's ground rising (Short)
sfx_s3kcbs = 540
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's ground rising (Long)
sfx_s3kcbl = 541
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's boss causing ground to collapse (Short)
---SRB2: Fang digging through the box of scrap metal
sfx_s3kccs = 542
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Marble Garden Zone's boss causing ground to collapse (Long)
sfx_s3kccl = 543
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg rumbling sound from Launch Base Zone (Short)
sfx_s3kcds = 544
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg rumbling sound from Launch Base Zone (Long)
sfx_s3kcdl = 545
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone wind tunnel (Short)
sfx_s3kces = 546
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Mushroom Hill Zone wind tunnel (Long)
sfx_s3kcel = 547
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound? (Short)
sfx_s3kcfs = 548
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound? (Long)
sfx_s3kcfl = 549
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launch Base Zone's boss rising (Short)
sfx_s3kd0s = 550
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Launch Base Zone's boss rising (Long)
sfx_s3kd0l = 551
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Short)
sfx_s3kd1s = 552
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Long)
sfx_s3kd1l = 553
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Gumball Machine handle turn (Short)
sfx_s3kd2s = 554
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Gumball Machine handle turn (Long)
sfx_s3kd2l = 555
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound? (Short)
sfx_s3kd3s = 556
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound? (Long)
sfx_s3kd3l = 557
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone 1's engine room sound (Short)
sfx_s3kd4s = 558
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Death Egg Zone 1's engine room sound (Long)
sfx_s3kd4l = 559
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Falling lava in Lava Reef Zone (Short)
sfx_s3kd5s = 560
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Falling lava in Lava Reef Zone (Long)
---SRB2: Falling lava in Red Volcano Zone
sfx_s3kd5l = 561
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Short)
sfx_s3kd6s = 562
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Long)
sfx_s3kd6l = 563
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Lava Reef Zone's spindash lift moving, Moving conveyor belt from Death Egg Zone (Short)
sfx_s3kd7s = 564
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Lava Reef Zone's spindash lift moving, Moving conveyor belt from Death Egg Zone (Long)
sfx_s3kd7l = 565
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Short)
---SRB2: [Sharp](https://wiki.srb2.org/wiki/Sharp) turning red
sfx_s3kd8s = 566
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Unused sound (Long)
sfx_s3kd8l = 567
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Magnetic ball from Flying Battery Zone, Hover machine from Death Egg Zone (Short)
sfx_s3kd9s = 568
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Magnetic ball from Flying Battery Zone, Hover machine from Death Egg Zone (Long)
sfx_s3kd9l = 569
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Knuckles turning on fan in Mushroom Hill Zone 2 (Short)
sfx_s3kdas = 570
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Knuckles turning on fan in Mushroom Hill Zone 2 (Long)
sfx_s3kdal = 571
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Running on water in Hydrocity Zone (Short)
sfx_s3kdbs = 572
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3&K: Running on water in Hydrocity Zone (Long)
sfx_s3kdbl = 573
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3DB: Collecting a FlickySRB2Kart: Stealing a Bumper from another player
sfx_3db06 = 574
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3DB:
sfx_3db09 = 575
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3DB:
sfx_3db14 = 576
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---S3DB: Unknown
sfx_3db16 = 577
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Skidding
---SRB2Kart: Improper start.
sfx_cdfm00 = 578
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Releasing a Spin Dash
sfx_cdfm01 = 579
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Player jumping
sfx_cdfm02 = 580
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Death, losing a shield
sfx_cdfm03 = 581
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Rings lost
sfx_cdfm04 = 582
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Collecting a ring
sfx_cdfm05 = 583
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Enemy or monitor being destroyed
sfx_cdfm06 = 584
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Shield
sfx_cdfm07 = 585
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Spring
sfx_cdfm08 = 586
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm09 = 587
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm10 = 588
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm11 = 589
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm12 = 590
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm13 = 591
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm14 = 592
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm15 = 593
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm16 = 594
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm17 = 595
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm18 = 596
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm19 = 597
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm20 = 598
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm21 = 599
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm22 = 600
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm23 = 601
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm24 = 602
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm25 = 603
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm26 = 604
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm27 = 605
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Unknown
---SRB2Kart: Eggman Monitor placed
sfx_cdfm28 = 606
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Touching an air bubble
sfx_cdfm29 = 607
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Checkpoint
sfx_cdfm30 = 608
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Entering the Special Stage
sfx_cdfm31 = 609
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm32 = 610
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Metallic Madness saw blade
sfx_cdfm33 = 611
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Wacky Workbench electrical trap activating
sfx_cdfm34 = 612
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm35 = 613
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm36 = 614
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Collision Chaos neon bumper
sfx_cdfm37 = 615
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Drowning
sfx_cdfm38 = 616
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Spike pop-up sound
---SRB2Kart: Mine activates
sfx_cdfm39 = 617
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Fan block
---SRB2: Boost Mode activated
sfx_cdfm40 = 618
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm41 = 619
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Metallic Madness boss's blades spinning
sfx_cdfm42 = 620
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Stardust Speedway door closing
sfx_cdfm43 = 621
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Extra Time UFO appears; Metallic Madness Zone's grow laserDRRR: Magician Box revealing transformed character
sfx_cdfm44 = 622
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm45 = 623
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm46 = 624
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm47 = 625
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm48 = 626
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm49 = 627
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm50 = 628
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm51 = 629
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm52 = 630
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Metallic Madness Zone's shrink laser
sfx_cdfm53 = 631
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm54 = 632
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm55 = 633
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm56 = 634
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Metal Sonic charging up
sfx_cdfm57 = 635
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Metal Sonic boosting
sfx_cdfm58 = 636
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Quartz Quadrant boss mine dropper
sfx_cdfm59 = 637
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---|-SCD:
sfx_cdfm60 = 638
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Speedpad activated
sfx_cdfm62 = 640
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:DRRR: Player passing through tripwire
sfx_cdfm63 = 641
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm64 = 642
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:DRRR: Battle Bumper destroyed
sfx_cdfm65 = 643
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm66 = 644
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:DRRR: ZVote being called
sfx_cdfm67 = 645
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm68 = 646
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm69 = 647
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Running on grass in a Special Stage
---SRB2Kart: Driving on off-road
sfx_cdfm70 = 648
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:DRRR: Lost Battle Bumper floating in the air
sfx_cdfm71 = 649
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Traveling through time
sfx_cdfm72 = 650
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Good Future success jingle, got Time Stone, Tails getting an extra lifeSRB2Kart: Destroying a UFODRRR: Getting an Extra Life
sfx_cdfm73 = 651
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Wacky Workbench Zone's bouncy floorsDRRR: Explosion cue
sfx_cdfm74 = 652
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm75 = 653
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm76 = 654
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm77 = 655
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdfm78 = 656
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Air countdown
sfx_cdfm79 = 657
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Touching a Future post
sfx_cdpcm0 = 658
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Touching a Past post
sfx_cdpcm1 = 659
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdpcm2 = 660
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Getting a Game Over after doing nothing for 3 minutes
sfx_cdpcm3 = 661
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Extra life
sfx_cdpcm4 = 662
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD:
sfx_cdpcm5 = 663
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Player being hugged by Amy
---SRB2: Player being hugged by Amy
sfx_cdpcm6 = 664
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Amy getting captured by Metal Sonic
---SRB2: Jumping into Amy
sfx_cdpcm7 = 665
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: The EGG-HVC-001 landing
sfx_cdpcm8 = 666
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---SCD: Collision Chaos bumper
---SRB2Kart: Nullified damage while player is flashing
sfx_cdpcm9 = 667
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Small explosion
sfx_kc2a = 668
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Skidding
sfx_kc2b = 669
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Rings lost
sfx_kc2c = 670
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Collecting a ring
sfx_kc2d = 671
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Enemy or monitor destroyed
sfx_kc2e = 672
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Spring
---SRB2Kart: Spring Panel
sfx_kc2f = 673
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Checkpoint
sfx_kc30 = 674
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Disappearing platformSRB2Kart: A racer in last place, or players who did not finish within the specified countdown time, exploding.DRRR: Bubble Shield popping upon fast-fall
sfx_kc31 = 675
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Earthquake
sfx_kc32 = 676
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc33 = 677
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Failure
sfx_kc34 = 678
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Amazing Arena clock ticking
sfx_kc35 = 679
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Metal Sonic flying
sfx_kc36 = 680
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:DRRR: The claw grabbing the map selected during voting time
sfx_kc37 = 681
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc38 = 682
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Zone roulette
---SRB2Kart: Voting screen roulette sound
sfx_kc39 = 683
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Bumper
sfx_kc3a = 684
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc3b = 685
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Spindash release
sfx_kc3c = 686
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Amazing Arena clock locationDRRR: Hyudoro returning with a stolen item
sfx_kc3d = 687
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:DRRR: Hyudoro giving a stolen item
sfx_kc3e = 688
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Enemy or monitor destroyed
sfx_kc3f = 689
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Boss hitDRRR: Tripwire pushing player back, Damaging battle item box, Overtime barriers appear (multi-use)
sfx_kc40 = 690
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc41 = 691
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:DRRR: Redeem Password
sfx_kc42 = 692
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc43 = 693
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc44 = 694
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc45 = 695
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Entering a Bonus StageSRB2Kart: Using the Shrink item
sfx_kc46 = 696
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc47 = 697
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Activating the Combi-CatcherSRB2Kart: A map being selected on the voting screen.
sfx_kc48 = 698
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc49 = 699
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Menu beep sound
---SRB2Kart: Choosing a map on the voting screen
sfx_kc4a = 700
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc4b = 701
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc4c = 702
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: 
---SRB2: Metal Sonic enters Boost Mode
sfx_kc4d = 703
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc4e = 704
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc4f = 705
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc50 = 706
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Amazing Arena pressure platform retracting 
---SRB2Kart: "No Contest" explosion smoke
sfx_kc51 = 707
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Amazing Arena pressure platform launchingDRRR: Losing a battle bumper after falling off the map
sfx_kc52 = 708
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Amazing Arena rideable platform
sfx_kc53 = 709
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Shield
sfx_kc54 = 710
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc55 = 711
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Beep
sfx_kc56 = 712
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Unused soundSRB2Kart: A Self-Propelled Bomb targeting the racer in 1st place.
sfx_kc57 = 713
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Death, losing a shield
sfx_kc58 = 714
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Getting a Shrink item
---SRB2Kart: Getting shrunk by another player's Shrink item
sfx_kc59 = 715
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Getting a Grow item
---SRB2Kart: Using a Grow item
sfx_kc5a = 716
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: 
sfx_kc5b = 717
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Getting a Chaos RingDRRR: Gutbuster's winning sound
sfx_kc5c = 718
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc5d = 719
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Collecting a Blue Sphere, activating a bonus itemDRRR: Kart Krew startup screen
sfx_kc5e = 720
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Jumping
sfx_kc5f = 721
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Score tally finishes
sfx_kc60 = 722
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc61 = 723
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc62 = 724
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc63 = 725
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: 
---SRB2Kart: SPB Rush
sfx_kc64 = 726
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Swap Monitor
---SRB2: Metal Sonic exits Boost Mode
sfx_kc65 = 727
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc66 = 728
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc67 = 729
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc68 = 730
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc69 = 731
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: 
---SRB2: Ascending in the Continue screen
sfx_kc6b = 732
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC: Charging a Spin Dash
sfx_kc6c = 733
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc6d = 734
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_sounds)**
---
---KC:
sfx_kc6e = 735

---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---An Object can only play one sound with this flag at a time. If a second one is played, the one already playing is interrupted and the new one is played instead (cannot be combined with any other flags).
SF_TOTALLYSINGLE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---The sound can only be played once at a time on any sound channel, no matter which Object started the sound. Attempting to play the sound more than once at the same time has no effect and the one already playing is not interrupted. This overrides the `Singular` parameter.
SF_NOMULTIPLESOUND = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---The volume of the sound depends on how close the player is to an "outside area" (any sector with [F_SKY1](https://wiki.srb2.org/wiki/F_SKY1) as its ceiling flat). The closer the player is, the louder the volume. This is used by the rain sound, for example.
SF_OUTSIDESOUND = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---The sound can be heard from four times the regular distance.
SF_X4AWAYSOUND = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---The sound can be heard from eight times the regular distance.
SF_X8AWAYSOUND = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---The sound does not interrupt other sounds; if it is attempted to be played in a situation where it would be interrupting another sound, it is not played. This does not work in combination with the `Singular` parameter, use the `SF_NOMULTIPLESOUND` flag instead.
SF_NOINTERRUPT = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Sound)**
---
---The sound can be heard from two times the regular distance.
SF_X2AWAYSOUND = 64

---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character can turn Super in [Single Player](https://wiki.srb2.org/wiki/Single_Player)/[Coop](https://wiki.srb2.org/wiki/Coop) after collecting all [Chaos Emeralds](https://wiki.srb2.org/wiki/Chaos_Emeralds). Used by Sonic, Knuckles and Metal Sonic in unmodified SRB2.
SF_SUPER = 1
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character's Super form will use standing, walking or running animations, instead of the normal spinning animation, when jumping, spindashing or otherwise rolling on the ground. This replicates the old Super Sonic animations in versions of SRB2 before [v1.09.4](https://wiki.srb2.org/wiki/v1.09.4).
SF_NOSUPERSPIN = 2
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character does not create dust particles when charging a spindash.
SF_NOSPINDASHDUST = 4
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character's sprites will be rendered at a different scale, which is set by the [highresscale](https://wiki.srb2.org/wiki/S_SKIN#highresscale) parameter. This allows you to use high-resolution (or low-resolution) sprites for your character.
SF_HIRES = 8
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character does not display skid particles and play the skidding sound when braking or making sharp turns.
SF_NOSKID = 16
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character's animations will not be automatically adjusted according to the player's speed, for example when Sonic's walking animation speeds up as he walks faster. Instead, the animations will use the default state durations as set in the [player](https://wiki.srb2.org/wiki/player)'s states.
SF_NOSPEEDADJUST = 32
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Allows the character to run on top of water and goop [FOF](https://wiki.srb2.org/wiki/FOF)s.
SF_RUNONWATER = 64
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character will not curl up into a ball when jumping. They will use a falling state when going down, and their height will not be reduced. If the character does not have dedicated jump frames, then they will also use spring frames instead of rolling frames. Used by Fang and Amy in unmodified SRB2.
SF_NOJUMPSPIN = 128
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character cannot damage enemies by jumping in them from any angle. Used by Fang and Amy in unmodified SRB2.
SF_NOJUMPDAMAGE = 256
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character will always be able to damage enemies by landing on them, regardless of their vulnerability.
SF_STOMPDAMAGE = 512
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character cannot damage enemies from any angle, but they can still land on enemies. This is equivalent to combining SF_NOJUMPDAMAGE and SF_STOMPDAMAGE.
SF_MARIODAMAGE = 768
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character is considered a "robot". While dying, they will spawn explosion effects. While underwater or in space, this character will get unique drowning numbers, sound effects, and electric short-out particle effects. Used by Metal Sonic in unmodified SRB2.
SF_MACHINE = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character will have the "Boost Mode" ability, giving them increased top speed and jump height the longer they run without losing speed. When paired with SF_MACHINE, Boost Mode will also be able to damage enemies and destroy spikes. Used by Metal Sonic in unmodified SRB2.
SF_DASHMODE = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character's edge teeter animation will play faster than usual. Used by Fang in unmodified SRB2.
SF_FASTEDGE = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---This character's primary ability can be used more than once per jump. Used by Metal Sonic in unmodified SRB2.
SF_MULTIABILITY = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character's NiGHTS Mode sprites will not use automatic sprite rotation.
SF_NONIGHTSROTATION = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character's NiGHTS Mode sprites will not use super color gradients. (The skin must also have `SF_SUPER` for this flag to work.)
SF_NONIGHTSSUPER = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character will not use super sprites while super.
SF_NOSUPERSPRITES = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character will not receive a jump boost while super. Used by Knuckles in unmodified SRB2.
SF_NOSUPERJUMPBOOST = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character can naturally bust [strong walls](https://wiki.srb2.org/wiki/Linedef_type_254) on contact.
SF_CANBUSTWALLS = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character will not be able to use shield abilities. This will also prevent the [Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield)'s target indicator from appearing.
SF_NOSHIELDABILITY = 524288

---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The character will not have a special ability. This is the default setting when this parameter is not supplied.
CA_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Sonic's default ability, loosely based on Sonic's air dash attack from [Sonic Adventure](https://en.wikipedia.org/wiki/Sonic_Adventure). Pressing jump a second time in mid-air will thrust the player forward at a speed determined by [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd).
CA_THOK = 1
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Tails' default ability, based on Tails' flight ability from [Sonic 3](https://en.wikipedia.org/wiki/Sonic_the_Hedgehog_3). Pressing jump a second time in mid-air will make the player start flying in mid-air - repeatedly pressing jump afterwards will allow the player to fly further upwards. However, the player can only fly for a limited amount of time (determined by `TailsFlyTics` in the [MainCfg](https://wiki.srb2.org/wiki/MainCfg) block, which is 8 seconds by default); afterwards, they will slowly descend to the ground. The speed at which the player moves upwards or downwards when flying is determined by [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd).
---
---Other notes about flying:
---*The player's top speed is reduced when flying, but acceleration is increased to compensate.
---*The spin button can be used to descend more quickly if necessary.
---*The player will be unable to inflict damage to enemies, except by flying into them from below.
---
---Sprite name FLY_ is used for the flying animation, sprite name SWIM is used when flying underwater, and sprite name TIRE is used when the character is tired and cannot fly anymore. If the player does not have a FLY_ sprite, SPNG is used instead.
CA_FLY = 2
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Knuckles' default ability, based on Knuckles' abilities (gliding, climbing and rock smashing) from [Sonic & Knuckles](https://en.wikipedia.org/wiki/Sonic_&_Knuckles). Pressing jump a second time in mid-air will make the player start a glide - the player will accelerate forward from a starting speed determined by [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd) for as long as the jump button is held down. However, the player will gradually lose height while doing so. The player will be able to damage all enemies by aiming their glide into them while using this ability. When landing on the ground from gliding, the player will skid to a halt in the glide animation. When releasing a glide, the player will lose momentum and go into a landing animation. As of 2.2.5, if the player is underwater, they will swim rather than glide. Swimming is slower than gliding but it provides more horizontal control.
---
---If the player glides into a wall, they will latch onto it and can climb up, down or sideways on it, as well as climb over to adjacent walls. If the player is climbing, pressing jump will make them jump off and face away from the wall; pressing spin will make them jump off while still facing the wall. However, not all walls are climbable; some [linedef](https://wiki.srb2.org/wiki/linedef)s may have Flag [6] / Not Climbable checked, which prevents characters with this ability from climbing it. Any walls that are part of the sky will also not be climbable regardless of linedef flags.
---
---Additionally, characters with this ability will be able to destroy all types of [bustable FOF](https://wiki.srb2.org/wiki/Bustable_Block)s on touch, rather than needing to spin into them. Bustable FOFs that have the `FF_KNUXONLY` flag set can be destroyed by characters with this ability.
---
---Sprite name GLID is used for the gliding animation, SWIM is used for swimming, sprite name CLNG is used for attaching to a wall without moving, sprite name CLMB is used for the climbing animation and sprite name LAND is used for the landing animation. If the player does not have a GLID or SWIM sprite, FLY_ (or if not that, SPNG) is used instead; SPIN replaces CLNG, CLMB, and LAND if the player does not have one of those sprites.
CA_GLIDEANDCLIMB = 3
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---A weakened version of the speed thok ability, but with the addition of a homing attack feature similar to that in [Sonic Adventure](https://en.wikipedia.org/wiki/Sonic_Adventure) and beyond - if an enemy, spring or monitor is close enough to the player when triggering the ability, an arrow will appear over the target Object and the player will home in towards it until they touch/destroy it. If the character fails to reach the Object within 3 seconds, the homing attack is automatically canceled. Unlike the thok, this ability does not keep the player in their spin state and instead switches to their FALL sprite unless they are performing a homing attack, again like in Sonic Adventure.
CA_HOMINGTHOK = 4
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Similar to the flying ability, except this ability will work only underwater; attempting to use this ability outside of water will do nothing. Unlike flight, however, the ability can be used indefinitely while underwater.
---
---Sprite name SWIM is used while using this ability. If the player does not have a SWIM sprite, SPNG is used instead.
CA_SWIM = 5
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Pressing jump a second time in mid-air will make the player perform a second jump.
CA_DOUBLEJUMP = 6
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Metal Sonic's default ability. Pressing jump a second time in mid-air and holding the button down will allow the player to hold their vertical position in mid-air continuously, but without spinning. While moving slowly, they will slowly fall over time.
CA_FLOAT = 7
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Pressing jump a second time in mid-air and holding the button down will cause the player to fall downwards at a slower rate than normal, again without spinning. This is similar to E-102 Gamma's booster powerup from [Sonic Adventure](https://en.wikipedia.org/wiki/Sonic_Adventure). The falling speed is fixed and cannot be adjusted with the [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd) parameter.
CA_SLOWFALL = 8
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Pressing the jump button a second time in mid-air will push enemies and players within a radius of 384 fracunits around the player away; pressing the spin button in mid-air will pull them closer instead. The thrust of the pushing/pulling is determined by [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd).
CA_TELEKINESIS = 9
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Reverses the player's vertical momentum when pressing jump a second time in mid-air, thrusting them in the opposite direction instead.
CA_FALLSWITCH = 10
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The player's jump strength increases with the player's running speed - the faster the player moves, the higher they can jump. [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd) is used as a multiplier for the jump boost given. Pressing the jump button in mid-air has no effect.
CA_JUMPBOOST = 11
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Pressing jump a second time in mid-air will initiate an air drill, thrusting the player forward and upward. The player will fly upwards in an arc, eventually finishing the drill when the player starts falling down to the ground. Holding the spin button while drilling will cause the player to descend more quickly. [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd) is used as an angular speed for the drill - the higher the value is, the steeper and quicker the player's ascent will be.
CA_AIRDRILL = 12
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---A hybrid between the thok and the double jump, which thrusts the player both forward and upward. As with the regular thok, [actionspd](https://wiki.srb2.org/wiki/S_SKIN#actionspd) determines the horizontal thrust.
CA_JUMPTHOK = 13
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Fang's default ability. Pressing jump a second time and holding it lets you bounce high off of enemies and on any hazards, similar to Scrooge McDuck's ability from [DuckTales](https://en.wikipedia.org/wiki/DuckTales_(video_game)).
---
---Uses sprite name BNCE while in the air, and sprite name LAND during the pause when hitting the ground. If the player does not have a BNCE sprite, FALL is used instead; if the player does not have a LAND sprite, SPIN is used instead.
CA_BOUNCE = 14
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---Amy's default ability. Lets you roll up temporarily, allowing you to damage enemies, get a boost from springs, and break spikes, by timing a second jump press. This ability will also occur when you press jump and spin without a shield. Bustable FOFs that have the `FF_KNUXONLY` flag set (aka the "Strong Characters Only" checkbox for bustable FOF linedefs in [Zone Builder](https://wiki.srb2.org/wiki/Zone_Builder)) can be destroyed by characters with this ability.
---
---Uses sprite name TWIN for this ability; if the player does not have a TWIN sprite, SPIN is used.
CA_TWINSPIN = 15

---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The player will not have a secondary special ability.
CA2_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The default secondary ability, which is used by Sonic, Tails, Knuckles, and Metal Sonic. The player can use the Spin [control](https://wiki.srb2.org/wiki/controls) to charge a spindash, or otherwise spin on the ground while moving.
CA2_SPINDASH = 1
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The secondary ability used by Fang. This character will get an arrow hovering over enemies and monitors. Pressing the Spin [control](https://wiki.srb2.org/wiki/controls) while not moving will put the character in their firing animation and shoot their revitem toward the target.
CA2_GUNSLINGER = 2
---**[View on wiki](https://wiki.srb2.org/wiki/S_SKIN)**
---
---The secondary ability used by Amy. This character will do a small hop and damage any enemies from the front when they press the Spin [control](https://wiki.srb2.org/wiki/controls) on the ground. Bustable FOFs that have the `FF_KNUXONLY` flag set can be destroyed by characters with this ability.
---The parameters `mindash` and `maxdash` control the vertical and horizontal thrust of the hop, respectively.
CA2_MELEE = 3


---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Invincibility](https://wiki.srb2.org/wiki/Invincibility_Monitor) timer.
pw_invulnerability = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Super Sneakers](https://wiki.srb2.org/wiki/Super_Sneakers_Monitor) timer.
pw_sneakers = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the temporary invincibility timer (as if the player has just been hit).
pw_flashing = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets which [shield](https://wiki.srb2.org/wiki/shield)(s) the player currently has. 
pw_shield = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets what the player is being carried by. 
pw_carry = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the amount of time left in the player's flight timer.
pw_tailsfly = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the player's drowning timer.
pw_underwater = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the player's space timer.
pw_spacetime = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets how long the extra life music lasts.
pw_extralife = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Timer for how recently this player pushed something.
pw_pushing = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets how long to lock the player's facing angle in place. Applied internally when bouncing off a [Spring](https://wiki.srb2.org/wiki/Spring), but otherwise has no relation to Spring logic.
pw_justsprung = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets how long to disable autobrake.
pw_noautobrake = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets whether the player is Super. The player must still meet the criteria for becoming Super. (Note that this is used internally as a timer for how long the player has been super, in tics.)
pw_super = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Gives the player [Gravity Boots](https://wiki.srb2.org/wiki/Gravity_Boots) for the given duration.
pw_gravityboots = 13
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Infinity Ring](https://wiki.srb2.org/wiki/Infinity_Ring) ammo.
pw_infinityring = 14
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Automatic Ring](https://wiki.srb2.org/wiki/Automatic_Ring) ammo.
pw_automaticring = 15
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring) ammo.
pw_bouncering = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring) ammo.
pw_scatterring = 17
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring) ammo.
pw_grenadering = 18
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring) ammo.
pw_explosionring = 19
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring) ammo.
pw_railring = 20
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Gives the player a specified number of multiplayer [Chaos Emeralds](https://wiki.srb2.org/wiki/Chaos_Emeralds). 
pw_emeralds = 21
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Super Paraloop](https://wiki.srb2.org/wiki/Super_Paraloop) power-up timer ([NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) only).
pw_nights_superloop = 22
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Nightopian Helper](https://wiki.srb2.org/wiki/Nightopian_Helper) power-up timer ([NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) only).
pw_nights_helper = 23
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the [Link Freeze](https://wiki.srb2.org/wiki/Link_Freeze) power-up timer ([NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) only).
pw_nights_linkfreeze = 24
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Takes control away from the player. Adding 32768 to this value will allow the player to jump while affected.
pw_nocontrol = 25
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Sets the player's color to this value, and sets `player.mo.colorized` to `true`.
pw_dye = 26
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Whether the player launched off a slope this tic, and what type of slope they've launched off of. <sup>4<sup>
pw_justlaunched = 27
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---While non-zero, prevents the player from latching to `CR_GENERIC` objects. Adding 32768 to this value will additionally prevent the player from latching to any object except for NiGHTS carrying objects. This does not prevent new attachments due to [A_MixUp](https://wiki.srb2.org/wiki/A_MixUp) teleportation.
pw_ignorelatch = 28
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---A series of `STR_` flags that toggle how a player attacks and can destroy FOFs. <sup>5<sup>
pw_strong = 29

---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---No shield.
SH_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield)
SH_PITY = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Whirlwind Shield](https://wiki.srb2.org/wiki/Whirlwind_Shield)
SH_WHIRLWIND = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield)
SH_ARMAGEDDON = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Pink version of [Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield) granted from Amy's ability.
SH_PINK = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield). Equivalent to combining `SH_PITY|SH_PROTECTFIRE|SH_PROTECTWATER`.
SH_ELEMENTAL = 3073
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield). Equivalent to combining `SH_PITY|SH_PROTECTELECTRIC`.
SH_ATTRACT = 4097
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---S3K [Flame Shield](https://wiki.srb2.org/wiki/Flame_Shield). Equivalent to combining `SH_PITY|SH_PROTECTFIRE`.
SH_FLAMEAURA = 1025
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---S3K [Bubble Shield](https://wiki.srb2.org/wiki/Bubble_Shield). Equivalent to combining `SH_PITY|SH_PROTECTWATER`.
SH_BUBBLEWRAP = 2049
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---S3K [Lightning Shield](https://wiki.srb2.org/wiki/Lightning_Shield). Equivalent to combining `SH_WHIRLWIND|SH_PROTECTELECTRIC`.
SH_THUNDERCOIN = 4098
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Force Shield](https://wiki.srb2.org/wiki/Force_Shield) flag. On its own this flag only gives one health point to the shield - the lower 8 bits can be used as extra health points, e.g. `SH_FORCE|1` gives a force shield with 2 health points. Note: This cannot be combined with any of the values `SH_PITY` to `SH_PINK`.
---
---In Lua scripts, use `(player.powers[pw_shield] & SH_FORCE)` to check if a player has the Force Shield.
SH_FORCE = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Max extra health points for the [Force Shield](https://wiki.srb2.org/wiki/Force_Shield).
---
---In Lua scripts, if the player is known to have a Force Shield, use `(player.powers[pw_shield] & SH_FORCEHP)` to check if the shield has extra health points.
SH_FORCEHP = 255
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Fire Flower](https://wiki.srb2.org/wiki/Fire_Flower) shield flag. Note: This can be combined with any of the other shields.
---
---In Lua scripts, use `(player.powers[pw_shield] & SH_FIREFLOWER)` to check if the player has the Fire Flower power-up.
SH_FIREFLOWER = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Mask for all shields that can be combined with others. Only includes Fire Flower currently.
---
---In Lua scripts, use `(player.powers[pw_shield] & SH_STACK)` to get all shields that can be stacked with others.
SH_STACK = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Inverse of `SH_STACK`, mask for all shields that cannot be combined with others. Equivalent to typing `~SH_STACK`.
---
---In Lua scripts, use `(player.powers[pw_shield] & SH_NOSTACK)` to return everything except for shields that can be stacked with others.
SH_NOSTACK = 65023
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Flag for shields that protect the user from Fire damage.
SH_PROTECTFIRE = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Flag for shields that protect the user from Water damage.
SH_PROTECTWATER = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Flag for shields that protect the user from Electric damage.
SH_PROTECTELECTRIC = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Flag for shields that protect the user from Spike damage.
SH_PROTECTSPIKE = 8192

---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Not being carried.
CR_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Generic, default case for miscellaneous objects.
CR_GENERIC = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Being carried by a flying Tails player.
CR_PLAYER = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---The player is currently in NiGHTS mode.
CR_NIGHTSMODE = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---The player has ran out of time in NiGHTS.
CR_NIGHTSFALL = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Stuck in [old Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman_(Old))'s goop.
CR_BRAKGOOP = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Using a [Zoom Tube](https://wiki.srb2.org/wiki/Zoom_tube).
CR_ZOOMTUBE = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Using a [Rope Hang](https://wiki.srb2.org/wiki/Rope_Hang).
CR_ROPEHANG = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Using a [Mace swing](https://wiki.srb2.org/wiki/Linedef_type_9).
CR_MACESPIN = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Using a [Minecart](https://wiki.srb2.org/wiki/Linedef_type_16).
CR_MINECART = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Using a [Rollout Rock](https://wiki.srb2.org/wiki/Rollout_Rock).
CR_ROLLOUT = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Being carried by a [Pterabyte](https://wiki.srb2.org/wiki/Pterabyte_Spawner).
CR_PTERABYTE = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Being carried by a [Dust Devil](https://wiki.srb2.org/wiki/Dust_Devil).
CR_DUSTDEVIL = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Player is affected by a [Fan](https://wiki.srb2.org/wiki/Fan) or [Fan Sector](https://wiki.srb2.org/wiki/Fan_Sector).
CR_FAN = 13

---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Green Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_1)
EMERALD1 = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Purple Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_2)
EMERALD2 = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Blue Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_3)
EMERALD3 = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Light Blue Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_4)
EMERALD4 = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Orange Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_5)
EMERALD5 = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Red Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_6)
EMERALD6 = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---[Gray Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald_7)
EMERALD7 = 64

---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Nothing. All strong powers can stack onto each other.
STR_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Remove powers when leaving current animation.
STR_ANIM = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Frontal attack (knuckles glide).
STR_PUNCH = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Rear attack.
STR_TAIL = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Falling onto object (fang bounce).
STR_STOMP = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Moving upwards into object (tails fly).
STR_UPPER = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Protect against damage.
STR_GUARD = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Prevent vertical rebound when landing on enemies.
STR_HEAVY = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Special type for machine dashmode, automatically removes your powers when leaving dashmode.
STR_DASH = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Breaks any wall.
STR_WALL = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Breaks floors.
STR_FLOOR = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Breaks ceilings.
STR_CEILING = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Powers up spring objects.
STR_SPRING = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Break spikes.
STR_SPIKE = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Generic attack. Equal to `STR_PUNCH|STR_TAIL|STR_STOMP|STR_UPPER`.
STR_ATTACK = 30
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Equal to `STR_WALL|STR_FLOOR|STR_CEILING`.
STR_BUST = 1792
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Used by `CA_FLY`. Equal to `STR_ANIM|STR_UPPER`.
STR_FLY = 17
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Used by `CA_GLIDEANDCLIMB`. Equal to `STR_ANIM|STR_PUNCH`.
STR_GLIDE = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Used by `CA_TWINSPIN`. Equal to `STR_ANIM|STR_ATTACK|STR_BUST|STR_SPRING|STR_SPIKE`.
STR_TWINSPIN = 7985
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Used by `CA2_MELEE`. Equal to `STR_ANIM|STR_PUNCH|STR_HEAVY|STR_WALL|STR_FLOOR|STR_SPRING|STR_SPIKE`.
STR_MELEE = 2143
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Used by `CA_BOUNCE`. Equal to `STR_ANIM|STR_STOMP|STR_FLOOR`.
STR_BOUNCE = 521
---**[View on wiki](https://wiki.srb2.org/wiki/Powers)**
---
---Used by `SF_MACHINE` dashmode. Equal to `STR_DASH|STR_SPIKE`.
STR_METAL = 4224

---**[View on wiki](https://wiki.srb2.org/wiki/Palette)**
---
---SRB2's palette with a 75% white tint, of RGB(255,255,255). The flash palette used for [Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield)s shorting out in water and [Ideya Capture](https://wiki.srb2.org/wiki/Ideya_Capture) defeat.
PAL_WHITE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Palette)**
---
---SRB2's palette with a 75% white tint, of RGB(255,255,255). The flash palette used for [teleport](https://wiki.srb2.org/wiki/Linedef_type_412)s and [Teleport Monitor](https://wiki.srb2.org/wiki/Teleport_Monitor)s.
PAL_MIXUP = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Palette)**
---
---SRB2's palette with a 75% white tint, of RGB(255,255,255). The flash palette used for [Recycler Monitor](https://wiki.srb2.org/wiki/Recycler_Monitor)s.
PAL_RECYCLE = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Palette)**
---
---SRB2's palette tinted red. The flash palette used for [Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) explosions.
---
---Note: This palette can be reproduced by tinting SRB2's palette 75% white as with the palettes above, but then changing the green/blue levels of all color indexes to 113.
PAL_NUKE = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Palette)**
---
---SRB2's default palette with the colors inverted and slightly darkened. This flash paletted is unused.
PAL_INVERT = 5

---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Makes the linedef impassable for the [player](https://wiki.srb2.org/wiki/player) and other [Object](https://wiki.srb2.org/wiki/Object)s.
ML_IMPASSIBLE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Prevents almost all moving [enemies](https://wiki.srb2.org/wiki/enemy) and [boss](https://wiki.srb2.org/wiki/boss)es from crossing the linedef. Does not prevent enemies from detecting the player if the linedef is between them.
ML_BLOCKMONSTERS = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Indicates that a linedef has a back sidedef, i.e., that its back side does not face into empty space. This flag is normally set automatically by map editors.
ML_TWOSIDED = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---(Two-sided linedefs only)
---If this flag is set, the upper textures are attached to the higher of the two ceilings that border the linedef. Otherwise, they are attached to the lower of the two ceilings. See [Pegging](https://wiki.srb2.org/wiki/Pegging). In binary maps, this flag is also used to make [timed linedef executors](https://wiki.srb2.org/wiki/Timed_linedef_executor/Upper_Unpegged) and to enable [texture skewing](https://wiki.srb2.org/wiki/Slope#Texture_skewing) on [FOF](https://wiki.srb2.org/wiki/FOF)s.
ML_DONTPEGTOP = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---(Two-sided linedefs only)
---If this flag is set, the lower textures are attached to the lower of the two floors that border the linedef, and the middle textures are attached to the higher of the two floors. Otherwise, the lower textures are attached to the higher of the two floors, and the middle textures are attached to the lower of the two ceilings that border the linedef. See [Pegging](https://wiki.srb2.org/wiki/Pegging).
ML_DONTPEGBOTTOM = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---(Two-sided linedefs only)
---If any of the linedef's upper or lower textures are attached to a [slope](https://wiki.srb2.org/wiki/slope), setting this flag will cause them to be skewed to match the angle of the slope. See [Slope > Texture skewing](https://wiki.srb2.org/wiki/Slope#Texture_skewing) for further details.
ML_EFFECT1 = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Prevents climbing characters, e.g., [Knuckles](https://wiki.srb2.org/wiki/Knuckles), from climbing walls on this linedef.
ML_NOCLIMB = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---If the middle textures are attached to a [slope](https://wiki.srb2.org/wiki/slope), they will usually be skewed to match the angle of the slope. Setting this flag disables the skewing effect. See [Slope > Texture skewing](https://wiki.srb2.org/wiki/Slope#Texture_skewing) for further details.
ML_EFFECT2 = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---(Two-sided linedefs only)
---Inverts the [pegging](https://wiki.srb2.org/wiki/pegging) behavior of the middle textures. If the middle textures would be attached to the ceiling otherwise, setting this flag will make them attach to the floor. If they would be attached to the floor otherwise, setting this flag will make them attach to the ceiling.
ML_EFFECT3 = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---(Two-sided linedefs only)
---Makes the middle textures solid.
ML_EFFECT4 = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---(Two-sided linedefs only)
---Tiles the middle textures so that they fill up the empty space between the upper and lower texture, rather than just being rendered once. In binary maps, the sidedef's X offset can be used to control how often the texture is tiled: For each extra copy of the texture, 4096 should be added to the X offset. For example, an offset of 8192 will cause the texture to be rendered three times. In UDMF maps, the number of repetitions is set via the sidedef's "texture repeats" field.
ML_EFFECT5 = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Prevents a linedef action from having an effect in [Single Player](https://wiki.srb2.org/wiki/Single_Player) games.
ML_NETONLY = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Prevents a linedef action from having an effect in [multiplayer](https://wiki.srb2.org/wiki/multiplayer) games.
ML_NONET = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---In binary maps, this flags is used for miscellaneous purposes by specific linedef types. In UDMF maps, it is unused and inaccessible.
ML_EFFECT6 = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Causes Objects to bounce off walls on this linedef.
ML_BOUNCY = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef)**
---
---Allows the attributes for each side of an [FOF](https://wiki.srb2.org/wiki/FOF) to be specified individually, rather than using the attributes of the [control linedef](https://wiki.srb2.org/wiki/control_linedef) for every side. The control sector must have at least the same number of linedefs as the target sector(s); each linedef of the target sector(s) is then controlled by one linedef of the control sector. Useful for making [multi-property FOF](https://wiki.srb2.org/wiki/multi-property_FOF)s where each side has its own properties.
ML_TFERLINE = 32768

---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---This tag is used in conjunction with the [Axe](https://wiki.srb2.org/wiki/Axe). Upon being touched, the Axe searches for a FOF whose control sector has tag 649 and lowers it so that its floor height matches the next lowest floor height of any sector adjacent to the FOF's control sector. In [v2.0](https://wiki.srb2.org/wiki/v2.0), this effect was used in [Mario Koopa Blast Zone Act 3](https://wiki.srb2.org/wiki/2.0:Mario_Koopa_Blast_Zone_Act_3) to lower the bridge that [King Bowser](https://wiki.srb2.org/wiki/King_Bowser) stood on, which made him fall into the pit below. This tag can be used normally in maps that do not have the Axe in them.
LE_AXE = 649
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---This tag is used in conjunction with [King Bowser](https://wiki.srb2.org/wiki/King_Bowser). Upon being destroyed, King Bowser searches for a sector with tag 650 and raises its ceiling to the highest ceiling height of any adjacent sector. In [v2.0](https://wiki.srb2.org/wiki/v2.0), this effect was used in [Mario Koopa Blast Zone Act 3](https://wiki.srb2.org/wiki/2.0:Mario_Koopa_Blast_Zone_Act_3) to open the door to the exit after King Bowser was destroyed. This tag can be used normally in maps that do not have King Bowser in them.
LE_KOOPA = 650
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---These tags are used for raising [Egg Capsules](https://wiki.srb2.org/wiki/Egg_Capsule_tutorial) from the ground after a [boss](https://wiki.srb2.org/wiki/boss) is defeated (when the [action](https://wiki.srb2.org/wiki/Actions) [A_BossDeath](https://wiki.srb2.org/wiki/A_BossDeath) is used), and for opening an Egg Capsule when its button is pressed by a player. Specifically, tag 680 is used for the Egg Capsule's button parts, tag 681 is for the top half of the capsule's cage, and tag 682 for the bottom half. They can also be used to trigger other events like opening doors when a boss is defeated, although tags 65532 and 65533 are more appropriate for this. These tags can be used normally in maps that do not have bosses or Egg Capsules in them.
LE_CAPSULE0 = 680
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---This tag is used in conjunction with [Brak Eggman (Old)](https://wiki.srb2.org/wiki/Brak_Eggman_(Old)). After six hits, the boss calls a [trigger linedef](https://wiki.srb2.org/wiki/trigger_linedef) with tag 4200, if such a linedef exists. In [v2.0](https://wiki.srb2.org/wiki/v2.0), this was used in [Egg Rock Zone Act 3](https://wiki.srb2.org/wiki/2.0:Egg_Rock_Zone_Act_3) to destroy the middle platform, but it can be used for other linedef executor effects in custom levels. This tag can be used normally in maps that do not have the old version of Brak Eggman in them.
LE_BRAKPLATFORM = 4200
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---This tag is used in conjunction with [Turret](https://wiki.srb2.org/wiki/Turret)s. Upon being destroyed, a Turret calls a [trigger linedef](https://wiki.srb2.org/wiki/trigger_linedef) with tag 32000, if such a linedef exists. In [v2.0](https://wiki.srb2.org/wiki/v2.0), this was used in [Castle Eggman Zone Act 2](https://wiki.srb2.org/wiki/2.0:Castle_Eggman_Zone_Act_2) to open a door, but it can be used for other linedef executor effects in custom levels. This tag can be used normally in maps that do not have Turrets in them.
LE_TURRET = 32000
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---[Trigger linedef](https://wiki.srb2.org/wiki/Trigger_linedef)s with this tag will activate [linedef executor](https://wiki.srb2.org/wiki/linedef_executor)s when [Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman) starts his line-of-sight attack. In [v2.1](https://wiki.srb2.org/wiki/v2.1), it was used in [Egg Rock Core Zone](https://wiki.srb2.org/wiki/Egg_Rock_Core_Zone) to raise the crates that the player could hide behind. This tag can be used normally in maps that do not have Brak Eggman in them.
LE_BRAKVILEATACK = -6
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---[Trigger linedef](https://wiki.srb2.org/wiki/Trigger_linedef)s with this tag will activate [linedef executor](https://wiki.srb2.org/wiki/linedef_executor)s whenever [Eggscalibur](https://wiki.srb2.org/wiki/Eggscalibur) drops his cage. It is used in [Castle Eggman Zone Act 3](https://wiki.srb2.org/wiki/Castle_Eggman_Zone_Act_3) to create an [earthquake effect](https://wiki.srb2.org/wiki/Linedef_type_444) and play a sound whenever the cage is dropped. This tag can be used normally in maps that do not have Eggscalibur in them.
LE_BOSS4DROP = -5
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---[Trigger linedef](https://wiki.srb2.org/wiki/Trigger_linedef)s with this tag will activate [linedef executor](https://wiki.srb2.org/wiki/linedef_executor)s whenever a [boss](https://wiki.srb2.org/wiki/boss) has been defeated. Note that for custom bosses, [A_BossDeath](https://wiki.srb2.org/wiki/A_BossDeath) is usually needed in order to call this tag; otherwise, it has to be added manually to the boss thinker if desired. Do not use this tag for other purposes if your map contains a boss.
LE_BOSSDEAD = -4
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---[Trigger linedef](https://wiki.srb2.org/wiki/Trigger_linedef)s with this tag will activate [linedef executor](https://wiki.srb2.org/wiki/linedef_executor)s when all [bosses](https://wiki.srb2.org/wiki/Boss) in the map have been defeated. Note that for custom bosses, [A_BossDeath](https://wiki.srb2.org/wiki/A_BossDeath) is usually needed in order to call this tag; otherwise, it has to be added manually to the boss thinker if desired. Do not use this tag for other purposes if your map contains a boss.
LE_ALLBOSSESDEAD = -3
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---[Trigger linedef](https://wiki.srb2.org/wiki/Trigger_linedef)s with this tag will activate [linedef executor](https://wiki.srb2.org/wiki/linedef_executor)s whenever a [boss](https://wiki.srb2.org/wiki/boss) enters its pinch phase (usually after five hits for SRB2's official bosses). It can be used to dynamically change the boss arena for the pinch phase. Note that custom bosses will not automatically call this tag, it has to be added to the boss thinker manually if desired. Do not use this tag for other purposes if your map contains a boss.
LE_PINCHPHASE = -2
---**[View on wiki](https://wiki.srb2.org/wiki/Reserved_tags)**
---
---Not a true reserved tag, but when [bosses](https://wiki.srb2.org/wiki/Boss) have a non-zero [Parameter](https://wiki.srb2.org/wiki/Thing#Parameter), then the reserved tags that they normally execute will be modified by `Parameter * -100`. This feature makes it possible for multiple boss fights to coexist in the same map.
LE_PARAMWIDTH = -100

---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF exists. Without this flag, the FOF will not appear in-game at all - it will not be visible or tangible, and any special effects associated with it will not appear either. The flag can be added or removed at runtime via [linedef type 445](https://wiki.srb2.org/wiki/linedef_type_445), which can be used to make FOFs appear or disappear dynamically. Every FOF should have this flag, unless it is not meant to appear immediately at level load because it will later be brought into existence at runtime.
FOF_EXISTS = 0x1
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF is solid to the [player](https://wiki.srb2.org/wiki/player).
FOF_BLOCKPLAYER = 0x2
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF is solid to the [camera](https://wiki.srb2.org/wiki/camera) and all [Object](https://wiki.srb2.org/wiki/Object)s besides the player.
FOF_BLOCKOTHERS = 0x4
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---(`FOF_BLOCKPLAYER` + `FOF_BLOCKOTHERS`) The FOF is solid to the player, all other Objects and the camera. Setting Flag [5] / Slope Skew / Effect 1 on the control linedef will remove `FOF_BLOCKOTHERS`, while setting Flag [7] / No Midtexture Skew / Effect 2 will remove `FOF_BLOCKPLAYER`.
FOF_SOLID = 0x6
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF's walls are rendered.
FOF_RENDERSIDES = 0x8
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF's floor and ceiling are rendered.
FOF_RENDERPLANES = 0x10
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---(`FOF_RENDERSIDES` + `FOF_RENDERPLANES`) The FOF's walls, floor, and ceiling are all rendered.
FOF_RENDERALL = 0x18
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF is a [water block](https://wiki.srb2.org/wiki/Linedef_type_120).
FOF_SWIMMABLE = 0x20
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF does not cast a shadow. Normally, the light level and [colormap](https://wiki.srb2.org/wiki/colormap) of the control sector affect the inside of the FOF and the area below it in the target sector. This flag disables that behavior.
FOF_NOSHADE = 0x40
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Any "solid" walls that are directly adjacent to the FOF will not be drawn. A wall is considered "solid" for this purpose if it belongs to the upper or lower texture of a two-sided linedef, the middle texture of a two-sided linedef, or an FOF without `FOF_EXTRA`. Middle textures of two-sided linedefs and [PolyObject](https://wiki.srb2.org/wiki/PolyObject) walls are not considered "solid".
FOF_CUTSOLIDS = 0x80
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Any walls belonging to an FOF with `FOF_EXTRA` that are directly adjacent to this FOF will not be drawn. If this FOF also has `FOF_EXTRA`, the following extra conditions apply: If one of the two FOFs has `FOF_SWIMMABLE`, the other must also have it in order for the walls to be cut. Similarly, if one has `FOF_FOG`, the other must also have it. This flag is commonly used to remove walls between adjacent fog or water FOFs.
FOF_CUTEXTRA = 0x100
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---(`FOF_CUTSOLIDS` + `FOF_CUTEXTRA`) Any walls that are directly adjacent to the FOF will not be drawn. Middle textures of two-sided linedefs and PolyObject walls are exempt from this. This flag should be set if the adjacent walls will never be visible anyway, to reduce the rendering effort. This is usually the case if the FOF is opaque and solid.
FOF_CUTLEVEL = 0x180
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---If a [sprite](https://wiki.srb2.org/wiki/sprite) is only partially inside the area illuminated by the FOF, the sprite is split vertically so that the light level and colormap are only applied to the affected part. This should generally be set for intangible or water FOFs that cast a shadow.
FOF_CUTSPRITES = 0x200
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Both the inner and outer sides of the FOF's floor and ceiling are rendered. Without this flag, only the outer sides are rendered.
FOF_BOTHPLANES = 0x400
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF can be obscured by other FOFs with the `FOF_CUTEXTRA` flag set.
FOF_EXTRA = 0x800
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF is translucent. Its alpha value is set in the front upper texture as a value between #000 (invisible) and #255 (opaque). If this value is omitted, it defaults to #128.
FOF_TRANSLUCENT = 0x1000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF acts like a [fog block](https://wiki.srb2.org/wiki/Linedef_type_202).
FOF_FOG = 0x2000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Only the inner sides of the FOF's floor and ceiling are rendered.
FOF_INVERTPLANES = 0x4000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Both the inner and outer sides of the FOF's walls are rendered. Without this flag, only the outer sides are rendered.
FOF_ALLSIDES = 0x8000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Only the inner sides of the FOF's walls are rendered.
FOF_INVERTSIDES = 0x10000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The light level and colormap of the FOF's control sector only affect the inside of the FOF, but not the area below it.
FOF_DOUBLESHADOW = 0x20000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF floats on water and bobs when stepped on.
FOF_FLOATBOB = 0x40000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---Used with `FOF_CRUMBLE` to prevent the FOF from reappearing in its original location once it has crumbled.
FOF_NORETURN = 0x80000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF will fall one second after being stepped on. Unless `FOF_NORETURN` is set, it will reappear in its original location after 15 seconds.
FOF_CRUMBLE = 0x100000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---If combined with `FOF_SWIMMABLE`, the FOF acts like [goo water](https://wiki.srb2.org/wiki/Linedef_type_124).
FOF_GOOWATER = 0x200000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF behaves like a [Mario item block](https://wiki.srb2.org/wiki/Linedef_type_250).
FOF_MARIO = 0x400000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF behaves like a [bustable block](https://wiki.srb2.org/wiki/Linedef_type_254). It will shatter when touched in specific ways, such as being spindashed into from the side, being touched by Knuckles, being bounced on by Fang, or being hit by Amy's hammer. Flag [9] / Solid Midtexture / Effect 4 allows the FOF to be shattered by a [pushable](https://wiki.srb2.org/wiki/pushable) Object. Flag [10] / Repeat Midtexture / Effect 5 makes the FOF activate a linedef executor when it is shattered, using the control linedef's length to determine the tag of the linedef executor to activate.
FOF_BUSTUP = 0x800000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF behaves like a [quicksand block](https://wiki.srb2.org/wiki/Linedef_type_257). The player's sinking speed and movement reduction are determined by the linedef's X distance and Y distance, respectively.
FOF_QUICKSAND = 0x1000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF is intangible from below.
FOF_PLATFORM = 0x2000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF is intangible from above.
FOF_REVERSEPLATFORM = 0x4000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---(`FOF_PLATFORM` + `FOF_REVERSEPLATFORM`) The FOF's floor and ceiling are intangible, but its walls are still solid (provided that `FOF_SOLID` is set).
FOF_INTANGIBLEFLATS = 0x6000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF's floor and ceiling will have a "ripple" effect, distorting both their flats and - if visible - the view displayed behind them. Note that this visual effect is exclusive to the [Software](https://wiki.srb2.org/wiki/Software) renderer; this flag does nothing in [OpenGL](https://wiki.srb2.org/wiki/OpenGL).
FOF_RIPPLE = 0x8000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The inside of the FOF and the area below it in the target sector are affected by the colormap of the FOF's control sector, but not the light level.
FOF_COLORMAPONLY = 0x10000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF bounces any players upon contact.
FOF_BOUNCY = 0x20000000
---**[View on wiki](https://wiki.srb2.org/wiki/Linedef_type_259)**
---
---The FOF uses the splat flat renderer, meaning it will treat any cyan pixels on it's texture as transparent.
FOF_SPLAT = 0x40000000

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---These bits are reserved for an 8-bit integer parameter internally. For example, when drawing individual characters in a string, this determines which character in the font is to be drawn. You cannot set nor control these bits using [cechoflags](https://wiki.srb2.org/wiki/Console/Commands#cechoflags) or [Lua](https://wiki.srb2.org/wiki/Lua)'s [HUD library functions](https://wiki.srb2.org/wiki/Lua/Functions#HUD_library). An exception to this is Lua's [v.drawFill](https://wiki.srb2.org/wiki/Lua/Functions#v.drawFill), where these bits are the palette index to use as the fill color.
V_PARAMMASK = 255
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---These bits determine how to scale text and patches.
V_SCALEPATCHMASK = 768
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---These bits determine text spacing types.
V_SPACINGMASK = 3072
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---These bits determine the color of text.
V_CHARCOLORMASK = 61440
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---These bits determine the alpha or translucency of text and patches.
V_ALPHAMASK = 983040

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are not scaled. This will cause them to be sized as if the resolution was the default of 320200, while still retaining their starting positions for the resolution currently being used, assuming `V_NOSCALESTART` is not being used. This causes text or patches to appear smaller in higher resolutions. Generally not recommended because text or patches will look different in different resolutions.
---
---This flag corresponds with [con_textsize](https://wiki.srb2.org/wiki/Console/Variables#con_textsize) small.
V_NOSCALEPATCH = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are scaled to half of their normal scale. Will have no effect for resolutions 640400 and smaller.
---
---This flag corresponds with [con_textsize](https://wiki.srb2.org/wiki/Console/Variables#con_textsize) medium.
V_SMALLSCALEPATCH = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are scaled to 2/3 of their normal scale. Will have no effect for 320200.
---
---This flag corresponds with [con_textsize](https://wiki.srb2.org/wiki/Console/Variables#con_textsize) large.
V_MEDSCALEPATCH = 768

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Spaces are 6 pixels wide; all other characters have a width matching their real image width.  Old v2.1-style spacing.
V_6WIDTHSPACE = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---All characters are 8 pixels wide, and spaces are 4 pixels wide.  This is the spacing used by all versions of SRB2 prior to v2.1, and some parts of the game (menu options, for example) still use it.
V_OLDSPACING = 2048
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---All characters are 8 pixels wide, spaces included.
V_MONOSPACE = 3072

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored magenta.
V_MAGENTAMAP = 4096
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored yellow.
V_YELLOWMAP = 8192
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored green.
V_GREENMAP = 12288
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored blue.
V_BLUEMAP = 16384
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored red.
V_REDMAP = 20480
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored gray.
V_GRAYMAP = 24576
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored orange.
V_ORANGEMAP = 28672
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored sky blue.
V_SKYMAP = 32768
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored purple.
V_PURPLEMAP = 36864
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored aqua green.
V_AQUAMAP = 40960
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored peridot green.
V_PERIDOTMAP = 45056
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored azure blue.
V_AZUREMAP = 49152
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored brown.
V_BROWNMAP = 53248
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is colored rosy pink.
V_ROSYMAP = 57344
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text is inverted.
V_INVERTMAP = 61440

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 10% translucent.
V_10TRANS = 65536
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 20% translucent.
V_20TRANS = 131072
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 30% translucent.
V_30TRANS = 196608
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 40% translucent.
V_40TRANS = 262144
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 50% translucent.
V_50TRANS = 327680
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 50% translucent.
V_TRANSLUCENT = 327680
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 60% translucent.
V_60TRANS = 393216
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 70% translucent.
V_70TRANS = 458752
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 80% translucent.
V_80TRANS = 524288
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches are 90% translucent.
V_90TRANS = 589824
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches will be adjusted to be half as opaque (twice as translucent) as the translucency determined by [translucenthud](https://wiki.srb2.org/wiki/Console/Variables#translucenthud):
---*0 - Invisible
---*1-2 - 90% translucent
---*3-4 - 80% translucent
---*5-6 - 70% translucent
---*7-8 - 60% translucent
---*9-10 - 50% translucent
V_HUDTRANSHALF = 851968
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches will be adjusted to the translucency determined by [translucenthud](https://wiki.srb2.org/wiki/Console/Variables#translucenthud):
---*0 - Invisible
---*1 - 90% translucent
---*2 - 80% translucent
---*3 - 70% translucent
---*4 - 60% translucent
---*5 - 50% translucent
---*6 - 40% translucent
---*7 - 30% translucent
---*8 - 20% translucent
---*9 - 10% translucent
---*10 - Opaque
V_HUDTRANS = 917504
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches will be adjusted to be twice as opaque (half as translucent) as the translucency determined by [translucenthud](https://wiki.srb2.org/wiki/Console/Variables#translucenthud):
---*0 - Invisible
---*1 - 80% translucent
---*2 - 60% translucent
---*3 - 40% translucent
---*4 - 20% translucent
---*5-10 - Opaque
V_HUDTRANSDOUBLE = 983040
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches use additive blending.
---
---At 100% intensity by default, but can be combined with `V_10TRANS`-`V_90TRANS` for 90%-10% intensity.
V_ADD = 1048576
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches use subtractive blending.
---
---At 100% intensity by default, but can be combined with `V_10TRANS`-`V_90TRANS` for 90%-10% intensity.
V_SUBTRACT = 2097152
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches use reverse subtractive blending.
---
---At 100% intensity by default, but can be combined with `V_10TRANS`-`V_90TRANS` for 90%-10% intensity.
V_REVERSESUBTRACT = 3145728
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches use modulative blending.
V_MODULATE = 4194304

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---(Strings only) Allows use of lowercase letters, instead of forcing letters to be all-uppercase by default.
V_ALLOWLOWERCASE = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---(Patches only) Flips the patch across the X axis (horizontally).
V_FLIP = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---(Nametags only) Centers the name tag text horizontally.
V_CENTERNAMETAG = 8388608
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches snap to the top edge of the screen in non-green resolutions. This means that the top of the string or patch will remain the same distance from the top edge of the screen as if it were using a green resolution. This flag has no effect if `V_NOSCALESTART` or any of the [scaling](https://wiki.srb2.org/wiki/Video_flags#Scale) flags are set.
V_SNAPTOTOP = 16777216
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches snap to the bottom edge of the screen in non-green resolutions. This means that the bottom of the string or patch will remain the same distance from the bottom edge of the screen as if it were using a green resolution. This flag has priority over `V_SNAPTOTOP`. This flag has no effect if `V_NOSCALESTART` or any of the [scaling](https://wiki.srb2.org/wiki/Video_flags#Scale) flags are set.
V_SNAPTOBOTTOM = 33554432
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches snap to the left edge of the screen in non-green resolutions. This means that the left end of the string or patch will remain the same distance from the left edge of the screen as if it were using a green resolution, and text will be left-aligned. This flag has no effect if `V_NOSCALESTART` or any of the [scaling](https://wiki.srb2.org/wiki/Video_flags#Scale) flags are set.
V_SNAPTOLEFT = 67108864
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Text or patches snap to the right edge of the screen in non-green resolutions. This means that the right end of the string or patch will remain the same distance from the right edge of the screen as if it were using a green resolution, and text will be right-aligned. This flag has priority over `V_SNAPTOLEFT`. This flag has no effect if `V_NOSCALESTART` or any of the [scaling](https://wiki.srb2.org/wiki/Video_flags#Scale) flags are set.
V_SNAPTORIGHT = 134217728
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Makes [cecho](https://wiki.srb2.org/wiki/Console/Commands#cecho) text automatically fade out before disappearing. Does not have any effect for non-`cecho` text or patches.
V_AUTOFADEOUT = 268435456
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Line breaks in text move the start of the next line of text down by 8 pixels rather than 12. Since text characters are normally 8 characters tall, this means lines of text will have no distance between them vertically. This has no effect for patches.
V_RETURN8 = 536870912
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Do not scale the text or patch's starting position, i.e., the top-left corner of the text/patch. This will cause it to be placed as if the resolution was the default of 320200, while still retaining the size of the text/patch for the resolution currently being used, assuming `V_NOSCALEPATCH` is not being used. This causes the text/patch to be in the top-left in higher resolutions. Generally not recommended because the resulting appearance will vary depending on the resolution used. Patch offsets will also not be scaled.
---
---If this flag is set, the flags `V_SNAPTOTOP`, `V_SNAPTOBOTTOM`, `V_SNAPTOLEFT` and `V_SNAPTORIGHT` will have no effect.
V_NOSCALESTART = 1073741824
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---In Splitscreen mode, text and patches will automatically adjust coordinates and scaling to fit on-screen.
V_PERPLAYER = 2147483648

---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Number of bits to shift up to convert integers 1-16 to the [color](https://wiki.srb2.org/wiki/Video_flags#color) flags `V_PURPLEMAP`-`V_INVERTMAP`, or the number of bits to shift down for vice versa.
---
---Example: `1<<V_CHARCOLORSHIFT` is `V_MAGENTAMAP`, and `V_MAGENTAMAP>>V_CHARCOLORSHIFT` is 1.
V_CHARCOLORSHIFT = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Number of bits to shift up to convert integers 1-9 to the [alpha](https://wiki.srb2.org/wiki/Video_flags#alpha) flags `V_10TRANS`-`V_90TRANS` and integers 10-12 to the alpha flags `V_HUDTRANSHALF`-`V_HUDTRANSDOUBLE`, or the number of bits to shift down for vice versa.
---
---Example: `1<<V_ALPHASHIFT` is `V_10TRANS`, and `V_10TRANS>>V_ALPHASHIFT` is 1.
V_ALPHASHIFT = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Video_flags)**
---
---Number of bits to shift up to convert integers 1-4 to the blending mode flags `V_ADD`, `V_SUBTRACT`, `V_REVERSESUBTRACT` and `V_MODULATE`, or the number of bits to shift down for vice versa.
---
---Example: `1<<V_BLENDSHIFT` is `V_ADD`, and `V_ADD>>V_BLENDSHIFT` is 1.
V_BLENDSHIFT = 20

---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The character icon, character name, and remaining amount of lives in [Single Player](https://wiki.srb2.org/wiki/Single_Player) and [Co-op](https://wiki.srb2.org/wiki/Single_Player#Co-op)The character icon and name are still shown even in gametypes that don't have limited livesThey are however not displayed in [NiGHTS](https://wiki.srb2.org/wiki/NiGHTS) levels nor [Multiplayer Special Stages](https://wiki.srb2.org/wiki/Special_Stage#Multiplayer_Special_Stages)
HUD_LIVES = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The yellow "RINGS" text beside the player's ring count in normal stages. Flashes red when the player has no rings
HUD_RINGS = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The amount of rings in the player's possession in normal stagesShown when Options > Video Options... > Heads-Up Display > Score/Time/Rings is not set to "Mania"
HUD_RINGSNUM = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The amount of rings in the player's possession in normal stagesShown when Options > Video Options... > Heads-Up Display > Score/Time/Rings is set to "Mania"
HUD_RINGSNUMTICS = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The yellow "SCORE" text in normal stages
HUD_SCORE = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The player's current score in normal stages
HUD_SCORENUM = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The yellow "TIME" text beside the time display in normal stages
HUD_TIME = 6
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The time display's minute in normal stagesShown when Options > Video Options... > Heads-Up Display > Score/Time/Rings is not set to "Tics"Counts down if there is a time limit (e.g. in [Match](https://wiki.srb2.org/wiki/Match) by default), otherwise counts up
HUD_MINUTES = 7
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The colon graphic between minutes and seconds in the time display in normal stagesShown when Options > Video Options... > Heads-Up Display > Score/Time/Rings is not set to "Tics"
HUD_TIMECOLON = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The time display's second (or tic if Options > Video Options... > Heads-Up Display > Score/Time/Rings is set to "Tics") in normal stagesCounts down if there is a time limit, otherwise counts up
HUD_SECONDS = 9
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The period graphic between seconds and centiseconds in the time display in normal stagesShown when Options > Video Options... > Heads-Up Display > Score/Time/Rings is set to "Centiseconds" or "Mania"
HUD_TIMETICCOLON = 10
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The time display's centisecond in normal stagesShown when Options > Video Options... > Heads-Up Display > Score/Time/Rings is set to "Centiseconds" or "Mania"Counts down if there is a time limit, otherwise counts upNote: Despite this HUD item's name, this is not used if that setting is set to "Tics"
HUD_TICS = 11
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The radar in [Emerald Hunt](https://wiki.srb2.org/wiki/Emerald_Hunt) levels and when the [Emblem](https://wiki.srb2.org/wiki/Emblem) Radar [unlockable](https://wiki.srb2.org/wiki/unlockable) is enabledExtends both left and right if there's more than one Emerald Hunt Location or Emblem in the level, so it's best to place this somewhere centred
HUD_HUNTPICS = 18
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---The HUD icons for shields and other power-ups, displayed based on Options > Video Options... > Heads-Up Display > Show Powerups (which defaults to first-person only). Note that when the player has multiple powerups, this HUD item will stack leftwards, so it's best to place this on the right side of the screen
HUD_POWERUPS = 19

---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---Pre-v2.2 Special Stage - Amount of rings required
HUD_SS_TOTALRINGS = 12
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---Pre-v2.2 Special Stage - "Get x Rings"
HUD_GETRINGS = 13
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---Pre-v2.2 Special Stage - Number of rings required as displayed in "Get x Rings"
HUD_GETRINGSNUM = 14
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---Pre-v2.2 Special Stage - "Time Left"
HUD_TIMELEFT = 15
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---Pre-v2.2 Special Stage - Amount of time left
HUD_TIMELEFTNUM = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Head-up_display)**
---
---Pre-v2.2 Special Stage - "Time Up"
HUD_TIMEUP = 17

---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---None
SKINCOLOR_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---White
SKINCOLOR_WHITE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Bone
SKINCOLOR_BONE = 2
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Cloudy
SKINCOLOR_CLOUDY = 3
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Grey
SKINCOLOR_GREY = 4
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Silver
SKINCOLOR_SILVER = 5
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Carbon
SKINCOLOR_CARBON = 6
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Jet
SKINCOLOR_JET = 7
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Black
SKINCOLOR_BLACK = 8
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Aether
SKINCOLOR_AETHER = 9
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Slate
SKINCOLOR_SLATE = 10
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Moonstone
SKINCOLOR_MOONSTONE = 11
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Bluebell
SKINCOLOR_BLUEBELL = 12
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Pink
SKINCOLOR_PINK = 13
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Rosewood
SKINCOLOR_ROSEWOOD = 14
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Yogurt
SKINCOLOR_YOGURT = 15
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Latte
SKINCOLOR_LATTE = 16
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Brown
SKINCOLOR_BROWN = 17
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Boulder
SKINCOLOR_BOULDER = 18
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Bronze
SKINCOLOR_BRONZE = 19
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sepia
SKINCOLOR_SEPIA = 20
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Ecru
SKINCOLOR_ECRU = 21
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Tan
SKINCOLOR_TAN = 22
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Beige
SKINCOLOR_BEIGE = 23
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Rosebush
SKINCOLOR_ROSEBUSH = 24
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Moss
SKINCOLOR_MOSS = 25
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Azure
SKINCOLOR_AZURE = 26
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Eggplant
SKINCOLOR_EGGPLANT = 27
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Lavender
SKINCOLOR_LAVENDER = 28
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Ruby
SKINCOLOR_RUBY = 29
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Cherry
SKINCOLOR_CHERRY = 30
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Salmon
SKINCOLOR_SALMON = 31
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Pepper
SKINCOLOR_PEPPER = 32
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Red
SKINCOLOR_RED = 33
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Crimson
SKINCOLOR_CRIMSON = 34
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Flame
SKINCOLOR_FLAME = 35
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Garnet
SKINCOLOR_GARNET = 36
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Ketchup
SKINCOLOR_KETCHUP = 37
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Peachy
SKINCOLOR_PEACHY = 38
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Quail
SKINCOLOR_QUAIL = 39
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Foundation
SKINCOLOR_FOUNDATION = 40
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sunset
SKINCOLOR_SUNSET = 41
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Copper
SKINCOLOR_COPPER = 42
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Apricot
SKINCOLOR_APRICOT = 43
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Orange
SKINCOLOR_ORANGE = 44
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Rust
SKINCOLOR_RUST = 45
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Tangerine
SKINCOLOR_TANGERINE = 46
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Topaz
SKINCOLOR_TOPAZ = 47
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Gold
SKINCOLOR_GOLD = 48
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sandy
SKINCOLOR_SANDY = 49
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Goldenrod
SKINCOLOR_GOLDENROD = 50
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Yellow
SKINCOLOR_YELLOW = 51
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Olive
SKINCOLOR_OLIVE = 52
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Pear
SKINCOLOR_PEAR = 53
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Lemon
SKINCOLOR_LEMON = 54
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Lime
SKINCOLOR_LIME = 55
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Peridot
SKINCOLOR_PERIDOT = 56
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Apple
SKINCOLOR_APPLE = 57
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Headlight
SKINCOLOR_HEADLIGHT = 58
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Chartreuse
SKINCOLOR_CHARTREUSE = 59
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Green
SKINCOLOR_GREEN = 60
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Forest
SKINCOLOR_FOREST = 61
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Shamrock
SKINCOLOR_SHAMROCK = 62
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Jade
SKINCOLOR_JADE = 63
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Mint
SKINCOLOR_MINT = 64
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Master
SKINCOLOR_MASTER = 65
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Emerald
SKINCOLOR_EMERALD = 66
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Seafoam
SKINCOLOR_SEAFOAM = 67
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Island
SKINCOLOR_ISLAND = 68
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Bottle
SKINCOLOR_BOTTLE = 69
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Aqua
SKINCOLOR_AQUA = 70
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Teal
SKINCOLOR_TEAL = 71
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Ocean
SKINCOLOR_OCEAN = 72
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Wave
SKINCOLOR_WAVE = 73
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Cyan
SKINCOLOR_CYAN = 74
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Turquoise
SKINCOLOR_TURQUOISE = 75
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Aquamarine
SKINCOLOR_AQUAMARINE = 76
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sky
SKINCOLOR_SKY = 77
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Marine
SKINCOLOR_MARINE = 78
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Cerulean
SKINCOLOR_CERULEAN = 79
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Dream
SKINCOLOR_DREAM = 80
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Icy
SKINCOLOR_ICY = 81
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Daybreak
SKINCOLOR_DAYBREAK = 82
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sapphire
SKINCOLOR_SAPPHIRE = 83
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Arctic
SKINCOLOR_ARCTIC = 84
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Cornflower
SKINCOLOR_CORNFLOWER = 85
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Blue
SKINCOLOR_BLUE = 86
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Cobalt
SKINCOLOR_COBALT = 87
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Midnight
SKINCOLOR_MIDNIGHT = 88
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Galaxy
SKINCOLOR_GALAXY = 89
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Vapor
SKINCOLOR_VAPOR = 90
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Dusk
SKINCOLOR_DUSK = 91
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Majesty
SKINCOLOR_MAJESTY = 92
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Pastel
SKINCOLOR_PASTEL = 93
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Purple
SKINCOLOR_PURPLE = 94
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Noble
SKINCOLOR_NOBLE = 95
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Fuchsia
SKINCOLOR_FUCHSIA = 96
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Bubblegum
SKINCOLOR_BUBBLEGUM = 97
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Siberite
SKINCOLOR_SIBERITE = 98
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Magenta
SKINCOLOR_MAGENTA = 99
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Neon
SKINCOLOR_NEON = 100
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Violet
SKINCOLOR_VIOLET = 101
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Royal
SKINCOLOR_ROYAL = 102
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Lilac
SKINCOLOR_LILAC = 103
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Mauve
SKINCOLOR_MAUVE = 104
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Eventide
SKINCOLOR_EVENTIDE = 105
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Plum
SKINCOLOR_PLUM = 106
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Raspberry
SKINCOLOR_RASPBERRY = 107
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Taffy
SKINCOLOR_TAFFY = 108
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Rosy
SKINCOLOR_ROSY = 109
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Fancy
SKINCOLOR_FANCY = 110
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sangria
SKINCOLOR_SANGRIA = 111
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Volcanic
SKINCOLOR_VOLCANIC = 112
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
MAXSKINCOLORS  = 113

---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Silver
SKINCOLOR_SUPERSILVER1 = 114
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERSILVER2 = 115
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---1
SKINCOLOR_SUPERSILVER3 = 116
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---2
SKINCOLOR_SUPERSILVER4 = 117
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---3
SKINCOLOR_SUPERSILVER5 = 118
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Red
SKINCOLOR_SUPERRED1 = 119
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERRED2 = 120
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERRED3 = 121
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERRED4 = 122
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---208
SKINCOLOR_SUPERRED5 = 123
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Orange
SKINCOLOR_SUPERORANGE1 = 124
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERORANGE2 = 125
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERORANGE3 = 126
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERORANGE4 = 127
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---208
SKINCOLOR_SUPERORANGE5 = 128
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Gold
SKINCOLOR_SUPERGOLD1 = 129
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERGOLD2 = 130
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---81
SKINCOLOR_SUPERGOLD3 = 131
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---83
SKINCOLOR_SUPERGOLD4 = 132
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---72
SKINCOLOR_SUPERGOLD5 = 133
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Peridot
SKINCOLOR_SUPERPERIDOT1 = 134
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERPERIDOT2 = 135
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---88
SKINCOLOR_SUPERPERIDOT3 = 136
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---88
SKINCOLOR_SUPERPERIDOT4 = 137
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---188
SKINCOLOR_SUPERPERIDOT5 = 138
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Sky
SKINCOLOR_SUPERSKY1 = 139
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERSKY2 = 140
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---129
SKINCOLOR_SUPERSKY3 = 141
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---131
SKINCOLOR_SUPERSKY4 = 142
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---132
SKINCOLOR_SUPERSKY5 = 143
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Purple
SKINCOLOR_SUPERPURPLE1 = 144
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERPURPLE2 = 145
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---160
SKINCOLOR_SUPERPURPLE3 = 146
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---161
SKINCOLOR_SUPERPURPLE4 = 147
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---162
SKINCOLOR_SUPERPURPLE5 = 148
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Rust
SKINCOLOR_SUPERRUST1 = 149
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---48
SKINCOLOR_SUPERRUST2 = 150
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---49
SKINCOLOR_SUPERRUST3 = 151
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---72
SKINCOLOR_SUPERRUST4 = 152
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---65
SKINCOLOR_SUPERRUST5 = 153
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---Tan
SKINCOLOR_SUPERTAN1 = 154
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---0
SKINCOLOR_SUPERTAN2 = 155
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---80
SKINCOLOR_SUPERTAN3 = 156
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---81
SKINCOLOR_SUPERTAN4 = 157
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_skin_colors)**
---
---82
SKINCOLOR_SUPERTAN5 = 158

---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[ScriptIsFile](https://wiki.srb2.org/wiki/Level_Header#ScriptIsFile)
LF_SCRIPTISFILE = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[SpeedMusic](https://wiki.srb2.org/wiki/Level_Header#SpeedMusic)
LF_SPEEDMUSIC = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[NoSSMusic](https://wiki.srb2.org/wiki/Level_Header#NoSSMusic)
LF_NOSSMUSIC = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[NoReload](https://wiki.srb2.org/wiki/Level_Header#NoReload)
LF_NORELOAD = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[NoZone](https://wiki.srb2.org/wiki/Level_Header#NoZone)
LF_NOZONE = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[SaveGame](https://wiki.srb2.org/wiki/Level_Header#SaveGame)
LF_SAVEGAME = 32
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[MixNightsCountdown](https://wiki.srb2.org/wiki/Level_Header#MixNightsCountdown)
LF_MIXNIGHTSCOUNTDOWN = 64
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[WarningTitle](https://wiki.srb2.org/wiki/Level_Header#WarningTitle)
LF_WARNINGTITLE = 128
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---The title card is not shown when the level is newly loaded; see [ShowTitleCardFor](https://wiki.srb2.org/wiki/Level_Header#ShowTitleCardFor).
LF_NOTITLECARDFIRST = 256
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---The title card is not shown when the level is reloaded (e.g., after dying and respawning); see [ShowTitleCardFor](https://wiki.srb2.org/wiki/Level_Header#ShowTitleCardFor).
LF_NOTITLECARDRESPAWN = 512
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---The title card is not shown in [Record Attack](https://wiki.srb2.org/wiki/Record_Attack); see [ShowTitleCardFor](https://wiki.srb2.org/wiki/Level_Header#ShowTitleCardFor).
LF_NOTITLECARDRECORDATTACK = 1024
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[NoTitleCard](https://wiki.srb2.org/wiki/Level_Header#NoTitleCard) (combination of the above three)
LF_NOTITLECARD = 1792

---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---None
PRECIP_NONE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---Storm (thunder, rain and lightning)
PRECIP_STORM = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---Snow
PRECIP_SNOW = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---Rain
PRECIP_RAIN = 3
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---Preloaded precipitation
PRECIP_BLANK = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---Storm (no rain)
PRECIP_STORM_NORAIN = 5
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---Storm (no lightning)
PRECIP_STORM_NOSTRIKES = 6

---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[Hidden](https://wiki.srb2.org/wiki/Level_Header#Hidden)
LF2_HIDEINMENU = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[HideInStats](https://wiki.srb2.org/wiki/Level_Header#HideInStats)
LF2_HIDEINSTATS = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[RecordAttack](https://wiki.srb2.org/wiki/Level_Header#RecordAttack)
LF2_RECORDATTACK = 4
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[NightsAttack](https://wiki.srb2.org/wiki/Level_Header#NightsAttack)
LF2_NIGHTSATTACK = 8
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[NoVisitNeeded](https://wiki.srb2.org/wiki/Level_Header#NoVisitNeeded)
LF2_NOVISITNEEDED = 16
---**[View on wiki](https://wiki.srb2.org/wiki/Level_Header)**
---
---[WideIcon](https://wiki.srb2.org/wiki/Level_Header#WideIcon)
LF2_WIDEICON = 32

---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype ensures linear progression through levels, not allowing random picks. Only used by Co-op.
GTR_CAMPAIGN = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This is a gametype where players can throw rings to attack. Can be overriden by the value of the [`ringslinger`](https://wiki.srb2.org/wiki/Console/Variables#ringslinger) console variable. Used by Match, Team Match, Tag, Hide & Seek, and CTF.
GTR_RINGSLINGER = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype allows players to spectate. Used by all `GTR_RINGSLINGER` gametypes.
GTR_SPECTATORS = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype features lives. Used by Co-op and Competition.
GTR_LIVES = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype features teams. Used by Team Match and CTF.
GTR_TEAMS = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype defaults the player's camera to first person view. Used by all `GTR_RINGSLINGER` gametypes.
GTR_FIRSTPERSON = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Multiplayer Emeralds are allowed to spawn in this gametype. Used by Match and CTF.
GTR_POWERSTONES = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Team flags are allowed to spawn in this gametype. Used by CTF only.
GTR_TEAMFLAGS = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype is non-competitive. Used by Co-op only.
GTR_FRIENDLY = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype allows Special Stages to be accessed via [Emerald Tokens](https://wiki.srb2.org/wiki/Emerald_Token). Used by Co-op only.
GTR_SPECIALSTAGES = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Emerald Tokens are allowed to spawn in this gametype. Used by Co-op and Competition.
GTR_EMERALDTOKENS = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype will start an [Emerald Hunt](https://wiki.srb2.org/wiki/Emerald_Hunt) if any [Emerald Hunt Locations](https://wiki.srb2.org/wiki/Emerald_Hunt_Location) are placed, and end the level when three [Chaos Emeralds](https://wiki.srb2.org/wiki/Chaos_Emeralds) are found. Used by Co-op only.
GTR_EMERALDHUNT = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype is a race with an initial countdown. Levels will end 60 seconds after the first player finishes the circuit. Used by Race and Competition.
GTR_RACE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype is a game of Tag. Used by Tag and Hide & Seek.
GTR_TAG = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype can end levels when a point limit is reached. Used by all `GTR_RINGSLINGER` gametypes.
GTR_POINTLIMIT = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype can end levels when a time limit is reached. Used by all `GTR_RINGSLINGER` gametypes.
GTR_TIMELIMIT = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype will start an overtime when both teams, or two or more players are tied. Can be overriden by the [`overtime`](https://wiki.srb2.org/wiki/Console/Variables#overtime) variable.
GTR_OVERTIME = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype will display a battle log in the console. Used by all `GTR_RINGSLINGER` gametypes.
GTR_HURTMESSAGES = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype allows players to attack other players by throwing rings regardless of team. Can be overriden by the value of the [`friendlyfire`](https://wiki.srb2.org/wiki/Console/Variables#friendlyfire) variable.
GTR_FRIENDLYFIRE = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gives `GTR_TAG` gametypes an initial countdown for players to flee and hide from the "it".
GTR_STARTCOUNTDOWN = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---In `GTR_TAG` gametypes, players won't be allowed to move after `GTR_STARTCOUNTDOWN` has elapsed, or not been set. Used by Hide & Seek only.
GTR_HIDEFROZEN = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---In `GTR_TAG` gametypes, this will blindfold the "it" player during fleeing/hiding time if `GTR_STARTCOUNTDOWN` has been set.
GTR_BLINDFOLDED = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype makes use of the [`respawndelay`](https://wiki.srb2.org/wiki/Console/Variables#respawndelay) variable to set a timer before players can respawn. Used by all `GTR_RINGSLINGER` gametypes.
GTR_RESPAWNDELAY = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype makes use of the pity counter to award losing players a [Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield). Used by Match, Team Match and CTF.
GTR_PITYSHIELD = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype penalizes players by 50 points for dying. Used by Match only.
GTR_DEATHPENALTY = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Players spawn in the game by default, instead of as spectators. Must be coupled with `GTR_SPECTATORS`.
GTR_NOSPECTATORSPAWN = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype uses Deathmatch spawns as a first option for spawning players.
GTR_DEATHMATCHSTARTS = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype spawns players with temporary invincibility. Used by all vanilla gametypes except Co-op.
GTR_SPAWNINVUL = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Enemies are allowed to spawn in this gametype. Used by Co-op, Competition and Race.
GTR_SPAWNENEMIES = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Players can end a level by touching an [Exit Sector](https://wiki.srb2.org/wiki/Exit_Sector). Used by Co-op, Competition and Race.
GTR_ALLOWEXIT = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype does not display a title card.
GTR_NOTITLECARD = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---This gametype allows cutscenes, the ending sequence, credits and the secrets evaluation screen to be displayed. Used by Co-op only.
GTR_CUTSCENES = 0

---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---No intermission, skips straight to the next level
int_none = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Single Player and Co-op "Sonic got through the act" style intermission
int_coop = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Match, Tag and Hide & Seek score tally
int_match = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Team Match score tally
int_teammatch = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Capture the Flag score tally
int_ctf = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Race score tally
int_race = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Competition score tally
int_comp = 0
---**[View on wiki](https://wiki.srb2.org/wiki/Game_modes)**
---
---Special Stage intermission, displays the amount of emeralds the player has
int_spec = 0

---**[View on wiki](https://wiki.srb2.org/wiki/Userdata_structures)**
---
---The bustable can be shattered by pushable objects.
FB_PUSHABLES = 1
---**[View on wiki](https://wiki.srb2.org/wiki/Userdata_structures)**
---
---The bustable triggers a linedef executor tag when shattered.
FB_EXECUTOR = 2
---**[View on wiki](https://wiki.srb2.org/wiki/Userdata_structures)**
---
---The bustable can be only shattered from below.
FB_ONLYBOTTOM = 4


---**[View on wiki](https://wiki.srb2.org/wiki/Functions)**
---
---`{Off = 0, On = 1}`
CV_OnOff = table
---**[View on wiki](https://wiki.srb2.org/wiki/Functions)**
---
---`{No = 0, Yes = 1}`
CV_YesNo = table
---**[View on wiki](https://wiki.srb2.org/wiki/Functions)**
---
---`{MIN = 0, MAX = 999999999}`
CV_Unsigned = table
---**[View on wiki](https://wiki.srb2.org/wiki/Functions)**
---
---`{MIN = 1, MAX = 999999999}`
CV_Natural = table
---**[View on wiki](https://wiki.srb2.org/wiki/Functions)**
---
---`{False = 0, True = 1}`
CV_TrueFalse = table

---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Null Object, will disappear immediately after spawning
MT_NULL = 0
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Used for Objects of an unknown type, displays a warning graphic
MT_UNKNOWN = 1
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thok trail
MT_THOK = 2
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Player](https://wiki.srb2.org/wiki/Player)
MT_PLAYER = 3
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tails](https://wiki.srb2.org/wiki/Miles_"Tails"_Prower)' tails overlay
MT_TAILSOVERLAY = 4
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic)'s jet fume
MT_METALJETFUME = 5
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Crawla](https://wiki.srb2.org/wiki/Blue_Crawla)
MT_BLUECRAWLA = 6
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Crawla](https://wiki.srb2.org/wiki/Red_Crawla)
MT_REDCRAWLA = 7
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Stupid Dumb Unnamed RoboFish](https://wiki.srb2.org/wiki/Stupid_Dumb_Unnamed_RoboFish)
MT_GFZFISH = 8
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gold Buzz](https://wiki.srb2.org/wiki/Buzz_(Gold))
MT_GOLDBUZZ = 9
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Buzz](https://wiki.srb2.org/wiki/Buzz_(Red))
MT_REDBUZZ = 10
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jetty-Syn Bomber](https://wiki.srb2.org/wiki/Jetty-Syn_Bomber)
MT_JETTBOMBER = 11
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jetty-Syn Gunner](https://wiki.srb2.org/wiki/Jetty-Syn_Gunner)
MT_JETTGUNNER = 12
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Crawla Commander](https://wiki.srb2.org/wiki/Crawla_Commander)
MT_CRAWLACOMMANDER = 13
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Deton](https://wiki.srb2.org/wiki/Deton)
MT_DETON = 14
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Skim](https://wiki.srb2.org/wiki/Skim)
MT_SKIM = 15
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret)
MT_TURRET = 16
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pop-up Turret](https://wiki.srb2.org/wiki/Pop-up_Turret)
MT_POPUPTURRET = 17
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spincushion](https://wiki.srb2.org/wiki/Spincushion)
MT_SPINCUSHION = 18
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Crushstacean](https://wiki.srb2.org/wiki/Crushstacean)
MT_CRUSHSTACEAN = 19
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Crushstacean claw
MT_CRUSHCLAW = 20
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Crushstacean chain
MT_CRUSHCHAIN = 21
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Banpyura](https://wiki.srb2.org/wiki/Banpyura)
MT_BANPYURA = 22
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Banpyura spring
MT_BANPSPRING = 23
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jet Jaw](https://wiki.srb2.org/wiki/Jet_Jaw)
MT_JETJAW = 24
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Snailer](https://wiki.srb2.org/wiki/Snailer)
MT_SNAILER = 25
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bird Aircraft Strike Hazard](https://wiki.srb2.org/wiki/Bird_Aircraft_Strike_Hazard)
MT_VULTURE = 26
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pointy](https://wiki.srb2.org/wiki/Pointy)
MT_POINTY = 27
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pointy spikeball
MT_POINTYBALL = 28
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Robo-Hood](https://wiki.srb2.org/wiki/Robo-Hood)
MT_ROBOHOOD = 29
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lance-a-Bot](https://wiki.srb2.org/wiki/Lance-a-Bot)
MT_FACESTABBER = 30
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lance-a-Bot spear
MT_FACESTABBERSPEAR = 31
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Egg Guard](https://wiki.srb2.org/wiki/Egg_Guard)
MT_EGGGUARD = 32
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Guard shield
MT_EGGSHIELD = 33
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Green Snapper](https://wiki.srb2.org/wiki/Green_Snapper)
MT_GSNAPPER = 34
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Green Snapper leg
MT_SNAPPER_LEG = 35
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Green Snapper head
MT_SNAPPER_HEAD = 36
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Minus](https://wiki.srb2.org/wiki/Minus)
MT_MINUS = 37
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Minus dirt mound
MT_MINUSDIRT = 38
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spring Shell (Green)](https://wiki.srb2.org/wiki/Spring_Shell_(Green))
MT_SPRINGSHELL = 39
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spring Shell (Yellow)](https://wiki.srb2.org/wiki/Spring_Shell_(Yellow))
MT_YELLOWSHELL = 40
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Unidus](https://wiki.srb2.org/wiki/Unidus)
MT_UNIDUS = 41
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Unidus ball
MT_UNIBALL = 42
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Canarivore](https://wiki.srb2.org/wiki/Canarivore)
MT_CANARIVORE = 43
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Canarivore gas
MT_CANARIVORE_GAS = 44
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pyre Fly](https://wiki.srb2.org/wiki/Pyre_Fly)
MT_PYREFLY = 45
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pyre Fly fire
MT_PYREFLY_FIRE = 46
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pterabyte Spawner](https://wiki.srb2.org/wiki/Pterabyte_Spawner)
MT_PTERABYTESPAWNER = 47
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pterabyte waypoint
MT_PTERABYTEWAYPOINT = 48
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pterabyte
MT_PTERABYTE = 49
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Dragonbomber](https://wiki.srb2.org/wiki/Dragonbomber)
MT_DRAGONBOMBER = 50
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dragonbomber wing
MT_DRAGONWING = 51
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dragonbomber tail
MT_DRAGONTAIL = 52
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dragonbomber mine
MT_DRAGONMINE = 53
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Boss explosion
MT_BOSSEXPLODE = 54
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---S3&K-like boss explosion
MT_SONIC3KBOSSEXPLODE = 55
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Boss Escape Point](https://wiki.srb2.org/wiki/Boss_Escape_Point)
MT_BOSSFLYPOINT = 56
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Egg Capsule Center](https://wiki.srb2.org/wiki/Egg_Capsule_Center)
MT_EGGTRAP = 57
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Boss Waypoint](https://wiki.srb2.org/wiki/Boss_Waypoint)
MT_BOSS3WAYPOINT = 58
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Metal Sonic Gather Point](https://wiki.srb2.org/wiki/Metal_Sonic_Gather_Point)
MT_BOSS9GATHERPOINT = 59
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Defeated boss debris
MT_BOSSJUNK = 60
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile)
MT_EGGMOBILE = 61
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Mobile jet fume
MT_JETFUME1 = 62
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Mobile spikeball
MT_EGGMOBILE_BALL = 63
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Mobile target helper
MT_EGGMOBILE_TARGET = 64
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fire trail left by the Egg Mobile's laser
MT_EGGMOBILE_FIRE = 65
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Egg Slimer](https://wiki.srb2.org/wiki/Egg_Slimer)
MT_EGGMOBILE2 = 66
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Hitbox for Egg Slimer in its pogo state
MT_EGGMOBILE2_POGO = 67
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Slimer goop
MT_GOOP = 68
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Slimer goop trail
MT_GOOPTRAIL = 69
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg)
MT_EGGMOBILE3 = 70
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Sea Egg decoy
MT_FAKEMOBILE = 71
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Sea Egg shockwave
MT_SHOCKWAVE = 72
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Egg Colosseum](https://wiki.srb2.org/wiki/Egg_Colosseum)
MT_EGGMOBILE4 = 73
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Colosseum mace
MT_EGGMOBILE4_MACE = 74
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Egg Colosseum jet flame
MT_JETFLAME = 75
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spectator Eggrobo](https://wiki.srb2.org/wiki/Spectator_Eggrobo)
MT_EGGROBO1 = 76
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Spectator Eggrobo jetting away
MT_EGGROBO1JET = 77
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fang](https://wiki.srb2.org/wiki/Fang_(Boss))
MT_FANG = 78
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Broken badnik
MT_BROKENROBOT = 79
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Greyscale Fang teleport hoop front
MT_VWREF = 80
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Greyscale Fang teleport hoop back
MT_VWREB = 81
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fang projector light
MT_PROJECTORLIGHT = 82
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fang bomb
MT_FBOMB = 83
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[TNT Barrel](https://wiki.srb2.org/wiki/TNT_Barrel) dust
MT_TNTDUST = 84
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[ACZ3](https://wiki.srb2.org/wiki/ACZ3) sign
MT_FSGNA = 85
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---ACZ3 sign pole
MT_FSGNB = 86
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fang Waypoint](https://wiki.srb2.org/wiki/Fang_Waypoint)
MT_FANGWAYPOINT = 87
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Brak Eggman (Old)](https://wiki.srb2.org/wiki/Brak_Eggman_(Old))
MT_BLACKEGGMAN = 88
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman (Old) helper Object
MT_BLACKEGGMAN_HELPER = 89
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman (Old) goop
MT_BLACKEGGMAN_GOOPFIRE = 90
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman (Old) missile
MT_BLACKEGGMAN_MISSILE = 91
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Brak Eggman](https://wiki.srb2.org/wiki/Brak_Eggman)
MT_CYBRAKDEMON = 92
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman electric barrier
MT_CYBRAKDEMON_ELECTRIC_BARRIER = 93
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman missile
MT_CYBRAKDEMON_MISSILE = 94
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman flamethrower flames
MT_CYBRAKDEMON_FLAMESHOT = 95
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman flames after landing
MT_CYBRAKDEMON_FLAMEREST = 96
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman target reticule
MT_CYBRAKDEMON_TARGET_RETICULE = 97
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman target dot
MT_CYBRAKDEMON_TARGET_DOT = 98
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman napalm bomb (large)
MT_CYBRAKDEMON_NAPALM_BOMB_LARGE = 99
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman napalm bomb (small)
MT_CYBRAKDEMON_NAPALM_BOMB_SMALL = 100
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman napalm bomb flames
MT_CYBRAKDEMON_NAPALM_FLAMES = 101
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brak Eggman target reticule explosion
MT_CYBRAKDEMON_VILE_EXPLOSION = 102
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Metal Sonic (Race)](https://wiki.srb2.org/wiki/Metal_Sonic_(Race))
MT_METALSONIC_RACE = 103
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Metal Sonic (Battle)](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle))
MT_METALSONIC_BATTLE = 104
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Metal Sonic shield
MT_MSSHIELD_FRONT = 105
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Metal Sonic energy ball projectile (before it is shot)
MT_MSGATHER = 106
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ring](https://wiki.srb2.org/wiki/Ring)
MT_RING = 107
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ring lost by a player
MT_FLINGRING = 108
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Sphere](https://wiki.srb2.org/wiki/Blue_Sphere)
MT_BLUESPHERE = 109
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Blue sphere lost by a player
MT_FLINGBLUESPHERE = 110
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bomb Sphere](https://wiki.srb2.org/wiki/Bomb_Sphere)
MT_BOMBSPHERE = 111
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF Team Ring (Red)](https://wiki.srb2.org/wiki/CTF_Team_Ring_(Red))
MT_REDTEAMRING = 112
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF Team Ring (Blue)](https://wiki.srb2.org/wiki/CTF_Team_Ring_(Blue))
MT_BLUETEAMRING = 113
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Emerald Token](https://wiki.srb2.org/wiki/Emerald_Token)
MT_TOKEN = 114
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF Red Flag](https://wiki.srb2.org/wiki/CTF_Red_Flag)
MT_REDFLAG = 115
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF Blue Flag](https://wiki.srb2.org/wiki/CTF_Blue_Flag)
MT_BLUEFLAG = 116
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Emblem](https://wiki.srb2.org/wiki/Emblem)
MT_EMBLEM = 117
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 1 (Green)](https://wiki.srb2.org/wiki/Chaos_Emerald_1_(Green))
MT_EMERALD1 = 118
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 2 (Purple)](https://wiki.srb2.org/wiki/Chaos_Emerald_2_(Purple))
MT_EMERALD2 = 119
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 3 (Blue)](https://wiki.srb2.org/wiki/Chaos_Emerald_3_(Blue))
MT_EMERALD3 = 120
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 4 (Cyan)](https://wiki.srb2.org/wiki/Chaos_Emerald_4_(Cyan))
MT_EMERALD4 = 121
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 5 (Orange)](https://wiki.srb2.org/wiki/Chaos_Emerald_5_(Orange))
MT_EMERALD5 = 122
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 6 (Red)](https://wiki.srb2.org/wiki/Chaos_Emerald_6_(Red))
MT_EMERALD6 = 123
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos Emerald 7 (Gray)](https://wiki.srb2.org/wiki/Chaos_Emerald_7_(Gray))
MT_EMERALD7 = 124
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Emerald Hunt Location](https://wiki.srb2.org/wiki/Emerald_Hunt_Location)
MT_EMERHUNT = 125
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Match Chaos Emerald Spawn](https://wiki.srb2.org/wiki/Match_Chaos_Emerald_Spawn)
MT_EMERALDSPAWN = 126
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Emerald lost by a player
MT_FLINGEMERALD = 127
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fan](https://wiki.srb2.org/wiki/Fan)
MT_FAN = 128
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gas Jet](https://wiki.srb2.org/wiki/Gas_Jet)
MT_STEAM = 129
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bumper](https://wiki.srb2.org/wiki/Bumper)
MT_BUMPER = 130
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Balloon](https://wiki.srb2.org/wiki/Balloon)
MT_BALLOON = 131
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Yellow Spring](https://wiki.srb2.org/wiki/Yellow_Spring)
MT_YELLOWSPRING = 132
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Spring](https://wiki.srb2.org/wiki/Red_Spring)
MT_REDSPRING = 133
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Spring](https://wiki.srb2.org/wiki/Blue_Spring)
MT_BLUESPRING = 134
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Diagonal Yellow Spring](https://wiki.srb2.org/wiki/Diagonal_Yellow_Spring)
MT_YELLOWDIAG = 135
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Diagonal Red Spring](https://wiki.srb2.org/wiki/Diagonal_Red_Spring)
MT_REDDIAG = 136
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Diagonal Blue Spring](https://wiki.srb2.org/wiki/Diagonal_Blue_Spring)
MT_BLUEDIAG = 137
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Horizontal Yellow Spring](https://wiki.srb2.org/wiki/Horizontal_Yellow_Spring)
MT_YELLOWHORIZ = 138
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Horizontal Red Spring](https://wiki.srb2.org/wiki/Horizontal_Red_Spring)
MT_REDHORIZ = 139
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Horizontal Blue Spring](https://wiki.srb2.org/wiki/Horizontal_Blue_Spring)
MT_BLUEHORIZ = 140
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Boost panel segment
MT_BOOSTERSEG = 141
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Boost panel roller
MT_BOOSTERROLLER = 142
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Yellow Boost Panel](https://wiki.srb2.org/wiki/Yellow_Boost_Panel)
MT_YELLOWBOOSTER = 143
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Boost Panel](https://wiki.srb2.org/wiki/Red_Boost_Panel)
MT_REDBOOSTER = 144
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Air Bubble Patch](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
MT_BUBBLES = 145
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Signpost](https://wiki.srb2.org/wiki/Signpost)
MT_SIGN = 146
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spikeball](https://wiki.srb2.org/wiki/Spikeball) (formerly used for [Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile))
MT_SPIKEBALL = 147
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fire trail left behind players with the [Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield)
MT_SPINFIRE = 148
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spike](https://wiki.srb2.org/wiki/Spike)
MT_SPIKE = 149
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Wall Spike](https://wiki.srb2.org/wiki/Wall_Spike)
MT_WALLSPIKE = 150
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Wall Spike base
MT_WALLSPIKEBASE = 151
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Star Post](https://wiki.srb2.org/wiki/Star_Post)
MT_STARPOST = 152
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Big Floating Mine](https://wiki.srb2.org/wiki/Big_Floating_Mine)
MT_BIGMINE = 153
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blast Linedef Executor](https://wiki.srb2.org/wiki/Blast_Linedef_Executor)
MT_BLASTEXECUTOR = 154
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cannonball Launcher](https://wiki.srb2.org/wiki/Cannonball_Launcher)
MT_CANNONLAUNCHER = 155
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Gold monitor sparkle
MT_BOXSPARKLE = 156
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Super Ring Monitor (10 Rings)](https://wiki.srb2.org/wiki/Super_Ring_Monitor_(10_Rings))
MT_RING_BOX = 157
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pity Shield Monitor](https://wiki.srb2.org/wiki/Pity_Shield_Monitor)
MT_PITY_BOX = 158
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Attraction Shield Monitor](https://wiki.srb2.org/wiki/Attraction_Shield_Monitor)
MT_ATTRACT_BOX = 159
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Force Shield Monitor](https://wiki.srb2.org/wiki/Force_Shield_Monitor)
MT_FORCE_BOX = 160
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Armageddon Shield Monitor](https://wiki.srb2.org/wiki/Armageddon_Shield_Monitor)
MT_ARMAGEDDON_BOX = 161
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Whirlwind Shield Monitor](https://wiki.srb2.org/wiki/Whirlwind_Shield_Monitor)
MT_WHIRLWIND_BOX = 162
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Elemental Shield Monitor](https://wiki.srb2.org/wiki/Elemental_Shield_Monitor)
MT_ELEMENTAL_BOX = 163
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Super Sneakers Monitor](https://wiki.srb2.org/wiki/Super_Sneakers_Monitor)
MT_SNEAKERS_BOX = 164
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Invincibility Monitor](https://wiki.srb2.org/wiki/Invincibility_Monitor)
MT_INVULN_BOX = 165
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Extra Life Monitor](https://wiki.srb2.org/wiki/Extra_Life_Monitor)
MT_1UP_BOX = 166
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Eggman Monitor](https://wiki.srb2.org/wiki/Eggman_Monitor)
MT_EGGMAN_BOX = 167
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Teleporter Monitor](https://wiki.srb2.org/wiki/Teleporter_Monitor)
MT_MIXUP_BOX = 168
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Random Monitor](https://wiki.srb2.org/wiki/Random_Monitor)
MT_MYSTERY_BOX = 169
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gravity Boots Monitor](https://wiki.srb2.org/wiki/Gravity_Boots_Monitor)
MT_GRAVITY_BOX = 170
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Recycler Monitor](https://wiki.srb2.org/wiki/Recycler_Monitor)
MT_RECYCLER_BOX = 171
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Score Monitor (1,000 Points)](https://wiki.srb2.org/wiki/Score_Monitor_(1,000_Points))
MT_SCORE1K_BOX = 172
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Score Monitor (10,000 Points)](https://wiki.srb2.org/wiki/Score_Monitor_(10,000_Points))
MT_SCORE10K_BOX = 173
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Flame Shield Monitor](https://wiki.srb2.org/wiki/Flame_Shield_Monitor)
MT_FLAMEAURA_BOX = 174
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bubble Shield Monitor](https://wiki.srb2.org/wiki/Bubble_Shield_Monitor)
MT_BUBBLEWRAP_BOX = 175
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lightning Shield Monitor](https://wiki.srb2.org/wiki/Lightning_Shield_Monitor)
MT_THUNDERCOIN_BOX = 176
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pity Shield Monitor (Respawn)
MT_PITY_GOLDBOX = 177
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Attraction Shield Monitor (Respawn)
MT_ATTRACT_GOLDBOX = 178
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Force Shield Monitor (Respawn)
MT_FORCE_GOLDBOX = 179
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Armageddon Shield Monitor (Respawn)
MT_ARMAGEDDON_GOLDBOX = 180
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Whirlwind Shield Monitor (Respawn)
MT_WHIRLWIND_GOLDBOX = 181
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Elemental Shield Monitor (Respawn)
MT_ELEMENTAL_GOLDBOX = 182
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Super Sneakers Monitor (Respawn)
MT_SNEAKERS_GOLDBOX = 183
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Invincibility Monitor (Respawn)
MT_INVULN_GOLDBOX = 184
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Eggman Monitor (Respawn)
MT_EGGMAN_GOLDBOX = 185
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Gravity Boots Monitor (Respawn)
MT_GRAVITY_GOLDBOX = 186
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Flame Shield Monitor (Respawn)
MT_FLAMEAURA_GOLDBOX = 187
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bubble Shield Monitor (Respawn)
MT_BUBBLEWRAP_GOLDBOX = 188
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lightning Shield Monitor (Respawn)
MT_THUNDERCOIN_GOLDBOX = 189
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF Team Ring Monitor (Red)](https://wiki.srb2.org/wiki/CTF_Team_Ring_Monitor_(Red))
MT_RING_REDBOX = 190
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF Team Ring Monitor (Blue)](https://wiki.srb2.org/wiki/CTF_Team_Ring_Monitor_(Blue))
MT_RING_BLUEBOX = 191
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Super Ring Monitor icon
MT_RING_ICON = 192
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pity Shield Monitor icon
MT_PITY_ICON = 193
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Attraction Shield Monitor icon
MT_ATTRACT_ICON = 194
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Force Shield Monitor icon
MT_FORCE_ICON = 195
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Armageddon Shield Monitor icon
MT_ARMAGEDDON_ICON = 196
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Whirlwind Shield Monitor icon
MT_WHIRLWIND_ICON = 197
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Elemental Shield Monitor icon
MT_ELEMENTAL_ICON = 198
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Super Sneakers Monitor icon
MT_SNEAKERS_ICON = 199
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Invincibility Monitor icon
MT_INVULN_ICON = 200
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Extra Life Monitor icon
MT_1UP_ICON = 201
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Eggman Monitor icon
MT_EGGMAN_ICON = 202
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Teleporter Monitor icon
MT_MIXUP_ICON = 203
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Gravity Boots Monitor icon
MT_GRAVITY_ICON = 204
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Recycler Monitor icon
MT_RECYCLER_ICON = 205
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Score Monitor (1,000 Points) icon
MT_SCORE1K_ICON = 206
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Score Monitor (10,000 Points) icon
MT_SCORE10K_ICON = 207
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Flame Shield Monitor icon
MT_FLAMEAURA_ICON = 208
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bubble Shield Monitor icon
MT_BUBBLEWRAP_ICON = 209
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lightning Shield Monitor icon
MT_THUNDERCOIN_ICON = 210
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Snailer](https://wiki.srb2.org/wiki/Snailer) missile
MT_ROCKET = 211
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Egg Mobile](https://wiki.srb2.org/wiki/Egg_Mobile) laser
MT_LASER = 212
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg) torpedo
MT_TORPEDO = 213
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Sea Egg](https://wiki.srb2.org/wiki/Sea_Egg) decoy torpedo
MT_TORPEDO2 = 214
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Metal Sonic](https://wiki.srb2.org/wiki/Metal_Sonic_(Battle)) energy ball projectile
MT_ENERGYBALL = 215
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jetty-Syn Bomber](https://wiki.srb2.org/wiki/Jetty-Syn_Bomber)'s/[Skim](https://wiki.srb2.org/wiki/Skim)'s mine
MT_MINE = 216
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jetty-Syn Gunner](https://wiki.srb2.org/wiki/Jetty-Syn_Gunner)'s bullet
MT_JETTBULLET = 217
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Turret](https://wiki.srb2.org/wiki/Turret) laser
MT_TURRETLASER = 218
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Launched Cannonball](https://wiki.srb2.org/wiki/Cannonball_Launcher)
MT_CANNONBALL = 219
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cannonball](https://wiki.srb2.org/wiki/Cannonball) (pushable)
MT_CANNONBALLDECOR = 220
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Robo-Hood](https://wiki.srb2.org/wiki/Robo-Hood) arrow
MT_ARROW = 221
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Glaregoyle](https://wiki.srb2.org/wiki/Glaregoyle) fire
MT_DEMONFIRE = 222
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[The letter](https://wiki.srb2.org/wiki/RedXVI#Version_2.2)
MT_LETTER = 223
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tutorial Plant](https://wiki.srb2.org/wiki/Tutorial_Plant)
MT_TUTORIALPLANT = 224
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Leaf of Tutorial Plant
MT_TUTORIALLEAF = 225
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Papersprite part of Tutorial Plant's flower
MT_TUTORIALFLOWER = 226
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Floorsprite part of Tutorial Plant's flower
MT_TUTORIALFLOWERF = 227
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[GFZ Flower](https://wiki.srb2.org/wiki/GFZ_Flower)
MT_GFZFLOWER1 = 228
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Sunflower](https://wiki.srb2.org/wiki/Sunflower)
MT_GFZFLOWER2 = 229
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Budding Flower](https://wiki.srb2.org/wiki/Budding_Flower)
MT_GFZFLOWER3 = 230
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blueberry Bush](https://wiki.srb2.org/wiki/Blueberry_Bush)
MT_BLUEBERRYBUSH = 231
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Berry Bush](https://wiki.srb2.org/wiki/Berry_Bush)
MT_BERRYBUSH = 232
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush](https://wiki.srb2.org/wiki/Bush)
MT_BUSH = 233
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[GFZ Tree](https://wiki.srb2.org/wiki/GFZ_Tree)
MT_GFZTREE = 234
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[GFZ Berry Tree](https://wiki.srb2.org/wiki/GFZ_Berry_Tree)
MT_GFZBERRYTREE = 235
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[GFZ Cherry Tree](https://wiki.srb2.org/wiki/GFZ_Cherry_Tree)
MT_GFZCHERRYTREE = 236
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Checkered Tree](https://wiki.srb2.org/wiki/Checkered_Tree)
MT_CHECKERTREE = 237
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Checkered Tree (Sunset)](https://wiki.srb2.org/wiki/Checkered_Tree_(Sunset))
MT_CHECKERSUNSETTREE = 238
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Crystal Tree (Aqua)](https://wiki.srb2.org/wiki/Crystal_Tree_(Aqua))
MT_FHZTREE = 239
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Crystal Tree (Pink)](https://wiki.srb2.org/wiki/Crystal_Tree_(Pink))
MT_FHZPINKTREE = 240
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Polygon Tree](https://wiki.srb2.org/wiki/Polygon_Tree)
MT_POLYGONTREE = 241
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush Tree](https://wiki.srb2.org/wiki/Bush_Tree)
MT_BUSHTREE = 242
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Bush Tree](https://wiki.srb2.org/wiki/Red_Bush_Tree)
MT_BUSHREDTREE = 243
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spring Tree](https://wiki.srb2.org/wiki/Spring_Tree)
MT_SPRINGTREE = 244
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[THZ Steam Flower](https://wiki.srb2.org/wiki/THZ_Steam_Flower)
MT_THZFLOWER1 = 245
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[THZ Spin Flower (Red)](https://wiki.srb2.org/wiki/THZ_Spin_Flower_(Red))
MT_THZFLOWER2 = 246
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[THZ Spin Flower (Yellow)](https://wiki.srb2.org/wiki/THZ_Spin_Flower_(Yellow))
MT_THZFLOWER3 = 247
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Whistlebush](https://wiki.srb2.org/wiki/Whistlebush)
MT_THZTREE = 248
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Whistlebush branch
MT_THZTREEBRANCH = 249
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Alarm](https://wiki.srb2.org/wiki/Alarm)
MT_ALARM = 250
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gargoyle](https://wiki.srb2.org/wiki/Gargoyle)
MT_GARGOYLE = 251
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gargoyle (Big)](https://wiki.srb2.org/wiki/Gargoyle_(Big))
MT_BIGGARGOYLE = 252
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Seaweed](https://wiki.srb2.org/wiki/Seaweed)
MT_SEAWEED = 253
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Dripping Water](https://wiki.srb2.org/wiki/Dripping_Water) (source)
MT_WATERDRIP = 254
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Water drop from dripping water source
MT_WATERDROP = 255
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Coral (Green)](https://wiki.srb2.org/wiki/Coral_(Green))
MT_CORAL1 = 256
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Coral (Red)](https://wiki.srb2.org/wiki/Coral_(Red))
MT_CORAL2 = 257
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Coral (Orange)](https://wiki.srb2.org/wiki/Coral_(Orange))
MT_CORAL3 = 258
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Large Coral (Brown)](https://wiki.srb2.org/wiki/Large_Coral_(Brown))
MT_CORAL4 = 259
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Large Coral (Beige)](https://wiki.srb2.org/wiki/Large_Coral_(Beige))
MT_CORAL5 = 260
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Crystal](https://wiki.srb2.org/wiki/Blue_Crystal)
MT_BLUECRYSTAL = 261
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Kelp](https://wiki.srb2.org/wiki/Kelp)
MT_KELP = 262
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Animated Kelp](https://wiki.srb2.org/wiki/Animated_Kelp) top
MT_ANIMALGAETOP = 263
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Animated Kelp segment
MT_ANIMALGAESEG = 264
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Stalagmite (DSZ1)](https://wiki.srb2.org/wiki/Stalagmite_(DSZ1))
MT_DSZSTALAGMITE = 265
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Stalagmite (DSZ2)](https://wiki.srb2.org/wiki/Stalagmite_(DSZ2))
MT_DSZ2STALAGMITE = 266
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Light Beam](https://wiki.srb2.org/wiki/Light_Beam)
MT_LIGHTBEAM = 267
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chain (Decorative)](https://wiki.srb2.org/wiki/Chain_(Decorative))
MT_CHAIN = 268
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Torch](https://wiki.srb2.org/wiki/Torch)
MT_FLAME = 269
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Torch flame particle
MT_FLAMEPARTICLE = 270
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Eggman Statue](https://wiki.srb2.org/wiki/Eggman_Statue)
MT_EGGSTATUE = 271
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Mace Spawnpoint](https://wiki.srb2.org/wiki/Mace_Spawnpoint)
MT_MACEPOINT = 272
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chain with Maces Spawnpoint](https://wiki.srb2.org/wiki/Chain_with_Maces_Spawnpoint)
MT_CHAINMACEPOINT = 273
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chained Spring Spawnpoint](https://wiki.srb2.org/wiki/Chained_Spring_Spawnpoint)
MT_SPRINGBALLPOINT = 274
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chain Spawnpoint](https://wiki.srb2.org/wiki/Chain_Spawnpoint)
MT_CHAINPOINT = 275
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Hidden Chain Spawnpoint](https://wiki.srb2.org/wiki/Hidden_Chain_Spawnpoint)
MT_HIDDEN_SLING = 276
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Firebar Spawnpoint](https://wiki.srb2.org/wiki/Firebar_Spawnpoint)
MT_FIREBARPOINT = 277
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Custom Mace Spawnpoint](https://wiki.srb2.org/wiki/Custom_Mace_Spawnpoint)
MT_CUSTOMMACEPOINT = 278
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small intangible chain link](https://wiki.srb2.org/wiki/Linedef_type_9)
MT_SMALLMACECHAIN = 279
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Large intangible chain link](https://wiki.srb2.org/wiki/Linedef_type_9)
MT_BIGMACECHAIN = 280
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small Mace](https://wiki.srb2.org/wiki/Small_Mace)
MT_SMALLMACE = 281
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Big Mace](https://wiki.srb2.org/wiki/Big_Mace)
MT_BIGMACE = 282
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small grabbable chain link](https://wiki.srb2.org/wiki/Linedef_type_9)
MT_SMALLGRABCHAIN = 283
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Large grabbable chain link](https://wiki.srb2.org/wiki/Linedef_type_9)
MT_BIGGRABCHAIN = 284
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Yellow Spring Ball](https://wiki.srb2.org/wiki/Yellow_Spring_Ball)
MT_YELLOWSPRINGBALL = 285
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Spring Ball](https://wiki.srb2.org/wiki/Red_Spring_Ball)
MT_REDSPRINGBALL = 286
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small Fireball](https://wiki.srb2.org/wiki/Small_Fireball)
MT_SMALLFIREBAR = 287
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Large Fireball](https://wiki.srb2.org/wiki/Large_Fireball)
MT_BIGFIREBAR = 288
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CEZ Flower](https://wiki.srb2.org/wiki/CEZ_Flower)
MT_CEZFLOWER = 289
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pole Banner (Red)](https://wiki.srb2.org/wiki/Pole_Banner_(Red)) pole
MT_CEZPOLE1 = 290
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pole Banner (Blue)](https://wiki.srb2.org/wiki/Pole_Banner_(Blue)) pole
MT_CEZPOLE2 = 291
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pole Banner (Red) banner
MT_CEZBANNER1 = 292
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pole Banner (Blue) banner
MT_CEZBANNER2 = 293
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pine Tree](https://wiki.srb2.org/wiki/Pine_Tree)
MT_PINETREE = 294
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CEZ Shrub (Small)](https://wiki.srb2.org/wiki/CEZ_Shrub_(Small))
MT_CEZBUSH1 = 295
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CEZ Shrub (Large)](https://wiki.srb2.org/wiki/CEZ_Shrub_(Large))
MT_CEZBUSH2 = 296
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Candle](https://wiki.srb2.org/wiki/Candle)
MT_CANDLE = 297
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Candle Pricket](https://wiki.srb2.org/wiki/Candle_Pricket)
MT_CANDLEPRICKET = 298
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Flame Holder](https://wiki.srb2.org/wiki/Flame_Holder)
MT_FLAMEHOLDER = 299
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fire Torch](https://wiki.srb2.org/wiki/Fire_Torch)
MT_FIRETORCH = 300
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Waving Flag (Red)](https://wiki.srb2.org/wiki/Waving_Flag_(Red))
MT_WAVINGFLAG1 = 301
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Waving Flag (Blue)](https://wiki.srb2.org/wiki/Waving_Flag_(Blue))
MT_WAVINGFLAG2 = 302
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Waving Flag (Red) segment
MT_WAVINGFLAGSEG1 = 303
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Waving Flag (Blue) segment
MT_WAVINGFLAGSEG2 = 304
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Crawla Statue](https://wiki.srb2.org/wiki/Crawla_Statue)
MT_CRAWLASTATUE = 305
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lance-a-Bot Statue](https://wiki.srb2.org/wiki/Lance-a-Bot_Statue)
MT_FACESTABBERSTATUE = 306
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Suspicious Lance-a-Bot Statue](https://wiki.srb2.org/wiki/Suspicious_Lance-a-Bot_Statue)
MT_SUSPICIOUSFACESTABBERSTATUE = 307
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Brambles](https://wiki.srb2.org/wiki/Brambles)
MT_BRAMBLES = 308
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tumbleweed (Big)](https://wiki.srb2.org/wiki/Tumbleweed_(Big))
MT_BIGTUMBLEWEED = 309
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tumbleweed (Small)](https://wiki.srb2.org/wiki/Tumbleweed_(Small))
MT_LITTLETUMBLEWEED = 310
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tiny Red Flower Cactus](https://wiki.srb2.org/wiki/Tiny_Red_Flower_Cactus)
MT_CACTI1 = 311
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small Red Flower Cactus](https://wiki.srb2.org/wiki/Small_Red_Flower_Cactus)
MT_CACTI2 = 312
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tiny Blue Flower Cactus](https://wiki.srb2.org/wiki/Tiny_Blue_Flower_Cactus)
MT_CACTI3 = 313
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small Blue Flower Cactus](https://wiki.srb2.org/wiki/Small_Blue_Flower_Cactus)
MT_CACTI4 = 314
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Prickly Pear](https://wiki.srb2.org/wiki/Prickly_Pear)
MT_CACTI5 = 315
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Barrel Cactus](https://wiki.srb2.org/wiki/Barrel_Cactus)
MT_CACTI6 = 316
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Barrel Cactus](https://wiki.srb2.org/wiki/Tall_Barrel_Cactus)
MT_CACTI7 = 317
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Armed Cactus](https://wiki.srb2.org/wiki/Armed_Cactus)
MT_CACTI8 = 318
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ball Cactus](https://wiki.srb2.org/wiki/Ball_Cactus)
MT_CACTI9 = 319
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tiny Cactus](https://wiki.srb2.org/wiki/Tiny_Cactus)
MT_CACTI10 = 320
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small Cactus](https://wiki.srb2.org/wiki/Small_Cactus)
MT_CACTI11 = 321
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Tiny Cactus segment
MT_CACTITINYSEG = 322
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Small Cactus segment
MT_CACTISMALLSEG = 323
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Caution Sign](https://wiki.srb2.org/wiki/Caution_Sign)
MT_ARIDSIGN_CAUTION = 324
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cacti Sign](https://wiki.srb2.org/wiki/Cacti_Sign)
MT_ARIDSIGN_CACTI = 325
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Sharp Turn Sign](https://wiki.srb2.org/wiki/Sharp_Turn_Sign)
MT_ARIDSIGN_SHARPTURN = 326
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Mine Oil Lamp](https://wiki.srb2.org/wiki/Mine_Oil_Lamp)
MT_OILLAMP = 327
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[TNT Barrel](https://wiki.srb2.org/wiki/TNT_Barrel)
MT_TNTBARREL = 328
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[TNT Proximity Shell](https://wiki.srb2.org/wiki/TNT_Proximity_Shell)
MT_PROXIMITYTNT = 329
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Dust Devil](https://wiki.srb2.org/wiki/Dust_Devil)
MT_DUSTDEVIL = 330
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dust Devil layer
MT_DUSTLAYER = 331
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dust
MT_ARIDDUST = 332
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Minecart](https://wiki.srb2.org/wiki/Minecart)
MT_MINECART = 333
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Minecart segment
MT_MINECARTSEG = 334
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Minecart Spawner](https://wiki.srb2.org/wiki/Minecart_Spawner)
MT_MINECARTSPAWNER = 335
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Minecart Stopper](https://wiki.srb2.org/wiki/Minecart_Stopper)
MT_MINECARTEND = 336
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Minecart Stopper collision Object
MT_MINECARTENDSOLID = 337
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Minecart side mark
MT_MINECARTSIDEMARK = 338
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Minecart spark
MT_MINECARTSPARK = 339
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Minecart Saloon Door](https://wiki.srb2.org/wiki/Minecart_Saloon_Door) segment
MT_SALOONDOOR = 340
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Minecart Saloon Door center
MT_SALOONDOORCENTER = 341
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Train Cameo Spawner](https://wiki.srb2.org/wiki/Train_Cameo_Spawner)
MT_TRAINCAMEOSPAWNER = 342
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Train cameo segment
MT_TRAINSEG = 343
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Train Dust Spawner](https://wiki.srb2.org/wiki/Train_Dust_Spawner)
MT_TRAINDUSTSPAWNER = 344
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Train Steam Spawner](https://wiki.srb2.org/wiki/Train_Steam_Spawner)
MT_TRAINSTEAMSPAWNER = 345
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Minecart Switch Point](https://wiki.srb2.org/wiki/Minecart_Switch_Point)
MT_MINECARTSWITCHPOINT = 346
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Flame Jet (Horizontal)](https://wiki.srb2.org/wiki/Flame_Jet_(Horizontal))
MT_FLAMEJET = 347
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Flame Jet (Vertical)](https://wiki.srb2.org/wiki/Flame_Jet_(Vertical))
MT_VERTICALFLAMEJET = 348
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Flame from a flame jet
MT_FLAMEJETFLAME = 349
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spinning Flame Jet (Counter-Clockwise)](https://wiki.srb2.org/wiki/Spinning_Flame_Jet_(Counter-Clockwise))
MT_FJSPINAXISA = 350
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spinning Flame Jet (Clockwise)](https://wiki.srb2.org/wiki/Spinning_Flame_Jet_(Clockwise))
MT_FJSPINAXISB = 351
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Flame from a spinning flame jet
MT_FLAMEJETFLAMEB = 352
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lavafall](https://wiki.srb2.org/wiki/Lavafall)
MT_LAVAFALL = 353
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lavafall lava
MT_LAVAFALL_LAVA = 354
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lavafall rock
MT_LAVAFALLROCK = 355
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Rollout Rock](https://wiki.srb2.org/wiki/Rollout_Rock) spawnpoint
MT_ROLLOUTSPAWN = 356
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rollout Rock
MT_ROLLOUTROCK = 357
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Big Fern](https://wiki.srb2.org/wiki/Big_Fern) leaf
MT_BIGFERNLEAF = 358
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Big Fern
MT_BIGFERN = 359
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jungle Palm](https://wiki.srb2.org/wiki/Jungle_Palm)
MT_JUNGLEPALM = 360
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Torch Flower](https://wiki.srb2.org/wiki/Torch_Flower)
MT_TORCHFLOWER = 361
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[RVZ1 Wall Vine (Long)](https://wiki.srb2.org/wiki/RVZ1_Wall_Vine_(Long))
MT_WALLVINE_LONG = 362
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[RVZ1 Wall Vine (Short)](https://wiki.srb2.org/wiki/RVZ1_Wall_Vine_(Short))
MT_WALLVINE_SHORT = 363
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Glaregoyle](https://wiki.srb2.org/wiki/Glaregoyle)
MT_GLAREGOYLE = 364
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Glaregoyle (Up)](https://wiki.srb2.org/wiki/Glaregoyle_(Up))
MT_GLAREGOYLEUP = 365
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Glaregoyle (Down)](https://wiki.srb2.org/wiki/Glaregoyle_(Down))
MT_GLAREGOYLEDOWN = 366
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Glaregoyle (Long)](https://wiki.srb2.org/wiki/Glaregoyle_(Long))
MT_GLAREGOYLELONG = 367
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[ATZ Target](https://wiki.srb2.org/wiki/ATZ_Target)
MT_TARGET = 368
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Green Flame](https://wiki.srb2.org/wiki/Green_Flame)
MT_GREENFLAME = 369
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Gargoyle](https://wiki.srb2.org/wiki/Blue_Gargoyle)
MT_BLUEGARGOYLE = 370
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Brown Stalagmite (Tall)](https://wiki.srb2.org/wiki/Brown_Stalagmite_(Tall))
MT_STALAGMITE0 = 371
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Brown Stalagmite](https://wiki.srb2.org/wiki/Brown_Stalagmite)
MT_STALAGMITE1 = 372
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Orange Stalagmite (Tall)](https://wiki.srb2.org/wiki/Orange_Stalagmite_(Tall))
MT_STALAGMITE2 = 373
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Orange Stalagmite](https://wiki.srb2.org/wiki/Orange_Stalagmite)
MT_STALAGMITE3 = 374
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Stalagmite (Tall)](https://wiki.srb2.org/wiki/Red_Stalagmite_(Tall))
MT_STALAGMITE4 = 375
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Red Stalagmite](https://wiki.srb2.org/wiki/Red_Stalagmite)
MT_STALAGMITE5 = 376
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gray Stalagmite (Tall)](https://wiki.srb2.org/wiki/Gray_Stalagmite_(Tall))
MT_STALAGMITE6 = 377
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Gray Stalagmite](https://wiki.srb2.org/wiki/Gray_Stalagmite)
MT_STALAGMITE7 = 378
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Stalagmite (Tall)](https://wiki.srb2.org/wiki/Blue_Stalagmite_(Tall))
MT_STALAGMITE8 = 379
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blue Stalagmite](https://wiki.srb2.org/wiki/Blue_Stalagmite)
MT_STALAGMITE9 = 380
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Christmas Pole](https://wiki.srb2.org/wiki/Christmas_Pole)
MT_XMASPOLE = 381
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Candy Cane](https://wiki.srb2.org/wiki/Candy_Cane)
MT_CANDYCANE = 382
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Snowman](https://wiki.srb2.org/wiki/Snowman)
MT_SNOWMAN = 383
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Snowman (With Hat)](https://wiki.srb2.org/wiki/Snowman_(With_Hat))
MT_SNOWMANHAT = 384
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lamp Post](https://wiki.srb2.org/wiki/Lamp_Post)
MT_LAMPPOST1 = 385
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lamp Post (Snow)](https://wiki.srb2.org/wiki/Lamp_Post_(Snow))
MT_LAMPPOST2 = 386
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Hanging Star](https://wiki.srb2.org/wiki/Hanging_Star)
MT_HANGSTAR = 387
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Mistletoe](https://wiki.srb2.org/wiki/Mistletoe)
MT_MISTLETOE = 388
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Blueberry Bush (Snow)](https://wiki.srb2.org/wiki/Blueberry_Bush_(Snow))
MT_XMASBLUEBERRYBUSH = 389
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Berry Bush (Snow)](https://wiki.srb2.org/wiki/Berry_Bush_(Snow))
MT_XMASBERRYBUSH = 390
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Snow)](https://wiki.srb2.org/wiki/Bush_(Snow))
MT_XMASBUSH = 391
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ice Shard (Small)](https://wiki.srb2.org/wiki/Ice_Shard_(Small))
MT_FHZICE1 = 392
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ice Shard (Large)](https://wiki.srb2.org/wiki/Ice_Shard_(Large))
MT_FHZICE2 = 393
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Amy Cameo](https://wiki.srb2.org/wiki/Amy_Cameo)
MT_ROSY = 394
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Amy Cameo heart
MT_CDLHRT = 395
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jack-o'-lantern 1](https://wiki.srb2.org/wiki/Jack-o'-lantern_1)
MT_JACKO1 = 396
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jack-o'-lantern 2](https://wiki.srb2.org/wiki/Jack-o'-lantern_2)
MT_JACKO2 = 397
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Jack-o'-lantern 3](https://wiki.srb2.org/wiki/Jack-o'-lantern_3)
MT_JACKO3 = 398
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[HHZ Tree](https://wiki.srb2.org/wiki/HHZ_Tree) top
MT_HHZTREE_TOP = 399
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---HHZ Tree segment
MT_HHZTREE_PART = 400
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Purple Mushroom](https://wiki.srb2.org/wiki/Purple_Mushroom)
MT_HHZSHROOM = 401
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[HHZ Grass](https://wiki.srb2.org/wiki/HHZ_Grass)
MT_HHZGRASS = 402
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[HHZ Tentacle 1](https://wiki.srb2.org/wiki/HHZ_Tentacle_1)
MT_HHZTENTACLE1 = 403
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[HHZ Tentacle 2](https://wiki.srb2.org/wiki/HHZ_Tentacle_2)
MT_HHZTENTACLE2 = 404
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[HHZ Stalagmite (Tall)](https://wiki.srb2.org/wiki/HHZ_Stalagmite_(Tall))
MT_HHZSTALAGMITE_TALL = 405
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[HHZ Stalagmite (Short)](https://wiki.srb2.org/wiki/HHZ_Stalagmite_(Short))
MT_HHZSTALAGMITE_SHORT = 406
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Flower (Red)](https://wiki.srb2.org/wiki/Tall_Flower_(Red))
MT_BSZTALLFLOWER_RED = 407
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Flower (Purple)](https://wiki.srb2.org/wiki/Tall_Flower_(Purple))
MT_BSZTALLFLOWER_PURPLE = 408
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Flower (Blue)](https://wiki.srb2.org/wiki/Tall_Flower_(Blue))
MT_BSZTALLFLOWER_BLUE = 409
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Flower (Cyan)](https://wiki.srb2.org/wiki/Tall_Flower_(Cyan))
MT_BSZTALLFLOWER_CYAN = 410
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Flower (Yellow)](https://wiki.srb2.org/wiki/Tall_Flower_(Yellow))
MT_BSZTALLFLOWER_YELLOW = 411
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tall Flower (Orange)](https://wiki.srb2.org/wiki/Tall_Flower_(Orange))
MT_BSZTALLFLOWER_ORANGE = 412
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium Flower (Red)](https://wiki.srb2.org/wiki/Medium_Flower_(Red))
MT_BSZFLOWER_RED = 413
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium Flower (Purple)](https://wiki.srb2.org/wiki/Medium_Flower_(Purple))
MT_BSZFLOWER_PURPLE = 414
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium Flower (Blue)](https://wiki.srb2.org/wiki/Medium_Flower_(Blue))
MT_BSZFLOWER_BLUE = 415
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium Flower (Cyan)](https://wiki.srb2.org/wiki/Medium_Flower_(Cyan))
MT_BSZFLOWER_CYAN = 416
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium Flower (Yellow)](https://wiki.srb2.org/wiki/Medium_Flower_(Yellow))
MT_BSZFLOWER_YELLOW = 417
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium Flower (Orange)](https://wiki.srb2.org/wiki/Medium_Flower_(Orange))
MT_BSZFLOWER_ORANGE = 418
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Short Flower (Red)](https://wiki.srb2.org/wiki/Short_Flower_(Red))
MT_BSZSHORTFLOWER_RED = 419
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Short Flower (Purple)](https://wiki.srb2.org/wiki/Short_Flower_(Purple))
MT_BSZSHORTFLOWER_PURPLE = 420
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Short Flower (Blue)](https://wiki.srb2.org/wiki/Short_Flower_(Blue))
MT_BSZSHORTFLOWER_BLUE = 421
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Short Flower (Cyan)](https://wiki.srb2.org/wiki/Short_Flower_(Cyan))
MT_BSZSHORTFLOWER_CYAN = 422
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Short Flower (Yellow)](https://wiki.srb2.org/wiki/Short_Flower_(Yellow))
MT_BSZSHORTFLOWER_YELLOW = 423
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Short Flower (Orange)](https://wiki.srb2.org/wiki/Short_Flower_(Orange))
MT_BSZSHORTFLOWER_ORANGE = 424
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tulip (Red)](https://wiki.srb2.org/wiki/Tulip_(Red))
MT_BSZTULIP_RED = 425
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tulip (Purple)](https://wiki.srb2.org/wiki/Tulip_(Purple))
MT_BSZTULIP_PURPLE = 426
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tulip (Blue)](https://wiki.srb2.org/wiki/Tulip_(Blue))
MT_BSZTULIP_BLUE = 427
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tulip (Cyan)](https://wiki.srb2.org/wiki/Tulip_(Cyan))
MT_BSZTULIP_CYAN = 428
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tulip (Yellow)](https://wiki.srb2.org/wiki/Tulip_(Yellow))
MT_BSZTULIP_YELLOW = 429
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tulip (Orange)](https://wiki.srb2.org/wiki/Tulip_(Orange))
MT_BSZTULIP_ORANGE = 430
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cluster (Red)](https://wiki.srb2.org/wiki/Cluster_(Red))
MT_BSZCLUSTER_RED = 431
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cluster (Purple)](https://wiki.srb2.org/wiki/Cluster_(Purple))
MT_BSZCLUSTER_PURPLE = 432
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cluster (Blue)](https://wiki.srb2.org/wiki/Cluster_(Blue))
MT_BSZCLUSTER_BLUE = 433
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cluster (Cyan)](https://wiki.srb2.org/wiki/Cluster_(Cyan))
MT_BSZCLUSTER_CYAN = 434
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cluster (Yellow)](https://wiki.srb2.org/wiki/Cluster_(Yellow))
MT_BSZCLUSTER_YELLOW = 435
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cluster (Orange)](https://wiki.srb2.org/wiki/Cluster_(Orange))
MT_BSZCLUSTER_ORANGE = 436
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Red)](https://wiki.srb2.org/wiki/Bush_(Red))
MT_BSZBUSH_RED = 437
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Purple)](https://wiki.srb2.org/wiki/Bush_(Purple))
MT_BSZBUSH_PURPLE = 438
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Blue)](https://wiki.srb2.org/wiki/Bush_(Blue))
MT_BSZBUSH_BLUE = 439
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Cyan)](https://wiki.srb2.org/wiki/Bush_(Cyan))
MT_BSZBUSH_CYAN = 440
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Yellow)](https://wiki.srb2.org/wiki/Bush_(Yellow))
MT_BSZBUSH_YELLOW = 441
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bush (Orange)](https://wiki.srb2.org/wiki/Bush_(Orange))
MT_BSZBUSH_ORANGE = 442
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Vine (Red)](https://wiki.srb2.org/wiki/Vine_(Red))
MT_BSZVINE_RED = 443
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Vine (Purple)](https://wiki.srb2.org/wiki/Vine_(Purple))
MT_BSZVINE_PURPLE = 444
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Vine (Blue)](https://wiki.srb2.org/wiki/Vine_(Blue))
MT_BSZVINE_BLUE = 445
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Vine (Cyan)](https://wiki.srb2.org/wiki/Vine_(Cyan))
MT_BSZVINE_CYAN = 446
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Vine (Yellow)](https://wiki.srb2.org/wiki/Vine_(Yellow))
MT_BSZVINE_YELLOW = 447
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Vine (Orange)](https://wiki.srb2.org/wiki/Vine_(Orange))
MT_BSZVINE_ORANGE = 448
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[BSZ Shrub](https://wiki.srb2.org/wiki/BSZ_Shrub)
MT_BSZSHRUB = 449
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[BSZ Clover](https://wiki.srb2.org/wiki/BSZ_Clover)
MT_BSZCLOVER = 450
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Palm Tree (Big)](https://wiki.srb2.org/wiki/Palm_Tree_(Big)) trunk
MT_BIG_PALMTREE_TRUNK = 451
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Palm Tree (Big) top
MT_BIG_PALMTREE_TOP = 452
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Palm Tree (Small)](https://wiki.srb2.org/wiki/Palm_Tree_(Small)) trunk
MT_PALMTREE_TRUNK = 453
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Palm Tree (Small) top
MT_PALMTREE_TOP = 454
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Disco Ball](https://wiki.srb2.org/wiki/Disco_Ball)
MT_DBALL = 455
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Eggman Disco Statue](https://wiki.srb2.org/wiki/Eggman_Disco_Statue)
MT_EGGSTATUE2 = 456
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Elemental Shield](https://wiki.srb2.org/wiki/Elemental_Shield) orb
MT_ELEMENTAL_ORB = 457
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Attraction Shield](https://wiki.srb2.org/wiki/Attraction_Shield) orb
MT_ATTRACT_ORB = 458
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Force Shield](https://wiki.srb2.org/wiki/Force_Shield) orb
MT_FORCE_ORB = 459
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Armageddon Shield](https://wiki.srb2.org/wiki/Armageddon_Shield) orb
MT_ARMAGEDDON_ORB = 460
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Whirlwind Shield](https://wiki.srb2.org/wiki/Whirlwind_Shield) orb
MT_WHIRLWIND_ORB = 461
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pity Shield](https://wiki.srb2.org/wiki/Pity_Shield) orb
MT_PITY_ORB = 462
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Flame Shield](https://wiki.srb2.org/wiki/Flame_Shield) orb
MT_FLAMEAURA_ORB = 463
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bubble Shield](https://wiki.srb2.org/wiki/Bubble_Shield) orb
MT_BUBBLEWRAP_ORB = 464
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Lightning Shield](https://wiki.srb2.org/wiki/Lightning_Shield) orb
MT_THUNDERCOIN_ORB = 465
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lightning Shield spark
MT_THUNDERCOIN_SPARK = 466
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Invincibility sparkle
MT_IVSP = 467
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Super Sonic](https://wiki.srb2.org/wiki/Super_Sonic) spark
MT_SUPERSPARK = 468
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bluebird
MT_FLICKY_01 = 469
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bluebird center
MT_FLICKY_01_CENTER = 470
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rabbit
MT_FLICKY_02 = 471
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rabbit center
MT_FLICKY_02_CENTER = 472
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Chicken
MT_FLICKY_03 = 473
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Chicken center
MT_FLICKY_03_CENTER = 474
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Seal
MT_FLICKY_04 = 475
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Seal center
MT_FLICKY_04_CENTER = 476
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pig
MT_FLICKY_05 = 477
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pig center
MT_FLICKY_05_CENTER = 478
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Chipmunk
MT_FLICKY_06 = 479
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Chipmunk center
MT_FLICKY_06_CENTER = 480
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Penguin
MT_FLICKY_07 = 481
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Penguin center
MT_FLICKY_07_CENTER = 482
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fish
MT_FLICKY_08 = 483
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fish center
MT_FLICKY_08_CENTER = 484
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ram
MT_FLICKY_09 = 485
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ram center
MT_FLICKY_09_CENTER = 486
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Puffin
MT_FLICKY_10 = 487
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Puffin center
MT_FLICKY_10_CENTER = 488
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Cow
MT_FLICKY_11 = 489
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Cow center
MT_FLICKY_11_CENTER = 490
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rat
MT_FLICKY_12 = 491
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rat center
MT_FLICKY_12_CENTER = 492
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bear
MT_FLICKY_13 = 493
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bear center
MT_FLICKY_13_CENTER = 494
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dove
MT_FLICKY_14 = 495
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dove center
MT_FLICKY_14_CENTER = 496
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Cat
MT_FLICKY_15 = 497
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Cat center
MT_FLICKY_15_CENTER = 498
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Canary
MT_FLICKY_16 = 499
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Canary center
MT_FLICKY_16_CENTER = 500
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Spider
MT_SECRETFLICKY_01 = 501
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Spider center
MT_SECRETFLICKY_01_CENTER = 502
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bat
MT_SECRETFLICKY_02 = 503
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Bat center
MT_SECRETFLICKY_02_CENTER = 504
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Seed](https://wiki.srb2.org/wiki/Level_header#FlickyList) spawned by destroyed enemies
MT_SEED = 505
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Precipitation
MT_RAIN = 506
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Snowflake
MT_SNOWFLAKE = 507
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Water splish
MT_SPLISH = 508
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lava splish
MT_LAVASPLISH = 509
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Puff of smoke
MT_SMOKE = 510
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Small bubble](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
MT_SMALLBUBBLE = 511
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Medium bubble](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
MT_MEDIUMBUBBLE = 512
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Breathable bubble](https://wiki.srb2.org/wiki/Air_Bubble_Patch)
MT_EXTRALARGEBUBBLE = 513
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Water zap
MT_WATERZAP = 514
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Spindash dust
MT_SPINDUST = 515
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Chaos](https://wiki.srb2.org/wiki/Chaos) mode enemy entrance fog
MT_TFOG = 516
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fan particle
MT_PARTICLE = 517
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fan Particle Generator](https://wiki.srb2.org/wiki/Fan_Particle_Generator)
MT_PARTICLEGEN = 518
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Score markers
MT_SCORE = 519
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Drowning countdown numbers
MT_DROWNNUMBERS = 520
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Intangible [Chaos Emerald](https://wiki.srb2.org/wiki/Chaos_Emerald) for [Special Stage](https://wiki.srb2.org/wiki/Special_Stage)s
MT_GOTEMERALD = 521
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Lockon target
MT_LOCKON = 522
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Invisible Lockon Object](https://wiki.srb2.org/wiki/Invisible_Lockon_Object)
MT_LOCKONINF = 523
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Tag](https://wiki.srb2.org/wiki/Tag) "IT!" sign
MT_TAG = 524
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[CTF](https://wiki.srb2.org/wiki/CTF) "GOT FLAG!" sign
MT_GOTFLAG = 525
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
MT_FINISHFLAG = 526
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience A (Large)](https://wiki.srb2.org/wiki/Water_Ambience_A_(Large))
MT_AWATERA = 527
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience B (Large)](https://wiki.srb2.org/wiki/Water_Ambience_B_(Large))
MT_AWATERB = 528
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience C (Medium)](https://wiki.srb2.org/wiki/Water_Ambience_C_(Medium))
MT_AWATERC = 529
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience D (Medium)](https://wiki.srb2.org/wiki/Water_Ambience_D_(Medium))
MT_AWATERD = 530
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience E (Small)](https://wiki.srb2.org/wiki/Water_Ambience_E_(Small))
MT_AWATERE = 531
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience F (Small)](https://wiki.srb2.org/wiki/Water_Ambience_F_(Small))
MT_AWATERF = 532
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience G (Extra Large)](https://wiki.srb2.org/wiki/Water_Ambience_G_(Extra_Large))
MT_AWATERG = 533
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Water Ambience H (Extra Large)](https://wiki.srb2.org/wiki/Water_Ambience_H_(Extra_Large))
MT_AWATERH = 534
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Disco Ambience](https://wiki.srb2.org/wiki/Disco_Ambience)
MT_RANDOMAMBIENT = 535
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Volcano Ambience](https://wiki.srb2.org/wiki/Volcano_Ambience)
MT_RANDOMAMBIENT2 = 536
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Machine Ambience](https://wiki.srb2.org/wiki/Machine_Ambience)
MT_MACHINEAMBIENCE = 537
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fang](https://wiki.srb2.org/wiki/Fang) cork
MT_CORK = 538
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Amy](https://wiki.srb2.org/wiki/Amy) heart
MT_LHRT = 539
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Red Ring
MT_REDRING = 540
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bounce Ring](https://wiki.srb2.org/wiki/Bounce_Ring) (pickup)
MT_BOUNCERING = 541
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring) (pickup)
MT_RAILRING = 542
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Infinity Ring](https://wiki.srb2.org/wiki/Infinity_Ring)
MT_INFINITYRING = 543
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Automatic Ring](https://wiki.srb2.org/wiki/Automatic_Ring) (pickup)
MT_AUTOMATICRING = 544
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Explosion Ring](https://wiki.srb2.org/wiki/Explosion_Ring) (pickup)
MT_EXPLOSIONRING = 545
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Scatter Ring](https://wiki.srb2.org/wiki/Scatter_Ring) (pickup)
MT_SCATTERRING = 546
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Grenade Ring](https://wiki.srb2.org/wiki/Grenade_Ring) (pickup)
MT_GRENADERING = 547
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bounce Ring Panel](https://wiki.srb2.org/wiki/Bounce_Ring_Panel)
MT_BOUNCEPICKUP = 548
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Rail Ring Panel](https://wiki.srb2.org/wiki/Rail_Ring_Panel)
MT_RAILPICKUP = 549
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Automatic Ring Panel](https://wiki.srb2.org/wiki/Automatic_Ring_Panel)
MT_AUTOPICKUP = 550
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Explosion Ring Panel](https://wiki.srb2.org/wiki/Explosion_Ring_Panel)
MT_EXPLODEPICKUP = 551
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Scatter Ring Panel](https://wiki.srb2.org/wiki/Scatter_Ring_Panel)
MT_SCATTERPICKUP = 552
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Grenade Ring Panel](https://wiki.srb2.org/wiki/Grenade_Ring_Panel)
MT_GRENADEPICKUP = 553
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Bounce Ring
MT_THROWNBOUNCE = 554
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Infinity Ring
MT_THROWNINFINITY = 555
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Automatic Ring
MT_THROWNAUTOMATIC = 556
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Scatter Ring
MT_THROWNSCATTER = 557
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Explosion Ring
MT_THROWNEXPLOSION = 558
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Thrown Grenade Ring
MT_THROWNGRENADE = 559
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Coin](https://wiki.srb2.org/wiki/Coin)
MT_COIN = 560
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Coin lost by a player
MT_FLINGCOIN = 561
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Goomba](https://wiki.srb2.org/wiki/Goomba)
MT_GOOMBA = 562
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Goomba (Blue)](https://wiki.srb2.org/wiki/Goomba_(Blue))
MT_BLUEGOOMBA = 563
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Fire Flower](https://wiki.srb2.org/wiki/Fire_Flower)
MT_FIREFLOWER = 564
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fireball from a Fire Flower
MT_FIREBALL = 565
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Fireball trail
MT_FIREBALLTRAIL = 566
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Koopa Shell](https://wiki.srb2.org/wiki/Koopa_Shell)
MT_SHELL = 567
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Puma](https://wiki.srb2.org/wiki/Puma)
MT_PUMA = 568
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Puma trail
MT_PUMATRAIL = 569
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---King Bowser's hammer
MT_HAMMER = 570
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[King Bowser](https://wiki.srb2.org/wiki/King_Bowser)
MT_KOOPA = 571
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---King Bowser's flame
MT_KOOPAFLAME = 572
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Axe](https://wiki.srb2.org/wiki/Axe)
MT_AXE = 573
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Mario Bush (Short)](https://wiki.srb2.org/wiki/Mario_Bush_(Short))
MT_MARIOBUSH1 = 574
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Mario Bush (Tall)](https://wiki.srb2.org/wiki/Mario_Bush_(Tall))
MT_MARIOBUSH2 = 575
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Toad](https://wiki.srb2.org/wiki/Toad)
MT_TOAD = 576
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Axis](https://wiki.srb2.org/wiki/Axis)
MT_AXIS = 577
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Axis Transfer](https://wiki.srb2.org/wiki/Axis_Transfer)
MT_AXISTRANSFER = 578
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Axis Transfer Line](https://wiki.srb2.org/wiki/Axis_Transfer_Line)
MT_AXISTRANSFERLINE = 579
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ideya Drone](https://wiki.srb2.org/wiki/Ideya_Drone)
MT_NIGHTSDRONE = 580
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ideya Drone helper
MT_NIGHTSDRONE_MAN = 581
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ideya Drone sparkling
MT_NIGHTSDRONE_SPARKLING = 582
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS goal sign
MT_NIGHTSDRONE_GOAL = 583
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS sparkle
MT_NIGHTSPARKLE = 584
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS paraloop helper Object
MT_NIGHTSLOOPHELPER = 585
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[NiGHTS Bumper](https://wiki.srb2.org/wiki/NiGHTS_Bumper)
MT_NIGHTSBUMPER = 586
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Hoop](https://wiki.srb2.org/wiki/Hoop)
MT_HOOP = 587
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Hoop collision detection
MT_HOOPCOLLIDE = 588
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Hoop center
MT_HOOPCENTER = 589
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS score markers
MT_NIGHTSCORE = 590
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS chip
MT_NIGHTSCHIP = 591
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS chip lost by player
MT_FLINGNIGHTSCHIP = 592
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---NiGHTS star
MT_NIGHTSSTAR = 593
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
MT_FLINGNIGHTSSTAR = 594
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Super Paraloop](https://wiki.srb2.org/wiki/Super_Paraloop)
MT_NIGHTSSUPERLOOP = 595
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Drill Refill](https://wiki.srb2.org/wiki/Drill_Refill)
MT_NIGHTSDRILLREFILL = 596
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Nightopian Helper](https://wiki.srb2.org/wiki/Nightopian_Helper) (power-up)
MT_NIGHTSHELPER = 597
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Extra Time](https://wiki.srb2.org/wiki/Extra_Time)
MT_NIGHTSEXTRATIME = 598
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Link Freeze](https://wiki.srb2.org/wiki/Link_Freeze)
MT_NIGHTSLINKFREEZE = 599
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ideya Capture](https://wiki.srb2.org/wiki/Ideya_Capture)
MT_EGGCAPSULE = 600
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Ideya Anchor](https://wiki.srb2.org/wiki/Ideya_Anchor)
MT_IDEYAANCHOR = 601
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Nightopian Helper (actual helper Object)
MT_NIGHTOPIANHELPER = 602
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pian](https://wiki.srb2.org/wiki/Pian)
MT_PIAN = 603
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Shleep](https://wiki.srb2.org/wiki/Shleep)
MT_SHLEEP = 604
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Penguinator](https://wiki.srb2.org/wiki/Penguinator)
MT_PENGUINATOR = 605
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pophat](https://wiki.srb2.org/wiki/Pophat)
MT_POPHAT = 606
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pophat shot
MT_POPSHOT = 607
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Pophat shot trail
MT_POPSHOT_TRAIL = 608
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Hive Elemental](https://wiki.srb2.org/wiki/Hive_Elemental)
MT_HIVEELEMENTAL = 609
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Bumblebore](https://wiki.srb2.org/wiki/Bumblebore)
MT_BUMBLEBORE = 610
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Buggle](https://wiki.srb2.org/wiki/Buggle)
MT_BUGGLE = 611
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Smashing Spikeball](https://wiki.srb2.org/wiki/Smashing_Spikeball)
MT_SMASHINGSPIKEBALL = 612
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Cacolantern](https://wiki.srb2.org/wiki/Cacolantern)
MT_CACOLANTERN = 613
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Cacolantern shard
MT_CACOSHARD = 614
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Cacolantern fire
MT_CACOFIRE = 615
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Spinbobert](https://wiki.srb2.org/wiki/Spinbobert)
MT_SPINBOBERT = 616
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Spinbobert fire 1
MT_SPINBOBERT_FIRE1 = 617
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Spinbobert fire 2
MT_SPINBOBERT_FIRE2 = 618
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Hangster](https://wiki.srb2.org/wiki/Hangster)
MT_HANGSTER = 619
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Teleport Destination](https://wiki.srb2.org/wiki/Teleport_Destination)
MT_TELEPORTMAN = 620
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Alternative View Point](https://wiki.srb2.org/wiki/Alternative_View_Point)
MT_ALTVIEWMAN = 621
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Sound generator for crumbling platform
MT_CRUMBLEOBJ = 622
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Zoom Tube Waypoint](https://wiki.srb2.org/wiki/Zoom_Tube_Waypoint)
MT_TUBEWAYPOINT = 623
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Push Point](https://wiki.srb2.org/wiki/Push_Point)
MT_PUSH = 624
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Pull Point](https://wiki.srb2.org/wiki/Pull_Point)
MT_PULL = 625
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ghost Object (afterimages etc.)
MT_GHOST = 626
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Overlay](https://wiki.srb2.org/wiki/Overlay) Object (1-up/sign icons, shields etc.)
MT_OVERLAY = 627
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Object Angle Anchor](https://wiki.srb2.org/wiki/Object_Angle_Anchor)
MT_ANGLEMAN = 628
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[PolyObject Anchor](https://wiki.srb2.org/wiki/PolyObject_Anchor)
MT_POLYANCHOR = 629
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[PolyObject Spawn Point](https://wiki.srb2.org/wiki/PolyObject_Spawn_Point)
MT_POLYSPAWN = 630
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Skybox View Point](https://wiki.srb2.org/wiki/Skybox_View_Point)
MT_SKYBOX = 631
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Rail Ring](https://wiki.srb2.org/wiki/Rail_Ring) spark trail
MT_SPARK = 632
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Robot explosion
MT_EXPLODE = 633
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Underwater explosion
MT_UWEXPLODE = 634
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Dust
MT_DUST = 635
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Rock Spawner](https://wiki.srb2.org/wiki/Rock_Spawner)
MT_ROCKSPAWNER = 636
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Falling rock](https://wiki.srb2.org/wiki/Rock_Spawner)
MT_FALLINGROCK = 637
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIA)
MT_ROCKCRUMBLE1 = 638
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIB)
MT_ROCKCRUMBLE2 = 639
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIC)
MT_ROCKCRUMBLE3 = 640
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROID)
MT_ROCKCRUMBLE4 = 641
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIE)
MT_ROCKCRUMBLE5 = 642
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIF)
MT_ROCKCRUMBLE6 = 643
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIG)
MT_ROCKCRUMBLE7 = 644
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIH)
MT_ROCKCRUMBLE8 = 645
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Ice debris (sprite ROII)
MT_ROCKCRUMBLE9 = 646
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIJ)
MT_ROCKCRUMBLE10 = 647
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIK)
MT_ROCKCRUMBLE11 = 648
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIL)
MT_ROCKCRUMBLE12 = 649
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIM)
MT_ROCKCRUMBLE13 = 650
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIN)
MT_ROCKCRUMBLE14 = 651
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIO)
MT_ROCKCRUMBLE15 = 652
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Rock debris (sprite ROIP)
MT_ROCKCRUMBLE16 = 653
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---`GFZROCK` debris
MT_GFZDEBRIS = 654
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Brick debris
MT_BRICKDEBRIS = 655
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Wood debris
MT_WOODDEBRIS = 656
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Red Brick debris
MT_REDBRICKDEBRIS = 657
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Blue Brick debris
MT_BLUEBRICKDEBRIS = 658
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Yellow Brick debris
MT_YELLOWBRICKDEBRIS = 659
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---[Seenames](https://wiki.srb2.org/wiki/Console/Variables#seenames) helper
MT_NAMECHECK = 660
---**[View on wiki](https://wiki.srb2.org/wiki/List_of_Object_types)**
---
---Placeholder object, identical to MT_NULL
MT_RAY = 661


