Introduction[]
While modifying GearHead is in theory very simple, some understanding of the sourcecode is necessary in order to know what the values you are modifying mean. Hopefully, I have made things simpler by translating much of the relavent sourcecode into pseudocode.
Understanding ghpmacro.txt[]
G,S,V: Integer; {General Descriptive,} {Specific Descriptive,} {and Value Descriptive}
These three values describe what kind of gear we're talking about. The "G" describes general type Plot, Scene, Mecha, Weapon, Module, etc.
The "S" describes a specific subcategory of the general type. For mecha, this determines the form type (Battroid, Zoanoid, etc). For modules, this describes the module type (Body, Arm, etc).
The "V" field usually holds a size attribute related to the G,S type. For weapons, it holds the DC. For modules, it holds the size.
Scale: Integer; {Scale of this Gear}
This field is only used by physicaltype gears. Scale 0 is human scale; PCs are this scale, and Scale:0 equipment can be picked up and used by them. Most mecha are Scale:2.
Stat: Array [1..8] of Integer; {Gear Stats. Needed info for Gear type.}
The stats, as explained before, have different meanings depending upon the gear type (usually the G,S description).
SA: SAttPtr; {String Attributes.}
String attributes are strings, stored as a linked list. They are in the format "key <data>". All the event scripts are stored in SAtts.
NA: NAttPtr; {Numerical Attributes.}
Numeric attributes are numbers, also stored as a linked list. The NAtt record has G,S, and V fields just like the gear... Think of the G,S pair as the key and the V field as the value. Damage, map location, script variables, and more are all stored as NAtts.
Special note regarding calculations[]
The GearHead sourcecode mainly uses integers and integer division instead of real numbers and regular division. Basically, every time a calculation using the Pascal div operator is made, the value is rounded down to an integer. For instance, the expression:
20 div 5
is equivalent to the expression:
floor(20/5)
in other languages. That is, the fractional part of the result is discarded.
Gears[]
Michael Deutschmann (with some editing done to it for flow) says:
Michael Deutschmann says:
Joseph Hewitt says:
List of Gear types[]
Miscellaneous  Terrain  Mecha Forms  Characters  Cockpits  Weapons  Ammunition  Movement Systems 

Story Plot 
MapFeature Rect 
Battroid Zoanoid 
Chara  CPit  Melee EMelee 
Ammo Rockets 
Wheels Tracks 
Holders  Sensors  Support  Shields  Armor  Swag  Props  Electronics 
Hand Mount 
Sensor TarComp 
Gyro Engine 
Shield EShield 
BodyArmor HeadArmor 
Treasure BigTreasure 
Prop  PCS 
Meta Terrain  Usables  Repair fuel  Consumables  Modifiers  Weapon Addons 
 
Door MetaTerrain 
Instrument  FirstAidFuel MechaRepairFuel 
Food  StatModifier SkillModifier 
GAddOn GunAddOn 


Inventory Rules[]
 Mounting Points may equip: sensors, weapons, move systems
 Hands may equip: sensors, weapons
 Arms and Tails may equip: armor, shields
 Other modules may equip: armor
 A module may only equip one item of any specific type.
Subcomponent Dependancy Rules[]
 Mecha may have as subcomponents: Modules
 Body Modules may have: Cockpits, Weapons, Movement Systems, Holders (Mount), Sensors, Support Systems, Electronics
 Arm Modules may have: Cockpits, Weapons, Movement Systems, Holders (Mount + Hand), Sensors, Electronics
 Other Modules may have: Cockpits, Weapons, Movement Systems, Holders (Mount), Sensors, Electronics
 Characters may have: Modules
 Cockpits may have: Characters
 Physical Shields may have: Weapons
 External Armor may have: Weapons, Movement Systems, Electronics
 Weapon/Projectile may have: Ammo/Projectile
 Weapon/Missile may have: Ammo/Missile
 Props have no restrictions as to what subcomponents they may have.
