Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Clone this wiki locally
This documentation is a work in progress. If you think you can improve it, then please do!
Trait conditions were first implemented in
playtest-20170303 as a replacement for the older Actor-Upgrades system. It provides a way for certain traits to activate or deactivate other traits in order to build more complicated actor behaviours.
If a trait accepts the
RequiresCondition field (see Trait Documentation) then it can be enabled or disabled using a condition expression. The simplest condition expressions are boolean equations that combine condition variables with
&& (and) or
An example of this is the Thumper infantry in Dune 2000, which includes the following trait YAML:
GrantConditionOnDeploy: DeployedCondition: deployed Facing: 128 AllowedTerrainTypes: Sand, Spice, Dune, SpiceSand Mobile: Speed: 43 RequiresCondition: !deployed WithInfantryBody: RequiresCondition: !deployed WithSpriteBody@DEPLOYED: Sequence: thump RequiresCondition: deployed WithIdleOverlay@DEPLOYED: Sequence: thump-sand RequiresCondition: deployed AmbientSound: SoundFile: THUMPER1.WAV Interval: 60 RequiresCondition: deployed AttractsWorms: Intensity: 1000 Falloff: 0, 0, 0, 100, 100, 100, 25, 11, 6, 4, 3, 2, 1, 0 RequiresCondition: deployed
GrantConditionOnDeploy trait grants a condition named
deployed when the player clicks or uses a hotkey to deploy the actor. This condition is then used to disable
Mobile (to stop the actor from moving),
WithIdleOverlay to switch the normal infantry artwork with the stationary thumping artwork,
AmbientSound to enable the "thumping" sound, and finally
AttractsWorms to attract worms to the area.
Conditions can also be accepted from external sources (e.g. map scripts, warheads, or other actors) by adding an
ExternalCondition on the consuming actor. An example of this is the Iron Curtain in Red Alert:
^IronCurtainable default is inherited by actors that can the Iron Curtain can be applied to, and defines:
WithColoredOverlay@IRONCURTAIN: RequiresCondition: invulnerability DamageMultiplier@IRONCURTAIN: RequiresCondition: invulnerability Modifier: 0 TimedConditionBar: Condition: invulnerability ExternalCondition@INVULNERABILITY: Condition: invulnerability
ExternalCondition trait makes the actor accept the
invulnerability condition which can then be consumed by the other traits that enable the expected iron curtain effects.
The condition is granted by the
GrantExternalConditionPower trait on the
GrantExternalConditionPower@IRONCURTAIN: Icon: invuln ChargeTime: 120 Description: Invulnerability LongDesc: Makes a group of units invulnerable\nfor 20 seconds. Duration: 500 SelectTargetSpeechNotification: SelectTarget InsufficientPowerSpeechNotification: InsufficientPower BeginChargeSpeechNotification: IronCurtainCharging EndChargeSpeechNotification: IronCurtainReady DisplayRadarPing: True Condition: invulnerability OnFireSound: ironcur9.aud
TODO: Explain condition levels and other more complicated uses