新增或增强的逻辑

此页面列出了所有火卫一引入的新逻辑或扩展逻辑。

新类型/游戏内实体

自定义辐射类型

image Mixing different radiation types

  • Any weapon can now have a custom radiation type. More details on radiation here.

  • There are several new properties available to all radiation types.

    • RadApplicationDelay.Building can be set to value higher than 0 to allow radiation to damage buildings.

    • RadSiteWarhead.Detonate can be set to make RadSiteWarhead detonate on affected objects rather than only be used to dealt direct damage. This enables most Warhead effects, display of animations etc.

    • RadHasOwner, if set to true, makes damage dealt by the radiation count as having been dealt by the house that fired the projectile that created the radiation field. This means that Warhead controls such as AffectsAllies will be respected and any units killed will count towards that player’s destroyed units count.

    • RadHasInvoker, if set to true, makes the damage dealt by the radiation count as having been dealt by the TechnoType (the ‘invoker’) that fired the projectile that created the radiation field. In addition to the effects of RadHasOwner, this will also grant experience from units killed by the radiation to the invoker. Note that if the invoker dies at any point during the radiation’s lifetime it continues to behave as if not having an invoker.

  • By default UseGlobalRadApplicationDelay is set to true. This makes game always use RadApplicationDelay and RadApplicationDelay.Building from [Radiation] rather than specific radiation types. This is a performance-optimizing measure that should be disabled if a radiation type declares different application delay.

rulesmd.ini中:

[RadiationTypes]
0=SOMERADTYPE

[Radiation]
UseGlobalRadApplicationDelay=true  ; boolean

[SOMEWEAPON]                       ; WeaponType
RadType=Radiation                  ; RadType to use instead of default of [Radiation]

[SOMERADTYPE]                      ; RadType
RadDurationMultiple=1              ; integer
RadApplicationDelay=16             ; integer
RadApplicationDelay.Building=0     ; integer
RadLevelMax=500                    ; integer
RadLevelDelay=90                   ; integer
RadLightDelay=90                   ; integer
RadLevelFactor=0.2                 ; floating point value
RadLightFactor=0.1                 ; floating point value
RadTintFactor=1.0                  ; floating point value
RadColor=0,255,0                   ; integer - Red,Green,Blue
RadSiteWarhead=RadSite             ; WarheadType
RadSiteWarhead.Detonate=false      ; boolean
RadHasOwner=false                  ; boolean
RadHasInvoker=false                ; boolean

激光尾迹

激光尾迹 Laser trails used in Rise of the East

  • 单位,抛射体和VXL碎片现在可以拥有多条不同透明度、厚度和颜色的彩色尾迹,这些尾迹是由引擎绘制的。

  • 单位,抛射体和VXL碎片的尾迹可以设置其每一条尾迹的类型,以及相对车体或炮塔的FHL偏移。

警告

激光尾迹非常消耗资源!由于游戏不使用GPU,因此如果设置了大量激光尾迹,即使在很好的电脑上也会迅速降低FPS。你可以通过以下方式减少这种影响:

  • 不要在单位和抛射体上放置太多激光尾迹;

  • 在尾迹不过于参差不齐的情况下设置尽可能高的SegmentLength值。

  • 尽量使尾迹长度最小(可以通过设置较小的FadeDuration值实现)。

artmd.ini中:

[LaserTrailTypes]
0=SOMETRAIL

[SOMETRAIL]                   ; LaserTrailType name
IsHouseColor=false            ; boolean
Color=255,0,0                 ; integer - Red,Green,Blue
FadeDuration=64               ; integer
Thickness=4                   ; integer
SegmentLength=128             ; integer, minimal length of each trail segment
IgnoreVertical=false          ; boolean, whether the trail won't be drawn on vertical movement
IsIntense=false               ; boolean, whether the laser is "supported" (AKA prism forwarding)
CloakVisible=false            ; boolean, whether the laser is visible when the attached unit is cloaked

[SOMEPROJECTILE]              ; BulletType Image
LaserTrail.Types=SOMETRAIL    ; list of LaserTrailTypes

[SOMETECHNO]                  ; TechnoType Image
LaserTrailN.Type=SOMETRAIL    ; LaserTrailType
LaserTrailN.FLH=0,0,0         ; integer - Forward,Lateral,Height
LaserTrailN.IsOnTurret=false  ; boolean, whether the trail origin is turret
; where N = 0, 1, 2, ...

rulesmd.ini中:

[SOMEVOXELANIM]             ; VoxelAnim
LaserTrail.Types=SOMETRAIL  ; list of LaserTrailTypes

护盾

image Buildings, Infantries and Vehicles with Shield in Fantasy ADVENTURE

rulesmd.ini中:

[AudioVisual]
Shield.ConditionYellow=                     ; floating point value, percents or absolute
Shield.ConditionRed=                        ; floating point value, percents or absolute
Pips.Shield=-1,-1,-1                        ; integer, frames of pips.shp (zero-based) for Green, Yellow, Red
Pips.Shield.Building=-1,-1,-1               ; integer, frames of pips.shp (zero-based) for Green, Yellow, Red
Pips.Shield.Background=PIPBRD.SHP           ; filename - including the .shp/.pcx extension
Pips.Shield.Building.Empty=0                ; integer, frame of pips.shp (zero-based) for empty building pip

[ShieldTypes]
0=SOMESHIELDTYPE

[SOMESHIELDTYPE]                            ; ShieldType name
Strength=0                                  ; integer
InitialStrength=0                           ; integer
ConditionYellow=                            ; floating point value, percents or absolute
ConditionRed=                               ; floating point value, percents or absolute
Armor=none                                  ; ArmorType
InheritArmorFromTechno=false                ; boolean
Powered=false                               ; boolean
AbsorbOverDamage=false                      ; boolean
SelfHealing=0.0                             ; floating point value, percents or absolute
SelfHealing.Rate=0.0                        ; floating point value, ingame minutes
SelfHealing.RestartInCombat=true            ; boolean
SelfHealing.RestartInCombatDelay=0          ; integer, game frames
Respawn=0.0                                 ; floating point value, percents or absolute
Respawn.Rate=0.0                            ; floating point value, ingame minutes
BracketDelta=0                              ; integer - pixels
Pips=-1,-1,-1                               ; integer, frames of pips.shp (zero-based) for Green, Yellow, Red
Pips.Building=-1,-1,-1                      ; integer, frames of pips.shp (zero-based) for Green, Yellow, Red
Pips.Background=                            ; filename - including the .shp/.pcx extension
Pips.Building.Empty=                        ; integer, frame of pips.shp (zero-based) for empty building pip
IdleAnim=                                   ; Animation
IdleAnim.ConditionYellow=                   ; Animation
IdleAnim.ConditionRed=                      ; Animation
IdleAnimDamaged=                            ; Animation
IdleAnimDamaged.ConditionYellow=            ; Animation
IdleAnimDamaged.ConditionRed=               ; Animation
IdleAnim.OfflineAction=Hides                ; AttachedAnimFlag (None, Hides, Temporal, Paused or PausedTemporal)
IdleAnim.TemporalAction=Hides               ; AttachedAnimFlag (None, Hides, Temporal, Paused or PausedTemporal)
BreakAnim=                                  ; Animation
HitAnim=                                    ; Animation
BreakWeapon=                                ; WeaponType
AbsorbPercent=1.0                           ; floating point value
PassPercent=0.0                             ; floating point value
ReceivedDamage.Minimum=-2147483648          ; integer
ReceivedDamage.Maximum=2147483647           ; integer
AllowTransfer=                              ; boolean
ImmuneToBerserk=no                          ; boolean
ImmuneToCrit=no                             ; boolean

[SOMETECHNO]                                ; TechnoType
ShieldType=SOMESHIELDTYPE                   ; ShieldType; none by default

