GearTypes.wiki
author Wuzzy
Mon, 21 Mar 2016 00:15:42 +0000
changeset 791 4d6610c3e9a3
parent 789 6693fdfb6876
child 792 dfb7a269d70b
permissions -rw-r--r--
GearTypes: clarify gtHammer and gtHammerHit

#summary List of all gear types

= Gear types =

This is a list and overview of all gear types.

This page is split in two parts: The first part is a short list, the second part gives a longer description for all gear types and also describes the meaning of the gear values (such as timer, pos, health, etc.).

Please note this page is still a work in progess. The categories presented here are purely for a better overview here; they do not neccessarily reflect anything in the actual game’s source code.

A “TODO” means that this particular section is not yet finished and may be not accurate.

<wiki:toc max_depth="3" />

== List of gear types ==
This is a short overview and a brief description of all gears.

=== Land objects ===
|| *Gear type* || *Description* ||
|| `gtCase` || An ammo, utility or health crate ||
|| `gtExplosives` || An explosive barrel ||
|| `gtFlake` || A snowflake or a land spray flake ||
|| `gtFlame` || A flame ||
|| `gtGrave` || A grave ||
|| `gtHedgehog` || A hedgehog ||
|| `gtPortal` || A portal from the portable portal device ||
|| `gtTarget` || A target ||

=== Utilities ===
|| *Gear type* || *Description* ||
|| `gtGirder` || A construction or rubber ||
|| `gtJetpack` || A flying saucer ||
|| `gtLandGun` || The land spray tool ||
|| `gtParachute` || A parachute ||
|| `gtResurrector` || Resurrection ||
|| `gtRope` || A rope ||
|| `gtSwitcher` || Switch hedgehog ||
|| `gtTardis` || A !TimeBox ||
|| `gtTeleport` || Teleportation ||

=== Weapons and main projectiles ===
|| *Gear type* || *Description* ||
|| `gtAirAttack` || The airplane of an airborne attack ||
|| `gtAirMine` || An air mine ||
|| `gtBallGun` || A ballgun ||
|| `gtBee` || Homing bee ||
|| `gtBirdy` || Birdy ||
|| `gtBlowTorch` || A blowtorch ||
|| `gtClusterBomb` || A cluster bomb ||
|| `gtCake` || A cake ||
|| `gtDEagleShot` || A shot from a Desert Eagle ||
|| `gtDrill` || Drill rocket ||
|| `gtDynamite` || A dynamite ||
|| `gtFirePunch` || Shoryuken ||
|| `gtFlamethrower` || A flamethrower ||
|| `gtGasBomb` || An old limburger ||
|| `gtGrenade` || A grenade ||
|| `gtHammer` || A gear dealing hammer damage ||
|| `gtHellishBomb` || A hellish hand-grenade ||
|| `gtIceGun` || A freezer ||
|| `gtKamikaze` || An ongoing kamikaze ||
|| `gtKnife` || A cleaver ||
|| `gtPiano` || Piano from piano strike ||
|| `gtPickHammer` || A pickhammer ||
|| `gtRCPlane` || A RC plane ||
|| `gtMolotov` || A molotov cocktail ||
|| `gtMortar` || A mortar ||
|| `gtMine` || A mine ||
|| `gtSeduction` || Seduction ||
|| `gtShell` || A bazooka shell (projectile) ||
|| `gtShotgunShot` || A shot from a shotgun ||
|| `gtShover` || Used by baseball bat. ||
|| `gtSineGunShot` || A shot from the sine gun ||
|| `gtSMine` || A sticky mine ||
|| `gtSniperRifleShot` || A shot from the sniper rifle ||
|| `gtSnowball` || A mudball ||
|| `gtWatermelon` || A watermelon bomb, still intact ||
|| `gtWhip` || A whip ||

=== Secondary projectiles ===
|| *Gear type* || *Description* ||
|| `gtAirBomb` || A bomb from the air attack or the RC plane ||
|| `gtBall` || A ball from the ball gun || 
|| `gtCluster` || A cluster from the cluster bomb or the mortar ||
|| `gtEgg` || An egg from Birdy ||
|| `gtHammerHit` || A hammer digging into land ||
|| `gtMelonPiece` || A cluster from a watermelon bomb ||
|| `gtNapalmBomb` || A bomb from the napalmn strike ||
|| `gtPoisonCloud` || A poisonous cloud ||