Additional Subcomponent Rules[]
 Illegal inventory for master gears must be explicitly excluded.
 Legal inventory for other types must be explicitly defined. ((Not sure what this means.))
 At most one Movement System of a specific type per location.
 At most one Support System of a specific type per location.
 At most one Body Module per location (i.e., a mecha may only have one Body).
 At most one Holder of a specific type per location, except that Body may have up to two holders installed.
 At most one Weapon mount per location.
 At most one Hand per location.
 At most one Ammunition item per location.
 Mecha must have exactly one Body Module.
 Mecha must have exactly one Cockpit.
 Hands may only be mounted in Arm Modules.
 Support Systems may only be mounted in Body.
 Levelone subcomponents must be Modules.
 Armor value of any component may not exceed Mecha Size.
 Cockpit armor may be no greater than 2.
 Size of Modules may not exceed Mecha Size + 1 (but never greater than 10).
 Size of Body module must be the same as Mecha Size.
 Size of Engine must be the same as Mecha Size.
 Sensors are always Scale Factor 0.
 Modules Size may be in the range from 1 to 10.
 Mecha Size may be in the range from 1 to 10.
 Weapon Size may be in the range from 1 to 25.
 Weapon Range may be in the range from 1 to 50 for Ballistic, Missile and BeamGun weapons. It is zero for all others.
 Weapon Accuracy may be in the range from 5 to 5.
 Weapon Speed may be no less than 1. [Ed. the upper limit is probably related to the granularity of the game and the length of a round.]
 Weapon Burst Value may be in the range from 0 to 10 for Ballistic, Missile and BeamGun weapons. It is zero for all others.
 Weapon Magazine may be no less than 1 for Ballistic and Missile weapons. It is zero for all others.
 Ammunition Size must be the same as Weapon Size.
 Ammunition AmmoCount can't exceed the Magazine rating.
 Ammunition Burst Value may range from 0 to 10 if the ammo is a Grenade. For other types of ammo, this is always 0.
 Ammunition GrenadeSkill may range from 1 to 5 (one for each of
the combat skills) if the ammo is a Grenade. For other types of ammo, this is always 0.
 Electronics (PCS) Size determines its function. There are currently 5 types, but the values may range from 1 to 10. [Ed. Not sure what happens if you specify a value greater than 5.]
 Shield Size may range from 1 to 10.
 Shield DefBonus may range from 5 to 5.
 ExArmor Size may range from 0 to 10.
 Prop Size may range from 1 to 100.
 Usables (Instruments) Size may range from 1 to 20.
 Usables UseBonus may be in the range from 0 to 5.
 Usables Range may be in the range from 1 to 10.
 Food Size may range from 0 to 60.
 Food MoraleBoost may be in the range from 5 to 10.
 Food Quantity may be in the range from 1 to 50.
 Modifier (Cyberware) Size may range from 0 to 80.
 Modifier Stat Modifiers may range from 5 to 10.
 Modifier Skill Modifiers may range from 1 to 10.
 Weapon AddOn Damage Modifier may range from 0 to 2.
 Weapon AddOn Range Modifier may range from 0 to 5.
 Weapon AddOn Accuracy Modifier may range from 0 to 3.
 Weapon AddOn Speed Modifier may range from 0 to 3.
 Battroids and Gerwalks do not benefit from Wings in any way.
 See the Movement Modes section for tables related to mecha form and movement modes.
Stat Bonuses[]
 If cockpit is located in head, +1 bonus to MV and TR.
 If total wing points >= mecha size, 25% bonus to Flight.
 Storage modules get a +2 bonus to armor rating.
 Zoanids get a 50% bonus to Jump time and a 20dpr bonus to Walking Speed.
 GroundCars get a 50% bonus to Rolling Speed.
 HoverFighters and GerWalkers get a 25% bonus to Flying Thrust (calculated toward speed).
 AeroFighters get a 100% bonus to Flying Thrust if their total wing points is greater than than the mecha size.
 Ornithoids get a 50% bonus to Flying Thrust if their total wing points is greater than than the mecha size.
 Ornithoids get an additional bonus to Flying Thrust equal to the total number of wing points multiplied by 80.
 GroundHuggers get a +2 bonus to Armor.
 Arachnoids get a +1 bonus to Armor.
 See the table in the Movement (MV), Sensors (SE) & Targeting (TR) section for MV and TR bonuses related to mecha form.
List of mecha forms and the modules they can use[]
 Body Head Arm Leg Wing Tail Turret Storage  Battroid  True True True True True True False True Zoanoid  True True False True True True False True GroundHugger  True False False False False False True True Arachnoid  True True False True False True True True AeroFighter  True False False False True False False True Ornithoid  True True False True True True False True Gerwalk  True True True True True True False True HoverFighter  True False False False True False True True GroundCar  True False False False False False True True
Module size table[]
Body SizeTimesTwo Head HalfSize Arm EqualSize Leg SizePlusOne Wing HalfSize Tail EqualSize Turret HalfSize Storage NoHP
Stats[]
Default values for stats[]
Michael Deutschmann says:
Nature/Material[]
Material types[]
Currently there are three materials:
 Meat
 Metal
 Biotech