[SOMEWARHEAD]                               ; WarheadType
Shield.Penetrate=false                      ; boolean
Shield.Break=false                          ; boolean
Shield.BreakAnim=                           ; Animation
Shield.HitAnim=                             ; Animation
Shield.BreakWeapon=                         ; WeaponType
Shield.AbsorbPercent=                       ; floating point value
Shield.PassPercent=                         ; floating point value
Shield.ReceivedDamage.Minimum=              ; integer
Shield.ReceivedDamage.Maximum=              ; integer
Shield.Respawn.Duration=0                   ; integer, game frames
Shield.Respawn.Amount=0.0                   ; floating point value, percents or absolute
Shield.Respawn.Rate=-1.0                    ; floating point value, ingame minutes
Shield.Respawn.RestartTimer=false           ; boolean
Shield.SelfHealing.Duration=0               ; integer, game frames
Shield.SelfHealing.Amount=0.0               ; floating point value, percents or absolute
Shield.SelfHealing.Rate=-1.0                ; floating point value, ingame minutes
Shield.SelfHealing.RestartInCombat=         ; boolean
Shield.SelfHealing.RestartInCombatDelay=-1  ; integer, game frames
Shield.SelfHealing.RestartTimer=false       ; boolean
Shield.AffectTypes=                         ; List of ShieldType names
Shield.Penetrate.Types=                     ; List of ShieldType names
Shield.Break.Types=                         ; List of ShieldType names
Shield.Respawn.Types=                       ; List of ShieldType names
Shield.SelfHealing.Types=                   ; List of ShieldType names
Shield.AttachTypes=                         ; List of ShieldType names
Shield.RemoveTypes=                         ; List of ShieldType names
Shield.ReplaceOnly=false                    ; boolean
Shield.ReplaceNonRespawning=false           ; boolean
Shield.MinimumReplaceDelay=0                ; integer, game frames
Shield.InheritStateOnReplace=false          ; boolean
  • 所有建筑与单位现在都可以拥有护盾作为独立的(即可指定单独的ArmorStrength的)第二血条。

    • Shield will not take damage if the TechnoType is under effects of Temporal warhead, is Iron Curtained / Force Shielded, has Immune=true or if it has TypeImmune=true and the damage source is another instance of same TechnoType belonging to same house.

    • 负伤害将恢复护盾,除非护盾已经被击碎。如果护盾不满,全部的负伤害都会被护盾吸收。

      • Negative damage weapons will consider targets with active, but not at full health shields in need of healing / repairing unless the Warhead has Shield.Penetrate=true, in which case only object health is considered.

    • When a TechnoType has an unbroken shield, [ShieldType]->Armor will replace [TechnoType]->Armor for targeting and damage calculation purposes.

      • InheritArmorFromTechno can be set to true to override this so that [TechnoType]->Armor is used even if shield is active and [ShieldType]->Armor is ignored.

    • InitialStrength can be used to set a different initial strength value from maximum.

    • ConditionYellow and ConditionRed can be used to set the thresholds for shield damage states, defaulting to [AudioVisual] -> Shield.ConditionYellow & Shield.ConditionRed respectively which in turn default to just ConditionYellow & ConditionRed.

  • 当通过DeploysIntoUndeploysInto模式转换时,护盾会按剩余百分比进行传递。如果目标单位不具备护盾,那么原始单位的护盾数据将会保存,直到变回来再恢复。

    • 也兼容Ares的Convert.*

  • Powered控制护盾是否在单位无电力支持或被EMP时仍旧生效。

    • 注意,如果单位本身Powered=false,那么护盾也不会因断电而失效。

  • AbsorbOverDamage决定护盾是否会吸收超量伤害。

  • SelfHealingRespawn遵循以下设定:0.0将关闭功能,1%到100%为以百分比恢复/重生护盾,其他数字为以固定值直接恢复/重生护盾。此外,SelfHealing支持负数以扣除护盾。

    • 如果你想让护盾每次只恢复1HP,目前需要将该标签的值设置在1到2之间的数,如1.1

    • If SelfHealing.RestartInCombat is set, self-healing timer pauses and then resumes after SelfHealing.RestartInCombatDelay frames have passed when the shield gets damaged.

  • SelfHealing.RateRespawn.Rate遵循以下设定:0.0立即恢复护盾,其他值以游戏内分钟为单位恢复/重生护盾。

  • 如果设置了IdleAnim,那么护盾存在的时候就会自动重复播放此动画。

    • IdleAnim.ConditionYellow and IdleAnim.ConditionRed can be used to set different animations for when shield health is at or below the percentage defined in [AudioVisual]->ConditionYellow/ConditionRed, respectively. If IdleAnim.ConditionRed is not set it falls back to IdleAnim.ConditionYellow, which in turn falls back to IdleAnim.

    • IdleAnimDamaged, IdleAnimDamaged.ConditionYellow and IdleAnimDamaged.ConditionRed are used in an identical manner, but only when health of the object the shield is attached to is at or below [AudioVisual]->ConditionYellow. Follows similar fallback sequence to regular IdleAnim variants and if none are set, falls back to the regular IdleAnim or variants thereof.

    • Bouncer=true and IsMeteor=true animations can exhibit irregular behaviour when used as IdleAnim and should be avoided.

  • IdleAnim.OfflineAction决定在断电时空闲动画的动作。

  • IdleAnim.TemporalAction决定在被超时空时空闲动画的动作。

  • 如果设置了BreakAnim,那么护盾被击碎时将播放此动画。

  • 如果设置了HitAnim,那么护盾被攻击时将播放此动画,类似铁幕的WeaponNullifyAnim

  • 如果设置了BreakkWeapon,那么护盾被击碎时将释放此武器。

  • AbsorbPercent决定此护盾吸收伤害的比例,默认1.0,即吸收全部伤害。

  • PassPercent决定此护盾的穿透比例(即不会被吸收的伤害),穿透伤害将直接作用在单位身上。默认0.0,即不穿透。

  • ReceivedDamage.Minimum & ReceivedDamage.Maximum control the minimum and maximum amount of damage that can be dealt to shield in a single hit. This is applied after armor type and AbsorbPercent adjustments. If AbsorbOverDamage=false, the residual damage dealt to the TechnoType is still based on the original damage before the clamping to the range.

  • AllowTransfer controls whether or not the shield can be transferred if the TechnoType changes (such as (Un)DeploysInto or Ares type conversion). If not set, defaults to true if shield was attached via Shield.AttachTypes, otherwise false.

  • ImmuneToBerserk gives the immunity against Psychedelic=yes warhead. Otherwise the berserk effect penetrates shields by default. Note that this shouldn’t prevent the unit from targeting at the shielded object. Versus.shieldArmor=0% is still required in this case.

  • A TechnoType with a shield will show its shield Strength. An empty shield strength bar will be left after destroyed if it is respawnable. Several customizations are available for the shield strength pips.

    • By default, buildings use the 6th frame of pips.shp to display the shield strength while others use the 17th frame.

    • Pips.Shield can be used to specify which pip frame should be used as shield strength. If only 1 digit is set, then it will always display that frame, or if 3 digits are set, it will use those if shield’s current strength is at or below ConditionYellow and ConditionRed, respectively. Pips.Shield.Building is used for BuildingTypes. -1 as value will use the default frame, whether it is fallback to first value or the aforementioned hardcoded defaults.

    • Pips.Shield.Background can be used to set the background or ‘frame’ for non-building pips, which defaults to pipbrd.shp. 4th frame is used to display an infantry’s shield strength and the 3th frame for other units, or 2nd and 1st respectively if not enough frames are available.

    • Pips.Shield.Building.Empty can be used to set the frame of pips.shp displayed for empty building strength pips, defaults to 1st frame of pips.shp.

    • The above customizations are also available on per ShieldType basis, e.g [ShieldType]->Pips instead of [AudioVisual]->Pips.Shield and so on. ShieldType settings take precedence over the global ones, but will fall back to them if not set.

    • BracketDelta can be used as additional vertical offset (negative shifts it up) for shield strength bar. Much like PixelSelectionBracketDelta, it is not applied on buildings.

  • 弹头与护盾的新交互选项。

    • Shield.Penetrate允许弹头无视护盾,将直接伤害单位本身。并且在瞄准时也会无视护盾。

    • Shield.Break允许弹头在伤害结算前一击击碎护盾。

    • Shield.BreakAnim将会代替被此弹头击碎的护盾本身的BreakAnim播放。

    • Shield.HitAnim将会代替被此弹头击中的护盾本身的HitAnim播放。

    • Shield.BreakWeapon将会代替被此弹头击碎的护盾本身的BreakWeapon引爆。

    • Shield.AbsorbPercent将会代替被此弹头击中的护盾的AbsorbPercent

    • Shield.PassPercent将会代替被此弹头击中的护盾的PassPercent

    • Shield.ReceivedDamage.Minimum & Shield.ReceivedDamage.Maximum override the values set in in the ShieldType that is being damaged.

    • Shield.Respawn.Rate & Shield.Respawn.Amount override ShieldType Respawn.Rate and Respawn.Amount for duration of Shield.Respawn.Duration amount of frames. Negative rate & zero or lower amount default to ShieldType values. If Shield.Respawn.RestartTimer is set, currently running shield respawn timer is reset, otherwise the timer’s duration is adjusted in proportion to the new Shield.Respawn.Rate (e.g timer will be same percentage through before and after) without restarting the timer. If the effect expires while respawn timer is running, remaining time is adjusted to proportionally match ShieldType Respawn.Rate. Re-applying the effect resets the duration to Shield.Respawn.Duration

    • Shield.SelfHealing.Rate & Shield.SelfHealing.Amount override ShieldType SelfHealing.Rate and SelfHealing.Amount for duration of Shield.SelfHealing.Duration amount of frames. Negative rate & zero or lower amount default to ShieldType values. If Shield.SelfHealing.RestartTimer is set, currently running self-healing timer is restarted, otherwise timer’s duration is adjusted in proportion to the new Shield.SelfHealing.Rate (e.g timer will be same percentage through before and after) without restarting the timer. If the effect expires while self-healing timer is running, remaining time is adjusted to proportionally match ShieldType SelfHealing.Rate. Re-applying the effect resets the duration to Shield.SelfHealing.Duration.

      • Additionally Shield.SelfHealing.RestartInCombat & Shield.SelfHealing.RestartInCombatDelay can be used to override ShieldType settings.

    • Shield.AffectTypes allows listing which ShieldTypes can be affected by any of the effects listed above. If none are listed, all ShieldTypes are affected.

      • Shield.AffectTypes can be overriden for specific shield interactions by using keys Shield.Penetrate.Types, Shield.Break.Types, Shield.Respawn.Types and Shield.SelfHealing.Types respectively.

    • Shield.AttachTypesShield.RemoveTypes允许分别列出被此弹头影响的单位附加或移除的护盾。通常只有第一个Shield.AttachTypes被应用。

      • 如果设置了Shield.ReplaceOnlyShield.AttachTypes中的护盾会按位置替换中Shield.RemoveTypes的护盾。如果前者少于后者,那么多余的被移除的护盾被前者的最后一个护盾替换。

      • 如果设置了Shield.ReplaceNonRespawningShield.AttachTypes中的护盾会替换已被击破且不可再生的护盾。

      • Shield.MinimumReplaceDelay可被用来控制护盾在被击破后多久才能被替换。如果已过帧数不足,就不会被替换。

      • 如果设置了Shield.InheritStateOnReplace,替换护盾后诸如血量,是否被击破等属性将会继承。自我恢复和重生时间不会继承,总是重设。