=== Other ===
|| *Gear type* || *Description* ||
|| `gtAddAmmo` || Adds a weapon or utilty to a hedgehog. ||
|| `gtATStartGame` || Created at the start of the game.  ||
|| `gtATFinishGame` || Created at the end of the game. Fades out the screen and exits the game. || 
|| `gtGenericFaller` || TODO || 
|| `gtWaterUp` || Causes water to rise. ||

== Long descriptions and values ==
This section gives longer description of the various gear types and how their values (i.e. tag, pos, timer, health, etc.) are interpreted. The gear values are pretty chaotic, so they are described for each gear seperately. Use the various setter and getter functions for gears to modifiy the gear values.

In Lua, use the functions `GetGearPos`, `SetGearPos`, `GetTag`, `SetTag`, `GetTimer`, `SetTimer`, `GetHealth`, `SetHealth`, `GetFlightTime`, `SetFlightTime`, `GetGearValues` and `SetGearValues` to query or modify the gear values.
Note: The gear value “`Boom`” will be introduced in Hedgewars 0.9.23.

=== Land objects ===
This is a list of gears which usually stay on the land for a long time and stay for several rounds and can’t normally directly placed by players.

==== `gtCase` ====
An ammo, utility or health crate.

 * `Pos`: Crate type: 1=ammo crate, 2=health crate, 4=utility crate
 * `Tag`: Used for the appear animation
 * `Health`: Amount of health contained in a health crate
 * `Boom`: Explosion size and damage (default: 25)

==== `gtExplosives` ====
An explosive barrel. It has its own invisible health, like a hedgehog. On low health levels smoke comes out of the barrel.

 * `Health`: “health” of the barrel: Starts at 60, explodes at 0.
 * `Boom`: Explosion size and damage (default: 75)

==== `gtFlake` ====
A little object which will, when colliding with the terrain, become part of the terrain. It is either a snowflake generated by the theme (examples are the Snow and Christmas themes) or a flake created by a land spray (`gtLandSpray`).

If the gear state flag `gsttmpFlag` is set, it is a flake from a land spray, otherwise, it is a snowflake.

==== `gtFlame` ====
A single flame.
In the main game, there are two kinds of flames: Sticky ones and non-sticky ones. Non-sticky ones will quickly burn through land and are guaranteed to be destroyed at the end of a turn. Sticky flames may live through multiple turns and burn very slowly through land. Sticky flames die based on time.

Sticky flames have the gear state flag `gsttmpFlag` set, non-sticky ones haven't.

 * `Tag`: Current animation frame (0-32)
 * `Health`: Size of the flame. Non-sticky flames starts at 5 (largest) and become smaller as they destroy land and damage gears. All flames die when they reach a health of 0.
 * `FlightTime`: If set to `0`, this flame can damage hedgehogs and other gears even in mid-air. Otherwise, flames don't do damage while they are still falling. By default, the `FlightTime` is a huge non-zero value.
 * `Boom`: Damage and size of destroyed land (default: 2). Larger flames can cause more damage and destroy more land (three or four times as much)

==== `gtGrave` ====
A grave from a dead hedgehog.

 * `Health`: If 0, it is not being resurrected. With larger values, it is being resurrected, and the value stands for amount of health the owner of this grave has received so far.

==== `gtHedgehog` ====
A hedgehog.

Basic attributes are:

 * `Health`: Hedgehog's health.
 * `Tag`: Used for animation. `0` = no animation plays. Other value: animation plays
 * `Boom`: Explosion size and damage caused when the hedgehog dies (default: 30)
 * `FlightTime`: Time (in milliseconds) since the hedgehog stood the last time on solid ground

Hedgehogs also make heavy use of the gear state, see [States]. [GearMessages Gear messages] are used for controlling a hedgehogs movement and actions (e.g. moving left, attacking, jumping, etc.)

Please note that hedgehogs have also many other attributes and functions which are specific to hedgehogs only (like name, team name, hat, etc.). You can find many hedgehog-related functions in LuaAPI.

==== `gtPortal` ====
A portal from the portable portal device.

 * `Tag`: Portal state. 0=orange flying, 1=orange placed, 2=blue flying, 3=blue placed
 * `Timer`: Remaining existance time (portals will disappear after end of turn).

