combine_mine

From Valve Developer Community
(Redirected from Hopper)
Jump to: navigation, search
English (en)Русский (ru)Translate (Translate)
Class hierarchy
CBounceBomb
CBaseAnimating
CBaseEntity
combine_mine.cpp
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.

combine_mine is a point entity available in Half-Life 2 series Half-Life 2 series. 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.

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.

AltNames.pngAltNames: This entity is also tied to bounce_bomb and combine_bouncemine.
Note.pngNote:combine_mine is not actually a NPC. It's technically just a basic model entity (CBaseAnimating) and doesn't use most NPC features, like relationships.
Warning.pngWarning:Zombies, headcrabs, and antlions are always targeted by mines, but combine_mine 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 npc_manhack and npc_stalker, and as a result mines will mistakenly regard them as hostile to the Combine and friendly to the player.
Cpp-16px.pngCode Fix:This list is located in CBounceBomb::IsFriend() and can be modified to accept the missing classes or even be replaced by a more robust system.
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)
Icon-Bug.pngBug:Mines determine if they are on solid ground by 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.
Cpp-16px.pngCode Fix:This can be fixed in CBounceBomb::SettleThink() by changing the trace distance from 1024 units to something much smaller, like 8.
  [todo tested in?]
Note.pngNote:This entity is also in the code for Portal. Its functionality is not guaranteed.


Keyvalues

Name (targetname) <string>
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also:  Generic Keyvalues, Inputs and Outputs available to all entities

Bounce (bounce) <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) <boolean>
Whether the mine plays a sound when its clamps close.
Start Disarmed (StartDisarmed) <boolean>
Whether the mine begins dormant.
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.
Explosion Damage (ExplosionDamage) <integer> !FGD
Manually adjust damage from explosion.
Todo: When is this used? It doesn't appear in code.
Explosion Radius (ExplosionRadius) <integer> !FGD
Manually adjust range of explosion.
Todo: When is this used? It doesn't appear in code.
Explosion Delay (ExplosionDelay) <float> !FGD
Confirm:Seen in code, but doesn't appear to function?

Inputs

Disarm
Disarm this mine (open hooks and shut off) if not placed by player.

Outputs

OnPulledUp
Fired when this mine is uprooted with the gravity gun.