动画

动画生成单位

image

  • Animations can now create (or “convert” to) vehicles when they end via CreateUnit.

    • CreateUnit.Owner determines which house will own the created VehicleType. This only works as expected if the animation has owner set.

      • Vehicle destroy animations, animations from Warhead AnimList/SplashList and map trigger action 41 Play Anim At will have the owner set correctly.

      • CreateUnit.RemapAnim, if set to true, will cause the animation to be drawn in unit palette and remappable to owner’s team color.

    • CreateUnit.Mission determines the initial mission of the created VehicleType.

    • CreateUnit.Facing determines the initial facing of created VehicleType.

      • CreateUnit.RandomFacing, if set to true, makes it so that a random facing is picked instead.

      • CreateUnit.InheritFacings and CreateUnit.InheritTurretFacings inherit facings for vehicle body and turret respectively from the destroyed vehicle if the animation is a vehicle destroy animation. InheritTurretFacings does not work with jumpjet vehicles due to technical constraints.

    • CreateUnit.AlwaysSpawnOnGround, if set to true, ensures the vehicle will be created on the cell at ground level even if animation is in air.

    • CreateUnit.ConsiderPathfinding, if set to true, will consider whether or not the cell where the animation is located is occupied by other objects or impassable to the vehicle being created and will attempt to find a nearby cell that is not. Otherwise the vehicle will be created at the animation’s location despite these obstacles if possible.

    • CreateUnit.SpawnAnim can be used to play another animation at created unit’s location after it has appeared. This animation has same owner and invoker as the parent animation.

artmd.ini中:

[SOMEANIM]                             ; AnimationType
CreateUnit=                            ; VehicleType
CreateUnit.Owner=Victim                ; Owner house kind, Invoker/Killer/Victim/Civilian/Special/Neutral/Random
CreateUnit.RemapAnim=false             ; boolean
CreateUnit.Mission=Guard               ; MissionType
CreateUnit.Facing=0                    ; Direction type (integers from 0-255)
CreateUnit.RandomFacing=true           ; boolean
CreateUnit.InheritFacings=false        ; boolean
CreateUnit.InheritTurretFacings=false  ; boolean
CreateUnit.AlwaysSpawnOnGround=false   ; boolean
CreateUnit.ConsiderPathfinding=false   ; boolean
CreateUnit.SpawnAnim=                  ; Animation

注解

Due to technical constraints, infantry death animations including Ares’ InfDeathAnim cannot have CreateUnit.Owner correctly applied to them. You can use Ares’ MakeInfantryOwner as a workaround instead, which should function for this use-case even without MakeInfantry set.

Attached particle system

  • It is now possible to attach a particle system to an animation. Only particle systems with BehavesLike=Smoke are supported. This works similarly to the identically named key on VoxelAnims.

    • On animations with Next, the particle system will be deleted when the next animation starts playing and new one created in its stead if the Next animation defines a different particle system.

artmd.ini中:

[SOMEANIM]       ; AnimationType
AttachedSystem=  ; ParticleSystem

Play sound as a detached sound event

  • It is now possible for animation to play a sound that is not attached to an audio event handler by using DetachedReport. By default animation Report/StartSound is played by an audio event handler, which allows the sound to loop and play at correct location even if it changes after its initial creation. This can also cause issues with animations that chain different types through Next, as the audio event handler resets when the animation restarts.

artmd.ini中:

[SOMEANIM]       ; AnimationType
DetachedReport=  ; sound entry

建筑

扩展建筑升级逻辑

image Upgrading own and allied Power Plants in CnC: Final War

注解

Due to technical limitations, with Ares, upgrades placed through PowersUp.Buildings instead of PowersUpBuilding (note that internally PowersUpBuilding is set to first entry of PowersUp.Buildings if former is not set but latter is) DO NOT satisfy prerequisites. Suggested workaround is to use the upgrades to provide Superweapons that spawn in buildings via LimboDelivery logic to function as prerequisites, which are destroyed by another SW that becomes available if parent building is gone and so on.

  • Building upgrades now can be placed on own buildings, on allied buildings and/or on enemy buildings. These three owners can be specified by PowersUp.Owner. When upgrade is placed on building, it automatically changes it’s owner to match the building’s owner.

  • One upgrade can now be applied to multiple different types of buildings specified by PowersUp.Buildings.

    • Ares引入的建造限制检查对此逻辑兼容。

rulesmd.ini中:

[UPGRADENAME]       ; BuildingType
PowersUp.Owner=Self ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
PowersUp.Buildings= ; list of BuildingTypes

电厂增幅逻辑

  • 存在的时候会增幅电厂产生的电力。

    • 增幅建筑变卖或摧毁后,增幅电量就会消失。

rulesmd.ini中:

[SOMEBUILDING]                     ; BuildingType
PowerPlantEnhancer.PowerPlants=    ; list of BuildingTypes
PowerPlantEnhancer.Amount=0        ; integer
PowerPlantEnhancer.Factor=1.0      ; floating point value

Spy Effects

  • Additional espionage bonuses can be toggled with SpyEffect.Custom.

    • SpyEffect.VictimSuperWeapon instantly launches a Super Weapon for the owner of the infiltrated building at building’s coordinates.

    • SpyEffect.InfiltratorSuperWeapon behaves the same as above, with the Super Weapon’s owner being the owner of the spying unit.

rulesmd.ini中:

[SOMEBUILDING]                     ; BuildingType
SpyEffect.Custom=false            ; boolean
SpyEffect.VictimSuperWeapon=      ; SuperWeaponType
SpyEffect.InfiltratorSuperWeapon= ; SuperWeaponType

步兵

Customizable FLH When Infantry Is Prone Or Deployed

artmd.ini中:

[SOMEINFANTRY]             ; InfantryType
PronePrimaryFireFLH=       ; integer - Forward,Lateral,Height
ProneSecondaryFireFLH=     ; integer - Forward,Lateral,Height
DeployedPrimaryFireFLH=    ; integer - Forward,Lateral,Height
DeployedSecondaryFireFLH=  ; integer - Forward,Lateral,Height

步兵类型拥有独立的默认伪装

  • 每种步兵单位现在都可以有它自己的“DefaultDisguise”(默认伪装)。

    • 此标签的优先级高于Ares中为Side设定的“DefaultDisguise”。

rulesmd.ini中:

[SOMEINFANTRY]      ; InfantryType
DefaultDisguise=E2  ; InfantryType

NotHuman步兵随机死亡动画

  • NotHuman=yes的步兵现在可以播放在Die1Die5中随机播放死亡动画序列,而非只有硬编码的Die1

    • 在启用此功能之前不要忘记调整步兵动画序列,否则它会播放不可见的动画序列。

rulesmd.ini中:

[SOMEINFANTRY]                    ; InfantryType
NotHuman.RandomDeathSequence=yes  ; boolean

分享弹药

  • OpenTopped=yesAmmo.Shared=yes的运输载具将会将其弹药分享给有Ammo.Shared=yes的乘客。此外,载具也可以筛选仅和自身拥有相同的Ammo.Shared.Group=<integer>的单位才可以分享弹药,忽略不同组的单位。

  • 拥有Ammo.Shared.Group=-1的载具会分享其弹药给所有Ammo.Shared=yes的乘客,无视组别设置。

  • 载具必须拥有弹药且可以恢复弹药。

rulesmd.ini中:

[SOMETECHNO1]         ; TechnoType, transport with OpenTopped=yes
Ammo.Shared=no        ; boolean
Ammo.Shared.Group=-1  ; integer

[SOMETECHNO2]         ; TechnoType, passenger
Ammo.Shared=no        ; boolean
Ammo.Shared.Group=-1  ; integer

Slaves’ house decision customization when owner is killed

  • You can now decide the slaves’ house when the corresponding slave miner is killed using Slaved.OwnerWhenMasterKilled:

    • suicide: Kill each slave if the slave miner is killed.

    • master: Free the slaves but keep the house of the slave unchanged.

    • neutral: The slaves belong to civilian house.

    • killer: Free the slaves and give them to the house of the slave miner’s killer. (vanilla behavior)

In rulesmd.ini

[SOMEINFANTRY]                       ; Slave type
Slaved=yes
Slaved.OwnerWhenMasterKilled=killer  ; enumeration (suicide | master | killer | neutral)

Customizable SlavesFreeSound

  • SlavesFreeSound is now dehardcoded from AudioVisual and can be set individually for each enslavable infantry type.

In rulesmd.ini

[SOMEINFANTRY]  ; Slave type
SlavesFreeSound=      ; sound entry

抛射体

拦截抛射体