==== `gtTarget` ====
A target, useful in target practice and similar missions. This is a simple gear which will fall straight down and is destroyed by any form of damage, no matter how small. It is not affected by wind.

=== Utilities ===
The gears used by various utilities.

==== `gtGirder` ====
A construction or rubber.
TODO

==== `gtJetpack` ====
A flying saucer. Its fuel is stored in `Health` and starts at 2000, which stands for 100% fuel. The fuel value is reduced whenever the player taps one of the direction keys. The up direction costs 50 fuel and the left and right directions cost 10 fuel.

 * `Health`: Amount of remaining fuel. `2000` denotes 100% fuel.

==== `gtLandGun` ====
The land spray tool. Creates `gtFlake` gears.

 * `Tag`: Spitting power of land spray (`5`-`20`).
 * `Health`: Amount of fuel. `1000` denotes 100% fuel.

==== `gtParachute` ====
A parachute.

==== `gtResurrector` ==== 
A hedgehog which does perform a resurrection.

 * `Radius`: Effect range of resurrection in pixels (default: 100). Note that this does not change the drawn circle

==== `gtRope` ====
A rope.

 * `Tag` Rope style: `0`=classic white segments (default), `1`=simple line which can be colored with `Tint`.
 * `Tint`: Rope color as RGBA. This only works if `Tag` equals `1`

==== `gtSwitcher` ====
Switch hedgehog.

==== `gtTardis` ====
A !TimeBox. It works in several phases and an internal timer.

 * `Pos`: Current phase. The value `4` is used when the !TimeBox is currently time-travelling (has completely turned invisible).
 * `Timer`: Has several meanings, depending on `Pos`. Here's the most imporant one, for `Pos` of `4`: A timer (in milliseconds) containing the remaining time until the !TimeBox returns. The !TimeBox returns when `Timer` reaches 0. Hedgewars decreases the timer only while the same team is playing
 * `Tint`: RGBA color (default: clan color)

TODO: Add more information for the other phases.

==== `gtTeleport` ====
Teleportation.

=== Weapons and main projectiles ===
Gears of weapons which can be directly used or launched by the players.

==== `gtAirAttack` ====
The airplane of an airborne attack. It can drop either missiles (`gtAirBomb`), mines (`gtMine`), napalm missiles (`gtNapalmBomb`) or drill rockets (`gtDrill`)

 * `Pos`: Type of airborne attack: `0` = Air Attack, `1` = Mine Strike, `2` = Napalm, `3` = Drill Strike
 * `Tag`: Direction of airplane: `-1` = left, `1` = right
 * `Health`: Number of bombs/mines/drills left (default: 6)
 * `Damage`: Distance (in pixels) between two dropped bombs/mines/drills (default: 30)
 * `Tint`: RGBA color of airplane (default: clan color)

==== `gtAirMine` ====
An air mine. It seeks nearby hedgehogs. If it is in explosion range, its timer activates and will become lower. If the timer reaches 0 and is still in explosion range of a hedgehog, it explodes. But it does not explode if it is out of range, after which the timer is reset and the air mine can be activated again.

To properly set the timer of an air mine, you must set both `Timer` and `WDTimer`.

If the gear state flag `gstAttacking` is set, the air mine is activated and is about to explode.
If the gear state flag `gstChooseTarget` is set, the air mine is currently hunting a hedgehog. This should only be read by Lua scripts, setting it from a Lua script has no effect.

 * `Pos`: Air friction. Higher values mean slower movement. 
 * `Timer`: Time left until possible detonation (in milliseconds). Default value depends on game scheme.
 * `WDTimer`: Initial timer value (in milliseconds) of an activated air mine. The `Timer` is reset to this value if the air mine gets re-activated.
 * `Angle`: Range in which it seeks and follows hedgehogs, in pixels. If a hedgehog is within this range, the air mine will start following. Set it to `0xFFFFFFFF` for an infinite seek range. Set to `0` to disable following. Default: 175
 * `Power`: Speed in which it seeks and follows hedgehogs.
 * `Karma`: Explosion size and damage (in 0.9.22). Default: 30
 * `Boom`: Explosion size and damage (in 0.9.23). Default: 25