The default material is Metal.
List of Status Effects and the materials they effect[]
EFFECT METAL MEAT BIOTECH  Poison False True False Burn True True True Regen False True True Stoned False True False Haywire True False False Inhuman Visage False False False Twitchy Hands False False False Depression False False False Rejection False False False Body Aches False False False Anemia False False False Irrational Anger False False False Neural Lag False False False Major Neural Failure False False False Cerebrospinal Shock False False False Toxic Leakage False False False Shutdown False False False Rust True False False Stun FALSE TRUE True Sickness FALSE TRUE False HalfBlinded False False False Spinal Injury False False False Torn Ligaments False False False Crushed Bones False False False Heart Injury False False False
Mass (kg,t)[]
Joseph Hewitt says:
Joseph Hewitt says:
Michael Deutschmann says:
Michael Deutschmann says:
 At Scale Factor 0 one mass point is worth 0.5kg (1 kilogram = 0.001 tons).
 At Scale Factor 1 one mass point is worth 0.1t.
 At Scale Factor 2 one mass point is worth 0.5t.
 As far as movement systems are concerned, there is a low cap of 20 for a mecha's total mass.
Mass calculations by gear type[]
 Module Mass
 ModuleSize = the size of the module (see the table)
 If ModuleSize = NoHP → Mass = 0
 Else if ModuleSize = HalfSize → Mass = PartSize
 Else if ModuleSize = EqualSize → Mass = PartSize
 Else if ModuleSize = SizePlusOne → Mass = PartSize + 1
 Else if ModuleSize = SizeTimesTwo → Mass = PartSize * 2
 Else → Mass = 0
 Mass = Mass + ArmorRating
 Cockpit Mass
 Mass = ArmorValue
 Weapon Mass
 Missile: Mass = 1
 EMelee: Mass = 1
 BeamGunn: Mass = DP
 Melee: Mass = DP
 Ballistic: Mass = DP + BV
 Ammunition Mass
 Missile: Mass = DP
 Grenade: Mass = DP [Ed. This is always equal to 1. It may be a 'bug'.]
 Others: Mass = (DC * NumShots) div 100
 Movement System Mass
 Mass = DP
 Holder Mass
 Mass = 1
 Sensor Mass
 Mass = DP
 Support Mass
 Mass = ArmorValue
 Shield Mass
 If PhysicalShield →
 Mass = ShieldSize + DefenseBonus
 If Mass < 1 → Mass = 1
 Else if EnergyShield → Mass = 1
 ExArmor Mass
 Mass = ArmorSize * 2
 Swag Mass
 Mass = 1
 Prop Mass
 Mass = PartSize
 Metaterrain Mass
 Mass = PartSize
 Electronics Mass
 Mass = PartSize
 Usables Mass
 Mass = DP
 Consumables Mass
 Mass = (PartSize * FoodQuantity) div 5
 Weapon AddOn Mass
 Mass = 1
 Adjustments to Mass based on the Mass Adjustment Value (MAV)
The Mass Adjustment Value (found in the design file) is applied after doing the above calculations.
 Mass = Mass + MAV
Price / Point Value (PV)[]
Francisco Munoz says:
PV calculations by gear type[]
 Module PV
 Value = 25 * PartSize + 35 * ArmorValue
 Weapon PV
See WeaponValue in ghweapon.pp.
The base value of a weapon is 35x Damage Class, unless it's an energy melee weapon in which case 125x Damage Class, or a beam weapon in which case 75x Damage Class. This value is adjusted based on various factors:
 Range:
 Value = Value * (2 + RNG) div 5
 Accuracy:
 If ACC > 0 → Value = Value * (5 + ACC) div 5
 If ACC < 0 → Value = Value * (10 + ACC) div 10
 Speed:
 Value = Value * (1 + 2 * SPD) div 5
 Burst Value:
 Value = Value * (4 + 3 * BV) div 4
 Additional BV cost for BeamGuns:
 Value = (Value * 3) div 2
 Magazine:
 Ballistic weapons:
 If MAG < 7 → Value = Value * (9 + MAG) div 20
 Else if MAG < 10 → Value = (Value * 4) div 5
 Else if MAG < 20 → Value = (Value * 9) div 10
 Missile weapons:
 Value = Value * MAG div 5
 Ballistic weapons:
 Damage Effects & Status Effects (see below for the cost tables)
 Base value of N is 10.
 Damage Effects (for each effect): N = ( N * CostOfEffect ) div 10
 Status Effects (for each effect): N = ( N * CostOfEffect ) div 10
 Special case (Blast): N = ( N * CostOfEffectPerRadius ) div 10
 Final values for N that are less than 5 are rounded up to 5.
 Value = Value * N div 10
 Base value of N is 10.
 Ammunition PV