image Interception logic used in Tiberium Crisis mod

  • Projectiles can now be made interceptable by certain TechnoTypes by setting Interceptable=true on them. The TechnoType scans for interceptable projectiles within a range if it has no other target and will use one of its weapons to shoot at them. Projectiles can define Armor and Strength. Weapons that cannot target the projectile’s armor type will not attempt to intercept it. On interception, if the projectile has Armor set, an amount equaling to the intercepting weapon’s Damage adjusted by Warhead Verses and the TechnoType’s firepower multipliers is deducted from the projectile’s current strength. Regardless of if the current projectile strength was reduced or not, if it sits at 0 or below after interception, the projectile is detonated.

    • Interceptor.Weapon determines the weapon (0 = Primary, 1 = Secondary) to be used for intercepting projectiles.

      • The interceptor weapon may need AG and/or AA set to true on its projectile to be able to target projectiles depending on their elevation from ground. If you don’t set those then the weapon won’t be able to target low-flying or high-flying projectiles respectively.

    • Interceptor.CanTargetHouses controls which houses the projectiles (or rather their firers) can belong to be eligible for interception.

    • Interceptor.GuardRange (and Interceptor.(Rookie|Veteran|EliteGuardRange) is maximum range of the unit to intercept projectile. The unit weapon range will limit the unit interception range though.

    • Interceptor.MinimumGuardRange (and Interceptor.(Rookie|Veteran|EliteMinimumGuardRange) is the minimum range of the unit to intercept projectile. Any projectile under this range will not be intercepted.

    • Interceptable.DeleteOnIntercept determines whether or not the projectile will simply be deleted on detonation upon interception, or if it will properly detonate. Will be overridden by Interceptor.DeleteOnIntercept setting on the interceptor.

    • Interceptable.WeaponOverride can be set to a WeaponType that will be used to override characteristics such as Damage and Warhead of the current projectile for detonation after interception. Will be overridden by Interceptor.WeaponOverride setting on the interceptor.

      • On interceptors, Interceptor.WeaponReplaceProjectile can be set to true to make Interceptor.WeaponOverride also replace the intercepted projectile’s type (including Image and other projectile characteristics) and Speed with its own. Does not replace particle systems (AttachedSystem, Ares feature).

      • On interceptors, Interceptor.WeaponCumulativeDamage can be set to true to make Damage from Interceptor.WeaponOverride weapon be added on the projectile’s damage rather than override it.

    • Interceptor.KeepIntact can be set to true to allow intercepted projectiles to continue traveling as if they were not intercepted, but effects such as Interceptor.WeaponOverride will still be applied.

rulesmd.ini中:

[SOMETECHNO]                               ; TechnoType
Interceptor=false                          ; boolean
Interceptor.Weapon=0                       ; integer, weapon slot index (0 or 1)
Interceptor.CanTargetHouses=enemies        ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
Interceptor.GuardRange=0.0                 ; floating point value
Interceptor.VeteranGuardRange=             ; floating point value
Interceptor.EliteGuardRange=               ; floating point value
Interceptor.MinimumGuardRange=0.0          ; floating point value
Interceptor.VeteranMinimumGuardRange=      ; floating point value
Interceptor.EliteMinimumGuardRange=        ; floating point value
Interceptor.DeleteOnIntercept=false        ; boolean
Interceptor.WeaponOverride=                ; WeaponType
Interceptor.WeaponReplaceProjectile=false  ; boolean
Interceptor.WeaponCumulativeDamage=false   ; boolean
Interceptor.KeepIntact=false               ; boolean

[SOMEPROJECTILE] ; Projectile
Interceptable=false                    ; boolean
Interceptable.DeleteOnIntercept=false  ; boolean
Interceptable.WeaponOverride=          ; WeaponType
Strength=0                             ; integer
Armor=                                 ; ArmorType

注解

Currently interceptor weapons with projectiles that do not have Inviso=true will be unable to intercept projectiles if the firer of the interceptor weapon dies before the interceptor weapon projectile reaches its target. This may change in future.

抛射体轨迹

  • 抛射体现在可以用几种自定义轨迹。

    • Trajectory should not be combined with original game’s projectile trajectory logics (Arcing, ROT, Vertical or Inviso). Attempt to do so will result in the other logics being disabled and a warning being written to log file.

    • Initial speed of the projectile is defined by Trajectory.Speed, which unlike Speed used by ROT > 0 projectiles is defined on projectile not weapon.

    rulesmd.ini中:

[SOMEPROJECTILE]        ; Projectile
Trajectory.Speed=100.0  ; floating point value

直线轨迹

Straigh trajectory blasters Straight trajectory used to make blasters in a private mod by @brsajo#9745

  • 不言自明,是直线射击的轨迹。

    • Trajectory.Straight.DetonationDistance controls the maximum distance in cells from intended target (checked at start of each game frame, before the projectile moves) at which the projectile will be forced to detonate. Set to 0 to disable forced detonation (note that this can cause the projectile to overshoot the target).

    • Trajectory.Straight.TargetSnapDistance controls the maximum distance in cells from intended target the projectile can be at moment of detonation to make the projectile ‘snap’ on the intended target. Set to 0 to disable snapping.

    • Trajectory.Straight.PassThrough enables special case logic where the projectile does not detonate in contact with the target but ínstead travels up to a distance defined by Trajectory.Straight.DetonationDistance. Note that the firing angle of the projectile is adjusted with this in mind, making it fire straight ahead if the target is on same elevation.

rulesmd.ini中:

[SOMEPROJECTILE]                            ; Projectile
Trajectory=Straight                         ; Trajectory type
Trajectory.Straight.DetonationDistance=0.4  ; floating point value
Trajectory.Straight.TargetSnapDistance=0.5  ; floating point value
Trajectory.Straight.PassThrough=false       ; boolean

轰击弹道

  • 类似直线弹道,但是攻击目标上方的坐标点(高度由Trajectory.Bombard.Height决定)。当抛射体接近坐标点后会自由落体,并在接触到地面或目标后爆炸。

rulesmd.ini中:

[SOMEPROJECTILE]               ; Projectile
Trajectory=Bombard             ; Trajectory type
Trajectory.Bombard.Height=0.0  ; double

溅射增强

image Shrapnel appearing against ground & buildings (Project Phantom)

  • 溅射行为现在可以被地面或建筑触发。

rulesmd.ini中:

[SOMEPROJECTILE]                 ; Projectile
Shrapnel.AffectsGround=false     ; boolean
Shrapnel.AffectsBuildings=false  ; boolean

Projectiles blocked by land or water

  • It is now possible to make projectiles consider either land or water as obstacles that block their path by setting SubjectToLand/Water to true, respectively. Weapons firing such projectiles will consider targets blocked by such obstacles as out of range and will attempt to reposition themselves so they can fire without being blocked by the said obstacles before firing and if SubjectToLand/Water.Detonate is set to true, the projectiles will detonate if they somehow manage to collide with the said obstacles.

    • Level=true projectiles detonate on tiles belonging to non-water tilesets by default, but will not consider such tiles as true obstacles. This behaviour can be overridden by setting these keys.

rulesmd.ini中:

[SOMEPROJECTILE]              ; Projectile
SubjectToLand=                ; boolean
SubjectToLand.Detonate=true   ; boolean
SubjectToWater=               ; boolean
SubjectToWater.Detonate=true  ; boolean

Return weapon

  • It is now possible to make another weapon & projectile go off from a detonated projectile (in somewhat similar manner to AirburstWeapon or ShrapnelWeapon) straight back to the firer by setting ReturnWeapon. If the firer perishes before the initial projectile detonates, ReturnWeapon is not fired off.

rulesmd.ini中:

[SOMEPROJECTILE]  ; Projectile
ReturnWeapon=     ; WeaponType

注解

This currently has same limitations as AirburstWeapon in that it does not properly support Arcing=true projectiles.

超级武器

Convert TechnoType

  • Warheads can now change TechnoTypes of affected units to other Types in the same category (infantry to infantry, vehicles to vehicles, aircraft to aircraft).

    • ConvertN.From (where N is 0, 1, 2…) specifies which TechnoTypes are valid for conversion. This entry can have many types listed, meanging that many types will be converted at once. When no types are included, conversion will affect all valid targets.

    • ConvertN.To specifies the TechnoType which is the result of conversion.

    • ConvertN.AffectedHouses specifies whose units can be converted.

    • Convert.From, Convert.To and Convert.AffectedHouses (without numbers) are a valid alternative to Convert0.From, Convert0.To and Convert0.AffectedHouses if only one pair is specified.

    • Conversion affects all existing units of set TechnoTypes, this includes units in: transports, occupied buildings, buildings with InfantryAbsorb=yes or UnitAbsorb=yes, buildings with Bunker=yes.

In example, this superweapon would convert all owned and friendly SOLDIERA and SOLDIERB to NEWSOLDIER:

[SOMESW]
Convert.From=SOLDIERA,SOLDIERB
Convert.To=NEWSOLDIER
Convert.AffectedHouses=team

警告

This feature has the same limitations as Ares’ Type Conversion. This feature does not support BuildingTypes.

警告

This feature requires Ares 3.0 or higher to function! When Ares 3.0+ is not detected, not all properties of a unit may be updated.

rulesmd.ini中:

[SOMESW]                        ; SuperWeapon
ConvertN.From=                  ; list of TechnoTypes
ConvertN.To=                    ; TechnoType
ConvertN.AffectedHouses=owner   ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
; where N = 0, 1, 2, ...
; or
Convert.From=                   ; list of TechnoTypes
Convert.To=                     ; TechnoType
Convert.AffectedHouses=owner    ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)

虚拟投放

  • Superweapons can now deliver off-map buildings that act as if they were on the field.

    • LimboDelivery.Types is the list of BuildingTypes that will be created when the Superweapons fire. Superweapon Type and coordinates do not matter.

    • LimboDelivery.IDs列出数字ID用以绑定建筑。要使虚拟击杀生效就必须设置。

  • Created buildings are not affected by any on-map threats. The only way to remove them from the game is by using a Superweapon with LimboKill.IDs set.

    • LimboKill.Affected sets which houses are affected by this feature.

    • LimboKill.IDs列出目标ID。拥有此ID的虚拟投放建筑会被立刻移除。

  • 投放可以通过一些可选的标签随机化。此时游戏会随机选择其中一种建筑投放。

    • LimboDelivery.RollChances lists chances of each “dice roll” happening. Valid values range from 0% (never happens) to 100% (always happens). Defaults to a single sure roll.

    • LimboDelivery.RandomWeightsN指定虚拟投放的权重,RandomWeights相当于RandomWeights0。每次虚拟投放时都会给对应的建筑增加这些权重,若对应次投放没有指定权重,则使用指定的最后一次权重。

注意:被虚拟投放的建筑不一定会使所有标签生效,以下标签是确定生效的:

  • 工业工厂

  • 矿石精炼器

  • 间谍卫星

  • 续命(KeepAlive, Ares 3.0)

  • 建造前提(含Ares扩展)

  • SuperWeapon、SuperWeapon2,SuperWeapons、SW.AuxBuildings、SW.NegBuildings(Ares 0.9)

注意,为了使此逻辑与AITriggerTypes条件共同运作,LegalTarget必须为yes。

警告

记住,虚拟投放的建筑并不实际存在,一切与其实际交互的机制都不能正常生效(比如工厂,克隆,维修厂,直升机平台等)。此外此建筑必须要么KeepAlive=no,要么可以被虚拟击杀,否则游戏将无法结束。

rulesmd.ini中:

[SOMESW]                        ; Superweapon
LimboDelivery.Types=            ; List of BuildingTypes
LimboDelivery.IDs=              ; List of numeric IDs. -1 cannot be used.
LimboDelivery.RollChances=      ; List of percentages.
LimboDelivery.RandomWeightsN=   ; List of integers.
LimboKill.Affected=self         ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
LimboKill.IDs=                  ; List of numeric IDs.

Next

Superweapons can now launch other superweapons at the same target. Launched types can be additionally randomized using the same rules as with LimboDelivery (see above).

  • SW.Next.RealLaunch controls whether the owner who fired the initial superweapon must own all listed superweapons and sufficient funds to support Money.Amout. Otherwise they will be launched forcibly.

  • SW.Next.IgnoreInhibitors ignores SW.Inhibitors/SW.AnyInhibitor of each superweapon, otherwise only non-inhibited superweapons are launched.

  • SW.Next.IgnoreDesignators ignores SW.Designators/SW.AnyDesignator respectively.

rulesmd.ini中:

[SOMESW]                        ; Super Weapon
SW.Next=                        ; List of Superweapons
SW.Next.RealLaunch=true         ; boolean
SW.Next.IgnoreInhibitors=false  ; boolean
SW.Next.IgnoreDesignators=true  ; boolean
SW.Next.RollChances=            ; List of percentages.
SW.Next.RandomWeightsN=         ; List of integers.

Warhead or Weapon detonation at target cell

  • Any superweapon can now detonate a Warhead or a weapon at superweapon’s target cell.

    • If both Detonate.Warhead and Detonate.Weapon are set, latter takes precedence.

    • Detonate.Damage, if not set, defaults to weapon Damage for Detonate.Weapon and 0 for Detonate.Warhead.

    • Both the weapon and Warhead behave as if fired by whatever building fired the Superweapon. This respects controls like SW.RangeMinimum/Maximum (similar to Ares’ GenericWarhead superweapon in this regard). If firing building could not be found, the house the Superweapon belonged to is still used to deal damage and apply Phobos-introduced Warhead effects.

    • If Detonate.AtFirer is set to true, the weapon or Warhead is detonated at the firing building instead of the superweapon’s target cell. If there is no firer, no detonation will occur.

rulesmd.ini中:

[SOMESW]                ; Super Weapon
Detonate.Warhead=       ; WarheadType
Detonate.Weapon=        ; WeaponType
Detonate.Damage=        ; integer
Detonate.AtFirer=false  ; boolean

通用

Automatic passenger deletion

  • Transports can erase passengers over time. Passengers are deleted in order of entering the transport, from first to last.

    • PassengerDeletion.Rate determines the interval in game frames that it takes to erase a single passenger.

      • If PassengerDeletion.Rate.SizeMultiply is set to true, this time interval is multiplied by the passenger’s Size.

    • PassengerDeletion.UseCostAsRate, if set to true, changes the time interval for erasing a passenger to be based on the passenger’s Cost. This does not factor in modifiers like FactoryPlant.

      • PassengerDeletion.CostMultiplier can be used to modify the cost-based time interval.

      • PassengerDeletion.CostRateCap can be used to set a cap to the cost-based time interval.

    • PassengerDeletion.AllowedHouses determines which houses passengers can belong to be eligible for deletion.

    • PassengerDeletion.DontScore, if set to true, makes it so that the deleted passengers are not counted as having been killed by the transport (no experience, not recorded towards owning house’s score etc).

    • If PassengerDeletion.Soylent is set to true, an amount of credits is refunded to the owner of the transport. The exact amount refunded is determined by the passengers Soylent, or if not set, its Cost (this is affected by modifiers such as FactoryPlant).

      • PassengerDeletion.SoylentMultiplier is a direct multiplier applied to the refunded amount of credits.

      • PassengerDeletion.SoylentAllowedHouses determines which houses passengers can belong to be eligible for refunding.

      • PassengerDeletion.DisplaySoylent can be set to true to display the amount of credits refunded on the transport. PassengerDeletion.DisplaySoylentToHouses determines which houses can see this and PassengerDeletion.DisplaySoylentOffset can be used to adjust the display offset.

    • PassengerDeletion.ReportSound and PassengerDeletion.Anim can be used to specify a sound and animation to play when a passenger is erased, respectively.

rulesmd.ini中:

[SOMETECHNO]                                    ; TechnoType
PassengerDeletion.Rate=0                        ; integer, game frames
PassengerDeletion.Rate.SizeMultiply=true        ; boolean
PassengerDeletion.UseCostAsRate=false           ; boolean
PassengerDeletion.CostMultiplier=1.0            ; floating point value, percents or absolute
PassengerDeletion.CostRateCap=                  ; integer, game frames
PassengerDeletion.AllowedHouses=all             ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
PassengerDeletion.DontScore=false               ; boolean
PassengerDeletion.Soylent=false                 ; boolean
PassengerDeletion.SoylentMultiplier=1.0         ; float, percents or absolute
PassengerDeletion.SoylentAllowedHouses=enemies  ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
PassengerDeletion.DisplaySoylent=false          ; boolean
PassengerDeletion.DisplaySoylentToHouses=All    ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
PassengerDeletion.DisplaySoylentOffset=0,0      ; X,Y, pixels relative to default
PassengerDeletion.ReportSound=                  ; Sound
PassengerDeletion.Anim=                         ; Animation

Automatic passenger owner change to match transport owner

  • Transports with Passengers.SyncOwner set to true will have the owner of their passengers changed to match the transport if transport’s owner changes.

    • On OpenTopped=true transports this will also disable checks that prevent target acquisition by passengers when the transport is temporarily mind controlled.

    • Passengers.SyncOwner.RevertOnExit, if set to true (which is the default), changes the passengers’ owner back to whatever it was originally when they entered the transport when they are ejected.

    • Does not work on passengers acquired through use of Abductor=true weapon (Ares feature).

rulesmd.ini中:

[SOMETECHNO]                            ; TechnoType
Passengers.SyncOwner=false              ; boolean
Passengers.SyncOwner.RevertOnExit=true  ; boolean

自动开火武器

  • 通过AutoFire,现在可以使单位自动开火,而不需要搜索目标。开火要么在单位脚下(此时使用强制攻击的武器),要么是单位本身(此时根据武器选择规则选择对单位自身有效的武器),由AutoFire.TargetSelf决定。

rulesmd.ini中:

[SOMETECHNO]               ; TechnoType
AutoFire=false             ; boolean
AutoFire.TargetSelf=false  ; boolean

Customizable OpenTopped properties

  • You can now override global OpenTopped transport properties per TechnoType.

  • OpenTopped.IgnoreRangefinding can be used to disable OpenTopped transport rangefinding behaviour where smallest weapon range between transport and all passengers is used when approaching targets that are out of range and when scanning for potential targets.

  • OpenTopped.AllowFiringIfDeactivated can be used to customize whether or not passengers can fire out when the transport is deactivated (EMP, powered unit etc).

  • OpenTopped.ShareTransportTarget controls whether or not the current target of the transport itself is passed to the passengers as well.

[SOMETECHNO]                              ; TechnoType
OpenTopped.RangeBonus=                    ; integer, override of the global default
OpenTopped.DamageMultiplier=              ; floating point value, override of the global default
OpenTopped.WarpDistance=                  ; integer, override of the global default
OpenTopped.IgnoreRangefinding=false       ; boolean
OpenTopped.AllowFiringIfDeactivated=true  ; boolean
OpenTopped.ShareTransportTarget=true      ; boolean

关闭副武器自动推算

  • It is now possible to disable the fallback to (Elite)Secondary weapon from (Elite)Primary weapon if it cannot fire at the chosen target by setting NoSecondaryWeaponFallback to true (defaults to false). NoSecondaryWeaponFallback.AllowAA controls whether or not fallback because of projectile AA setting and target being in air is still allowed. This does not apply to special cases where (Elite)Secondary weapon is always chosen, including but not necessarily limited to the following:

    • OpenTransportWeapon=1的单位在OpenTopped=true的载具内开火。

    • NoAmmoWeapon=1的单位,Ammo大于0且当前弹药数小于等于NoAmmoAmount

    • 部署的IsSimpleDeployer=trueDeployFireWeapon=1的单位。

    • DrainWeapon=true的武器对Drainable=yes的建筑。

    • 主武器的弹头有IsLocomotor=true时对建筑。

    • 弹头ElectricAssault=true对友军的Overpowerable=true的建筑。

    • Overpowerable=true的建筑被过载。

    • (Elite)WeaponX系统整个排除在外(即Gunner=trueIsGattling=true)。

rulesmd.ini中:

[SOMETECHNO]                             ; TechnoType
NoSecondaryWeaponFallback=false          ; boolean
NoSecondaryWeaponFallback.AllowAA=false  ; boolean

Disguise logic additions (disguise-based movement speed, disguise blinking visibility)

  • DisguiseBlinkingVisibility can be used to customize which players can see disguises blinking on units. This does not affect targeting but does affect veterancy insignia visibility - blinking disguise means the original unit’s insignia is visible always instead of disguise’s.

  • UseDisguiseMovementSpeed, if set, makes disguised unit adjust its movement speed to match that of the disguise, if applicable. Note that this applies even when the disguise is revealed, as long as it has not been removed.

rulesmd.ini中:

[General]
DisguiseBlinkingVisibility=owner  ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)