==== `gtBallGun` ====
A ballgun. It throws 51 balls (`gtBall`) by default. This weapon is timer-based.

 * `Timer`: Remaining usage time (in ms), default is 5001. One ball is fired every 100ms.

==== `gtBee` ====
A homing bee. The bee works in up to three phases: The first phase is the pre-homing phase lasts 0.5 seconds in which the bee behaves like a normal projectile. In the second phase the bee actually starts homing. This phase can last up to 5 seconds. If the bee did not explode in this time, the bee goes into post-homing phase, stops homing and simply falls. For the first two phases this gear uses `Timer`.

This gear does not directly store in which phase the bee currently is in, so it is a bit tricky to modify the timer values.
If you just want to modify the pre-homing time, simply set the `Timer` after creation. But if you want to modify the duration of the homing phase, you have somehow track the bee gear and wait until the `Timer` first reaches 0, so you know the bee will now get into its second phase. Now wait one more tick (or more) and set `Timer` to set the maximum flight time in the homing phase.

 * `Tag`: Whether the bee is underwater (`0` = no, `1` = yes). This is used for the sound effect.
 * `Timer`: Remaining time (in milliseconds) either of the pre-homing phase or the homing phase.
 * `Boom`: Explosion size and damage. Default: 50

==== `gtBirdy` ====
Birdy. Transports hogs and can drop eggs (`gtEgg`) Birdy works like a flying saucer and depletes energy (stored in `Health`) whenever you tap one of the direction keys. Flapping left and right costs 10 energy, flapping upwards costs 50 energy.

 * `Tag`: Facing direction (`-1` = left, `1` = right)
 * `Health`: “Flapping energy” left, default is 2000
 * `FlightTime`: Number of eggs left (default: 2)

==== `gtBlowTorch` ====
A blowtorch. This utility is entirely timer-based.

 * `Timer`: Remaining usage time in ms, default is 7500.
 * `Boom`: Damage caused when burning a hedgehog or an object. Default: 2

==== `gtClusterBomb` ====
A cluster bomb. Spawns several `gtCluster` gears on detonation.

 * `Boom`: Explosion size and damage. Default: 20

==== `gtCake` ====
A cake. 

 * `Tag`: A timer used for several animations. The final animation (sit down) will cause the cake to explode when the tag reaches `2250`.
 * `Health`: Remaining walking time, default is 2048. Note: the cake uses its own time unit.
 * `Boom`: Explosion size and damage. Default: 75

==== `gtDEagleShot` ====
A shot from a Desert Eagle.

 * `Health`: How deep the bullet digs into land. Default: 50.
 * `Boom`: Damage. Default: 7

==== `gtDrill` ====
A drill rocket. This is either a launched drill rocket or a small drill rocket from the drill strike (which is a bit weaker than the launched one).

The type of drill rocket is stored in the gear state. If `gsttmpFlag` is set (e.g. {{{band(GetState(yourDrillGear), gsttmpFlag) == 0}}} evaluates to `true`), it is a launched drill rocket, otherwise it is a drill rocket from the drill strike.

 * `Tag`: Used for drill strike. If `1`, then first impact occoured already.
 * `Timer`: Detonation timer (in ms)
 * `Boom`: Explosion size and damage. Default: 50 for launched drill rocket, 30 for drill rocket from drill strike

==== `gtDynamite` ====
A dynamite.
Note: The current animation does not support denotation times above 5 seconds. If you want to have larger times, you have to provide your own dynamite sprite in a sidecar HWP or find another workaround.

 * `Tag`: Displayed animation frame.
 * `Timer`: Detonation timer (in ms). Default: 5000.
 * `Boom`: Explosion size and damage. Default: 75

==== `gtFirePunch` ====
A hedgehog which performs the Shoryuken attack.

 * `Tag`: Current Y coordinate of the hedgehog.
 * `Boom`: Damage. Default: 30

==== `gtFlamethrower` ====
A flamethrower. 

 * `Tag`: Current spitting power of flamethrower (`5`-`20`)
 * `Health`: Remaining fuel. `500` is for 100% fuel.

==== `gtGasBomb` ====
An old limburger. Will spawn several `gtPoisonCloud` gears on detonation.

 * `Timer`: Detonation timer (in milliseconds).

==== `gtGrenade` ====
A grenade.

 * `Timer`: Detonation timer (in milliseconds).
 * `Boom`: Explosion size and damage. Default: 50

