Combine mine: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Rewrote article, added more information)
m (swapped templates for modern counterparts)
Line 2: Line 2:
[[File:combine mine.jpg|300px|thumb|right|Combine Mine]]
[[File:combine mine.jpg|300px|thumb|right|Combine Mine]]
[[File:Combine mine traceline.png|300px|thumb|right|Demonstration of the first bug. Once the mine has settled, it checks what is below it. Since there's a gap in the middle, the first thing the line encounters is the world.]]
[[File:Combine mine traceline.png|300px|thumb|right|Demonstration of the first bug. Once the mine has settled, it checks what is below it. Since there's a gap in the middle, the first thing the line encounters is the world.]]
{{hl2 point|combine_mine}} Known as "hoppers" by citizens, these mines embed themselves into the ground and are agitated when a hostile target gets close. If the target gets too close, the mine will retract its arms and hop towards the target (similar to a bouncing betty), exploding upon contact with any surface. These mines can be carried and deployed by [[npc_clawscanner|Claw Scanners]].
{{entity|type=e0|series=Half-Life 2|combine_mine}} Known as "hoppers" by citizens, these mines embed themselves into the ground and are agitated when a hostile target gets close. If the target gets too close, the mine will retract its arms and hop towards the target (similar to a bouncing betty), exploding upon contact with any surface. These mines can be carried and deployed by [[npc_clawscanner|Claw Scanners]].


Mines are friendly to most types of Combine units and attack anyone who they don't regard as a friend. If a friendly NPC/player is nearby, the mine's light will turn green and may refuse to bounce unless an enemy gets closer to it than the ally.{{confirm}}
Mines are friendly to most types of Combine units and attack anyone who they don't regard as a friend. If a friendly NPC/player is nearby, the mine's light will turn green and may refuse to bounce unless an enemy gets closer to it than the ally.{{confirm}}
Line 8: Line 8:
Mines can be picked up by the [[weapon_physcannon|gravity gun]], after which they join the player's side and attack Combine units while regarding the player and their allies as friends.
Mines can be picked up by the [[weapon_physcannon|gravity gun]], after which they join the player's side and attack Combine units while regarding the player and their allies as friends.


{{note|<code>combine_mine</code> is not actually a NPC. It's technically just a basic model entity ({{ent|CBaseAnimating}}) and doesn't use most NPC features, like [[ai_relationship|relationships]].}}
{{ModernNote|<code>combine_mine</code> is not actually a NPC. It's technically just a basic model entity ({{ent|CBaseAnimating}}) and doesn't use most NPC features, like [[ai_relationship|relationships]].}}


{{warning|Zombies, headcrabs, and antlions are always targeted by mines, but <code>combine_mine</code> uses a hardcoded list of Combine classes to be friendly towards by default and to be armed against while friendly to the player. Some Combine classes are missing from this list, most notably {{ent|npc_manhack}} and {{ent|npc_stalker}}, and as a result mines will mistakenly regard them as hostile to the Combine and friendly to the player.}}
{{ModernWarning|Zombies, headcrabs, and antlions are always targeted by mines, but <code>combine_mine</code> uses a hardcoded list of Combine classes to be friendly towards by default and to be armed against while friendly to the player. Some Combine classes are missing from this list, most notably {{ent|npc_manhack}} and {{ent|npc_stalker}}, and as a result mines will mistakenly regard them as hostile to the Combine and friendly to the player.
: {{fix|This list is located in <code>CBounceBomb::IsFriend()</code> and can be modified to accept the missing classes or even be replaced by a more robust system.|code}}
{{ModernFix|This list is located in <code>CBounceBomb::IsFriend()</code> and can be modified to accept the missing classes or even be replaced by a more robust system.|code}}}}
{{Placement Tip|Like all physics objects, this entity can collide with skybox brushes, so make sure your skybox has enough room for the <code>combine_mine</code> to be thrown into the sky without seemingly exploding randomly. (at least ~1024 units above the ground could work)}}
{{ModernPlacementTip|Like all physics objects, this entity can collide with skybox brushes, so make sure your skybox has enough room for the <code>combine_mine</code> to be thrown into the sky without seemingly exploding randomly. (at least ~1024 units above the ground could work)}}
{{bugfix|Mines determine if they are on solid ground by [[UTIL_TraceLine|drawing a line]] down from their center and checking if the line hits an entity or world geometry first. This can lead to them falsely interpreting the player's head or certain physics objects (or combinations of them) as the ground, causing them to float in the air when the player/object moves.|This can be fixed in <code>CBounceBomb::SettleThink()</code> by changing the trace distance from 1024 units to something much smaller, like 8.|code}}
{{ModernBug|Mines determine if they are on solid ground by [[UTIL_TraceLine|drawing a line]] down from their center and checking if the line hits an entity or world geometry first. This can lead to them falsely interpreting the player's head or certain physics objects (or combinations of them) as the ground, causing them to float in the air when the player/object moves.{{ModernFix|This can be fixed in <code>CBounceBomb::SettleThink()</code> by changing the trace distance from 1024 units to something much smaller, like 8.|code}}}}
{{altnames|name1=bounce_bomb|name2=combine_bouncemine}}
{{altnames|name1=bounce_bomb|name2=combine_bouncemine}}


Line 24: Line 24:
{{KV|Lock Silently (LockSilently)|bool|Whether the mine plays a sound when its clamps close.}}
{{KV|Lock Silently (LockSilently)|bool|Whether the mine plays a sound when its clamps close.}}
{{KV|Start Disarmed (StartDisarmed)|bool|Whether the mine begins dormant.}}
{{KV|Start Disarmed (StartDisarmed)|bool|Whether the mine begins dormant.}}
{{KV|Citizen modified (Modification)|integer|'Normal' is default Combine behavior. 'Cavern' (used in [[This Vortal Coil]]) detonates earlier in its jump, and in Episode 2 has a different default skin. {{confirm|The skin can be added in games pre-Episode 2 as well.}}}}
{{KV|Citizen modified (Modification)|integer|'Normal' is default Combine behavior. 'Cavern' (used in [[This Vortal Coil]]) detonates earlier in its jump, and in Episode 2 has a different default skin. {{ModernConfirm|The skin can be added in games pre-Episode 2 as well.}}}}
{{KV|Explosion Damage (ExplosionDamage)|nofgd=1|int|Manually adjust damage from explosion. {{todo|When is this used? It doesn't appear in code.}}}}
{{KV|Explosion Damage (ExplosionDamage)|nofgd=1|int|Manually adjust damage from explosion. {{ModernTodo|When is this used? It doesn't appear in code.}}}}
{{KV|Explosion Radius (ExplosionRadius)|nofgd=1|int|Manually adjust range of explosion. {{todo|When is this used? It doesn't appear in code.}}}}
{{KV|Explosion Radius (ExplosionRadius)|nofgd=1|int|Manually adjust range of explosion. {{ModernTodo|When is this used? It doesn't appear in code.}}}}
{{KV|Explosion Delay (ExplosionDelay)|nofgd=1|float|{{confirm|Seen in code, but doesn't appear to function?}}}}
{{KV|Explosion Delay (ExplosionDelay)|nofgd=1|float|{{ModernConfirm|Seen in code, but doesn't appear to function?}}}}
{{KV BaseAnimating|base=1}}
{{KV BaseAnimating|base=1}}
{{KV BaseEntity|base=1}}
{{KV BaseEntity|base=1}}

Revision as of 05:23, 20 April 2023

English (en)Русский (ru)Translate (Translate)
Combine Mine
Demonstration of the first bug. Once the mine has settled, it checks what is below it. Since there's a gap in the middle, the first thing the line encounters is the world.

Template:Entity Known as "hoppers" by citizens, these mines embed themselves into the ground and are agitated when a hostile target gets close. If the target gets too close, the mine will retract its arms and hop towards the target (similar to a bouncing betty), exploding upon contact with any surface. These mines can be carried and deployed by Claw Scanners.

Mines are friendly to most types of Combine units and attack anyone who they don't regard as a friend. If a friendly NPC/player is nearby, the mine's light will turn green and may refuse to bounce unless an enemy gets closer to it than the ally.[confirm]

Mines can be picked up by the gravity gun, after which they join the player's side and attack Combine units while regarding the player and their allies as friends.

Template:ModernNote

Template:ModernWarning

PlacementTip.gifPlacement Tip:Like all physics objects, this entity can collide with skybox brushes, so make sure your skybox has enough room for the combine_mine to be thrown into the sky without seemingly exploding randomly. (at least ~1024 units above the ground could work)

Template:ModernBug

AltNames.pngAltNames: This entity is also tied to bounce_bomb and combine_bouncemine.
Note.pngNote:This entity is also in the code for Portal. Its functionality is not guaranteed.


C++ In code, it is represented by theCBounceBombclass, defined in thecombine_mine.cppfile.

Keyvalues

Bounce (bounce) ([todo internal name (i)]) <boolean>
Whether the mine should bounce up in the air before exploding. (Normally they do, to improve their damage on infantry, but things like very soft clamping surfaces and additional attachments, may make hopping look unrealistic.)
Lock Silently (LockSilently) ([todo internal name (i)]) <boolean>
Whether the mine plays a sound when its clamps close.
Start Disarmed (StartDisarmed) ([todo internal name (i)]) <boolean>
Whether the mine begins dormant.
Citizen modified (Modification) ([todo internal name (i)]) <integer>
'Normal' is default Combine behavior. 'Cavern' (used in This Vortal Coil) detonates earlier in its jump, and in Episode 2 has a different default skin.
Confirm:The skin can be added in games pre-Episode 2 as well.
Explosion Damage (ExplosionDamage) ([todo internal name (i)]) <integer> !FGD
Manually adjust damage from explosion. Template:ModernTodo
Explosion Radius (ExplosionRadius) ([todo internal name (i)]) <integer> !FGD
Manually adjust range of explosion. Template:ModernTodo
Explosion Delay (ExplosionDelay) ([todo internal name (i)]) <float> !FGD
Confirm:Seen in code, but doesn't appear to function?
Note.pngNote:Content moved to Rendering and studio model related KIO/Keyvalues for continuation of page history


Inputs

Disarm
Disarm this mine (open hooks and shut off) if not placed by player.
Note.pngNote:Content moved to Rendering and studio model related KIO/Inputs for continuation of page history


Outputs

OnPulledUp
Fired when this mine is uprooted with the gravity gun.
Note.pngNote:Content moved to Rendering and studio model related KIO/Outputs for continuation of page history