[SOMETECHNO]                      ; TechnoType
UseDisguiseMovementSpeed=false    ; boolean

Burst开火坐标

  • You can now specify separate firing offsets for each of the shots fired by weapon with Burst via using (Elite)(Prone/Deployed)PrimaryFire|SecondaryFire|WeaponX|FLH.BurstN keys, depending on which weapons your TechnoType makes use of. N in BurstN is zero-based burst shot index, and the values are parsed sequentially until no value for either regular or elite weapon is present, with elite weapon defaulting to regular weapon FLH if only it is missing. If no burst-index specific value is available, value from the base key (f.ex PrimaryFireFLH) is used.

  • 应用此逻辑的开火坐标不受因Burst数导致的水平对称影响。

artmd.ini中:

[SOMETECHNO]    ; TechnoType Image
FLHKEY.BurstN=  ; integer - Forward,Lateral,Height. FLHKey refers to weapon-specific FLH key name and N is zero-based burst shot index.

Forcing specific weapon against certain targets

image Naval underwater target behavior with ForceWeapon.Naval.Decloaked in C&C: Reloaded

  • Can be used to override normal weapon selection logic to force specific weapons to use against certain targets. If multiple are set and target satisfies the conditions, the first one in listed order satisfied takes effect.

    • ForceWeapon.Naval.Decloaked forces specified weapon to be used against uncloaked naval targets. Useful if your naval unit has one weapon only for underwater and another weapon for surface targets.

    • ForceWeapon.Cloaked forces specified weapon to be used against any cloaked targets.

    • ForceWeapon.Disguised forces specified weapon to be used against any disguised targets.