==== `gtHammer` ====
A hammer attack. This gear is for taking away the health. See also `gtHammerHit` for the digging part.

 * `Boom`: Damage denominator. The damage caused will be `(1/Boom)*health_of_victim`, e.g. if this value is `4` and the victim has 100 health, the hammer takes away 25 health (one quarter). Default: 3 normally (so one third of the health); 2 if Extra Damage is enabled (so one half of the health)

==== `gtHellishBomb` ====
A hellish hand-grenade.

 * `Timer`: Detonation timer (in milliseconds). Default: 5000
 * `Boom`: Explosion size and damage. Default: 90

==== `gtIceGun` ====
A freezer.

 * `Health`: Remaining fuel. `1000` is for 100% fuel

==== `gtKamikaze` ====
A hedgehog which is doing a kamikaze attack.

 * `Health`: Remaining travel range. Default: 2048
 * `Boom`: Damage of a hit and damage and explosion size of the final explosion. Default: 30

==== `gtKnife` ====
A cleaver. If the cleaver takes a lot of damage, it might fall down into the water (without colliding with the land) eventually.

 * `Boom`: Scaling value for the impact damage. The actual damage does not linearly scale. Default: 40000
 * `Damage`: Holds the damage taken by the cleaver received in the current tick (damage taken *at once*). For each tick, `Damage` is first checked and then reset to 0. If the damage was greater than 30, then there is a chance the cleaver will drop, with the chance increasing with the damage. When `Damage` is over 100, the cleaver will drop for sure.

==== `gtPiano` ====
A piano from piano strike. By default, a piano bounces up to 5 times on the terrain, causing 3 big explosions (80 damage each) per impact.

 * `Tag`: Number of remaining terrain bounces. If this number reaches 0, the piano will not collide anymore and directly fall into the water. Default: 5
 * `Boom`: Explosion size and damage of a single explosion of a single impact. Default: 80

==== `gtPickHammer` ====
A pickhammer. This gear is entirely timer-based.

 * `Timer`: Remaining usage time (in milliseconds). Default: 4000
 * `Boom`: Damage per hit. Default: 6

==== `gtRCPlane` ====
An RC plane. It can drop missiles (`gtAirBomb`).

 * `Tag`: dX speed??? (The purpose of the `Tag` is not clear yet)
 * `Timer`: Remaining fly time (in milliseconds). Default: 15000
 * `Health`: Number of missiles on board. Default: 3
 * `Tint`: RGBA color of RC plane (default: clan color)
 * `Boom`: Explosion size and damage when the RC plane crashes. Default: 25

==== `gtMolotov` ====
A molotov cocktail. Creates several flames (`gtFlame`) on impact.

==== `gtMortar` ====
A mortar. On impact it spawns a few `gtCluster` gears.

 * `Boom`: Explosion size and damage of the main mortar projectile only. Default: 20

==== `gtMine` ====
A land mine.

If the gear state flag `gstAttacking` is set, mine has been activated and is about to explode (if it is not a dud).
The game will decide whether a mine is a dud or not when the mine timer reaches 0.

 * `Timer`: Detonation timer (after activation). The initial value depends on the game settings.
 * `Health`: If `0`, mine is a dud, otherwise it is not a dud or has not been triggered yet.
 * `Damage`: If mine has become a dud, this will contain the damage taken by the mine since it was a dud. It starts at 0 and the mine will explode when `Damage` reaches 35 or higher.
 * `Boom`: Explosion size and damage. Default: 50

==== `gtSeduction` ====
A hedgehog trying to seduce others.

 * `Radius`: Effect range of seduction in pixels. Default: 250. Note that this does not change the drawn circle

==== `gtShell` ====
 A bazooka shell (projectile).

 * `FlightTime`: Time since the bazooka has been launched
 * `Boom`: Explosion size and damage. Default: 50

==== `gtShotgunShot` ====
A shot from a shotgun. It is invisible and only can be noticed by its effects.

 * `Boom`: Damage. Default: 25

==== `gtShover` ====
Used by baseball bat.

 * `Boom`: Damage. Default: 30

==== `gtSineGunShot` ====
A shot from the sine gun.

 * `Radius`: The thickness of the sine gun shot.
 * `Boom`: Damage. Default: 35

