Env global: Difference between revisions
(Transferred infotable from logic_auto) |
Le Glaconus (talk | contribs) (formatting + additional info) |
||
(49 intermediate revisions by 18 users not shown) | |||
Line 1: | Line 1: | ||
{{ | {{LanguageBar}} | ||
{{ | {{TabsBar|main=gs|base=env_global}} | ||
{{ | {{Ent not in fgd}} | ||
{{CD|CEnvGlobal|file1=logicentities.cpp}} | |||
{{This is a|logical entity|name=env_global|sprite=1}} It controls game-specific global states, such as whether the [[weapon_physcannon|gravity gun]] should become the super gravity gun in {{Half-Life 2|2}}. | |||
Global states persist across level transitions, regardless of their status. Global states are not stored until an <code>env_global</code> receives any commands that modify the state, such as turning it on or off or changing the counter. Use the <code>Set Initial State</code> [[flag]] for the global to be added on spawn. | Global states persist across level transitions, regardless of their status. Global states are not stored until an <code>env_global</code> receives any commands that modify the state, such as turning it on or off or changing the counter. Use the <code>Set Initial State</code> [[flag]] for the global to be added on spawn. | ||
Line 9: | Line 11: | ||
Globals and their current state (in integer form) are added to all entities' response data for use in the [[Response System]]. | Globals and their current state (in integer form) are added to all entities' response data for use in the [[Response System]]. | ||
{{tip| | {{tip|{{ent|logic_auto}} can read a global state and fire outputs if the state is turned <code>on</code>.}} | ||
{{ | {{warning|Using <code>env_global</code> in '''Multiplayer''' on {{css|4}}, {{dods|4}}, {{tf2|4}} and {{gmod|4}} is higly unstable as it is prone to randomly break on new rounds, which then fires all outputs. {{todo|more tests on this to confirm and replication steps. Is this the case for all round-based multiplayer games, or only certain ones?}} }} | ||
{{tip|An alternative if transitioning to a different map is not in the question is to use a [[preserved entity]] which remains between round restarts. [https://gamebanana.com/mods/312987 Level System - Permanent Entities]}} | |||
{{ | == Flags == | ||
{{Fl|1|Set Initial State|Whether this entity defines the global state when the map starts.}} | |||
== | == Keyvalues == | ||
{{ | {{KV Targetname}} | ||
{{ | {{KV|Global State to Set|string choices|intn=globalstate|The global state this entity is linked to. Valve's [[FGD]]s always include the HL2 states, but the actual functional ones vary by game. Global states are not exclusive to these choices and any text can be used, though they will not have any special behavior. See {{↓|Special Global States}}}} | ||
{{ | |||
*0 {{=}} | {{KV|Initial State|integer choices|intn=initialstate|Used by <code>Set Initial State</code> to determine what the global state should be set to when the map starts. | ||
:*0: Off | |||
:*1: On | |||
:*2: Dead | |||
{{ | }} | ||
{{KV|Counter|since={{hl2ep2}}|int|intn=counter|An integer counter value associated with this global.}} | |||
== Inputs == | |||
{{I|TurnOn|Sets the global's state to ON.}} | |||
{{I|TurnOff|Sets the global's state to OFF.}} | |||
{{I|Toggle|Switches state of the global between ON and OFF.}} | |||
{{I|Remove|Set state of global to DEAD.}} | |||
{{I|AddToCounter|param=int|Adds the specified amount to the counter.|since={{hl2ep2}}}} | |||
{{I|SetCounter|param=int|Sets the value of the counter.|since={{hl2ep2}}}} | |||
{{I|GetCounter|Fires this entity's <code>Counter</code> output.|since={{hl2ep2}}}} | |||
== | == Outputs == | ||
{{ | {{O|Counter|param=int|Outputs the integer value of this entity. May depend on global state.|since={{hl2ep2}}}} | ||
{{bug|tested={{src13}}|{{mapbase|not}} Unusable because there is an aliasing problem for this key (the keyvalue and the output have the same name). | |||
:{{fix|To make it work, simply change its name in the source code {{mono|DEFINE_OUTPUT}} declaration.|code}}}} | |||
== | == Special Global States == | ||
Global state values that have special effect when set in [[#Keyvalues|Global State to set ↑]]. | |||
=== {{ | === {{source|2}} === | ||
{{note|<kbd>is_pc</kbd> and <kbd>is_console</kbd> exist by default and are automatically set to ON / OFF. (they are created in {{ent|worldspawn}} Spawn function) }} | |||
{| class="wikitable" | |||
! Internal Name || Editor Name || Description | |||
|- | |||
| {{mono|is_pc}} || Game is running on a PC || Whether the game is running on a PC. | |||
|- | |||
| {{mono|is_console}} || Game is running on a console || Whether the game is running on a game console (such as {{360}}, {{ps3}}, {{switch}}<!-- confirmed that these does something on all 3 consoles.-->). {{example|First example can be seen in {{portal}} <kbd>testchmb_a_00</kbd>, which triggers {{ent|logic_auto}} to kill {{ent|env_hudhint}} entity (named as {{code|hint_move_ctrls}}), causing hint for keyboard movement (move left & right and forward & backward) to not show up (because users can simply move using thumbsticks). </br>Another example can be seen used in {{portal}} <kbd>escape_02</kbd> in {{ent|logic_auto}}.}} | |||
|- | |||
| {{mono|skill.cfg}} || {{!fgd}} || Used for [https://github.com/ValveSoftware/source-sdk-2013/blob/ceb6d4d78370879986d911df9bdf27f2d931759b/src/game/shared/gamerules.cpp#L257C6-L257C16 handling difficulty settings logic] | |||
|} | |||
=== {{hl2|2}} === | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Internal Name || Editor Name || Description | ! Internal Name || Editor Name || Description | ||
|- | |- | ||
| gordon_precriminal || Gordon pre-criminal || Creates the pre-criminal behavior seen in [[Point Insertion]]. | | {{mono|gordon_precriminal || Gordon pre-criminal || Creates the pre-criminal behavior seen in [[Point Insertion]]. Also prevents [[weapon_stunstick|stun stick]] damage from cops. | ||
|- | |- | ||
| antlion_allied || Antlions are player allies || Makes antlions friendly to the player and allows them to listen to [[weapon_bugbait|bugbait]], as seen in the [[Nova Prospekt]] chapters. | | {{mono|antlion_allied}} || Antlions are player allies || Makes [[npc_antlion|antlions]] friendly to the player and allows them to listen to [[weapon_bugbait|bugbait]], as seen in the [[Nova Prospekt]] chapters. | ||
|- | |- | ||
| suit_no_sprint || Suit sprint function not yet enabled || Disables the HEV suit's sprint function.<br/>(not required if the HEV suit is not equipped) | | {{mono|suit_no_sprint}} || Suit sprint function not yet enabled || Disables the HEV suit's sprint function.<br/>(not required if the HEV suit is not equipped) | ||
|- | |- | ||
| super_phys_gun || Super phys gun is enabled || Enables the supercharged gravity gun seen in the Citadel levels of [[Half-Life 2]] and [[Episode One]].<br/>{{note|The super gravity gun isn't available in [[Half-Life 2: Deathmatch]] or [[Portal]].}} | | {{mono|super_phys_gun}} || Super phys gun is enabled || Enables the supercharged gravity gun seen in the Citadel levels of [[Half-Life 2]] and [[Episode One]].<br/>{{note|The super gravity gun isn't available in [[Half-Life 2: Deathmatch]] or [[Portal]].}} | ||
|- | |- | ||
| friendly_encounter || Friendly encounter sequence (lower weapons, etc.) || Indicates a friendly encounter sequence.<br/>(This appears to just keep the player's weapons lowered.) | | {{mono|friendly_encounter}} || Friendly encounter sequence (lower weapons, etc.) || Indicates a friendly encounter sequence.<br/>(This appears to just keep the player's weapons lowered.) | ||
|- | |- | ||
| | | {{not in FGD}} {{mono|citizens_passive}} || Citizens are *not* player allies (cannot be commanded) || Makes citizens neutral to the Combine and the player.<br/>(also done by <code>gordon_precriminal</code>) | ||
|- | |- | ||
| gordon_invulnerable || Gordon is invulnerable || Makes the player invulnerable to damage.<br/>(Retains knockback, view punches, etc. unlike [[god]] mode) | | {{mono|gordon_invulnerable}} || Gordon is invulnerable || Makes the player invulnerable to damage.<br/>(Retains knockback, view punches, etc. unlike [[god]] mode) | ||
|- | |- | ||
| no_seagulls_on_jeep || Don't spawn seagulls on the jeep || Prevents [[npc_seagull|seagulls]] from spawning on the jeep. | | {{mono|no_seagulls_on_jeep}} || Don't spawn seagulls on the jeep || Prevents [[npc_seagull|seagulls]] from spawning on the jeep. | ||
|- | |- | ||
| ep2_alyx_injured || Episode 2: Alyx injured || {{ | | {{mono|ep2_alyx_injured}} || Episode 2: Alyx injured || {{since|{{hl2ep2}}}} Episodic only. Invokes Alyx's "injured" behavior: | ||
*Triples bullet spread for {{ent|weapon_alyxgun}} | *Triples bullet spread for {{ent|weapon_alyxgun}} | ||
*Increases time between shots | *Increases time between shots | ||
{{note|This applies to all NPCs with a <code>weapon_alyxgun</code>, not just Alyx.}} | {{note|This applies to all NPCs with a <code>weapon_alyxgun</code>, not just Alyx.}} | ||
|- | |- | ||
| ep_alyx_darknessmode || Episodic: Alyx darkness mode || {{ | | {{mono|ep_alyx_darknessmode}} || Episodic: Alyx darkness mode || {{since|{{hl2ep1}}}} Episodic only. Enables "darkness mode", as seen during the "Lowlife" chapter of [[Episode One]].<br/>Despite the name, this also affects the player, zombies, and even fires in various ways to make them more suitable for darkness: | ||
*Enables [[dlight]]s on burning props | |||
*Zombine sprint chance increases when flashlight is off | |||
*Alyx can only see zombies lit with the flashlight | |||
*If Alyx is in darkness she will turn away from zombies | |||
|- | |- | ||
| hunters_to_run_over || Ep2 Counter: Hunters to run over before they dodge || {{ | | hunters_to_run_over || Ep2 Counter: Hunters to run over before they dodge || {{since|{{hl2ep2}}}} Episodic only. The number of hunters that should be ran over before they start dodging vehicles.<br/>By default, hunters will try to dodge incoming vehicles.<br/>If this global is declared and its counter is greater than 0, hunters will not try to dodge incoming vehicles.<br/>Instead, this global's counter will decrement by 1 each time a hunter is killed by a vehicle.<br/>When it reaches 0, hunters will return to dodging vehicles. | ||
|} | |} | ||
Line 76: | Line 99: | ||
! Internal Name || Editor Name || Description | ! Internal Name || Editor Name || Description | ||
|- | |- | ||
| portalgun_nospawn || Spawn without Portalgun || Disables the player recieving the [[weapon_portalgun|Portal Gun]] on spawn. | | {{not in FGD}} portalgun_nospawn || Spawn without Portalgun || Disables the player recieving the [[weapon_portalgun|Portal Gun]] on spawn. | ||
{{ | {{note|Used in <code>mp_coop_start</code>, but doesn't seem to do anything. See [[weapon_portalgun#Spawning with a portal gun|here]] for how to prevent the player from spawning with a portal gun.}} | ||
|- | |- | ||
| no_pinging_blue || Prevent Pinging ATLAS || In Co-op, prevents ATLAS (blue ballbot) from using their Ping Tool. | | {{not in FGD}} {{mono|no_pinging_blue}} || Prevent Pinging ATLAS || In Co-op, prevents ATLAS (blue ballbot) from using their Ping Tool. | ||
|- | |- | ||
| no_pinging_orange || Prevent Pinging P-Body || In Co-op, prevents P-Body (orange eggbot) from using their Ping Tool. | | {{not in FGD}} {{mono|no_pinging_orange}} || Prevent Pinging P-Body || In Co-op, prevents P-Body (orange eggbot) from using their Ping Tool. | ||
|- | |- | ||
| no_taunting_blue || Prevent Taunting ATLAS || In Co-op, prevents ATLAS (blue ballbot) from performing gestures. | | {{not in FGD}} {{mono|no_taunting_blue}} || Prevent Taunting ATLAS || In Co-op, prevents ATLAS (blue ballbot) from performing gestures. | ||
|- | |- | ||
| no_taunting_orange || Prevent Taunting P-Body || In Co-op, prevents P-Body (orange eggbot) from performing gestures. | | {{not in FGD}} {{mono|no_taunting_orange}} || Prevent Taunting P-Body || In Co-op, prevents P-Body (orange eggbot) from performing gestures. | ||
|} | |} | ||
{{Note|{{p2ce|4}} has support for both {{p2|4}} and {{hl2|4}} global states.}} | |||
=== {{bms}} [[Black Mesa (Source)|Black Mesa]] === | === {{bms}} [[Black Mesa (Source)|Black Mesa]] === | ||
Line 93: | Line 117: | ||
! Internal Name || Editor Name || Description | ! Internal Name || Editor Name || Description | ||
|- | |- | ||
| predisaster || Pre-Disaster || {{ | | {{mono|predisaster}} || Pre-Disaster || Makes scientist and guard NPCs use pre-disaster speech (greetings, idles, busy responses).<br/>{{note|Effects only follow and talk behavior.}}{{bug|If player has 25 or less health - scientists will fully ignore player interaction, instead of speaking or healing.|hidetested=1}} | ||
|- | |- | ||
| friendly_encounter || Friendly encounter sequence (lower weapons, etc.) || Indicates a friendly encounter sequence.<br/>(This appears to just keep the player's weapons lowered. | | {{mono|friendly_encounter}} || Friendly encounter sequence (lower weapons, etc.) || Indicates a friendly encounter sequence.<br/>(This appears to just keep the player's weapons lowered).<br/>{{bug|Doesn't work.|hidetested=1}} | ||
|- | |- | ||
| gordon_invulnerable || Gordon is invulnerable || Makes the player invulnerable to damage.<br/>(Retains knockback, view punches, etc. unlike [[god]] mode) | | {{mono|gordon_invulnerable}} || Gordon is invulnerable || Makes the player invulnerable to damage.<br/>(Retains knockback, view punches, etc. unlike [[god]] mode)<br/>{{bug|Doesn't work.|hidetested=1}} | ||
|} | |} | ||
{{todo|There may be more of these in other games.}} | {{todo|There may be more of these in other games.}} | ||
{{ | == Console Commands == | ||
{{varcom|start}} | |||
{{varcom|dump_globals|||Dumps data for all set global states.}} | |||
{{varcom|global_set|globalname state||Set the status of a global state. First parameter is the name of it, second is a number. | |||
}} | *0 {{=}} off | ||
{{ | *1 {{=}} on | ||
*2 {{=}} dead | |||
A global can also be created instantly with this command.}} | |||
{{ | {{varcom|end}} | ||
{{ | |||
{{ | |||
{{ | |||
{{ | |||
== | == See Also == | ||
{{ | * {{ent|logic_auto}} | ||
{{ | * {{cmd|dump_globals}} |
Latest revision as of 11:32, 16 June 2025


![]() |
---|
CEnvGlobal |
![]() |

env_global
is a logical entity available in all Source games. It controls game-specific global states, such as whether the gravity gun should become the super gravity gun in
Half-Life 2.
Global states persist across level transitions, regardless of their status. Global states are not stored until an env_global
receives any commands that modify the state, such as turning it on or off or changing the counter. Use the Set Initial State
flag for the global to be added on spawn.
To remove a global from the table entirely, set the global's state to "Dead" using the Remove
input. This will cause the global to remove itself on the next level transition.
Globals and their current state (in integer form) are added to all entities' response data for use in the Response System.

on
.
env_global
in Multiplayer on 




Flags
- Set Initial State : [1]
- Whether this entity defines the global state when the map starts.
Keyvalues
- Name (targetname) <string>[ Edit ]
- The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentname
ortarget
).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- Global State to Set (globalstate) <string choices>
- The global state this entity is linked to. Valve's FGDs always include the HL2 states, but the actual functional ones vary by game. Global states are not exclusive to these choices and any text can be used, though they will not have any special behavior. See Special Global States ↓
- Initial State (initialstate) <integer choices>
- Used by
Set Initial State
to determine what the global state should be set to when the map starts.- 0: Off
- 1: On
- 2: Dead
- Counter (counter) <integer> (in all games since
)
- An integer counter value associated with this global.
Inputs
- TurnOn
- Sets the global's state to ON.
- TurnOff
- Sets the global's state to OFF.
- Toggle
- Switches state of the global between ON and OFF.
- Remove
- Set state of global to DEAD.
- GetCounter (in all games since
)
- Fires this entity's
Counter
output.
Outputs
- Counter <integer > (in all games since
)
- Outputs the integer value of this entity. May depend on global state.
Special Global States
Global state values that have special effect when set in Global State to set ↑.
Source

Internal Name | Editor Name | Description |
---|---|---|
is_pc | Game is running on a PC | Whether the game is running on a PC. |
is_console | Game is running on a console | Whether the game is running on a game console (such as ![]() ![]() ![]() ![]() ![]() Another example can be seen used in ![]() |
skill.cfg | !FGD | Used for handling difficulty settings logic |
Half-Life 2
Internal Name | Editor Name | Description |
---|---|---|
gordon_precriminal | Gordon pre-criminal | Creates the pre-criminal behavior seen in Point Insertion. Also prevents stun stick damage from cops. |
antlion_allied | Antlions are player allies | Makes antlions friendly to the player and allows them to listen to bugbait, as seen in the Nova Prospekt chapters. |
suit_no_sprint | Suit sprint function not yet enabled | Disables the HEV suit's sprint function. (not required if the HEV suit is not equipped) |
super_phys_gun | Super phys gun is enabled | Enables the supercharged gravity gun seen in the Citadel levels of Half-Life 2 and Episode One.![]() |
friendly_encounter | Friendly encounter sequence (lower weapons, etc.) | Indicates a friendly encounter sequence. (This appears to just keep the player's weapons lowered.) |
!FGD citizens_passive | Citizens are *not* player allies (cannot be commanded) | Makes citizens neutral to the Combine and the player. (also done by gordon_precriminal )
|
gordon_invulnerable | Gordon is invulnerable | Makes the player invulnerable to damage. (Retains knockback, view punches, etc. unlike god mode) |
no_seagulls_on_jeep | Don't spawn seagulls on the jeep | Prevents seagulls from spawning on the jeep. |
ep2_alyx_injured | Episode 2: Alyx injured | (in all games since ![]()
![]() weapon_alyxgun , not just Alyx. |
ep_alyx_darknessmode | Episodic: Alyx darkness mode | (in all games since ![]() Despite the name, this also affects the player, zombies, and even fires in various ways to make them more suitable for darkness:
|
hunters_to_run_over | Ep2 Counter: Hunters to run over before they dodge | (in all games since ![]() By default, hunters will try to dodge incoming vehicles. If this global is declared and its counter is greater than 0, hunters will not try to dodge incoming vehicles. Instead, this global's counter will decrement by 1 each time a hunter is killed by a vehicle. When it reaches 0, hunters will return to dodging vehicles. |
Portal 2
Internal Name | Editor Name | Description |
---|---|---|
!FGD portalgun_nospawn | Spawn without Portalgun | Disables the player recieving the Portal Gun on spawn.
![]() mp_coop_start , but doesn't seem to do anything. See here for how to prevent the player from spawning with a portal gun. |
!FGD no_pinging_blue | Prevent Pinging ATLAS | In Co-op, prevents ATLAS (blue ballbot) from using their Ping Tool. |
!FGD no_pinging_orange | Prevent Pinging P-Body | In Co-op, prevents P-Body (orange eggbot) from using their Ping Tool. |
!FGD no_taunting_blue | Prevent Taunting ATLAS | In Co-op, prevents ATLAS (blue ballbot) from performing gestures. |
!FGD no_taunting_orange | Prevent Taunting P-Body | In Co-op, prevents P-Body (orange eggbot) from performing gestures. |




Black Mesa
Internal Name | Editor Name | Description |
---|---|---|
predisaster | Pre-Disaster | Makes scientist and guard NPCs use pre-disaster speech (greetings, idles, busy responses).![]() ![]() |
friendly_encounter | Friendly encounter sequence (lower weapons, etc.) | Indicates a friendly encounter sequence. (This appears to just keep the player's weapons lowered). ![]() |
gordon_invulnerable | Gordon is invulnerable | Makes the player invulnerable to damage. (Retains knockback, view punches, etc. unlike god mode) ![]() |
Console Commands
Cvar/Command | Parameters or default value | Descriptor | Effect |
---|---|---|---|
dump_globals | Dumps data for all set global states. | ||
global_set | globalname state | Set the status of a global state. First parameter is the name of it, second is a number.
|