rulesmd.ini中:

[SOMETECHNO]                    ; TechnoType
ForceWeapon.Naval.Decloaked=-1  ; integer. 0 for primary weapon, 1 for secondary weapon, -1 to disable
ForceWeapon.Cloaked=-1          ; integer. 0 for primary weapon, 1 for secondary weapon, -1 to disable
ForceWeapon.Disguised=-1        ; integer. 0 for primary weapon, 1 for secondary weapon, -1 to disable

Make units try turning to target when firing with OmniFire=yes

  • The unit will try to turn the body to target even firing with OmniFire=yes

    • Jumpjets are recommended to have the same value of body ROT and JumpjetTurnRate

rulesmd.ini中:

[SOMEWEAPONTYPE]          ; WeaponType
OmniFire=yes
OmniFire.TurnToTarget=no  ; boolean

Initial strength for TechnoTypes and cloned infantry

image Initial strength for cloned infantry example in C&C: Reloaded

  • InitialStrength can be used to set how many hitpoints a TechnoType starts with.

  • InitialStrength.Cloning can be used to specify a percentage of hitpoints (single value or a range from which a random value is picked) cloned infantry produced by Cloning=true building start with.

rulesmd.ini中:

[SOMETECHNO]              ; TechnoType
InitialStrength=          ; integer

[SOMEBUILDING]            ; BuildingType
InitialStrength.Cloning=  ; floating point value - single or comma-sep. range (percentages)

注解

Both InitialStrength and InitialStrength.Cloning never surpass the type’s Strength, even if your values are bigger than it.

自毁

  • 任意如下条件满足则可自毁:

    • OnAmmoDepletion:没弹药;

    • AfterDelay: 时间到;

    • TechnosExist / TechnosDontExist: The object will die if TechnoTypes exist or do not exist, respectively.

      • Technos(Dont)Exist.Any controls whether or not a single listed TechnoType is enough to satisfy the requirement or if all are required.

      • Technos(Dont)Exist.AllowLimboed controls whether or not limboed TechnoTypes (f.ex those in transports) are counted.

      • Technos(Dont)Exist.Houses controls which houses are checked.

  • 自毁可从如下方式中选择:

    • kill: 正常被击杀;

    • vanish: 凭空消失;

    • sell: 如果是建筑则被变卖;

If this option is not set, the self-destruction logic will not be enabled. AutoDeath.VanishAnimation can be set to animation to play at object’s location if vanish behaviour is chosen.

注解

Please notice that if the object is a unit which carries passengers, they will not be released even with the kill option if you are not using Ares 3.0+.

This logic also supports buildings delivered by LimboDelivery. However in this case, all AutoDeath.Behavior values produce identical result where the building is simply deleted.

rulesmd.ini中:

[SOMETECHNO]                                   ; TechnoType
AutoDeath.Behavior=                            ; enumeration (kill | vanish | sell), default not set
AutoDeath.VanishAnimation                      ; Animation
AutoDeath.OnAmmoDepletion=no                   ; boolean
AutoDeath.AfterDelay=0                         ; positive integer
AutoDeath.TechnosDontExist=                    ; list of TechnoType names
AutoDeath.TechnosDontExist.Any=false           ; boolean
AutoDeath.TechnosDontExist.AllowLimboed=false  ; boolean
AutoDeath.TechnosDontExist.Houses=owner        ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
AutoDeath.TechnosExist=                        ; list of TechnoType names
AutoDeath.TechnosExist.Any=true                ; boolean
AutoDeath.TechnosExist.AllowLimboed=false       ; boolean
AutoDeath.TechnosExist.Houses=owner            ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)

心灵控制增强

image Mind Control Range Limit used in Fantasy ADVENTURE image Multiple Mind Control unit auto-releases the first victim in Fantasy ADVENTURE

  • 拥有心灵控制武器的单位现在可以拥有最大控制距离。大于0将激活此逻辑。

  • 多重心控单位可以在过载前释放被控制的单位。

  • 心灵控制的动画现在可以用MindControl.Anim自定义了。

rulesmd.ini中:

[SOMETECHNO]                          ; TechnoType
MindControlRangeLimit=-1.0            ; floating point value
MultiMindControl.ReleaseVictim=false  ; boolean

[SOMEWARHEAD]                         ; Warhead
MindControl.Anim=                     ; Animation, defaults to ControlledAnimationType

禁止手动移动

  • 可以控制某单位是否无视移动指令。

[SOMETECHNO]        ; TechnoType
NoManualMove=false  ; boolean

Spawner pursuit range & spawn delay customization

image Limited pursue range for spawns in Fantasy ADVENTURE

  • If Spawner.LimitRange is set, the spawned units will abort their pursuit if the enemy is out of the range of the largest weapon Range of a Spawner=true weapon of the spawner.

    • Spawner.ExtraLimitRange adds extra pursuit range on top of the weapon range.

  • Spawner.DelayFrames can be used to set the minimum number of game frames in between each spawn ejecting from the spawner. By default this is 9 frames for missiles and 20 for everything else.

rulesmd.ini中:

[SOMETECHNO]               ; TechnoType
Spawner.LimitRange=false   ; boolean
Spawner.ExtraLimitRange=0  ; integer, range in cells
Spawner.DelayFrames=       ; integer, game frames

武器在传送时开火

  • 现在可以让武器在单位传送后开火,会在传送动画(WarpIn / WarpOut)播放的同时开火。

    • WarpInMinRangeWeapon用来在传送距离小于ChronoRangeMinimum时代替WarpInWeapon。它会无视ChronoTrigger设置与否而触发。如果未设置,默认为WarpInWeapon

    • 如果设置了WarpInWeapon.UseDistanceAsDamageWarpIn(MinRange)WeaponDamage会被传送穿过的单元数替代。