==== `gtSMine` ====
A sticky mine.

If the gear state flag `gstAttacking` is set, the sticky mine has been activated and is about to explode.

 * `Timer`: Detonation timer after it was activated (in milliseconds). Default: 500
 * `Boom`: Explosion size and damage. Default: 30

==== `gtSniperRifleShot` ====
A shot from the sniper rifle.

 * `Health`: How deep the bullet digs into land. Default: 50
 * `Boom`: Scaling value of the damage caused (not the actual damage). A higher value leads to higher damage. Default: 100000

==== `gtSnowball` ====
A mudball.

 * `Boom`: Pushing power (just an arbitrary value for scaling). Default: 200000

==== `gtWatermelon` ====
A watermelon bomb, still intact. It spawns several `gtMelonPiece` gears when it explodes.

 * `Timer`: Detonation timer (in milliseconds).
 * `Boom`: Explosion size and damage. Default: 75

==== `gtWhip` ====
A whip.

 * `Boom`: Damage. Default: 30

=== Secondary projectiles ===
Gears for projectiles that can’t be directly fired but are generated by other weapon gears.

==== `gtAirBomb` ====
A bomb from the air attack (`gtAirAttack`) or the RC plane (`gtRCPlane`).

 * `Boom`: Explosion size and damage. Default: 30

==== `gtBall` ====
A ball from the ball gun (`gtBallgun`).

 * `Timer`: Detonation timer (in milliseconds). Default: 5000
 * `Boom`: Explosion size and damage. Default: 40
 * `Tag`: Color: `0`=red, `1`=green, `2`=cyan, `3`=yellow, `4`=violet, `5`=pink, `6`=orange, `7`=lime, `8`=white

==== `gtCluster` ====
A cluster from the cluster bomb (`gtClusterBomb`) or the mortar (`gtMortar`).

 * `Boom`: Explosion size and damage

==== `gtEgg` ====
An egg from Birdy (`gtBirdy`)

 * `Boom`: Size of destroyed land and damage. Default: 10

==== `gtHammerHit` ====
Created when a hammer hit something. This gear will dig into the ground. See also `gtHammer` for hammer damage.

 * `Timer`: How deep a successful hammer hit dig into land. 1 is the smallest possible depth. Using the value 0 will dig all the way to the water. Default: 125.

==== `gtMelonPiece` ====
A cluster from a watermelon bomb (`gtWatermelon`)

 * `Boom`: Explosion size and damage.

==== `gtNapalmBomb` ====
A bomb from the napalmn strike (`gtAirAttack`), will burst into fire.

 * `Timer`: Detonation timer (in milliseconds). Default: 1000

==== `gtPoisonCloud` ====
A poisonous cloud, makes hedgehogs sick on contact. Is normally created by `gtGasBomb`.

 * `Timer`: Remaining “life time” in milliseconds (default: 5000). Note that the current animation does not very well support timers larger than 5 seconds, and the animation is partly hardcoded.

=== Other ===
Gears which don't fit into any other category.

==== `gtAddAmmo` ====
Used to add some weapon or utilty to a hedgehog. The gear is added when a crate (`gtCase`) has been collected.

==== `gtATStartGame` ====
This gear is created to mark the beginning of the game. It will cause a ticker message to be displayed (“Let's fight!”) and sets some internal stuff.

==== `gtATFinishGame` ====
This gear is created at the end of the game. The gear itself will fade out the screen and cause the game to be closed. Note: If you want to end the game early, we recommend to call the `EndGame` function instad of using this gear.

 * `Timer`: Fade-out countdown in milliseconds. Fade-out begins at 1000 and finishes at 0.

==== `gtGenericFaller` ====
TODO. The purpose of this gear is not clear yet.

==== `gtWaterUp` ====
Causes the water to rise.

`Tag` contains the number of pixels the water still has to rise (default: 47). The gear will be removed when its `Tag` reaches the value 0.

== Reference ==
For a current list of the gears look at `hedgewars/uTypes.pas` at
the `TGearType` enumeration:
[http://hg.hedgewars.org/hedgewars/file/default/hedgewars/uTypes.pas#l92]

Note: `gtBomb` and `gtShell` were named `gtAmmo_Bomb` and `gtAmmo_Grenade` before 0.9.14.