Veterancy and promotion
How experience, promotion, abilities, and elite weapons work.
Vehicles, infantry, aircraft, and buildings each have their own experience total. That total determines their rank:
| Rank | Experience |
|---|---|
| Below rookie | less than 0 |
| Rookie | 0 up to but not including 1 |
| Veteran | 1 up to but not including 2 |
| Elite | 2 and above |
Objects start at rookie with 0 experience unless another setting gives them a different rank. Veteran always starts at 1 and elite at 2. Rules can change how quickly experience is earned, but these thresholds are fixed.
VeteranLevel=0 gives an object -0.25 experience, placing it below rookie. A map’s placed-object records can also set experience directly. Below-rookie objects have no rank abilities, just like rookies. They differ in their insignia and in how crates and armories promote them, as described below.
Earning experience
Section titled “Earning experience”The object that deals the fatal damage earns experience if its type has Trainable=yes. Each kill adds victim cost / (killer cost * VeteranRatio) to its experience. The costs come from Cost; Points does not affect experience.
Starting from rookie, an object must destroy enemies worth VeteranRatio times its own cost to reach veteran, and twice that to reach elite. A lower VeteranRatio means faster promotion. Cheaper types need fewer kills against the same enemies.
[General]VeteranRatio=5VeteranCap=2This example allows promotion through combat up to elite rank. VeteranCap sets the experience limit. These are example values; the linked key pages give the defaults.
Buildings must explicitly set Trainable=yes to earn experience from kills. Trainable does not control rank benefits: an untrainable object still benefits from a rank given by an armory, a trigger, or another source that ignores this setting.
A building with a FreeUnit usually awards experience based on the building’s full price, even after the free unit has left. If that unit costs more than the building, its price is used instead. See structure costs for the calculation.
Keep VeteranRatio and the killer’s cost above 0: the formula divides by both. With a positive victim cost, a zero divisor sets experience to VeteranCap.
A kill gives no experience if the defeated owner considers the killer an ally. Score, loss counts, and destruction triggers still update.
Destroying a transport also awards experience for each passenger killed inside it. Crushing an object counts as a kill for the vehicle that crushed it.
Experience does not decrease over time, and changing owners does not reset it.
The experience ceiling
Section titled “The experience ceiling”After each kill that earns experience, the total is limited to VeteranCap. Promotions from other sources ignore this limit.
Promotion without kills
Section titled “Promotion without kills”The following sources can give an object a rank without kills. They ignore VeteranCap; only the veterancy crate requires Trainable=yes. A map’s placed-object records can also set experience directly.
| Source | Result |
|---|---|
| Veterancy crate | Every Trainable=yes object on the ground within CrateRadius of the crate rises one rank, repeated as many times as the crate’s Data figure in [Powerups] says, which Crate powerups covers. |
Armory=yes building | The infantry inside is promoted once the building’s servicing counter runs out. |
| Drop Pods superweapon | Each delivered passenger is created elite. |
TeamType VeteranLevel | Every member created for the team takes the rank the value selects. |
InitialVeteran=yes | The units and infantry drawn from the random starting selection of a skirmish or multiplayer match are created elite. |
| Make Elite trigger action | Every object the trigger is attached to is promoted to elite. |
A crate promotes each affected object one step at a time: below rookie to rookie, rookie to veteran, then veteran to elite. Elite objects stay elite. The crate’s Data value in [Powerups] sets the number of steps. Fractions round up, so 2.5 gives three steps and 2 gives two. A value of 0 or less gives no promotion.
The other sources set the rank directly. The armory’s result depends on the infantry’s current rank.
The training time is set by IRepairRate, which also controls hospital treatment time.
What a rank changes
Section titled “What a rank changes”Promotion bonuses depend on the type’s ability lists. A veteran with no abilities gains only a rank insignia. Elite objects can also use an elite weapon and cause other objects in their cell to scatter, as described below.
Abilities
Section titled “Abilities”VeteranAbilities and EliteAbilities are comma-separated lists on each object type. Veterans use VeteranAbilities. Elites use both lists, keeping their veteran abilities after promotion. Rookie and below-rookie objects use neither list.
[MYINF] ; example InfantryTypeVeteranAbilities=FIREPOWER,ROFEliteAbilities=SELF_HEAL,FEARLESSA veteran MYINF deals more damage and reloads faster. At elite rank it also heals itself and becomes immune to fear.
Ability names are case-insensitive. The table lists all eighteen abilities and their effects.
| Token | Effect on a qualifying object |
|---|---|
FASTER | Movement speed is multiplied by VeteranSpeed plus one. Buildings have no speed to raise. |
STRONGER | Incoming damage is divided by VeteranArmor plus one. |
FIREPOWER | Weapon damage is multiplied by VeteranCombat plus one. |
SCATTER | The object scatters from incoming fire even when the owner’s units would otherwise hold position. |
ROF | Reload delay is divided by VeteranROF plus one. |
SIGHT | Sight range is multiplied by VeteranSight plus one. |
CLOAK | The object cloaks and recloaks without Cloakable=yes, and stays cloaked while immobilized. |
TIBERIUM_PROOF | Infantry take no damage from standing in Tiberium, as with TiberiumProof=yes. |
VEIN_PROOF | Veins do not damage the object, as with ImmuneToVeins=yes. |
SELF_HEAL | The object repairs itself while below its self-healing ceiling, as with SelfHealing=yes. |
EXPLODES | Death produces the violent explosion of Explodes=yes. |
RADAR_INVISIBLE | The object is kept off the local player’s radar unless a sensor contact picks it up. |
SENSORS | An adjacent enemy cloaked object shimmers, as with Sensors=yes. |
FEARLESS | Infantry accumulate no fear, as with Fearless=yes. |
C4 | Infantry attack buildings by sabotage, as with C4=yes. |
TIBERIUM_HEAL | Standing in Tiberium repairs the object, as with TiberiumHeal=yes. |
GUARD_AREA | An idle armed vehicle, and an idle human-owned infantry, takes the Guard Area mission instead of Guard. A member of a team is unaffected, and so is a computer-owned infantry, whose idle handling never reads the ability. |
CRUSHER | A vehicle crushes crushable objects and overlays, as with Crusher=yes. |
Unknown or misspelled ability names are ignored without a warning.
Setting an ability list in a later rules file replaces the earlier list. Leaving the key out keeps the earlier list. An empty assignment is ignored, so it cannot clear an existing list.
Rank multipliers
Section titled “Rank multipliers”Set the five bonuses below in rules.ini under [General]. Each applies only when the object has the matching ability:
| Setting | Applied as |
|---|---|
VeteranCombat | Damage is multiplied by the value plus one, after the house and object firepower biases. |
VeteranSpeed | Speed is multiplied by the value plus one, after the house ground-speed bias. |
VeteranSight | Sight range is multiplied by the value plus one. |
VeteranArmor | Incoming damage is divided by the value plus one. |
VeteranROF | Reload delay is divided by the value plus one. |
VeteranArmor=1 halves incoming damage, and VeteranROF=1 halves reload delay. For the other three settings, 1 doubles the affected statistic. A value of 0 gives no bonus. All five default to 1.
Sonic weapons and weapons using fire particles receive no firepower bonus. Sonic weapons also receive no reload bonus, as do weapons with an attached spark, fire, or railgun particle system. The reload bonus shortens the delay after a burst, not the gaps between its shots.
The elite weapon
Section titled “The elite weapon”At elite rank, the weapon named by Elite replaces the primary weapon. Target selection, range, reload delay, and firing all use this weapon. The secondary weapon stays unchanged. If Elite is unset, the object keeps its primary weapon.
The elite weapon uses the primary weapon’s art settings: PrimaryFireFLH, PBarrelLength, and PBarrelThickness. It fires from the same muzzle offset.
When a promotion takes effect
Section titled “When a promotion takes effect”Promotion bonuses apply the next time the object fires, takes damage, or moves. The game checks its current rank and abilities whenever it calculates those effects.
Extra sight reveals more terrain the next time the object reveals its surroundings. Promotion itself does not reveal the larger area.
Carrying rank between objects
Section titled “Carrying rank between objects”A vehicle keeps its experience when it deploys into a building, and the building passes that experience back when it undeploys. Capturing an object also preserves its rank and any abilities or elite weapon that rank grants.
Passengers who survive a destroyed transport keep their ranks. Crew created when a vehicle or building is destroyed start at rookie.
Rank display
Section titled “Rank display”Veteran and elite objects display different rank insignia beside them, even when unselected. Buildings display them too. The insignia sits farther from vehicles, aircraft, and buildings than from infantry.
Ranks are visible to allies, players spying on the owner, and observers with full map visibility. Shroud, fog, or an undetected cloak hides the insignia along with the object. The healer cross follows the same visibility rules.
The insignia uses PIPS.SHP. A below-rookie object uses the frame after the last defined pip; there is no dedicated insignia for that rank.
Related settings
16 of 16
| Key | Description | Value | When omitted |
|---|---|---|---|
ArmoryBuildingType | Admits one infantry at a time and promotes it when the servicing delay elapses. | boolean | no |
CrateRadiusglobal rules | The distance from an opened crate within which its sweeping results reach other objects, in cells. | distance (cells) | 2.5 |
EliteAircraftType, BuildingType, InfantryType, UnitType | The WeaponType an elite object fires in place of its primary. | class | none |
EliteAbilitiesAircraftType, BuildingType, InfantryType, UnitType | The abilities an object of this type gains at elite rank, on top of its veteran abilities. | abilities | (empty) |
IRepairRateglobal rules | The interval between servicing steps inside a hospital, and an armory's promotion delay. | floating point | .016 |
InitialVeteranscenarios | Creates the randomly chosen starting units of a skirmish or multiplayer match at elite rank. | boolean | no |
TrainableAircraftType, BuildingType, InfantryType, UnitType | Allows an object of this type to accumulate experience from kills and receive veterancy-crate promotions. | boolean | Context-dependent |
VeteranAbilitiesAircraftType, BuildingType, InfantryType, UnitType | The abilities an object of this type gains at veteran rank and keeps at elite. | abilities | (empty) |
VeteranArmorglobal rules | Damage taken by an object holding the STRONGER ability is divided by this value plus one. | floating point | 1 |
VeteranCapglobal rules | The highest experience total a credited kill may leave an object at. | floating point | 1 |
VeteranCombatglobal rules | Weapon damage from an object holding the firepower ability is multiplied by this value plus one. | floating point | 1 |
VeteranLevelTeamType | The rank at which a reinforcement trigger creates this team's members. | integer | 1 |
VeteranROFglobal rules | Reload delay of an object holding the rate of fire ability is divided by this value plus one. | floating point | 1 |
VeteranRatioglobal rules | The multiple of its own cost an object must destroy to earn one point of experience. | floating point | 10 |
VeteranSightglobal rules | Sight range of an object holding the sight ability is multiplied by one more than this value. | floating point | 1 |
VeteranSpeedglobal rules | Movement speed of an object holding the faster ability is multiplied by one more than this value. | floating point | 1 |
No keys match the current filters.
History
- Changed0.1.0
- Changed0.1.0
- Changed0.2.0In development
- Changed0.2.0In development