新增或增强的逻辑

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

新类型/游戏内实体

自定义辐射类型

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]
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
Armor=none                           ; ArmorType
Powered=false                        ; boolean
AbsorbOverDamage=false               ; boolean
SelfHealing=0.0                      ; double, percents or absolute
SelfHealing.Rate=0.0                 ; double, ingame minutes
Respawn=0.0                          ; double, percents or absolute
Respawn.Rate=0.0                     ; double, 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
AllowTransfer=                       ; boolean
ImmuneToBerserk=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.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.ResetTimer=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.ResetTimer=false  ; boolean
Shield.AffectTypes=                  ; 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的)第二血条。

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

      • 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 game calculation.

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

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

    • 也兼容Ares的Convert.*

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

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

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

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

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

  • 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,即不穿透。

  • 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.Respawn.RateShield.Respawn.Amount覆盖被此弹头击中的护盾重生效果,持续Shield.Respawn.Duration,负数或0则默认为护盾本身的值。如果设置了Shield.Respawn.ResetTimer,当前护盾的重生时间将会重置,否则按照新的时间进行比例缩放。如果覆盖效果在重生完成前结束了,剩余时间会按照护盾本身的Respawn.Rate进行缩放。

    • Shield.SelfHealing.RateShield.SelfHealing.Amount覆盖被此弹头击中的护盾自愈效果,持续Shield.SelfHealing.Duration,负数或0则默认为护盾本身的值。如果设置了Shield.SelfHealing.ResetTimer,当前护盾的自愈时间将会重置,否则按照新的时间进行比例缩放。如果覆盖效果在一次自愈完成前结束了,剩余时间会按照护盾本身的SelfHealing.Rate进行缩放。

    • Shield.AffectsTypes允许列出哪些护盾会被上述效果影响。如果不设置,所有的护盾都会被影响。

    • 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.

    • 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.

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                    ; integer, facings in range of 0-255
CreateUnit.RandomFacing=true           ; boolean
CreateUnit.InheritFacings=false        ; boolean
CreateUnit.InheritTurretFacings=false  ; boolean
CreateUnit.ConsiderPathfinding=false   ; boolean

建筑

扩展建筑升级逻辑

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

步兵

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)

抛射体

拦截抛射体

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

抛射体轨迹

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

    • Trajectory不允许与原版的抛射体轨迹(ArcingROTInviso)混合使用。

    • 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

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

rulesmd.ini中:

[SOMEPROJECTILE]     ; Projectile
Trajectory=Straight  ; Trajectory type

轰击弹道

  • 类似直线弹道,但是攻击目标上方的坐标点(高度由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

超级武器

虚拟投放

  • 超级武器现在可以投放不在地图上的建筑,好似他们在地图上一样。

    • LimboDelivery.Types列出此超武生效后创建的建筑列表。超武类型和发射位置并不重要。

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

  • 被创建的建筑不会被任何地图内威胁影响到。只有虚拟击杀的超武才能移除这些建筑。

    • LimboKill.Affects指定哪些所属方会被此功能影响

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

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

    • LimboDelivery.RollChance指定虚拟投放的概率,值域为[0%,100%](从不发生,总是发生),默认为一次成功的投放。

    • 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]                        ; Super Weapon
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.Affects=self          ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
LimboKill.IDs=                  ; List of numeric IDs.

通用

Automatic passenger deletion

  • 有该标签的载具将随着时间移除其中乘客。大型单位将需要更多时间。该逻辑也可以像部队回收站一样工作。

  • 与Ares的劫持犯逻辑是很好的组合。

rulesmd.ini中:

[SOMETECHNO]                               ; TechnoType
PassengerDeletion.Rate=0                   ; integer, game frames
PassengerDeletion.Rate.SizeMultiply=true   ; boolean, whether to multiply frames amount by size
PassengerDeletion.Soylent=no               ; boolean
PassengerDeletion.SoylentFriendlies=false  ; boolean
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).

[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

关闭副武器自动推算

  • 现在当一个单位有NoSecondaryWeaponFallback=true(默认为false)时,如果它的主武器不能攻击一个目标,那副武器也可以不再对其有效了;同时有若干情况,这些情况下副武器总会被调用:

    • 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

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.

初始生命值

  • 现在可以指定单位的初始生命值了。

rulesmd.ini中:

[SOMETECHNO]      ; TechnoType
InitialStrength=  ; integer

Initial Strength For Cloned Infantry

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

  • You can now specify how many hitpoints an Infantry Type starts with when leaves a Cloning Structure with Cloning=yes.

rulesmd.ini中:

[SOMEBUILDING]            ; BuildingType
InitialStrength.Cloning=  ; single double/percentage or comma-sep. range

注解

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

自毁

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

    • OnAmmoDepletion:没弹药;

    • AfterDelay: 时间到;

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

    • kill: 正常被击杀;

    • vanish: 凭空消失;

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

若不明确指定则自毁逻辑不会开启。

注解

若自毁的单位带乘客,则乘客不会逃逸

rulesmd.ini中:

[SOMETECHNO]                  ; TechnoType
AutoDeath.Behavior=           ; enumeration (kill | vanish | sell), default not set

AutoDeath.OnAmmoDepletion=no  ; boolean
AutoDeath.AfterDelay=0        ; positive integer

心灵控制增强

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

覆盖隐形水下攻击行为

image Naval underwater behavior in C&C: Reloaded

  • 覆盖了一部分原版YR中的逻辑,使海军单位在海军单位未隐形时可以使用不同的武器。

  • 在你的海军单位有一个武器对水下另一个武器对水面时很有用。

rulesmd.ini中:

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

子机最大航程

image Limited pursue range for spawns in Fantasy ADVENTURE

  • 子机现在可以停止追击超出攻击距离的敌人。Spawner.ExtraLimitRange是额外追击距离。

rulesmd.ini中:

[SOMETECHNO]               ; TechnoType
Spawner.LimitRange=false   ; boolean
Spawner.ExtraLimitRange=0  ; integer

武器在传送时开火

  • 现在可以让武器在单位传送后开火,会在传送动画(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

Terrain

摧毁动画与音效

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

rulesmd.ini中:

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

弹头

提示

所有的新弹头对溅射范围和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决定何种目标可以被暴击。

    • Crit.AffectsBelowPercent决定低于多少百分比血量的目标不会被暴击。

    • 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决定单位是否免疫暴击。

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|empty|infantry|units|buildings|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

警告

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

微观定义水花

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. 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 指定所要发射的超武

    • LaunchSW.RealLaunch 真实发射指仅使用弹头所属方目前真正拥有的超武。否则超武将无条件发射到指定格子,即无视是否拥有,是否够钱,是否充能

    • 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.

注解

若在动画伤害上使用该逻辑则必须设置Invoker

rulesmd.ini中:

[SOMEWARHEAD]                    ; Warhead
LaunchSW=                        ; list of superweapons
LaunchSW.RealLaunch=true         ; boolean
LaunchSW.IgnoreInhibitors=false  ; boolean
LaunchSW.IgnoreDesignators=true  ; boolean

识破伪装

  • 弹头现在可以移除间谍的伪装。此逻辑也会生效在通过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)

武器定义BurstDelay

  • 现在支持为武器设定BurstDelay取代原本的BurstDelayX系统。对步兵,载具,建筑类型生效(飞机类型因开火系统完全不同无法支持)。并且允许为每一击都设定间隔,而非仅前四个。

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

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

rulesmd.ini中:

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

反馈武器

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)