rulesmd.ini中:

[SOMETECHNO]                            ; TechnoType
WarpInWeapon=                           ; WeaponType
WarpInMinRangeWeapon=                   ; WeaponType
WarpInWeapon.UseDistanceAsDamage=false  ; boolean
WarpOutWeapon=                          ; WeaponType

Customize EVA voice and SellSound when selling units

  • When a building or a unit is sold, a sell sound as well as an EVA is played to the owner. These configurations have been deglobalized.

    • EVA.Sold is used to customize the EVA voice when selling, default to EVA_StructureSold for buildings and EVA_UnitSold for vehicles.

    • SellSound is used to customize the report sound when selling, default to [AudioVisual]->SellSound. Note that vanilla game played vehicles’ SellSound globally. This has been changed in consistency with buildings’ SellSound.

rulesmd.ini中:

[SOMETECHNO]    ; BuildingType or UnitType
EVA.Sold=       ; EVA entry
SellSound=      ; sound entry

Sound entry on unit’s creation

  • When a unit is created, sound specified in VoiceCreated will be played for the unit owner.

  • If IsVoiceCreatedGlobal is set to true, VoiceCreated will be played globally instead of EVA_UnitReady.

rulesmd.ini中:

[AudioVisual]
IsVoiceCreatedGlobal=false   ; boolean

[SOMETECHNO]                 ; UnitType
VoiceCreated=                ; sound entry

Convert TechnoType on owner house change

  • You can now change a unit’s type when changing ownership from human to computer or from computer to human.

rulesmd.ini中:

[SOMETECHNO]
Convert.HumanToComputer =   ; TechnoType
Convert.ComputerToHuman =   ; TechnoType 

Terrain

摧毁动画与音效

  • 现在可以设定地形对象的摧毁动画和音效。

rulesmd.ini中:

[SOMETERRAINTYPE]  ; TerrainType
DestroyAnim=       ; Animation
DestroySound=      ; Sound

弹头

提示

All new warhead effects

  • can be used with CellSpread and Ares’ GenericWarhead superweapon where applicable.

  • cannot be used with MindControl.Permanent=yes of Ares.

解除心控

image Mind control break warhead being utilized (RA2: Reboot)

  • 弹头现在可以破坏心控链接 (对永久心控无效) 。

rulesmd.ini中:

[SOMEWARHEAD]            ; Warhead
RemoveMindControl=false  ; boolean

基于几率的额外伤害 / 弹头暴击

  • 现在可以设定某弹头是否会在爆炸时造成暴击伤害。可以设定暴击的几率,伤害,作用目标,HP上限,动画等。

    • Crit.Chance决定暴击几率。正常情况下仅检测一次暴击,若Crit.ApplyChancePerTarget=yes,则每个目标的暴击单独决定。

    • Crit.ExtraDamage决定暴击额外伤害。若设置Crit.Warhead,则暴击的伤害使用此弹头,否则仍遵循当前弹头的Verses设定。

    • Crit.Affects can be used to customize types of targets that this Warhead can deal critical hits against. Critical hits cannot affect empty cells or cells containing only TerrainTypes, overlays etc.

    • Crit.AffectsHouses can be used to customize houses that this Warhead can deal critical hits against.

    • Crit.AffectBelowPercent can be used to set minimum percentage of their maximum Strength that targets must have left to be affected by a critical hit.

    • Crit.AnimList决定暴击后的弹头动画,替代弹头原本的动画。若设置Crit.AnimList.PickRandom=yes(默认为AnimList.PickRandom),则随机此动画。

      • 若设置Crit.AnimOnAffectedTargets,则暴击动画不再替代原本的动画,而是给每一个被暴击目标播放。

    • Crit.SuppressWhenIntercepted, if set, prevents critical hits from occuring at all if the warhead was detonated from a projectile that was intercepted.

    • ImmuneToCrit can be set on TechnoTypes and ShieldTypes to make them immune to critical hits.

rulesmd.ini中:

[SOMEWARHEAD]                       ; Warhead
Crit.Chance=0.0                     ; floating point value, percents or absolute (0.0-1.0)
Crit.ApplyChancePerTarget=false     ; boolean
Crit.ExtraDamage=0                  ; integer
Crit.Warhead=                       ; Warhead
Crit.Affects=all                    ; list of Affected Target Enumeration (none|land|water|infantry|units|buildings|all)
Crit.AffectsHouses=all              ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
Crit.AffectBelowPercent=1.0         ; floating point value, percents or absolute (0.0-1.0)
Crit.AnimList=                      ; list of animations
Crit.AnimList.PickRandom=           ; boolean
Crit.AnimOnAffectedTargets=false    ; boolean
Crit.SuppressWhenIntercepted=false  ; boolean

[SOMETECHNO]                        ; TechnoType
ImmuneToCrit=no                     ; boolean

警告

如果暴击弹头与原弹头为同一个弹头,或创建了一个链式循环暴击,那么游戏有可能卡死或崩溃。

Convert TechnoType on impact

  • Warheads can now change TechnoTypes of affected units to other Types in the same category (infantry to infantry, vehicles to vehicles, aircraft to aircraft).

    • ConvertN.From (where N is 0, 1, 2…) specifies which TechnoTypes are valid for conversion. This entry can have many types listed, meanging that many types will be converted at once. When no types are included, conversion will affect all valid targets.

    • ConvertN.To specifies the TechnoType which is the result of conversion.

    • ConvertN.AffectedHouses specifies whose units can be converted.

    • Convert.From, Convert.To and Convert.AffectedHouses (without numbers) are a valid alternative to Convert0.From, Convert0.To and Convert0.AffectedHouses if only one pair is specified.

In example, this warhead would convert all affected owned and friendly SOLDIERA and SOLDIERB to NEWSOLDIER:

[SOMEWARHEAD]
Convert.From=SOLDIERA,SOLDIERB
Convert.To=NEWSOLDIER
Convert.AffectedHouses=team

警告

This feature has the same limitations as Ares’ Type Conversion. This feature does not support BuildingTypes.

警告

This feature requires Ares 3.0 or higher to function! When Ares 3.0+ is not detected, not all properties of a unit may be updated.

rulesmd.ini中:

[SOMEWARHEAD]                   ; Warhead
ConvertN.From=                  ; list of TechnoTypes
ConvertN.To=                    ; TechnoType
ConvertN.AffectedHouses=all     ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
; where N = 0, 1, 2, ...
; or
Convert.From=                   ; list of TechnoTypes
Convert.To=                     ; TechnoType
Convert.AffectedHouses=all      ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)

微观定义水花

image

  • Allows Warheads to play custom water splash animations. See vanilla’s Conventional system here. SplashList.PickRandom can be set to true to pick a random animation to play from the list.

rulesmd.ini中:

[SOMEWARHEAD]                ; Warhead
SplashList=<none>            ; list of animations
SplashList.PickRandom=false  ; boolean

Detonate Warhead on all objects on map

警告

While this feature can provide better performance than a large CellSpread value, it still has potential to slow down the game, especially if used in conjunction with things like animations, alpha lights etc. Modder discretion and use of the filter keys (AffectTargets/Houses/Types etc.) is advised.

  • Setting DetonateOnAllMapObjects to true allows a Warhead that is detonated by a projectile (for an example, this excludes things like animation Warhead and Ares’ GenericWarhead superweapon but includes Crit.Warhead and animation Weapon) and consequently any Airburst/ShrapnelWeapon that may follow to detonate on each object currently alive and existing on the map regardless of its actual target, with optional filters. Note that this is done immediately prior Warhead detonation so after PreImpactAnim (Ares feature) has been displayed.

    • DetonateOnAllMapObjects.AffectTargets is used to filter which types of targets (TechnoTypes) are considered valid and must be set to a valid value other than none for this feature to work. Only none, all, aircraft, buildings, infantry and units are valid values. This is set to none by default as inclusion of all object types can be performance-heavy.

    • DetonateOnAllMapObjects.AffectHouses is used to filter which houses targets can belong to be considered valid and must be set to a valid value other than none for this feature to work. Only applicable if the house that fired the projectile is known. This is set to none by default as inclusion of all houses can be performance-heavy.

    • DetonateOnAllMapObjects.AffectTypes can be used to list specific TechnoTypes to be considered as valid targets. If any valid TechnoTypes are listed, then only matching objects will be targeted. Note that DetonateOnAllMapObjects.AffectTargets and DetonateOnAllMapObjects.AffectHouses take priority over this setting.

    • DetonateOnAllMapObjects.IgnoreTypes can be used to list specific TechnoTypes to be never considered as valid targets.

    • DetonateOnAllMapObjects.RequireVerses, if set to true, only considers targets whose armor type the warhead has non-zero Verses value against as valid. On targets with active shields, shield’s armor type is used unless the Warhead has Shield.Penetrate=true. This is checked after all other filters listed above.

rulesmd.ini中:

[SOMEWARHEAD]                                ; Warhead
DetonateOnAllMapObjects=false                ; boolean
DetonateOnAllMapObjects.AffectTargets=none   ; list of Affected Target Enumeration (none|aircraft|buildings|infantry|units|all)
DetonateOnAllMapObjects.AffectHouses=none    ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
DetonateOnAllMapObjects.AffectTypes=         ; list of TechnoType names
DetonateOnAllMapObjects.IgnoreTypes=         ; list of TechnoType names
DetonateOnAllMapObjects.RequireVerses=false  ; boolean

金币弹

image TransactMoney used in Rise of the East mod

  • 弹头引爆时可以指定获得或失去资金。

    • TransactMoney.Display can be set to display the amount of credits given or deducted. The number is displayed in green if given, red if deducted and will move upwards after appearing.

      • TransactMoney.Display.AtFirer if set, makes the credits display appear on firer instead of target. If set and firer is not known, it will display at target regardless.

      • TransactMoney.Display.Houses determines which houses can see the credits display.

      • TransactMoney.Display.Offset is additional pixel offset for the center of the credits display, by default (0,0) at target’s/firer’s center.

rulesmd.ini中:

[SOMEWARHEAD]                        ; Warhead
TransactMoney=0                      ; integer - credits added or subtracted
TransactMoney.Display=false          ; boolean
TransactMoney.Display.AtFirer=false  ; boolean
TransactMoney.Display.Houses=All     ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
TransactMoney.Display.Offset=0,0     ; X,Y, pixels relative to default

发射超武

  • 超武在对应常规弹头所引爆的格子上发射

    • LaunchSW specifies the superweapons to launch when the warhead is detonated. If superweapon has negative Money.Amount, the firing house must have enough credits in order for it to be fired.

    • LaunchSW.RealLaunch controls whether the owner who fired the warhead must own all listed superweapons. Otherwise they will be launched out of nowhere.

    • LaunchSW.IgnoreInhibitors ignores SW.Inhibitors/SW.AnyInhibitor of each superweapon, otherwise only non-inhibited superweapons are launched.

    • LaunchSW.IgnoreDesignators ignores SW.Designators/SW.AnyDesignator respectively.

    • LaunchSW.DisplayMoney can be set to display the amount of credits given or deducted by the launched superweapon by Money.Amount. The number is displayed in green if given, red if deducted and will move upwards after appearing.

      • LaunchSW.DisplayMoney.Houses determines which houses can see the credits display.

      • LaunchSW.DisplayMoney.Offset is additional pixel offset for the center of the credits display, by default (0,0) at superweapon’s target cell.

注解

  • For animation warheads/weapons to take effect, Damage.DealtByInvoker must be set.

  • Due to the nature of some superweapon types, not all superweapons are suitable for launch. Please use with caution!

  • The superweapons are launched on the cell where the warhead is detonated, instead of being click-fired.

rulesmd.ini中:

[SOMEWARHEAD]                     ; Warhead
LaunchSW=                         ; list of superweapons
LaunchSW.RealLaunch=true          ; boolean
LaunchSW.IgnoreInhibitors=false   ; boolean
LaunchSW.IgnoreDesignators=true   ; boolean
LaunchSW.DisplayMoney=false       ; boolean
LaunchSW.DisplayMoney.Houses=all  ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
LaunchSW.DisplayMoney.Offset=0,0  ; X,Y, pixels relative to default

识破伪装

  • 弹头现在可以移除间谍的伪装。此逻辑也会生效在通过PermaDisguise获得的默认伪装上。

rulesmd.ini中:

[SOMEWARHEAD]         ; Warhead
RemoveDisguise=false  ; boolean

揭示弹

  • 弹头可以引爆时揭示全部视野。

    • 仅对所属方有效。

rulesmd.ini中:

[SOMEWARHEAD]  ; Warhead
SpySat=false   ; boolean

迷雾弹

  • 弹头可以引爆时覆盖全部视野。

  • 仅对敌人有效。

rulesmd.ini中:

[SOMEWARHEAD]  ; Warhead
BigGap=false   ; boolean

触发特定的NotHuman步兵死亡动画序列

  • 弹头可以触发指定的NotHuman=yes的步兵的死亡动画序列,值代表Die1Die5

rulesmd.ini中:

[SOMEWARHEAD]            ; Warhead
NotHuman.DeathSequence=  ; integer (1 to 5)

武器

自定义AreaFire目标

  • 现在可以指定区域开火的目标了。默认目标是开火者所在单元格,现在也可以通过设置AreaFire.Targetselfrandom将其修改为开火者本身或武器攻击范围内的随机某格。

  • AreaFire.Target=self遵循一般瞄准规则(如弹头比例等)对开火者自身。

  • AreaFire.Target=random会遵循武器的CanTargetCanTargetHouses忽略不合格或包含不合格对象的单元格。

rulesmd.ini中:

[SOMEWEAPON]         ; WeaponType
AreaFire.Target=base ; AreaFire Target Enumeration (base|self|random)

Burst delay customizations

  • Burst.Delays allows specifying weapon-specific burst shot delays. Takes precedence over the old BurstDelayX logic available on VehicleTypes, functions with Infantry & BuildingType weapons (AircraftTypes are not supported due to their weapon firing system being completely different) and allows every shot of Burst to have a separate delay instead of only first four shots.

    • 如果没有设置对应的间隔,那么就会使用最后设置的间隔。(比如Burst=3Burst.Delays=10将每一击都使用10作为间隔。)

    • 使用-1来取消此逻辑,应用原始的BurstDelay0-3

  • Burst.FireWithinSequence is only used if the weapon is fired by InfantryTypes, and setting it to true allows infantry to fire multiple Burst shots within same firing sequence.

    • First shot is always fired at sequence frame determined by firing frame controls on InfantryType image (FireUp et al).

    • Following shots come at intervals determined by Burst.Delays (with minimum delay of 1 frame) or random delay between 3 to 5 frames if not defined. Note that if next shot would be fired at a frame that is beyond the firing sequence’s length, burst shot count is reset and weapon starts reloading.

    • Burst shot counter is not immediately reset if firing is ceased mid-sequence after at least one shot, but the frame at which each burst shot is fired will not be influenced by this (in other words, resuming firing afterward without weapon reload taking place would restart firing sequence but no firing will take place until the frame at which next burst shot should be fired is hit).

rulesmd.ini中:

[SOMEWEAPON]                    ; WeaponType
Burst.Delays=-1                 ; integer - burst delays (comma-separated) for shots in order from first to last.
Burst.FireWithinSequence=false  ; boolean

Extra warhead detonations

  • It is now possible to have same weapon detonate multiple Warheads on impact by listing ExtraWarheads. The warheads are detonated at same location as the main one, after it in listed order. This only works in cases where a projectile has been fired by a weapon and still remembers it when it is detonated (due to currently existing technical limitations, this excludes AirburstWeapon).

    • ExtraWarheads.DamageOverrides can be used to override the weapon’s Damage for the extra Warhead detonations. Value from position matching the position from ExtraWarheads is used if found, or last listed value if not found. If list is empty, WeaponType Damage is used.

    • ExtraWarheads.DetonationChances can be used to customize the chance of each extra Warhead detonation occuring. Value from position matching the position from ExtraWarheads is used if found, or last listed value if not found. If list is empty, every extra Warhead detonation is guaranteed to occur.

rulesmd.ini中:

[SOMEWEAPON]                      ; WeaponType
ExtraWarheads=                    ; list of WarheadTypes
ExtraWarheads.DamageOverrides=    ; list of integers
ExtraWarheads.DetonationChances=  ; list of floating-point values (percentage or absolute)

反馈武器

image FeedbackWeapon used to apply healing aura upon firing a weapon (Project Phantom)

  • 现在可以设定当开火者开火时发射向开火者自身的额外武器。

    • FireInTransport setting of the feedback weapon is respected to determine if it can be fired when the original weapon is fired from inside OpenTopped=true transport. If feedback weapon is fired, it is fired on the transport. OpenToppedDamageMultiplier is not applied on feedback weapons.

rulesmd.ini中:

[SOMEWEAPON]     ; WeaponType
FeedbackWeapon=  ; WeaponType

辐射增强

  • In addition to allowing custom radiation types, several enhancements are also available to the default radiation type defined in [Radiation], such as ability to set owner & invoker or deal damage against buildings. See Custom Radiation Types for more details.

自定义飞机扫射

image Strafing aircraft weapon customization in Project Phantom

  • 扫射(武器抛射体ROT小于2)现在可以被自定义了。

    • Strafing.Shots决定单轮扫射中武器发射几次。Ammo仅在本轮扫射结束后扣除,无论本轮开火几次。有效值为1到5之前,超出则被重置为1或5。默认为5。

    • Strafing.SimulateBurst决定发射过程中是否模拟Burst的表现,允许偏移开火坐标。仅当Burst=1或未指定时生效。默认否。

rulesmd.ini中:

[SOMEWEAPON]                  ; WeaponType
Strafing.Shots=5              ; integer
Strafing.SimulateBurst=false  ; boolean

武器瞄准筛选

image `Weapon target filter - different weapon used against enemies & allies as well as units & buildings (Project Phantom)

  • 现在可以指定武器可以攻击什么目标或所属方。这也会影响武器选择,除了某些固定情况。

    • 请注意,CanTarget需要allempty以使武器能向没有单位的格子开火。

rulesmd.ini中:

[SOMEWEAPON]         ; WeaponType
CanTarget=all        ; list of Affected Target Enumeration (none|land|water|empty|infantry|units|buildings|all)
CanTargetHouses=all  ; list of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)