Veterancy and promotion
Promotes an object through veteran and elite rank as it destroys value, unlocking per-type abilities and an elite weapon.
Each runtime instance carries a single experience figure, and its rank is read directly off that number. The four bands are exclusive:
| 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 |
Every object is created at rookie with an experience of 0. The thresholds 1 and 2 are fixed in the engine; the rules govern how fast the figure climbs, not where the boundaries lie. The figure belongs to the object and not to its type, so two objects built from the same rules section sit at whatever rank each has earned or been handed.
Among the rules and AI settings, VeteranLevel=0 is the only source of negative experience, assigning -0.25; a map’s placed-object records can also write the experience figure directly, at any value. The state costs the object nothing in combat: a below-rookie object holds no abilities, exactly like the rookie it sits under. The state shows in three places only — the insignia it draws, the veterancy crate that steps it up to rookie, and the armory, which sends it out a veteran where any other occupant would leave elite.
Earning experience
Section titled “Earning experience”Experience is credited in one place: when an object is destroyed, whatever dealt the fatal damage receives victim cost / (killer cost * VeteranRatio). Reaching veteran therefore means destroying VeteranRatio times the killer’s own cost in enemy value, and reaching elite means destroying twice that. The figure taken from each type is its Cost, not its Points. A structure that hands out a free unit has that unit’s price subtracted from its own and then added straight back here, so a kill is still worth the structure’s written price — unless the unit is priced at or above the structure, where the subtraction floors at nothing and the structure is worth the unit’s price instead. The division has no zero guard: a VeteranRatio of 0, or a killer type whose Cost is 0, divides by zero.
Only a killer whose type is Trainable=yes accumulates anything; the check is on the killer’s own type, and it gates earning alone. An object that was handed a rank some other way keeps every benefit of that rank whether or not its type is trainable. BuildingTypes start untrainable and must set the key explicitly to earn from their own kills.
The house that lost the object also tests whether it considers the killer allied. An allied killer receives no experience, while the remaining score, loss, and trigger bookkeeping for the destroyed object still runs.
A killer is credited separately for each occupant that dies with a transport it destroys, and a vehicle that crushes something is credited as that object’s killer.
Nothing decays experience and nothing resets it on ownership change, so a rank is held until something explicitly reassigns it.
The experience ceiling
Section titled “The experience ceiling”Every credited kill clamps the result to VeteranCap after adding to it. The clamp runs only on this path — the promotion sources below write a rank directly and ignore the ceiling.
Promotion without kills
Section titled “Promotion without kills”Five settings-driven paths set a rank with no experience earned, and a map’s placed-object records can write an experience figure directly besides. None of them consults VeteranCap or the kill formula. The veterancy crate alone consults Trainable; the other four settings-driven paths do not.
| 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 [Powerups] data field says. |
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 names. |
InitialVeteran=yes | The units and infantry drawn from the random starting selection of a skirmish or multiplayer match are created elite. |
The crate is the only path that steps a rank rather than assigning one: it lifts a below-rookie object to rookie, a rookie to veteran, and a veteran to elite, and leaves an elite where it is. The other four assign a rank outright — three write a fixed rank over whatever the object was carrying, and the armory picks between veteran and elite by the occupant that walked in.
The armory delay comes from IRepairRate, which the hospital shares.
What a rank changes
Section titled “What a rank changes”Rank by itself changes almost nothing. Except for the elite weapon and the cell-wide scatter noted below, every benefit is gated on an ability, and the rank only decides which of the type’s two ability lists is consulted. A veteran of a type that names no abilities gains a rank insignia and nothing else.
Abilities
Section titled “Abilities”Each object type carries two ability sets, VeteranAbilities and EliteAbilities, each a comma-separated list of tokens. A veteran draws on VeteranAbilities. An elite draws on both lists together, so an ability named in VeteranAbilities continues to apply after the second promotion. Nothing below veteran holds any ability at all, and EliteAbilities is never consulted below elite rank.
[MYINF] ; example InfantryTypeVeteranAbilities=FIREPOWER,ROFEliteAbilities=SELF_HEAL,FEARLESSA veteran MYINF hits harder and reloads faster. An elite one keeps both of those and adds self-repair and immunity to fear.
The eighteen accepted tokens are matched without regard to letter case, and the table gives each one’s effect on an object that holds it. They fall into three kinds: ten hand the object a flag its type could have carried from the start, five scale a figure from the rules, and SCATTER, RADAR_INVISIBLE and GUARD_AREA change behavior with no rules figure behind them.
| 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 at or below the yellow health threshold, 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. |
An unrecognized token is discarded without complaint, so a misspelling produces a rank with fewer benefits and no diagnostic.
An ability list replaces rather than merges: a later rules layer that carries the key starts from an empty set and keeps only what it names. Omitting the key in that layer leaves the earlier list in force — as does assigning an empty value, which is discarded when the file is read, so a list cannot be cleared once set.
Rank multipliers
Section titled “Rank multipliers”Each figure is fetched at the moment the statistic is needed, and each states a fraction to add rather than a finished multiplier:
| 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 and VeteranROF are divisors, so raising them lowers the number they act on: 1 halves damage taken and halves the reload delay, while 0 leaves both untouched. The other three are multipliers, where 1 doubles the statistic and 0 leaves it untouched. All five default to 1.
A sonic weapon and a weapon that fires through the fire particle system never receive the firepower bonus, because their damage figure is zeroed before the veteran step is reached. The reload bonus is skipped on a sonic weapon, and on a weapon whose spark, fire, or railgun particle system is attached; within a burst it is skipped as well, so only the delay that follows the last shot of a burst is shortened.
The elite weapon
Section titled “The elite weapon”An elite object fires the WeaponType named by Elite wherever its primary weapon would otherwise be used — target selection, range tests, reload delay, and the shot itself all resolve through the substituted weapon slot. The secondary weapon is never swapped, and a veteran gets no swap at all. A type that leaves Elite unset falls back to its primary, so the substitution is invisible on types that do not define one.
The elite weapon slot reuses the primary’s art keys, PrimaryFireFLH, PBarrelLength, and PBarrelThickness, so the elite weapon fires from the same muzzle offset as the weapon it replaces.
When a promotion takes effect
Section titled “When a promotion takes effect”Nothing about a rank is cached. Each multiplier is fetched from the rules and each ability list from the type at the moment it is needed, so a promotion applies from the next shot, the next damage event, or the next movement step.
Sight is the exception. The wider radius is computed inside the routine that reveals terrain, so a promoted object’s revealed area grows only when it next looks, not at the moment of promotion.
Carrying rank between objects
Section titled “Carrying rank between objects”Deploying carries experience across in both directions: a construction vehicle that deploys hands its experience to the building it becomes, and a building that undeploys hands it back to the vehicle. Change of ownership leaves experience untouched, so a captured building keeps the rank it was carrying, along with the abilities and elite weapon that rank unlocks.
Passengers that get clear of a wrecked transport are the same objects they were and keep their own ranks. The crew that escapes a destroyed vehicle or building is a freshly created infantry object and starts at rookie.
Rank display
Section titled “Rank display”A veteran and an elite each draw their own insignia from the hard-coded PIPS.SHP, placed beside the object and pushed further out for anything that is not infantry. The insignia is drawn with the object’s condition indicator and only for a viewer allied to its owner or spying on that house, so an enemy’s ranks stay hidden. A building that acquired a rank by deploying draws one as well. An object below rookie draws the frame immediately after the last named pip rather than an insignia designed for that state.
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 area 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 | Unchanged |
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 armor 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 every member created for this team starts at. | 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 this value plus one. | floating point | 1 |
VeteranSpeedglobal rules | Movement speed of an object holding the faster ability is multiplied by this value plus one. | floating point | 1 |
No keys match the current filters.
History
- Changed0.1.0In development
- Changed0.1.0In development