See AmmoValue in ghweapon.pp.
 BaseValue = the clip magazine size for this ammo
 If the ammo is a missile → BaseValue = BaseValue * 10
 Else, if the ammo is a grenade →
 BaseValue = BaseValue * 2
 BaseValue = BaseValue * (BV + 1)
 Damage Effects & Status Effects (see below for the cost tables)
 N = a new variable = 10
 Damage Effects (for each effect): N = ( N * CostOfEffect ) div 10
 Status Effects (for each effect): N = ( N * CostOfEffect ) div 10
 Special case (Blast): N = ( N * CostOfEffectPerRadius ) div 10
 Final values for N that are less than 5 are rounded up to 5.
 If the ammo has the BLAST effect → N = N * 2
 If the ammo has the HYPER rating → N = N * 3
 N = a new variable = 10
 BaseValue = (BaseValue * AmmoSize * N) div 50
 Movement System PV
 MoveSystemCost = the cost of the movement system (see table, below)
 Value = PartSize * MoveSystemCost
 Holder PV
 Value = 15
 ExArmor PV
 Value = PartSize * PartSize * PartSize * 5 + PartSize * PartSize * 10 + PartSize * 35
 Cockpit PV
 Value = 25 * ArmorValue
 Sensor PV
 MainSensor: Value = PartSize * PartSize * 50 + 50
 TarCom: Value = PartSize * PartSize * 125
 ECM: Value = PartSize * PartSize * 500  PartSize * PartSize * 350
 Others (hypothetical): Value = PartSize * PartSize * PartSize * 5 + PartSize * 10 + 15
 Electronics PV
 Value = PartSize * PartSize * PartSize * 5 + PartSize * 10 + 15
 Support PV
 If the part is a Gyroscope → Value = PartSize * PartSize * 30
 Else, if the part is an Engine →
 If the part is a Highoutput engine → Value = PartSize * 1000
 Else → Value = PartSize * 45
 Else → Value = PartSize * 45
 Value = Value + ArmorValue * 25
 Shield PV
 If EnergyShield → Value = PartSize * 75
 Else → Value = PartSize * 25
 If DefenseBonus > 0 → Value = Value * (4 + DefenseBonus ) div 4
 Else if DefenseBonus < 0 → Value = Value * (10 + DefenseBonus) div 10
 Swag PV
 Value = PartSize
 For t = 1 to Part^.S → Value = Value * 10 [Ed. Couldn't figure out what Part^.S is in this case. I think it is equal to 12.]
 Usables PV
 Value = (50 + UseBonus * UseBonus * UseBonus * 10 + PartSize * 5) * (UseRange + 5) div 10
 Repair Fuel PV
 Value = PartSize
 Consumables PV
 Value = (PartSize * FoodXValue) / div 5
 If MoraleBoost > 0: Value = Value + (MoraleBoost * (150  2 * PartSize))
 Else:
 TempVar = a temporary variable = Value * (MoraleBoost + 10) div 10
 If TempVar < (Value div 2): TempVar = Value div 2
 Value = TempVar
 Value = Value * FoodQuantity
 Modifier (Cyberware) PV
 Plusses = 0
 Minuses = 0
 PriceFactor = 2000
 BasePrice = an array = [10,25,45,70,100]
 If the part is a stat modifier →
 For each stat →
 StatMod = the amount this stat is being modified
 If StatMod > 0 → Plusses = Plusses + StatMod
 Else if StatMod < 0 → Minuses = Minuses + StatMod
 For each stat →
 Else, if the part is a skill modifier →
 SkillMod = the amount this skill is being modified (this can only be a positive integer)
 Plusses = SkillMod
 If Plusses > 5 →
 Value = Value + (PriceFactor * 50 * (Plusses  5))
 Plusses = 5
 If Plusses > 0 → Value = Value + BasePrice[Plusses] * PriceFactor
 If Minuses > 0 → Value = Value  PriceFactor * 5 * Minuses
 Else, if there are no Minuses → Value = (Value * 3) div 2
 If the part is a character modifier (as opposed to a mecha modifier) → Value = (Value * (100  PartSize)) div 100
 Else → Value = Value div 2
 If the part is a noncombat skill modifier → Value = Value div 2
 If Value < PriceFactor → Value = PriceFactor
 Weapon AddOn PV
See WeaponAddOnCost in ghweapon.pp.
 The base value is 120.
 If the addon is a general addon (i.e., it can be added to any type of weapon), multiply this value by 3.
 Adjust the value for the part's size: Value = Value * PartSize * 2
 Range: Value = Value * (RNGMod + 3) div 2
 Accuracy: Value = Value * (ACCMod + 3) div 2
 Speed: Value = Value * (SPDMod + 1)
 Damage Effects & Status Effects (see below for the cost tables)
 Base value of N is 10.
 Damage Effects (for each effect): N = ( N * CostOfEffect ) div 10
 Status Effects (for each effect): N = ( N * CostOfEffect ) div 10
 Special case (Blast): N = ( N * CostOfEffectPerRadius ) div 10
 Final values for N that are less than 5 are rounded up to 5.
 If N > 10, then: Value = Value * N * 2 div 10
 Base value of N is 10.
Additional PV calculations for all types of gears[]
See ComponentValue in gearutil.pp
 Mass Adjustment Value (MAV)
 MAV = the Mass Adjustment Value (MAV) found in the design file
 MassPerMV = 15
 If (PartScale = 0) and (MAV < 0) → MAV = MAV * 5
 If (MAV > 0) and (Value > 0) →
 Value = (Value * (MassPerMV * 4  MAV)) div (MassPerMV * 4)
 If Value < 1 → Value = 1
 Else if MAV < 0 → Value = Value * (MassPerMV + abs(MAV)) div MassPerMV
 Material
 If Material = Biotech →
 If the part is a mecha → Value = PartSize * 250
 Else → Value = (Value * 3) div 2
 If Material = Biotech →
 Overstuffed
 N = the CMX of the part
 T = the CMX of the part's subcomponents
 If N > T → Value = (Value * (10 + N  T)) div 10
 Scale
 If (Value > 0) and (PartScale > 0) →
 For t = 1 to PartScale → Value = Value * 5
 If (Value > 0) and (PartScale > 0) →
 Fudge
 Fudge = a numerical attribute defined in the design file that arbitrarily raises or lowers the value of the part
 Value = Value + Fudge
Attack attribute cost table[]
SWARM 15 BLAST 15 LINE 20 SCATTER 9 EXTEND 11 HYPER 250 ARMORPIERCING 20 MYSTERY 10 THROWN 15 RETURN 30 ARMORIGNORE 85 INTERCEPT 25 OVERLOAD 15 BRUTAL 20 FLAIL 25 ANTIAIR 12 SMOKE 2 GAS 10 DRONE 20 NOMETAL 10 STRAIN 7 COMPLEX 7
Blast effect cost table[]
10, 20, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95
Status effect cost table[]
Poison 15 Burn 19 Regen 5 Stoned 20 Haywire 20 Inhuman Visage 10 Twitchy Hands 10 Depression 10 Rejection 10 Body Aches 10 Anemia 10 Irrational Anger 10 Neural Lag 10 Major Neural Failure 10 Cerebrospinal Shock 10 Toxic Leakage 10 Shutdown 10 Rust 95 Stun 12 Sickness 15 HalfBlinded 10 Spinal Injury 10 Torn Ligaments 10 Crushed Bones 10 Heart Injury 10
Movement system cost table[]
Wheels 10 Tracks 10 Hover Jets 45 Flight Jets 65 Arc Thrusters 100 Overchargers 30
Damage Points (DP)[]
DP calculations by gear type[]
 Module DP
 ModuleSize = the size of the module (see the table)
 If ModuleSize = NoHP → DP = 1 (damage gets passed on to its contents)
 Else if ModuleSize = HalfSize → DP = (PartSize + 1) div 2
 Else if ModuleSize = EqualSize → DP = PartSize
 Else if ModuleSize = SizePlusOne → DP = PartSize + 1
 Else if ModuleSize = SizeTimesTwo → DP = PartSize * 2
 Else → DP = 0
 Mecha DP
Mecha don't have a DP value. Instead, damage is passed on to their individual parts.
 Character DP
In this case, DP is called HP.
 HP = (BodyStat + 5) div 2
 HP = HP + VitalitySkill
 Cockpit DP
Cockpits don't have DP. This may be because damage is passed on to their contents (i.e., characters). [Ed. Not 100% sure, though.]
 Weapon DP
 EMelee: DP = (DC + 1) div 2
 Missile: DP = 1 [Ed. Don't know exactly how this works.]
 Others: DP = DC
For missile weapons, damage is passed on to the weapon payload.
 Ammunition DP
 Missile: DP = (DC * NumShots) div 25 (Values less than 1 get rounded up to 1)
 Other: DP = 1
 Movement System DP
 MoveSystemDMG = the DMG value of the movement system (see table, below)
 If MoveSystemDMG = 0 → DP = 1
 Else → DP = PartSize * MoveSystemDMG
 Holder DP
 DP = 1
 Sensor DP
 MainSensor: DP = 60  (5 * PartSize)
 TarCom, ECM: DP = 25
 Suppot DP
 If the part is an Engine → DP = 3
 Else → DP = 1
 Shield DP
Shields don't have DP. [Ed. Not sure why.]
 ExArmor DP
Shields don't have DP. [Ed. Not sure why.]
 Swag DP
 DP = 1
 Prop DP
 DP = PartSize
 Metaterrain DP
 DP = PartSize
 Electronics DP
 DP = 1
 Usables DP
 DP = PartSize + 1
 Repair Fuel DP
 DP = 0 [Ed. Not sure why.]
 Consumables DP
 DP = 0 [Ed. Not sure why.]
 Modifier DP
 DP = 0 [Ed. Not sure why.]
 Weapon AddOn DP
 DP = 1
Adjustments to DP based on scale and material[]
DP is further modified based on the scale of the item as well as its material.
 If Scale < 1 →
 If Material = Meat → DP = DP * 2
 Else → DP = DP * 3
 Else →
 If Material = Meat → DP = DP * 4
 Else if Material = Biotech → DP = DP * 6
 Else if Material = Metal → DP = DP * 5
 If Scale > 1 →
 For t = 2 to Scale → DP = DP * 5
Movement system DMG table[]
Wheels 1 Tracks 2 Hover Jets 0 Flight Jets 0 Arc Thrusters 0 Overchargers 0
Points of Complexity (CMX)[]
Michael Deutschmann says:
For all other parts, CMX is equal to 1.
Arc (ARC)[]
See WeaponArc in ghweapon.pp
Weapon arcs are determined by where they are equipped or installed.
 By default, an uninstalled weapon has an arc of F90.
 Weapons equipped in arms: ARC = F180
 Weapons equipped in tails: ARC = F360
 Weapons equipped in other places: ARC = F90
 Weapons installed in arms, heads or tails: ARC = F180
 Weapons installed in turrets: ARC = F360
 Weapons installed in other places: ARC = F90
Movement (MV), Sensors (SE) & Targeting (TR)[]
Michael Deutschmann says:
Malte Helmert says:
 You get a 1 MV penalty for every 7.5 extra tons of installed
stuff. But, for equipped stuff, the figure depends on mecha size (e.g., 8t for size 1, 8.5t for size 2, 9t for size 3, etc.). Note that Mounts and Hands weigh 0.5t.
 A gyroscope gets you a +1 MV bonus per level; so a Gyroscope +3 will chage a MV 5 to 3 or 2.
 Biotech mecha get a +1 to MV and TR.
 If cockpit is located in head, +1 bonus to MV and TR.
Base MV or TR score[]
 IMass = the intrinsic weight of your mecha (i.e., its weight
minus the weight of all equipped or carried items, but including installed items)
 EMass = the weight of all your equipment, equipped or carried in the inventory
 MassPerMV = 15
 MaxWeight = the maximum weight your mech can carry = MassPerMV + MechSize
 If MaxWeight < 1 → MaxWeight = 1
 If EMass < 0 → EMass = 0
 MVTRScore = 1 * (IMass div MassPerMV + EMass div MaxWeight)
 If the cockpit is located in the head → MVTR = MVTRScore + 1
Additional calculations to MV[]
 FormBonus = the bonus to MV that is attributed to the mecha's form (see table, above)
 MV = MVTRScore + FormBonus
 MV = MV + GyroscopeSize  1
 If MV > 0 → MV = 0
Additional calculations to TR[]
 FormBonus = the bonus to TR that is attributed to the mecha's form (see table, above)
 TR = MVTRScore + FormBonus
 TR = TR + TargetingComputerSize
 If TR > 0 → TR = 0
Scale Factor (SF) and Class (Size)[]
SF and Size details[]
Joseph Hewitt says:
Michael Deutschmann says:
List of mecha sizes/classes[]
 Size 1 = "Pico Class"
 Size 2 = "Demi Class"
 Size 3 = "Mini Class"
 Size 4 = "Light Class"
 Size 5 = "Standard Class"
 Size 6 = "Heavy Class"
 Size 7 = "Super Class"
 Size 8 = "Mega Class"
 Size 9 = "Giga Class"
 Size 10 = "Tera Class"
[Ed: Shouldn't this list take Scale into account, too? I.e., Is an SF:1 mecha of Size 1 a "Pico" class vehicle just like a SF:2 mecha of Size 1?]
Speed (dpr)[]
Michael Deutschmann says:
Michael Deutschmann says:
Michael Deutschmann says:
Michael Deutschmann says:
Michael Deutschmann says:
Base Walking Speed[]
Mecha
 Mass = the mass of the mecha
 If Mass < 20 → Mass = 20
 Speed = (240  Mass) div 3
 If the mech is a Zoanid → Speed = Speed + 20
 If Speed < 20 → Speed = 20
 MinLegs = MechSize * 2  2
 If MinLegs < 2 → MinLegs = 2
 TotalLegs = total number of leg points (damaged & undamaged)
 If the mecha is a Zoanid → TotalLegs = TotalLegs + number of arm points (damaged & undamaged)
 Speed = (Speed * TotalLegs) div MinLegs
 If Speed < 1 → Speed = 1
 ActiveLegs = the number of active (undamaged) legs
 If (ActiveLegs * 2) < (TotalLegs + 2) → Speed = 0
 If the Gyroscope is inactive → Speed = 0
Characters
 Speed = CharSpeedStat * 4
 TotalLegs = the number of leg points
 ActiveLegs = the number of active (undamaged) legs
 If (ActiveLegs * 2) < (TotalLegs + 2) → Speed = Speed div 10
 If Speed < 20 → Speed = 20
Base Rolling Speed[]
Mecha
 Mass = the mass of the mecha
 If Mass < 20 → Mass = 20
 Speed = (360  Mass) div 3
 If Speed < 20 → Speed = 20
 If the mech is a GroundCar → Speed = (Speed * 3) div 2
 MinWheels = MechSize * 2  2
 If MinWheels < 2 → MinWheels = 2
 ActiveWheels = the active (undamaged) number of wheel points (including tracks)
 If ActiveWheels = 0 → exit [Ed. this is quite odd.]
 If ActiveWheels < MinWheels →
 Speed = (Speed * ActiveWheels) div MinWheels
 If Speed < 1 → Speed = 1
Characters
 Speed = CharSpeedStat * 5
 MinWheels = 10
 ActiveWheels = the number of active (undamaged) wheel points (including tracks)
 If ActiveWheels = 0 → exit
 If ActiveWheels < MinWheels →
 Speed = (Speed * ActiveWheels) div MinWheels
 If Speed < 1 → Speed = 1
Base Skimming Speed[]
Mecha
 Mass = the mass of the mecha
 Thrust = the number of thrust points
 If Thrust > Mass →
 Speed = (Thrust * 10) div Mass
 If the Gyroscope is inactive → Speed = Speed div 2
 Else → Speed = 0
Characters
 Mass = the mass of the character + 25
 Thrust = the number of thrust points
 ActiveWings = the number of undamaged wings
 Thrust = Thrust + ActiveWings * 90
 If Thrust > Mass → Speed = (Thrust * 10) div Mass
 Else → Speed = 0
Base Flying Speed[]
Mecha
 Mass = the mass of the mecha
 Thrust = the number of thrust points
 TotalWings = the number of wing points
 If TotalWings < MechaSize → Thrust = Thrust div 2
 If the mecha is an AeroFighter →
 If TotalWings > MechaSize → Thrust = Thrust * 2
 If the mecha is a HoverFighter or GerWalker → Thrust = (Thrust * 5) div 4
 If the mecha is an Ornithoid →
 If TotalWings > MechaSize → Thrust = (Thrust * 3) div 2
 Thrust = Thrust + TotalWings * 80
 If Thrust > Mass →
 Speed = (Thrust * 10) div Mass
 If Speed < 30 → Speed = 0
 TrueSpeed = a boolean value that is not true when determing Jump Time (see below)
 Else if (Speed < 150) and TrueSpeed → Speed = 150
 If the Gyroscope is inactive: Speed = 0
 Else → Speed = 0
Characters
 Mass = the mass of the character + 25
 Thrust = the number of thrust points
 TotalWings = the number of wing points
 If TotalWings < MechaSize → Thrust = Thrust div 2
 Thrust = Thrust + TotalWings * 80
 If Thrust > Mass →
 Speed = (Thrust * 10) div Mass
 If Speed < 30 → Speed = 0
 TrueSpeed = a boolean value that is not true when determing Jump Time (see below)
 Else if (Speed < 150) and TrueSpeed → Speed = 150
 If the Gyroscope is inactive → Speed = 0
 Else → Speed = 0
Overcharger speed bonus[]
Overchargers add a bonus to a mek's FULLSPEED action.
 Mass = the mass of the mecha
 Overchargers = the number of overchargers
 SpeedBonus = (Overchargers * 125 * 10) div Mass
Some additional scaling is done to keep things within the speed limits. (Not sure about the logic behind this.)
 For t = 1 to 10 →
 SpeedFactor = t * 20
 If SpeedBonus > SpeedFactor → SpeedBonus = SpeedFactor + ((SpeedBonus  SpeedFactor) div 2)
Additional speed calculations[]
 Speed = the speed of your mecha depending on the movement mode, using the above calculations
Some additional scaling is done to keep things within the speed limits. [Ed. Not sure about the logic behind this.] [Ed2. It appears to be logarithmic: the larger your speed, the more times you get hit by the speed penalty, so eventually you will need to go to great pains to raise your speed by the smallest amount. Much harsher than reality, where air friction is proportional to speed^2, but in reality, extra jets weigh much more, anyway.]
 For t = 1 to 10 →
 SpeedFactor = t * 50
 If Speed > SpeedFactor → Speed = SpeedFactor + ((Speed  SpeedFactor) div 2)
Mecha have additional speed limits based on the form of the mecha and the movement mode. Look up the correct value in the table and store the value as SpeedLimit. [Ed2: this is fairly trivial compared to the speed scaling above.]
 If Speed > SpeedLimit → Speed = SpeedLimit + ((Speed  SpeedLimit) div 2)
 If the macha is turning, then limit the speed to a maximum turn rate (not described in this article).
 If you're moving at Full Speed, then apply the overcharger speed bonus (described above).
 Additionally, if you're moving at Full Speed, then → Speed = (Speed * 3) / div 2
Some additional bonuses are then given for when you are turning. I'm not sure why the speed is first limited, then later multiplied.
Jump Time[]
 Speed = the base flying speed for your mech using the above calculation [Ed. Make sure to set TrueSpeed to FALSE.]
 If the mecha is a Zoanid → Speed = (Speed * 3) div 2
 Else if Speed < 150 → Speed = 0
 JumpTime = (Speed + 1) div 2
Range (RNG)[]
 If the weapon is Ballistic → Range = (DC + 1) div 2
 If the weapon is BeamGun → Range = DC div 2 + 2
 If the weapon is Missile → Range = DC div 3 + 3
Speed (SPD)[]
The default speed for all weapons is 2. [Ed. need more info!]
Damage Class (DC)[]
Absolute values for Damage Class are scaled depending on the Scale Factor of the weapon.
 If SF = 0 → DC = DC
 Else if SF > 0 → DC = DC * 2
 Else if SF > 1 → DC = DC * 5 ^ (SF  1)
The effects are cumulative, so a hypothetical SF:4 weapon (REALLY HUGE!!) would have an absolute DC of (DC * 2 * 5 * 5 * 5). Assuming the weapon's base DC is 3, the text description of the weapon would read 'DC3x250'.
Oddly, the actual damage for SF:1 and higher weapons multiplies damage by 4 for SF 1, and by 5 for each scale above that. So a DC 4x10 weapon is closer to DC 4x20 for actual damage dealt.
Ammo (a) & Magazine (MAG)[]
The default clipsize for ammo is 1, unless it is loaded in a weapon, in which case the clip size is determined by the weapon's Magazine rating.
The default GrenadeSkill is 2 [Ed. Mecha Artillery???] for all ammo.
The default Magazine rating for Ballistic and Missile weapons is 10.
Armor[]
Armor calculations[]
 If the part is a Module →
 Armor = ArmorStat
 If the part is a Storage Module → Armor = Armor + 2
 Else, if the part is a Cockpit or Support Module → Armor = ArmorStat
 Else, if the part is a Shield → Armor = PartSize * 2
 Else, if the part is External Armor (ExArmor) → Armor = PartSize
 Else, if the part is MetaTerrain → Armor = PartSize
 Else → Armor = 0
 If Armor > 0 →
 If the part's parent is a mecha →
 If the parent mecha is a GroundHugger → Armor = Armor + 2
 If the parent mecha is an Arachnoid → Armor = Armor + 1
 If the part's parent is a mecha →
Adjustments to Armor based on scale and material[]
If the Armor value is greater than zero, it is further modified based on the scale of the item as well as its material.
 If Scale < 1 →
 If Material = Meat → Armor = Armor * 2
 Else → Armor = Armor * 3
 Else →
 If Material = Meat → Armor = Armor * 4
 Else if Material = Biotech → Armor = Armor * 6
 Else if Material = Metal → Armor = Armor * 5
 If Scale > 1 →
 For t = 2 to Scale → Armor = Armor * 5
Encumberence[]
The following furmulae are used to determine the amount of weight you can carry:
 For mecha: MaxWeight = 15 + MechSize
 For characters: MaxWeight = BodyStat + 2 + WeightLiftingSkill
Your Encumberence level is then calculated as follows:
 If MaxWeight < 1 → MaxWeight = 1
 EquipmentWeight = the weight of all your equipment, whether carried, installed or equipped
 EMass = EquipmentWeight  MaxWeight
 For characters: EMass = EMass  WeightLiftingSkill
 If EMass > 0 → Encumberence = EMass div MaxWeight
 Else → Encumberence = 0
Chance to Hit (CTH)[]
Michael Deutschmann says:
Movement Modes[]
Michael Deutschmann says:
Michael Deutschmann says:
Michael Deutschmann says:
Aquillion says:
Michael Deutschmann says:
Mecha movement modes table[]
WALK ROLL SKIM FLY Battroid True True True True Zoanoid True False False True GroundHugger False True True False Arachnoid True False False False AeroFighter False False False True Ornithoid True False False True GerWalk True False True True HoverFighter False False True True GroundCar False True False False
Mecha speed limits table[]
WALK ROLL SKIM FLY Battroid 200 100 150 150 Zoanoid 200 0 0 200 GroundHugger 200 150 200 0 Arachnoid 200 0 0 0 AeroFighter 200 0 0 300 Ornithoid 200 0 0 300 GerWalk 60 0 300 250 HoverFighter 200 0 300 250 GroundCar 200 200 0 0
Movement system thrust points table[]
SKIM FLY Wheels 0 0 Tracks 0 0 Hover Jets 75 10 Flight Jets 0 90 Arc Jets 80 80 Overchargers 7 7
Multiply the above values by the size of the module to get the number of thrust points.
Miscellaneous[]
Aquillon says: