diff --git a/docs/New-or-Enhanced-Logics.md b/docs/New-or-Enhanced-Logics.md index 477c1742a6..786b244089 100644 --- a/docs/New-or-Enhanced-Logics.md +++ b/docs/New-or-Enhanced-Logics.md @@ -24,7 +24,7 @@ This page describes all the engine features that are either new and introduced b - `PenetratesForceShield` can be used to set this separately for Force Shielded objects, defaults to value of `PenetratesIronCurtain`. - `AffectTypes`, if set to a non-empty list, restricts the effect to only be applicable on the specific unit types listed. If this is not set or empty, no whitelist filtering occurs. This check has the highest priority. - `IgnoreTypes`, if set to a non-empty list, prevents the effect from being applied to any of the specific unit types listed. If this is not set or empty, no blacklist filtering occurs. This check is performed after `AffectTypes`. - - `AffectTargets`, if set to a non-empty list, restricts the effect to only be applicable on units belonging to the specified target categories (e.g., infantry, units, aircraft, buildings). This check is performed after both type-based filters. + - `AffectsTarget`, if set to a non-empty list, restricts the effect to only be applicable on units belonging to the specified target categories (e.g., infantry, units, aircraft, buildings). This check is performed after both type-based filters. - `Animation` defines animation to play in an indefinite loop for as long as the effect is active on the object it is attached to. - If `Animation.ResetOnReapply` is set to true, the animation playback is reset every time the effect is applied if `Cumulative=false`. - `Animation.OfflineAction` determines what happens to the animation when the attached object is deactivated or not powered. Only applies if `Powered=true`. @@ -50,7 +50,7 @@ This page describes all the engine features that are either new and introduced b - `Crit.Multiplier` and `Crit.ExtraChance` can be used to multiply the [critical hit](#chance-based-extra-damage-or-warhead-detonation--critical-hits) chance or grant a fixed bonus to it for the object the effect is attached to, respectively. - `Crit.AllowWarheads` can be used to list only Warheads that can benefit from this critical hit chance multiplier and `Crit.DisallowWarheads` weapons that are not allowed to, respectively. - `RevengeWeapon` can be used to temporarily grant the specified weapon as a [revenge weapon](#revenge-weapon) for the attached object. - - `RevengeWeapon.AffectsHouses` customizes which houses can trigger the revenge weapon. + - `RevengeWeapon.AffectsHouse` customizes which houses can trigger the revenge weapon. - `RevengeWeapon.UseInvokerAsOwner` can be used to set the house and TechnoType that created the effect (e.g firer of the weapon that applied it) as the weapon's owner & invoker instead of the object the effect is attached to. - `ReflectDamage` can be set to true to have any positive damage dealt to the object the effect is attached to be reflected back to the attacker. `ReflectDamage.Warhead` determines which Warhead is used to deal the damage, defaults to `[CombatDamage] -> C4Warhead`. If `ReflectDamage.Warhead.Detonate` is set to true, the Warhead is fully detonated instead of used to simply deal damage. `ReflectDamage.Chance` determines the chance of reflection. `ReflectDamage.Multiplier` is a multiplier to the damage received and then reflected back, while `ReflectDamage.Override` directly overrides the damage. Already reflected damage cannot be further reflected back. - Warheads can prevent reflect damage from occuring by setting `SuppressReflectDamage` to true. `SuppressReflectDamage.Types` can control which AttachEffectTypes' reflect damage is suppressed, if none are listed then all of them are suppressed. `SuppressReflectDamage.Groups` does the same thing but for all AttachEffectTypes in the listed groups. @@ -102,7 +102,7 @@ PenetratesIronCurtain=false ; boolean PenetratesForceShield= ; boolean AffectTypes= ; List of TechnoTypes IgnoreTypes= ; List of TechnoTypes -AffectTargets=all ; List of TechnoType Enumeration (none|infantry|units|aircraft|buildings|all) +AffectsTarget=all ; List of TechnoType Enumeration (none|infantry|units|aircraft|buildings|all) Animation= ; AnimationType Animation.ResetOnReapply=false ; boolean Animation.OfflineAction=Hides ; AttachedAnimFlag (None, Hides, Temporal, Paused or PausedTemporal) @@ -136,13 +136,13 @@ Crit.ExtraChance=0.0 ; floating point value Crit.AllowWarheads= ; List of WarheadTypes Crit.DisallowWarheads= ; List of WarheadTypes RevengeWeapon= ; WeaponType -RevengeWeapon.AffectsHouses=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) +RevengeWeapon.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) RevengeWeapon.UseInvokerAsOwner=false ; boolean ReflectDamage=false ; boolean ReflectDamage.Warhead= ; WarheadType ReflectDamage.Warhead.Detonate=false ; WarheadType ReflectDamage.Multiplier=1.0 ; floating point value, percents or absolute -ReflectDamage.AffectsHouses=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) +ReflectDamage.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) ReflectDamage.Chance=1.0 ; floating point value ReflectDamage.Override= ; integer ReflectDamage.UseInvokerAsOwner=false ; boolean @@ -1079,8 +1079,8 @@ AISuperWeaponDelay= ; integer, game frames - 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. + - `ConvertN.AffectsHouse` specifies whose units can be converted. + - `Convert.From`, `Convert.To` and `Convert.AffectsHouse` (without numbers) are a valid alternative to `Convert0.From`, `Convert0.To` and `Convert0.AffectsHouse` 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`: @@ -1088,7 +1088,7 @@ In example, this superweapon would convert all owned and friendly `SOLDIERA` and [ExampleSW] Convert.From=SOLDIERA,SOLDIERB Convert.To=NEWSOLDIER -Convert.AffectedHouses=team +Convert.AffectsHouse=team ``` In `rulesmd.ini`: @@ -1096,12 +1096,12 @@ In `rulesmd.ini`: [SOMESW] ; SuperWeaponType 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) +ConvertN.AffectsHouse=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) +Convert.AffectsHouse=owner ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) ``` ```{warning} @@ -1148,7 +1148,7 @@ EMPulse.SuspendOthers=false ; boolean - `LimboDelivery.IDs` is the list of numeric IDs that will be assigned to buildings. Necessary for LimboKill to work. - 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.AffectsHouse` sets which houses are affected by this feature. - `LimboKill.IDs` lists IDs that will be targeted. Buildings with these IDs will be removed from the game instantly. - Delivery can be made random with these optional tags. The game will randomly choose only a single building from the list for each roll chance provided. @@ -1174,7 +1174,7 @@ 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.AffectsHouse=self ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) LimboKill.IDs= ; List of numeric IDs. ``` @@ -1433,13 +1433,13 @@ Passengers.SyncOwner.RevertOnExit=true ; boolean ### Automatically firing weapons -- You can now make TechnoType automatically fire its weapon(s) without having to scan for suitable targets by setting `AutoFire`, on either its base cell (in which case the weapon that is used for force-firing is used) or itself (in which case normal targeting and weapon selection rules and are respected) depending on if `AutoFire.TargetSelf` is set or not. +- You can now make TechnoType automatically fire its weapon(s) without having to scan for suitable targets by setting `AutoTargetOwnPosition`, on either its base cell (in which case the weapon that is used for force-firing is used) or itself (in which case normal targeting and weapon selection rules and are respected) depending on if `AutoTargetOwnPosition.Self` is set or not. In `rulesmd.ini`: ```ini -[SOMETECHNO] ; TechnoType -AutoFire=false ; boolean -AutoFire.TargetSelf=false ; boolean +[SOMETECHNO] ; TechnoType +AutoTargetOwnPosition=false ; boolean +AutoTargetOwnPosition.Self=false ; boolean ``` ```{note} @@ -1999,7 +1999,7 @@ Convert.ResetMindControl=false ; boolean *Revenge Weapon usage in [RA2: Reboot](https://www.moddb.com/mods/reboot)* - Similar to `DeathWeapon` in that it is fired after a TechnoType is killed, but with the difference that it will be fired on whoever dealt the damage that killed the TechnoType. If TechnoType died of sources other than direct damage dealt by another TechnoType, `RevengeWeapon` will not be fired. - - `RevengeWeapon.AffectsHouses` can be used to filter which houses the damage that killed the TechnoType is allowed to come from to fire the weapon. + - `RevengeWeapon.AffectsHouse` can be used to filter which houses the damage that killed the TechnoType is allowed to come from to fire the weapon. - It is possible to grant revenge weapons through [attached effects](#attached-effects) as well. - If a Warhead has `SuppressRevengeWeapons` set to true, it will not trigger revenge weapons. `SuppressRevengeWeapons.Types` can be used to list WeaponTypes affected by this, if none are listed all WeaponTypes are affected. @@ -2007,7 +2007,7 @@ In `rulesmd.ini`: ```ini [SOMETECHNO] ; TechnoType RevengeWeapon= ; WeaponType -RevengeWeapon.AffectsHouses=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) +RevengeWeapon.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) [SOMEWARHEAD] ; WarheadType SuppressRevengeWeapons=false ; boolean @@ -2280,9 +2280,9 @@ AffectsGround=true ; boolean - `Crit.ExtraDamage.ApplyFirepowerMult` determines whether or not the critical hit damage should multiply the TechnoType's firepower multipliers. - `Crit.Warhead` can be used to set a Warhead to detonate instead of using current Warhead. - `Crit.Warhead.FullDetonation` controls whether or not the Warhead is detonated fully on the targets (as part of a dummy weapon) or simply deals area damage and applies Phobos' Warhead effects. - - `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` and `Crit.AffectAbovePercent` can be used to set the health percentage that targets must be above and/or below/equal to respectively to be affected by critical hits. If target has zero health left this check is bypassed. + - `Crit.AffectsTarget` 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.AffectsHouse` can be used to customize houses that this Warhead can deal critical hits against. + - `Crit.AffectsBelowPercent` and `Crit.AffectsAbovePercent` can be used to set the health percentage that targets must be above and/or below/equal to respectively to be affected by critical hits. If target has zero health left this check is bypassed. - `Crit.AnimList` can be used to set a list of animations used instead of Warhead's `AnimList` if Warhead deals a critical hit to even one target. If `Crit.AnimList.PickRandom` is set (defaults to `AnimList.PickRandom`) then the animation is chosen randomly from the list. If `Crit.AnimList.CreateAll` is set (defaults to `AnimList.CreateAll`), all animations from the list are created. - `Crit.AnimOnAffectedTargets`, if set, makes the animation(s) from `Crit.AnimList` play on each affected target *in addition* to animation from Warhead's `AnimList` playing as normal instead of replacing `AnimList` animation. Note that because these animations are independent from `AnimList`, `Crit.AnimList.PickRandom` and `Crit.AnimList.CreateAll` will not default to their `AnimList` counterparts here and need to be explicitly set if needed. - `Crit.ActiveChanceAnims` can be used to set animation to be always displayed at the Warhead's detonation coordinates if the current Warhead has a chance to critically hit. If more than one animation is listed, a random one is selected. @@ -2298,10 +2298,10 @@ Crit.ExtraDamage=0 ; integer Crit.ExtraDamage.ApplyFirepowerMult=false ; boolean Crit.Warhead= ; WarheadType Crit.Warhead.FullDetonation=true ; boolean -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.AffectAbovePercent=0.0 ; floating point value, percents or absolute (0.0-1.0) +Crit.AffectsTarget=all ; List of Affected Target Enumeration (none|land|water|infantry|units|buildings|all) +Crit.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) +Crit.AffectsBelowPercent=1.0 ; floating point value, percents or absolute (0.0-1.0) +Crit.AffectsAbovePercent=0.0 ; floating point value, percents or absolute (0.0-1.0) Crit.AnimList= ; List of AnimationTypes Crit.AnimList.PickRandom= ; boolean Crit.AnimList.CreateAll= ; boolean @@ -2325,15 +2325,15 @@ If you set `Crit.Warhead` to the same Warhead it is defined on, or create a chai - 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. + - `ConvertN.AffectsHouse` specifies whose units can be converted. + - `Convert.From`, `Convert.To` and `Convert.AffectsHouse` (without numbers) are a valid alternative to `Convert0.From`, `Convert0.To` and `Convert0.AffectsHouse` if only one pair is specified. In example, this warhead would convert all affected owned and friendly `SOLDIERA` and `SOLDIERB` to `NEWSOLDIER`: ```ini [ExampleWH] Convert.From=SOLDIERA,SOLDIERB Convert.To=NEWSOLDIER -Convert.AffectedHouses=team +Convert.AffectsHouse=team ``` In `rulesmd.ini`: @@ -2341,12 +2341,12 @@ In `rulesmd.ini`: [SOMEWARHEAD] ; WarheadType 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) +ConvertN.AffectsHouse=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) +Convert.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) ``` ```{warning} @@ -2433,9 +2433,9 @@ PlayAnimAboveSurface=false ; boolean - 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 `AirburstWeapon/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.Full` customizes whether or not the Warhead is detonated fully on the targets (as part of a dummy weapon) or simply deals area damage and applies Phobos' Warhead effects. - - `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.AffectsTarget` 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.AffectsHouse` 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.AffectsTarget` and `DetonateOnAllMapObjects.AffectsHouse` 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. @@ -2444,22 +2444,22 @@ PlayAnimAboveSurface=false ; boolean [SOMEWARHEAD] ; WarheadType DetonateOnAllMapObjects=false ; boolean DetonateOnAllMapObjects.Full=true ; 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.AffectsTarget=none ; List of Affected Target Enumeration (none|aircraft|buildings|infantry|units|all) +DetonateOnAllMapObjects.AffectsHouse=none ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) DetonateOnAllMapObjects.AffectTypes= ; List of TechnoTypes DetonateOnAllMapObjects.IgnoreTypes= ; List of TechnoTypes DetonateOnAllMapObjects.RequireVerses=false ; boolean ``` ```{warning} -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. +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 (`AffectsTarget/House/Types` etc.) is advised. ``` ### Fire weapon when Warhead kills something - `KillWeapon` will be fired at the target TechnoType's location once it's killed by this Warhead. - `KillWeapon.OnFirer` will be fired at the attacker's location once the target TechnoType is killed by this Warhead. If the source of this Warhead is not another TechnoType, `KillWeapon.OnFirer` will not be fired. -- `KillWeapon.AffectsHouses` / `KillWeapon.OnFirer.AffectsHouses` and `KillWeapon.Affects` / `KillWeapon.OnFirer.Affects` can be used to filter which houses targets can belong to and which types of targets are be considered valid for `KillWeapon` and `KillWeapon.OnFirer` respectively. +- `KillWeapon.AffectsHouse` / `KillWeapon.OnFirer.AffectsHouse` and `KillWeapon.Affects` / `KillWeapon.OnFirer.Affects` can be used to filter which houses targets can belong to and which types of targets are be considered valid for `KillWeapon` and `KillWeapon.OnFirer` respectively. - If the source of this Warhead is not another TechnoType, `KillWeapon` will be fired regardless of the target's house or type. - If a TechnoType has `SuppressKillWeapons` set to true, it will not trigger `KillWeapon` or `KillWeapon.OnFirer` upon being killed. `SuppressKillWeapons.Types` can be used to list WeaponTypes affected by this, if none are listed all WeaponTypes are affected. @@ -2468,8 +2468,8 @@ While this feature can provide better performance than a large `CellSpread` valu [SOMEWARHEAD] ; WarheadType KillWeapon= ; WeaponType KillWeapon.OnFirer= ; WeaponType -KillWeapon.AffectsHouses=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) -KillWeapon.OnFirer.AffectsHouses=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) +KillWeapon.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) +KillWeapon.OnFirer.AffectsHouse=all ; List of Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) KillWeapon.Affects=all ; List of Affected Target Enumeration (none|aircraft|buildings|infantry|units|all) KillWeapon.OnFirer.Affects=all ; List of Affected Target Enumeration (none|aircraft|buildings|infantry|units|all) diff --git a/docs/Whats-New.md b/docs/Whats-New.md index a32a773c3b..721f6eb716 100644 --- a/docs/Whats-New.md +++ b/docs/Whats-New.md @@ -89,6 +89,37 @@ You can use the migration utility (can be found on [Phobos supplementaries repo] - Key `rulesmd.ini -> [TechnoType] -> Deployed.RememberTarget` is deprecated and can be removed now, the bugfix for `DeployToFire` deployers is now always on. +### Changed tags + +- To standardize tag names for similar functions, prevent typos, or avoid misunderstandings, replace them with new tag names. + +#### From pre-0.5 devbuilds + +- The following tags were renamed: + - `[WarheadType] -> Crit.AffectAbovePercent` -> `[WarheadType] -> Crit.AffectsAbovePercent`. + +#### From 0.4 + +- The following tags were renamed: + - `[AttachEffectType] -> AffectTargets` -> `[AttachEffectType] -> AffectsTarget` + - `[AttachEffectType] -> ReflectDamage.AffectsHouses` -> `[AttachEffectType] -> ReflectDamage.AffectsHouse` + - `[AttachEffectType/TechnoType] -> RevengeWeapon.AffectsHouses` -> `[AttachEffectType/TechnoType] -> RevengeWeapon.AffectsHouse` + - `[TechnoType] -> AutoFire` -> `[TechnoType] -> AutoTargetOwnPosition` + - `[TechnoType] -> AutoFire.TargetSelf` -> `[TechnoType] -> AutoTargetOwnPosition.Self` + - `[WarheadType] -> DetonateOnAllMapObjects.AffectHouses` -> `[WarheadType] -> DetonateOnAllMapObjects.AffectsHouse` + - `[WarheadType] -> DetonateOnAllMapObjects.AffectTargets` -> `[WarheadType] -> DetonateOnAllMapObjects.AffectsTarget` + - `[WarheadType] -> Crit.AffectBelowPercent` -> `[WarheadType] -> Crit.AffectsBelowPercent`. + - `[WarheadType] -> Crit.Affects` -> `[WarheadType] -> Crit.AffectsTarget` + - `[WarheadType] -> Crit.AffectsHouses` -> `[WarheadType] -> Crit.AffectsHouse` + - `[WarheadType] -> KillWeapon.AffectsHouses` -> `[WarheadType] -> KillWeapon.AffectsHouse` + - `[WarheadType] -> KillWeapon.OnFirer.AffectsHouses` -> `[WarheadType] -> KillWeapon.OnFirer.AffectsHouse` + - `[WarheadType/SuperWeaponType] -> Convert(N).AffectedHouses` -> `[WarheadType/SuperWeaponType] -> Convert(N).AffectsHouse` + - `[SuperWeaponType] -> LimboKill.Affected` -> `[SuperWeaponType] -> LimboKill.AffectsHouse` + +```{note} +- You can use the [*MigrationUtility*](https://github.com/Phobos-developers/PhobosSupplementaries/tree/develop/MigrationUtility) in the PhobosSupplementaries repository to conveniently complete these migrations. +``` + ### New user settings in RA2MD.INI - These are new user setting keys added by various features in Phobos. Most of them can be found in either in [user inteface](User-Interface.md) or [miscellaneous](Miscellanous.md) sections. Search functionality can be used to find them quickly if needed. diff --git a/docs/locale/zh_CN/LC_MESSAGES/New-or-Enhanced-Logics.po b/docs/locale/zh_CN/LC_MESSAGES/New-or-Enhanced-Logics.po index c8e26e01a6..5e806036b4 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/New-or-Enhanced-Logics.po +++ b/docs/locale/zh_CN/LC_MESSAGES/New-or-Enhanced-Logics.po @@ -182,13 +182,12 @@ msgstr "" #: ../../New-or-Enhanced-Logics.md:27 msgid "" -"`AffectTargets`, if set to a non-empty list, restricts the effect to only" +"`AffectsTarget`, if set to a non-empty list, restricts the effect to only" " be applicable on units belonging to the specified target categories " "(e.g., infantry, units, aircraft, buildings). This check is performed " "after both type-based filters." msgstr "" -"如果 `AffectTargets` 设为非空列表,则 AE " -"仅可对特定大类目标生效(例如步兵、载具、战机、建筑)。此项检查在两个类型名单过滤之后执行。" +"如果 `AffectsTarget` 设为非空列表,则 AE 仅可对特定大类目标生效(例如步兵、载具、战机、建筑)。此项检查在两个类型名单过滤之后执行。" #: ../../New-or-Enhanced-Logics.md:28 msgid "" @@ -408,9 +407,9 @@ msgstr "`RevengeWeapon` 可用于通过 AE 为被附加对象设置一个临时 #: ../../New-or-Enhanced-Logics.md:53 msgid "" -"`RevengeWeapon.AffectsHouses` customizes which houses can trigger the " +"`RevengeWeapon.AffectsHouse` customizes which houses can trigger the " "revenge weapon." -msgstr "`RevengeWeapon.AffectsHouses` 定义哪些所属方可以触发这个复仇武器。" +msgstr "`RevengeWeapon.AffectsHouse` 定义哪些所属方可以触发这个复仇武器。" #: ../../New-or-Enhanced-Logics.md:54 msgid "" @@ -751,7 +750,7 @@ msgid "" "PenetratesForceShield= ; boolean\n" "AffectTypes= ; List of TechnoTypes\n" "IgnoreTypes= ; List of TechnoTypes\n" -"AffectTargets=all ; List of TechnoType " +"AffectsTarget=all ; List of TechnoType " "Enumeration (none|infantry|units|aircraft|buildings|all)\n" "Animation= ; AnimationType\n" "Animation.ResetOnReapply=false ; boolean\n" @@ -806,7 +805,7 @@ msgid "" "Crit.DisallowWarheads= ; List of WarheadTypes" "\n" "RevengeWeapon= ; WeaponType\n" -"RevengeWeapon.AffectsHouses=all ; List of Affected " +"RevengeWeapon.AffectsHouse=all ; List of Affected " "House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "RevengeWeapon.UseInvokerAsOwner=false ; boolean\n" "ReflectDamage=false ; boolean\n" @@ -814,7 +813,7 @@ msgid "" "ReflectDamage.Warhead.Detonate=false ; WarheadType\n" "ReflectDamage.Multiplier=1.0 ; floating point " "value, percents or absolute\n" -"ReflectDamage.AffectsHouses=all ; List of Affected " +"ReflectDamage.AffectsHouse=all ; List of Affected " "House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "ReflectDamage.Chance=1.0 ; floating point value" "\n" @@ -910,7 +909,7 @@ msgstr "" "PenetratesForceShield= ; boolean\n" "AffectTypes= ; List of TechnoTypes\n" "IgnoreTypes= ; List of TechnoTypes\n" -"AffectTargets=all ; List of TechnoType " +"AffectsTarget=all ; List of TechnoType " "Enumeration (none|infantry|units|aircraft|buildings|all)\n" "Animation= ; AnimationType\n" "Animation.ResetOnReapply=false ; boolean\n" @@ -965,7 +964,7 @@ msgstr "" "Crit.DisallowWarheads= ; List of WarheadTypes" "\n" "RevengeWeapon= ; WeaponType\n" -"RevengeWeapon.AffectsHouses=all ; List of Affected " +"RevengeWeapon.AffectsHouse=all ; List of Affected " "House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "RevengeWeapon.UseInvokerAsOwner=false ; boolean\n" "ReflectDamage=false ; boolean\n" @@ -973,7 +972,7 @@ msgstr "" "ReflectDamage.Warhead.Detonate=false ; WarheadType\n" "ReflectDamage.Multiplier=1.0 ; floating point " "value, percents or absolute\n" -"ReflectDamage.AffectsHouses=all ; List of Affected " +"ReflectDamage.AffectsHouse=all ; List of Affected " "House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "ReflectDamage.Chance=1.0 ; floating point value" "\n" @@ -4500,17 +4499,17 @@ msgid "`ConvertN.To` specifies the TechnoType which is the result of conversion. msgstr "`ConvertN.To` 指定转换后的科技类型。" #: ../../New-or-Enhanced-Logics.md:1082 ../../New-or-Enhanced-Logics.md:2328 -msgid "`ConvertN.AffectedHouses` specifies whose units can be converted." -msgstr "`ConvertN.AffectedHouses` 指定哪些所属方的单位可以被转换。" +msgid "`ConvertN.AffectsHouse` specifies whose units can be converted." +msgstr "`ConvertN.AffectsHouse` 指定哪些所属方的单位可以被转换。" #: ../../New-or-Enhanced-Logics.md:1083 ../../New-or-Enhanced-Logics.md:2329 msgid "" -"`Convert.From`, `Convert.To` and `Convert.AffectedHouses` (without " +"`Convert.From`, `Convert.To` and `Convert.AffectsHouse` (without " "numbers) are a valid alternative to `Convert0.From`, `Convert0.To` and " -"`Convert0.AffectedHouses` if only one pair is specified." +"`Convert0.AffectsHouse` if only one pair is specified." msgstr "" -"若只指定一组转换则 `Convert.From`、`Convert.To` 和 `Convert.AffectedHouses`(不带序号)相当于" -" `Convert0.From`、`Convert0.To` 和 `Convert0.AffectedHouses`的别称。" +"若只指定一组转换则 `Convert.From`、`Convert.To` 和 `Convert.AffectsHouse`(不带序号)相当于" +" `Convert0.From`、`Convert0.To` 和 `Convert0.AffectsHouse`的别称。" #: ../../New-or-Enhanced-Logics.md:1084 msgid "" @@ -4532,37 +4531,37 @@ msgid "" "[ExampleSW]\n" "Convert.From=SOLDIERA,SOLDIERB\n" "Convert.To=NEWSOLDIER\n" -"Convert.AffectedHouses=team\n" +"Convert.AffectsHouse=team\n" msgstr "" "[ExampleSW]\n" "Convert.From=SOLDIERA,SOLDIERB\n" "Convert.To=NEWSOLDIER\n" -"Convert.AffectedHouses=team\n" +"Convert.AffectsHouse=team\n" #: ../../New-or-Enhanced-Logics.md:1095 msgid "" "[SOMESW] ; SuperWeaponType\n" "ConvertN.From= ; List of TechnoTypes\n" "ConvertN.To= ; TechnoType\n" -"ConvertN.AffectedHouses=owner ; List of Affected House Enumeration " +"ConvertN.AffectsHouse=owner ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "; where N = 0, 1, 2, ...\n" "; or\n" "Convert.From= ; List of TechnoTypes\n" "Convert.To= ; TechnoType\n" -"Convert.AffectedHouses=owner ; List of Affected House Enumeration " +"Convert.AffectsHouse=owner ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" msgstr "" "[SOMESW] ; SuperWeaponType\n" "ConvertN.From= ; List of TechnoTypes\n" "ConvertN.To= ; TechnoType\n" -"ConvertN.AffectedHouses=owner ; List of Affected House Enumeration " +"ConvertN.AffectsHouse=owner ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "; where N = 0, 1, 2, ...\n" "; or\n" "Convert.From= ; List of TechnoTypes\n" "Convert.To= ; TechnoType\n" -"Convert.AffectedHouses=owner ; List of Affected House Enumeration " +"Convert.AffectsHouse=owner ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" #: ../../New-or-Enhanced-Logics.md:1108 ../../New-or-Enhanced-Logics.md:1375 @@ -4697,8 +4696,8 @@ msgid "" msgstr "创建的建筑不受地图上任何威胁的影响。从游戏中移除它们的唯一方法是使用设置了 `LimboKill.IDs` 的超级武器。" #: ../../New-or-Enhanced-Logics.md:1151 -msgid "`LimboKill.Affected` sets which houses are affected by this feature." -msgstr "`LimboKill.Affected` 设置那个所属方受此效果影响。" +msgid "`LimboKill.AffectsHouse` sets which houses are affected by this feature." +msgstr "`LimboKill.AffectsHouse` 设置那个所属方受此效果影响。" #: ../../New-or-Enhanced-Logics.md:1152 msgid "" @@ -4788,7 +4787,7 @@ msgid "" "\n" "LimboDelivery.RollChances= ; List of percentages.\n" "LimboDelivery.RandomWeightsN= ; List of integers.\n" -"LimboKill.Affected=self ; Affected House Enumeration " +"LimboKill.AffectsHouse=self ; Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "LimboKill.IDs= ; List of numeric IDs.\n" msgstr "" @@ -4798,7 +4797,7 @@ msgstr "" "\n" "LimboDelivery.RollChances= ; List of percentages.\n" "LimboDelivery.RandomWeightsN= ; List of integers.\n" -"LimboKill.Affected=self ; Affected House Enumeration " +"LimboKill.AffectsHouse=self ; Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "LimboKill.IDs= ; List of numeric IDs.\n" @@ -5620,24 +5619,24 @@ msgstr "自动发射武器" #: ../../New-or-Enhanced-Logics.md:1436 msgid "" "You can now make TechnoType automatically fire its weapon(s) without " -"having to scan for suitable targets by setting `AutoFire`, on either its " +"having to scan for suitable targets by setting `AutoTargetOwnPosition`, on either its " "base cell (in which case the weapon that is used for force-firing is " "used) or itself (in which case normal targeting and weapon selection " -"rules and are respected) depending on if `AutoFire.TargetSelf` is set or " +"rules and are respected) depending on if `AutoTargetOwnPosition.Self` is set or " "not." msgstr "" -"现在你可以设置 `AutoFire` 使科技类型根据 `AutoFire.TargetSelf` " +"现在你可以设置 `AutoTargetOwnPosition` 使科技类型根据 `AutoTargetOwnPosition.Self` " "选择当前单元格或开火者自身自动发射其武器而无需检索一个合适的目标。" #: ../../New-or-Enhanced-Logics.md:1439 msgid "" -"[SOMETECHNO] ; TechnoType\n" -"AutoFire=false ; boolean\n" -"AutoFire.TargetSelf=false ; boolean\n" +"[SOMETECHNO] ; TechnoType\n" +"AutoTargetOwnPosition=false ; boolean\n" +"AutoTargetOwnPosition.Self=false ; boolean\n" msgstr "" -"[SOMETECHNO] ; TechnoType\n" -"AutoFire=false ; boolean\n" -"AutoFire.TargetSelf=false ; boolean\n" +"[SOMETECHNO] ; TechnoType\n" +"AutoTargetOwnPosition=false ; boolean\n" +"AutoTargetOwnPosition.Self=false ; boolean\n" #: ../../New-or-Enhanced-Logics.md:1446 msgid "" @@ -7388,10 +7387,10 @@ msgstr "" #: ../../New-or-Enhanced-Logics.md:2002 msgid "" -"`RevengeWeapon.AffectsHouses` can be used to filter which houses the " +"`RevengeWeapon.AffectsHouse` can be used to filter which houses the " "damage that killed the TechnoType is allowed to come from to fire the " "weapon." -msgstr "`RevengeWeapon.AffectsHouses` 可用于筛选可以对哪些所属方的击杀者发射武器。" +msgstr "`RevengeWeapon.AffectsHouse` 可用于筛选可以对哪些所属方的击杀者发射武器。" #: ../../New-or-Enhanced-Logics.md:2003 msgid "" @@ -7414,7 +7413,7 @@ msgstr "" msgid "" "[SOMETECHNO] ; TechnoType\n" "RevengeWeapon= ; WeaponType\n" -"RevengeWeapon.AffectsHouses=all ; List of Affected House Enumeration " +"RevengeWeapon.AffectsHouse=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "\n" "[SOMEWARHEAD] ; WarheadType\n" @@ -7423,7 +7422,7 @@ msgid "" msgstr "" "[SOMETECHNO] ; TechnoType\n" "RevengeWeapon= ; WeaponType\n" -"RevengeWeapon.AffectsHouses=all ; List of Affected House Enumeration " +"RevengeWeapon.AffectsHouse=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "\n" "[SOMEWARHEAD] ; WarheadType\n" @@ -8156,25 +8155,25 @@ msgstr "" #: ../../New-or-Enhanced-Logics.md:2283 msgid "" -"`Crit.Affects` can be used to customize types of targets that this " +"`Crit.AffectsTarget` 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." -msgstr "`Crit.Affects` 可用于自定义此弹头可暴击的目标类型。暴击不能影响空置单元格或仅包含地形对象和覆盖物等的单元格。" +msgstr "`Crit.AffectsTarget` 可用于自定义此弹头可暴击的目标类型。暴击不能影响空置单元格或仅包含地形对象和覆盖物等的单元格。" #: ../../New-or-Enhanced-Logics.md:2284 msgid "" -"`Crit.AffectsHouses` can be used to customize houses that this Warhead " +"`Crit.AffectsHouse` can be used to customize houses that this Warhead " "can deal critical hits against." -msgstr "`Crit.AffectsHouses` 可用于自定义此弹头可暴击的目标所属。" +msgstr "`Crit.AffectsHouse` 可用于自定义此弹头可暴击的目标所属。" #: ../../New-or-Enhanced-Logics.md:2285 msgid "" -"`Crit.AffectBelowPercent` and `Crit.AffectAbovePercent` can be used to " +"`Crit.AffectsBelowPercent` and `Crit.AffectsAbovePercent` can be used to " "set the health percentage that targets must be above and/or below/equal " "to respectively to be affected by critical hits. If target has zero " "health left this check is bypassed." msgstr "" -"`Crit.AffectBelowPercent` 和 `Crit.AffectAbovePercent` " +"`Crit.AffectsBelowPercent` 和 `Crit.AffectsAbovePercent` " "用于设置可被暴击影响的单位其当前血量所占百分比必须高于和/或低于/等于的限制。若目标血量为 0 则跳过该检查。" #: ../../New-or-Enhanced-Logics.md:2286 @@ -8238,13 +8237,13 @@ msgid "" "Crit.ExtraDamage.ApplyFirepowerMult=false ; boolean\n" "Crit.Warhead= ; WarheadType\n" "Crit.Warhead.FullDetonation=true ; boolean\n" -"Crit.Affects=all ; List of Affected Target " +"Crit.AffectsTarget=all ; List of Affected Target " "Enumeration (none|land|water|infantry|units|buildings|all)\n" -"Crit.AffectsHouses=all ; List of Affected House " +"Crit.AffectsHouse=all ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" -"Crit.AffectBelowPercent=1.0 ; floating point value, " +"Crit.AffectsBelowPercent=1.0 ; floating point value, " "percents or absolute (0.0-1.0)\n" -"Crit.AffectAbovePercent=0.0 ; floating point value, " +"Crit.AffectsAbovePercent=0.0 ; floating point value, " "percents or absolute (0.0-1.0)\n" "Crit.AnimList= ; List of AnimationTypes\n" "Crit.AnimList.PickRandom= ; boolean\n" @@ -8264,13 +8263,13 @@ msgstr "" "Crit.ExtraDamage.ApplyFirepowerMult=false ; boolean\n" "Crit.Warhead= ; WarheadType\n" "Crit.Warhead.FullDetonation=true ; boolean\n" -"Crit.Affects=all ; List of Affected Target " +"Crit.AffectsTarget=all ; List of Affected Target " "Enumeration (none|land|water|infantry|units|buildings|all)\n" -"Crit.AffectsHouses=all ; List of Affected House " +"Crit.AffectsHouse=all ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" -"Crit.AffectBelowPercent=1.0 ; floating point value, " +"Crit.AffectsBelowPercent=1.0 ; floating point value, " "percents or absolute (0.0-1.0)\n" -"Crit.AffectAbovePercent=0.0 ; floating point value, " +"Crit.AffectsAbovePercent=0.0 ; floating point value, " "percents or absolute (0.0-1.0)\n" "Crit.AnimList= ; List of AnimationTypes\n" "Crit.AnimList.PickRandom= ; boolean\n" @@ -8315,37 +8314,37 @@ msgid "" "[ExampleWH]\n" "Convert.From=SOLDIERA,SOLDIERB\n" "Convert.To=NEWSOLDIER\n" -"Convert.AffectedHouses=team\n" +"Convert.AffectsHouse=team\n" msgstr "" "[ExampleWH]\n" "Convert.From=SOLDIERA,SOLDIERB\n" "Convert.To=NEWSOLDIER\n" -"Convert.AffectedHouses=team\n" +"Convert.AffectsHouse=team\n" #: ../../New-or-Enhanced-Logics.md:2340 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "ConvertN.From= ; List of TechnoTypes\n" "ConvertN.To= ; TechnoType\n" -"ConvertN.AffectedHouses=all ; List of Affected House Enumeration " +"ConvertN.AffectsHouse=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "; where N = 0, 1, 2, ...\n" "; or\n" "Convert.From= ; List of TechnoTypes\n" "Convert.To= ; TechnoType\n" -"Convert.AffectedHouses=all ; List of Affected House Enumeration " +"Convert.AffectsHouse=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "ConvertN.From= ; List of TechnoTypes\n" "ConvertN.To= ; TechnoType\n" -"ConvertN.AffectedHouses=all ; List of Affected House Enumeration " +"ConvertN.AffectsHouse=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "; where N = 0, 1, 2, ...\n" "; or\n" "Convert.From= ; List of TechnoTypes\n" "Convert.To= ; TechnoType\n" -"Convert.AffectedHouses=all ; List of Affected House Enumeration " +"Convert.AffectsHouse=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" #: ../../New-or-Enhanced-Logics.md:2360 @@ -8615,26 +8614,26 @@ msgstr "" #: ../../New-or-Enhanced-Logics.md:2436 msgid "" -"`DetonateOnAllMapObjects.AffectTargets` is used to filter which types of " +"`DetonateOnAllMapObjects.AffectsTarget` 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." msgstr "" -"`DetonateOnAllMapObjects.AffectTargets` 用于在非 `none` " +"`DetonateOnAllMapObjects.AffectsTarget` 用于在非 `none` " "时筛选哪些类型的目标(科技类型)可被视为有效。仅 `none`、`all`、`aircraft`、`buildings`、`infantry` 和" " `units` 是有效值。默认为 `none`,因为包含所有对象类型可能会影响性能。" #: ../../New-or-Enhanced-Logics.md:2437 msgid "" -"`DetonateOnAllMapObjects.AffectHouses` is used to filter which houses " +"`DetonateOnAllMapObjects.AffectsHouse` 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." msgstr "" -"`DetonateOnAllMapObjects.AffectHouses` 用于在非 `none` " +"`DetonateOnAllMapObjects.AffectsHouse` 用于在非 `none` " "时筛选哪些所属方的目标可以被视为有效。仅适用于发射弹头的所属方已知的情况。默认为 `none`,因为包含所有所属方可能会影响性能。" #: ../../New-or-Enhanced-Logics.md:2438 @@ -8642,13 +8641,13 @@ msgid "" "`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.AffectsTarget` and " +"`DetonateOnAllMapObjects.AffectsHouse` take priority over this setting." msgstr "" "`DetonateOnAllMapObjects.AffectTypes` " "可用于列出特定的科技类型作为有效目标。如果列出了任何有效科技类型,则只有匹配的对象才会被作为目标。注意 " -"`DetonateOnAllMapObjects.AffectTargets` 和 " -"`DetonateOnAllMapObjects.AffectHouses` 的优先级高于此设置。" +"`DetonateOnAllMapObjects.AffectsTarget` 和 " +"`DetonateOnAllMapObjects.AffectsHouse` 的优先级高于此设置。" #: ../../New-or-Enhanced-Logics.md:2439 msgid "" @@ -8673,9 +8672,9 @@ msgid "" "[SOMEWARHEAD] ; WarheadType\n" "DetonateOnAllMapObjects=false ; boolean\n" "DetonateOnAllMapObjects.Full=true ; boolean\n" -"DetonateOnAllMapObjects.AffectTargets=none ; List of Affected Target " +"DetonateOnAllMapObjects.AffectsTarget=none ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" -"DetonateOnAllMapObjects.AffectHouses=none ; List of Affected House " +"DetonateOnAllMapObjects.AffectsHouse=none ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "DetonateOnAllMapObjects.AffectTypes= ; List of TechnoTypes\n" "DetonateOnAllMapObjects.IgnoreTypes= ; List of TechnoTypes\n" @@ -8684,9 +8683,9 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "DetonateOnAllMapObjects=false ; boolean\n" "DetonateOnAllMapObjects.Full=true ; boolean\n" -"DetonateOnAllMapObjects.AffectTargets=none ; List of Affected Target " +"DetonateOnAllMapObjects.AffectsTarget=none ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" -"DetonateOnAllMapObjects.AffectHouses=none ; List of Affected House " +"DetonateOnAllMapObjects.AffectsHouse=none ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "DetonateOnAllMapObjects.AffectTypes= ; List of TechnoTypes\n" "DetonateOnAllMapObjects.IgnoreTypes= ; List of TechnoTypes\n" @@ -8698,7 +8697,7 @@ msgid "" "`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." +"(`AffectsTarget/House/Types` etc.) is advised." msgstr "" "虽然此功能比巨大的 `CellSpread` 值性能上好得多但它仍然可能减慢游戏速度。特别是与动画、AlphaImage 等共同使用时。建议 " "modder 谨慎使用并通过筛选语句进行限制。" @@ -8723,13 +8722,13 @@ msgstr "如果可以追溯到弹头来自哪个单位,那么 `KillWeapon.OnFir #: ../../New-or-Enhanced-Logics.md:2462 msgid "" -"`KillWeapon.AffectsHouses` / `KillWeapon.OnFirer.AffectsHouses` and " +"`KillWeapon.AffectsHouse` / `KillWeapon.OnFirer.AffectsHouse` and " "`KillWeapon.Affects` / `KillWeapon.OnFirer.Affects` can be used to filter" " which houses targets can belong to and which types of targets are be " "considered valid for `KillWeapon` and `KillWeapon.OnFirer` respectively." msgstr "" -"`KillWeapon.AffectsHouses`/`KillWeapon.OnFirer.AffectsHouses` 和 " -"`KillWeapon.OnFirer.AffectsHouses`/`KillWeapon.OnFirer.Affects` " +"`KillWeapon.AffectsHouse`/`KillWeapon.OnFirer.AffectsHouse` 和 " +"`KillWeapon.OnFirer.AffectsHouse`/`KillWeapon.OnFirer.Affects` " "分别用于筛选哪些所属方和哪些类型的目标可以触发 `KillWeapon` 与 `KillWeapon.OnFirer`。" #: ../../New-or-Enhanced-Logics.md:2463 @@ -8754,9 +8753,9 @@ msgid "" "[SOMEWARHEAD] ; WarheadType\n" "KillWeapon= ; WeaponType\n" "KillWeapon.OnFirer= ; WeaponType\n" -"KillWeapon.AffectsHouses=all ; List of Affected House " +"KillWeapon.AffectsHouse=all ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" -"KillWeapon.OnFirer.AffectsHouses=all ; List of Affected House " +"KillWeapon.OnFirer.AffectsHouse=all ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "KillWeapon.Affects=all ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" @@ -8770,9 +8769,9 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "KillWeapon= ; WeaponType\n" "KillWeapon.OnFirer= ; WeaponType\n" -"KillWeapon.AffectsHouses=all ; List of Affected House " +"KillWeapon.AffectsHouse=all ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" -"KillWeapon.OnFirer.AffectsHouses=all ; List of Affected House " +"KillWeapon.OnFirer.AffectsHouse=all ; List of Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" "KillWeapon.Affects=all ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" diff --git a/src/Ext/Bullet/Hooks.DetonateLogics.cpp b/src/Ext/Bullet/Hooks.DetonateLogics.cpp index ac07a6e057..d90af9bcf2 100644 --- a/src/Ext/Bullet/Hooks.DetonateLogics.cpp +++ b/src/Ext/Bullet/Hooks.DetonateLogics.cpp @@ -78,8 +78,8 @@ DEFINE_HOOK(0x4690C1, BulletClass_Logics_DetonateOnAllMapObjects, 0x8) auto const pWHExt = WarheadTypeExt::ExtMap.Find(pThis->WH); if (pWHExt->DetonateOnAllMapObjects && !pWHExt->WasDetonatedOnAllMapObjects - && pWHExt->DetonateOnAllMapObjects_AffectTargets != AffectedTarget::None - && pWHExt->DetonateOnAllMapObjects_AffectHouses != AffectedHouse::None) + && pWHExt->DetonateOnAllMapObjects_AffectsTarget != AffectedTarget::None + && pWHExt->DetonateOnAllMapObjects_AffectsHouse != AffectedHouse::None) { pWHExt->WasDetonatedOnAllMapObjects = true; auto const originalLocation = pThis->Location; @@ -112,7 +112,7 @@ DEFINE_HOOK(0x4690C1, BulletClass_Logics_DetonateOnAllMapObjects, 0x8) } }; - if ((pWHExt->DetonateOnAllMapObjects_AffectTargets & AffectedTarget::Aircraft) != AffectedTarget::None) + if ((pWHExt->DetonateOnAllMapObjects_AffectsTarget & AffectedTarget::Aircraft) != AffectedTarget::None) { auto const aircraft = copy_dvc(AircraftClass::Array); @@ -120,7 +120,7 @@ DEFINE_HOOK(0x4690C1, BulletClass_Logics_DetonateOnAllMapObjects, 0x8) tryDetonate(pAircraft, pAircraft->Type); } - if ((pWHExt->DetonateOnAllMapObjects_AffectTargets & AffectedTarget::Building) != AffectedTarget::None) + if ((pWHExt->DetonateOnAllMapObjects_AffectsTarget & AffectedTarget::Building) != AffectedTarget::None) { auto const buildings = copy_dvc(BuildingClass::Array); @@ -128,7 +128,7 @@ DEFINE_HOOK(0x4690C1, BulletClass_Logics_DetonateOnAllMapObjects, 0x8) tryDetonate(pBuilding, pBuilding->Type); } - if ((pWHExt->DetonateOnAllMapObjects_AffectTargets & AffectedTarget::Infantry) != AffectedTarget::None) + if ((pWHExt->DetonateOnAllMapObjects_AffectsTarget & AffectedTarget::Infantry) != AffectedTarget::None) { auto const infantry = copy_dvc(InfantryClass::Array); @@ -136,7 +136,7 @@ DEFINE_HOOK(0x4690C1, BulletClass_Logics_DetonateOnAllMapObjects, 0x8) tryDetonate(pInf, pInf->Type); } - if ((pWHExt->DetonateOnAllMapObjects_AffectTargets & AffectedTarget::Unit) != AffectedTarget::None) + if ((pWHExt->DetonateOnAllMapObjects_AffectsTarget & AffectedTarget::Unit) != AffectedTarget::None) { auto const units = copy_dvc(UnitClass::Array); diff --git a/src/Ext/SWType/Body.cpp b/src/Ext/SWType/Body.cpp index f230746dc7..abb465d020 100644 --- a/src/Ext/SWType/Body.cpp +++ b/src/Ext/SWType/Body.cpp @@ -55,7 +55,7 @@ void SWTypeExt::ExtData::Serialize(T& Stm) .Process(this->LimboDelivery_IDs) .Process(this->LimboDelivery_RandomWeightsData) .Process(this->LimboDelivery_RollChances) - .Process(this->LimboKill_Affected) + .Process(this->LimboKill_AffectsHouse) .Process(this->LimboKill_IDs) .Process(this->RandomBuffer) .Process(this->Detonate_Warhead) @@ -143,7 +143,7 @@ void SWTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->LimboDelivery_Types.Read(exINI, pSection, "LimboDelivery.Types"); this->LimboDelivery_IDs.Read(exINI, pSection, "LimboDelivery.IDs"); this->LimboDelivery_RollChances.Read(exINI, pSection, "LimboDelivery.RollChances"); - this->LimboKill_Affected.Read(exINI, pSection, "LimboKill.Affected"); + this->LimboKill_AffectsHouse.Read(exINI, pSection, "LimboKill.AffectsHouse"); this->LimboKill_IDs.Read(exINI, pSection, "LimboKill.IDs"); this->SW_Next.Read(exINI, pSection, "SW.Next"); this->SW_Next_RealLaunch.Read(exINI, pSection, "SW.Next.RealLaunch"); diff --git a/src/Ext/SWType/Body.h b/src/Ext/SWType/Body.h index e4af1c3879..d496660605 100644 --- a/src/Ext/SWType/Body.h +++ b/src/Ext/SWType/Body.h @@ -60,7 +60,7 @@ class SWTypeExt ValueableVector LimboDelivery_Types; ValueableVector LimboDelivery_IDs; ValueableVector LimboDelivery_RollChances; - Valueable LimboKill_Affected; + Valueable LimboKill_AffectsHouse; ValueableVector LimboKill_IDs; Valueable RandomBuffer; ValueableIdxVector SW_Next; @@ -147,7 +147,7 @@ class SWTypeExt , LimboDelivery_IDs {} , LimboDelivery_RollChances {} , LimboDelivery_RandomWeightsData {} - , LimboKill_Affected { AffectedHouse::Owner } + , LimboKill_AffectsHouse { AffectedHouse::Owner } , LimboKill_IDs {} , RandomBuffer { 0.0 } , Detonate_Warhead {} diff --git a/src/Ext/SWType/FireSuperWeapon.cpp b/src/Ext/SWType/FireSuperWeapon.cpp index 1d5e2e4a20..a1c1daef54 100644 --- a/src/Ext/SWType/FireSuperWeapon.cpp +++ b/src/Ext/SWType/FireSuperWeapon.cpp @@ -206,7 +206,7 @@ void SWTypeExt::ExtData::ApplyLimboKill(HouseClass* pHouse) { for (HouseClass* pTargetHouse : HouseClass::Array) { - if (EnumFunctions::CanTargetHouse(this->LimboKill_Affected, pHouse, pTargetHouse)) + if (EnumFunctions::CanTargetHouse(this->LimboKill_AffectsHouse, pHouse, pTargetHouse)) { auto const pHouseExt = HouseExt::ExtMap.Find(pTargetHouse); auto& vec = pHouseExt->OwnedLimboDeliveredBuildings; diff --git a/src/Ext/Techno/Body.Update.cpp b/src/Ext/Techno/Body.Update.cpp index 1be8e43495..e4f4a38248 100644 --- a/src/Ext/Techno/Body.Update.cpp +++ b/src/Ext/Techno/Body.Update.cpp @@ -1113,8 +1113,8 @@ void TechnoExt::ExtData::UpdateTypeData(TechnoTypeClass* pCurrentType) } } - // handle AutoFire - if (pOldTypeExt->AutoFire && !pNewTypeExt->AutoFire) + // handle AutoTargetOwnPosition + if (pOldTypeExt->AutoTargetOwnPosition && !pNewTypeExt->AutoTargetOwnPosition) pThis->SetTarget(nullptr); } @@ -1916,7 +1916,7 @@ void TechnoExt::ExtData::UpdateSelfOwnedAttachEffects() { auto const attachEffect = it->get(); auto const pType = attachEffect->GetType(); - const bool isValid = EnumFunctions::IsTechnoEligible(pThis, pType->AffectTargets, true) + const bool isValid = EnumFunctions::IsTechnoEligible(pThis, pType->AffectsTarget, true) && (pType->AffectTypes.empty() || pType->AffectTypes.Contains(pTechnoType)) && !pType->IgnoreTypes.Contains(pTechnoType); const bool remove = !isValid || (attachEffect->IsSelfOwned() && !pTypeExt->AttachEffects.AttachTypes.Contains(pType)); diff --git a/src/Ext/Techno/Hooks.ReceiveDamage.cpp b/src/Ext/Techno/Hooks.ReceiveDamage.cpp index 9c14e7c8d9..e4d7553744 100644 --- a/src/Ext/Techno/Hooks.ReceiveDamage.cpp +++ b/src/Ext/Techno/Hooks.ReceiveDamage.cpp @@ -383,7 +383,7 @@ DEFINE_HOOK(0x701E18, TechnoClass_ReceiveDamage_ReflectDamage, 0x7) { auto const pInvoker = attachEffect->GetInvoker(); - if (pInvoker && EnumFunctions::CanTargetHouse(pType->ReflectDamage_AffectsHouses, pInvoker->Owner, pSourceHouse)) + if (pInvoker && EnumFunctions::CanTargetHouse(pType->ReflectDamage_AffectsHouse, pInvoker->Owner, pSourceHouse)) { auto const pWHExtRef = WarheadTypeExt::ExtMap.Find(pWH); pWHExtRef->Reflected = true; @@ -396,7 +396,7 @@ DEFINE_HOOK(0x701E18, TechnoClass_ReceiveDamage_ReflectDamage, 0x7) pWHExtRef->Reflected = false; } } - else if (EnumFunctions::CanTargetHouse(pType->ReflectDamage_AffectsHouses, pThis->Owner, pSourceHouse)) + else if (EnumFunctions::CanTargetHouse(pType->ReflectDamage_AffectsHouse, pThis->Owner, pSourceHouse)) { auto const pWHExtRef = WarheadTypeExt::ExtMap.Find(pWH); pWHExtRef->Reflected = true; diff --git a/src/Ext/Techno/Hooks.TargetEvaluation.cpp b/src/Ext/Techno/Hooks.TargetEvaluation.cpp index d8c9d1f3e7..30b41e4f12 100644 --- a/src/Ext/Techno/Hooks.TargetEvaluation.cpp +++ b/src/Ext/Techno/Hooks.TargetEvaluation.cpp @@ -10,9 +10,9 @@ DEFINE_HOOK(0x7098B9, TechnoClass_TargetSomethingNearby_AutoFire, 0x6) const auto pExt = TechnoExt::ExtMap.Find(pThis)->TypeExtData; - if (pExt->AutoFire) + if (pExt->AutoTargetOwnPosition) { - if (pExt->AutoFire_TargetSelf) + if (pExt->AutoTargetOwnPosition_Self) pThis->SetTarget(pThis); else pThis->SetTarget(pThis->GetCell()); diff --git a/src/Ext/Techno/WeaponHelpers.cpp b/src/Ext/Techno/WeaponHelpers.cpp index 12e5a2a875..b41405c78b 100644 --- a/src/Ext/Techno/WeaponHelpers.cpp +++ b/src/Ext/Techno/WeaponHelpers.cpp @@ -235,7 +235,7 @@ void TechnoExt::ApplyKillWeapon(TechnoClass* pThis, TechnoClass* pSource, Warhea const bool hasFilters = pTypeExt->SuppressKillWeapons_Types.size() > 0; // KillWeapon can be triggered without the source - if (pWHExt->KillWeapon && (!pSource || (EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_AffectsHouses, pSource->Owner, pThis->Owner) + if (pWHExt->KillWeapon && (!pSource || (EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_AffectsHouse, pSource->Owner, pThis->Owner) && EnumFunctions::IsTechnoEligible(pThis, pWHExt->KillWeapon_Affects)))) { if (!pTypeExt->SuppressKillWeapons || (hasFilters && !pTypeExt->SuppressKillWeapons_Types.Contains(pWHExt->KillWeapon))) @@ -243,7 +243,7 @@ void TechnoExt::ApplyKillWeapon(TechnoClass* pThis, TechnoClass* pSource, Warhea } // KillWeapon.OnFirer must have a source - if (pWHExt->KillWeapon_OnFirer && pSource && EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_OnFirer_AffectsHouses, pSource->Owner, pThis->Owner) + if (pWHExt->KillWeapon_OnFirer && pSource && EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_OnFirer_AffectsHouse, pSource->Owner, pThis->Owner) && EnumFunctions::IsTechnoEligible(pThis, pWHExt->KillWeapon_OnFirer_Affects)) { if (!pTypeExt->SuppressKillWeapons || (hasFilters && !pTypeExt->SuppressKillWeapons_Types.Contains(pWHExt->KillWeapon_OnFirer))) @@ -262,7 +262,7 @@ void TechnoExt::ApplyRevengeWeapon(TechnoClass* pThis, TechnoClass* pSource, War const bool suppress = pWHExt->SuppressRevengeWeapons; const bool hasFilters = suppressType.size() > 0; - if (pTypeExt->RevengeWeapon && EnumFunctions::CanTargetHouse(pTypeExt->RevengeWeapon_AffectsHouses, pThisOwner, pSourceOwner)) + if (pTypeExt->RevengeWeapon && EnumFunctions::CanTargetHouse(pTypeExt->RevengeWeapon_AffectsHouse, pThisOwner, pSourceOwner)) { if (!suppress || (hasFilters && !suppressType.Contains(pTypeExt->RevengeWeapon))) WeaponTypeExt::DetonateAt(pTypeExt->RevengeWeapon, pSource, pThis); @@ -285,10 +285,10 @@ void TechnoExt::ApplyRevengeWeapon(TechnoClass* pThis, TechnoClass* pSource, War { auto const pInvoker = attachEffect->GetInvoker(); - if (pInvoker && EnumFunctions::CanTargetHouse(pType->RevengeWeapon_AffectsHouses, pInvoker->Owner, pSourceOwner)) + if (pInvoker && EnumFunctions::CanTargetHouse(pType->RevengeWeapon_AffectsHouse, pInvoker->Owner, pSourceOwner)) WeaponTypeExt::DetonateAt(pType->RevengeWeapon, pSource, pInvoker); } - else if (EnumFunctions::CanTargetHouse(pType->RevengeWeapon_AffectsHouses, pThisOwner, pSourceOwner)) + else if (EnumFunctions::CanTargetHouse(pType->RevengeWeapon_AffectsHouse, pThisOwner, pSourceOwner)) { WeaponTypeExt::DetonateAt(pType->RevengeWeapon, pSource, pThis); } diff --git a/src/Ext/TechnoType/Body.cpp b/src/Ext/TechnoType/Body.cpp index 4bb689d3a8..347855433c 100644 --- a/src/Ext/TechnoType/Body.cpp +++ b/src/Ext/TechnoType/Body.cpp @@ -839,8 +839,8 @@ void TechnoTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->OpenTransport_RangeBonus.Read(exINI, pSection, "OpenTransport.RangeBonus"); this->OpenTransport_DamageMultiplier.Read(exINI, pSection, "OpenTransport.DamageMultiplier"); - this->AutoFire.Read(exINI, pSection, "AutoFire"); - this->AutoFire_TargetSelf.Read(exINI, pSection, "AutoFire.TargetSelf"); + this->AutoTargetOwnPosition.Read(exINI, pSection, "AutoTargetOwnPosition"); + this->AutoTargetOwnPosition_Self.Read(exINI, pSection, "AutoTargetOwnPosition.Self"); this->NoSecondaryWeaponFallback.Read(exINI, pSection, "NoSecondaryWeaponFallback"); this->NoSecondaryWeaponFallback_AllowAA.Read(exINI, pSection, "NoSecondaryWeaponFallback.AllowAA"); @@ -982,7 +982,7 @@ void TechnoTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->Tint_VisibleToHouses.Read(exINI, pSection, "Tint.VisibleToHouses"); this->RevengeWeapon.Read(exINI, pSection, "RevengeWeapon"); - this->RevengeWeapon_AffectsHouses.Read(exINI, pSection, "RevengeWeapon.AffectsHouses"); + this->RevengeWeapon_AffectsHouse.Read(exINI, pSection, "RevengeWeapon.AffectsHouse"); this->RecountBurst.Read(exINI, pSection, "RecountBurst"); @@ -1510,8 +1510,8 @@ void TechnoTypeExt::ExtData::Serialize(T& Stm) .Process(this->OpenTransport_RangeBonus) .Process(this->OpenTransport_DamageMultiplier) - .Process(this->AutoFire) - .Process(this->AutoFire_TargetSelf) + .Process(this->AutoTargetOwnPosition) + .Process(this->AutoTargetOwnPosition_Self) .Process(this->NoSecondaryWeaponFallback) .Process(this->NoSecondaryWeaponFallback_AllowAA) .Process(this->AllowWeaponSelectAgainstWalls) @@ -1642,7 +1642,7 @@ void TechnoTypeExt::ExtData::Serialize(T& Stm) .Process(this->Tint_VisibleToHouses) .Process(this->RevengeWeapon) - .Process(this->RevengeWeapon_AffectsHouses) + .Process(this->RevengeWeapon_AffectsHouse) .Process(this->AttachEffects) diff --git a/src/Ext/TechnoType/Body.h b/src/Ext/TechnoType/Body.h index 4de978975e..8c8ff01a6c 100644 --- a/src/Ext/TechnoType/Body.h +++ b/src/Ext/TechnoType/Body.h @@ -168,8 +168,8 @@ class TechnoTypeExt Valueable OpenTransport_RangeBonus; Valueable OpenTransport_DamageMultiplier; - Valueable AutoFire; - Valueable AutoFire_TargetSelf; + Valueable AutoTargetOwnPosition; + Valueable AutoTargetOwnPosition_Self; Valueable NoSecondaryWeaponFallback; Valueable NoSecondaryWeaponFallback_AllowAA; @@ -289,7 +289,7 @@ class TechnoTypeExt Valueable Tint_VisibleToHouses; Valueable RevengeWeapon; - Valueable RevengeWeapon_AffectsHouses; + Valueable RevengeWeapon_AffectsHouse; AEAttachInfoTypeClass AttachEffects; @@ -545,8 +545,8 @@ class TechnoTypeExt , OpenTransport_RangeBonus { 0 } , OpenTransport_DamageMultiplier { 1.0 } - , AutoFire { false } - , AutoFire_TargetSelf { false } + , AutoTargetOwnPosition { false } + , AutoTargetOwnPosition_Self { false } , NoSecondaryWeaponFallback { false } , NoSecondaryWeaponFallback_AllowAA { false } , AllowWeaponSelectAgainstWalls {} @@ -712,7 +712,7 @@ class TechnoTypeExt , Tint_VisibleToHouses { AffectedHouse::All } , RevengeWeapon {} - , RevengeWeapon_AffectsHouses { AffectedHouse::All } + , RevengeWeapon_AffectsHouse { AffectedHouse::All } , AttachEffects {} diff --git a/src/Ext/WarheadType/Body.cpp b/src/Ext/WarheadType/Body.cpp index 72ef93c89e..adb83832db 100644 --- a/src/Ext/WarheadType/Body.cpp +++ b/src/Ext/WarheadType/Body.cpp @@ -80,7 +80,7 @@ bool WarheadTypeExt::ExtData::EligibleForFullMapDetonation(TechnoClass* pTechno, if (!pTechno || !pTechno->IsOnMap || !pTechno->IsAlive || pTechno->InLimbo || pTechno->IsSinking) return false; - if (pOwner && !EnumFunctions::CanTargetHouse(this->DetonateOnAllMapObjects_AffectHouses, pOwner, pTechno->Owner)) + if (pOwner && !EnumFunctions::CanTargetHouse(this->DetonateOnAllMapObjects_AffectsHouse, pOwner, pTechno->Owner)) return false; if ((this->DetonateOnAllMapObjects_AffectTypes.size() > 0 && !this->DetonateOnAllMapObjects_AffectTypes.Contains(pType)) @@ -156,19 +156,19 @@ void WarheadTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->Crit_ExtraDamage_ApplyFirepowerMult.Read(exINI, pSection, "Crit.ExtraDamage.ApplyFirepowerMult"); this->Crit_Warhead.Read(exINI, pSection, "Crit.Warhead"); this->Crit_Warhead_FullDetonation.Read(exINI, pSection, "Crit.Warhead.FullDetonation"); - this->Crit_Affects.Read(exINI, pSection, "Crit.Affects"); - this->Crit_AffectsHouses.Read(exINI, pSection, "Crit.AffectsHouses"); + this->Crit_AffectsTarget.Read(exINI, pSection, "Crit.AffectsTarget"); + this->Crit_AffectsHouse.Read(exINI, pSection, "Crit.AffectsHouse"); this->Crit_AnimList.Read(exINI, pSection, "Crit.AnimList"); this->Crit_AnimList_PickRandom.Read(exINI, pSection, "Crit.AnimList.PickRandom"); this->Crit_AnimList_CreateAll.Read(exINI, pSection, "Crit.AnimList.CreateAll"); this->Crit_ActiveChanceAnims.Read(exINI, pSection, "Crit.ActiveChanceAnims"); this->Crit_AnimOnAffectedTargets.Read(exINI, pSection, "Crit.AnimOnAffectedTargets"); - this->Crit_AffectBelowPercent.Read(exINI, pSection, "Crit.AffectBelowPercent"); - this->Crit_AffectAbovePercent.Read(exINI, pSection, "Crit.AffectAbovePercent"); + this->Crit_AffectsBelowPercent.Read(exINI, pSection, "Crit.AffectsBelowPercent"); + this->Crit_AffectsAbovePercent.Read(exINI, pSection, "Crit.AffectsAbovePercent"); this->Crit_SuppressWhenIntercepted.Read(exINI, pSection, "Crit.SuppressWhenIntercepted"); - if (this->Crit_AffectAbovePercent > this->Crit_AffectBelowPercent) - Debug::Log("[Developer warning][%s] Crit.AffectAbovePercent is bigger than Crit.AffectBelowPercent, crit will never activate!\n", pSection); + if (this->Crit_AffectsAbovePercent > this->Crit_AffectsBelowPercent) + Debug::Log("[Developer warning][%s] Crit.AffectsAbovePercent is bigger than Crit.AffectsBelowPercent, crit will never activate!\n", pSection); this->MindControl_Anim.Read(exINI, pSection, "MindControl.Anim"); this->MindControl_ThreatDelay.Read(exINI, pSection, "MindControl.ThreatDelay"); @@ -234,8 +234,8 @@ void WarheadTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->DetonateOnAllMapObjects.Read(exINI, pSection, "DetonateOnAllMapObjects"); this->DetonateOnAllMapObjects_Full.Read(exINI, pSection, "DetonateOnAllMapObjects.Full"); this->DetonateOnAllMapObjects_RequireVerses.Read(exINI, pSection, "DetonateOnAllMapObjects.RequireVerses"); - this->DetonateOnAllMapObjects_AffectTargets.Read(exINI, pSection, "DetonateOnAllMapObjects.AffectTargets"); - this->DetonateOnAllMapObjects_AffectHouses.Read(exINI, pSection, "DetonateOnAllMapObjects.AffectHouses"); + this->DetonateOnAllMapObjects_AffectsTarget.Read(exINI, pSection, "DetonateOnAllMapObjects.AffectsTarget"); + this->DetonateOnAllMapObjects_AffectsHouse.Read(exINI, pSection, "DetonateOnAllMapObjects.AffectsHouse"); this->DetonateOnAllMapObjects_AffectTypes.Read(exINI, pSection, "DetonateOnAllMapObjects.AffectTypes"); this->DetonateOnAllMapObjects_IgnoreTypes.Read(exINI, pSection, "DetonateOnAllMapObjects.IgnoreTypes"); @@ -277,8 +277,8 @@ void WarheadTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->KillWeapon.Read(exINI, pSection, "KillWeapon"); this->KillWeapon_OnFirer.Read(exINI, pSection, "KillWeapon.OnFirer"); - this->KillWeapon_AffectsHouses.Read(exINI, pSection, "KillWeapon.AffectsHouses"); - this->KillWeapon_OnFirer_AffectsHouses.Read(exINI, pSection, "KillWeapon.OnFirer.AffectsHouses"); + this->KillWeapon_AffectsHouse.Read(exINI, pSection, "KillWeapon.AffectsHouse"); + this->KillWeapon_OnFirer_AffectsHouse.Read(exINI, pSection, "KillWeapon.OnFirer.AffectsHouse"); this->KillWeapon_Affects.Read(exINI, pSection, "KillWeapon.Affects"); this->KillWeapon_OnFirer_Affects.Read(exINI, pSection, "KillWeapon.OnFirer.Affects"); @@ -451,15 +451,15 @@ void WarheadTypeExt::ExtData::Serialize(T& Stm) .Process(this->Crit_ExtraDamage_ApplyFirepowerMult) .Process(this->Crit_Warhead) .Process(this->Crit_Warhead_FullDetonation) - .Process(this->Crit_Affects) - .Process(this->Crit_AffectsHouses) + .Process(this->Crit_AffectsTarget) + .Process(this->Crit_AffectsHouse) .Process(this->Crit_AnimList) .Process(this->Crit_AnimList_PickRandom) .Process(this->Crit_AnimList_CreateAll) .Process(this->Crit_ActiveChanceAnims) .Process(this->Crit_AnimOnAffectedTargets) - .Process(this->Crit_AffectBelowPercent) - .Process(this->Crit_AffectAbovePercent) + .Process(this->Crit_AffectsBelowPercent) + .Process(this->Crit_AffectsAbovePercent) .Process(this->Crit_SuppressWhenIntercepted) .Process(this->MindControl_Anim) @@ -526,8 +526,8 @@ void WarheadTypeExt::ExtData::Serialize(T& Stm) .Process(this->DetonateOnAllMapObjects) .Process(this->DetonateOnAllMapObjects_Full) .Process(this->DetonateOnAllMapObjects_RequireVerses) - .Process(this->DetonateOnAllMapObjects_AffectTargets) - .Process(this->DetonateOnAllMapObjects_AffectHouses) + .Process(this->DetonateOnAllMapObjects_AffectsTarget) + .Process(this->DetonateOnAllMapObjects_AffectsHouse) .Process(this->DetonateOnAllMapObjects_AffectTypes) .Process(this->DetonateOnAllMapObjects_IgnoreTypes) @@ -581,8 +581,8 @@ void WarheadTypeExt::ExtData::Serialize(T& Stm) .Process(this->KillWeapon) .Process(this->KillWeapon_OnFirer) - .Process(this->KillWeapon_AffectsHouses) - .Process(this->KillWeapon_OnFirer_AffectsHouses) + .Process(this->KillWeapon_AffectsHouse) + .Process(this->KillWeapon_OnFirer_AffectsHouse) .Process(this->KillWeapon_Affects) .Process(this->KillWeapon_OnFirer_Affects) diff --git a/src/Ext/WarheadType/Body.h b/src/Ext/WarheadType/Body.h index aace9f5887..db75a392cc 100644 --- a/src/Ext/WarheadType/Body.h +++ b/src/Ext/WarheadType/Body.h @@ -58,15 +58,15 @@ class WarheadTypeExt Valueable Crit_ExtraDamage_ApplyFirepowerMult; Valueable Crit_Warhead; Valueable Crit_Warhead_FullDetonation; - Valueable Crit_Affects; - Valueable Crit_AffectsHouses; + Valueable Crit_AffectsTarget; + Valueable Crit_AffectsHouse; ValueableVector Crit_AnimList; Nullable Crit_AnimList_PickRandom; Nullable Crit_AnimList_CreateAll; ValueableVector Crit_ActiveChanceAnims; Valueable Crit_AnimOnAffectedTargets; - Valueable Crit_AffectBelowPercent; - Valueable Crit_AffectAbovePercent; + Valueable Crit_AffectsBelowPercent; + Valueable Crit_AffectsAbovePercent; Valueable Crit_SuppressWhenIntercepted; Nullable MindControl_Anim; @@ -136,8 +136,8 @@ class WarheadTypeExt Valueable DetonateOnAllMapObjects; Valueable DetonateOnAllMapObjects_Full; Valueable DetonateOnAllMapObjects_RequireVerses; - Valueable DetonateOnAllMapObjects_AffectTargets; - Valueable DetonateOnAllMapObjects_AffectHouses; + Valueable DetonateOnAllMapObjects_AffectsTarget; + Valueable DetonateOnAllMapObjects_AffectsHouse; ValueableVector DetonateOnAllMapObjects_AffectTypes; ValueableVector DetonateOnAllMapObjects_IgnoreTypes; @@ -183,8 +183,8 @@ class WarheadTypeExt Valueable KillWeapon; Valueable KillWeapon_OnFirer; - Valueable KillWeapon_AffectsHouses; - Valueable KillWeapon_OnFirer_AffectsHouses; + Valueable KillWeapon_AffectsHouse; + Valueable KillWeapon_OnFirer_AffectsHouse; Valueable KillWeapon_Affects; Valueable KillWeapon_OnFirer_Affects; @@ -279,15 +279,15 @@ class WarheadTypeExt , Crit_ExtraDamage_ApplyFirepowerMult { false } , Crit_Warhead {} , Crit_Warhead_FullDetonation { true } - , Crit_Affects { AffectedTarget::All } - , Crit_AffectsHouses { AffectedHouse::All } + , Crit_AffectsTarget { AffectedTarget::All } + , Crit_AffectsHouse { AffectedHouse::All } , Crit_AnimList {} , Crit_AnimList_PickRandom {} , Crit_AnimList_CreateAll {} , Crit_ActiveChanceAnims {} , Crit_AnimOnAffectedTargets { false } - , Crit_AffectBelowPercent { 1.0 } - , Crit_AffectAbovePercent { 0.0 } + , Crit_AffectsBelowPercent { 1.0 } + , Crit_AffectsAbovePercent { 0.0 } , Crit_SuppressWhenIntercepted { false } , MindControl_Anim {} @@ -357,8 +357,8 @@ class WarheadTypeExt , DetonateOnAllMapObjects { false } , DetonateOnAllMapObjects_Full { true } , DetonateOnAllMapObjects_RequireVerses { false } - , DetonateOnAllMapObjects_AffectTargets { AffectedTarget::None } - , DetonateOnAllMapObjects_AffectHouses { AffectedHouse::None } + , DetonateOnAllMapObjects_AffectsTarget { AffectedTarget::None } + , DetonateOnAllMapObjects_AffectsHouse { AffectedHouse::None } , DetonateOnAllMapObjects_AffectTypes {} , DetonateOnAllMapObjects_IgnoreTypes {} @@ -435,8 +435,8 @@ class WarheadTypeExt , KillWeapon {} , KillWeapon_OnFirer {} - , KillWeapon_AffectsHouses { AffectedHouse::All } - , KillWeapon_OnFirer_AffectsHouses { AffectedHouse::All } + , KillWeapon_AffectsHouse { AffectedHouse::All } + , KillWeapon_OnFirer_AffectsHouse { AffectedHouse::All } , KillWeapon_Affects { AffectedTarget::All } , KillWeapon_OnFirer_Affects { AffectedTarget::All } diff --git a/src/Ext/WarheadType/Detonate.cpp b/src/Ext/WarheadType/Detonate.cpp index 32f18249bb..cdb3056943 100644 --- a/src/Ext/WarheadType/Detonate.cpp +++ b/src/Ext/WarheadType/Detonate.cpp @@ -486,16 +486,16 @@ void WarheadTypeExt::ExtData::ApplyCrit(HouseClass* pHouse, TechnoClass* pTarget if (pSld && pSld->IsActive() && pSld->GetType()->ImmuneToCrit) return; - if (!TechnoExt::IsHealthInThreshold(pTarget, this->Crit_AffectAbovePercent, this->Crit_AffectBelowPercent)) + if (!TechnoExt::IsHealthInThreshold(pTarget, this->Crit_AffectsAbovePercent, this->Crit_AffectsBelowPercent)) return; - if (pHouse && !EnumFunctions::CanTargetHouse(this->Crit_AffectsHouses, pHouse, pTarget->Owner)) + if (pHouse && !EnumFunctions::CanTargetHouse(this->Crit_AffectsHouse, pHouse, pTarget->Owner)) return; - if (!EnumFunctions::IsCellEligible(pTarget->GetCell(), this->Crit_Affects)) + if (!EnumFunctions::IsCellEligible(pTarget->GetCell(), this->Crit_AffectsTarget)) return; - if (!EnumFunctions::IsTechnoEligible(pTarget, this->Crit_Affects)) + if (!EnumFunctions::IsTechnoEligible(pTarget, this->Crit_AffectsTarget)) return; this->Crit_Active = true; diff --git a/src/New/Entity/AttachEffectClass.cpp b/src/New/Entity/AttachEffectClass.cpp index 62717dfa8b..5ae41a7f79 100644 --- a/src/New/Entity/AttachEffectClass.cpp +++ b/src/New/Entity/AttachEffectClass.cpp @@ -687,7 +687,7 @@ AttachEffectClass* AttachEffectClass::CreateAndAttach(AttachEffectTypeClass* pTy return nullptr; } - if (!EnumFunctions::IsTechnoEligible(pTarget, pType->AffectTargets, true)) + if (!EnumFunctions::IsTechnoEligible(pTarget, pType->AffectsTarget, true)) return nullptr; if ((!pType->AffectTypes.empty() && !pType->AffectTypes.Contains(pTargetType)) || pType->IgnoreTypes.Contains(pTargetType)) @@ -953,7 +953,7 @@ void AttachEffectClass::TransferAttachedEffects(TechnoClass* pSource, TechnoClas } auto const type = attachEffect->GetType(); - const bool isValid = EnumFunctions::IsTechnoEligible(pTarget, type->AffectTargets, true) + const bool isValid = EnumFunctions::IsTechnoEligible(pTarget, type->AffectsTarget, true) && (type->AffectTypes.empty() || type->AffectTypes.Contains(pTargetType)) && !type->IgnoreTypes.Contains(pTargetType); if (!isValid) diff --git a/src/New/Type/Affiliated/TypeConvertGroup.cpp b/src/New/Type/Affiliated/TypeConvertGroup.cpp index 58d17d6837..94c611179c 100644 --- a/src/New/Type/Affiliated/TypeConvertGroup.cpp +++ b/src/New/Type/Affiliated/TypeConvertGroup.cpp @@ -51,37 +51,37 @@ void TypeConvertGroup::Parse(std::vector& list, INI_EX& exINI, char tempBuffer[32]; ValueableVector convertFrom; Nullable convertTo; - Nullable convertAffectedHouses; + Nullable convertAffectsHouse; _snprintf_s(tempBuffer, sizeof(tempBuffer), "Convert%d.From", i); convertFrom.Read(exINI, pSection, tempBuffer); _snprintf_s(tempBuffer, sizeof(tempBuffer), "Convert%d.To", i); convertTo.Read(exINI, pSection, tempBuffer); - _snprintf_s(tempBuffer, sizeof(tempBuffer), "Convert%d.AffectedHouses", i); - convertAffectedHouses.Read(exINI, pSection, tempBuffer); + _snprintf_s(tempBuffer, sizeof(tempBuffer), "Convert%d.AffectsHouse", i); + convertAffectsHouse.Read(exINI, pSection, tempBuffer); if (!convertTo.isset()) break; - if (!convertAffectedHouses.isset()) - convertAffectedHouses = defaultAffectHouse; + if (!convertAffectsHouse.isset()) + convertAffectsHouse = defaultAffectHouse; - list.emplace_back(convertFrom, convertTo, convertAffectedHouses); + list.emplace_back(convertFrom, convertTo, convertAffectsHouse); } ValueableVector convertFrom; Nullable convertTo; - Nullable convertAffectedHouses; + Nullable convertAffectsHouse; convertFrom.Read(exINI, pSection, "Convert.From"); convertTo.Read(exINI, pSection, "Convert.To"); - convertAffectedHouses.Read(exINI, pSection, "Convert.AffectedHouses"); + convertAffectsHouse.Read(exINI, pSection, "Convert.AffectsHouse"); if (convertTo.isset()) { - if (!convertAffectedHouses.isset()) - convertAffectedHouses = defaultAffectHouse; + if (!convertAffectsHouse.isset()) + convertAffectsHouse = defaultAffectHouse; if (list.size()) - list[0] = { convertFrom, convertTo, convertAffectedHouses }; + list[0] = { convertFrom, convertTo, convertAffectsHouse }; else - list.emplace_back(convertFrom, convertTo, convertAffectedHouses); + list.emplace_back(convertFrom, convertTo, convertAffectsHouse); } } diff --git a/src/New/Type/AttachEffectTypeClass.cpp b/src/New/Type/AttachEffectTypeClass.cpp index 0b8191e409..36c374007c 100644 --- a/src/New/Type/AttachEffectTypeClass.cpp +++ b/src/New/Type/AttachEffectTypeClass.cpp @@ -103,7 +103,7 @@ void AttachEffectTypeClass::LoadFromINI(CCINIClass* pINI) this->PenetratesForceShield.Read(exINI, pSection, "PenetratesForceShield"); this->AffectTypes.Read(exINI, pSection, "AffectTypes"); this->IgnoreTypes.Read(exINI, pSection, "IgnoreTypes"); - this->AffectTargets.Read(exINI, pSection, "AffectTargets"); + this->AffectsTarget.Read(exINI, pSection, "AffectsTarget"); this->Animation.Read(exINI, pSection, "Animation"); this->CumulativeAnimations.Read(exINI, pSection, "CumulativeAnimations"); @@ -145,14 +145,14 @@ void AttachEffectTypeClass::LoadFromINI(CCINIClass* pINI) this->Crit_DisallowWarheads.Read(exINI, pSection, "Crit.DisallowWarheads"); this->RevengeWeapon.Read(exINI, pSection, "RevengeWeapon"); - this->RevengeWeapon_AffectsHouses.Read(exINI, pSection, "RevengeWeapon.AffectsHouses"); + this->RevengeWeapon_AffectsHouse.Read(exINI, pSection, "RevengeWeapon.AffectsHouse"); this->RevengeWeapon_UseInvokerAsOwner.Read(exINI, pSection, "RevengeWeapon.UseInvokerAsOwner"); this->ReflectDamage.Read(exINI, pSection, "ReflectDamage"); this->ReflectDamage_Warhead.Read(exINI, pSection, "ReflectDamage.Warhead"); this->ReflectDamage_Warhead_Detonate.Read(exINI, pSection, "ReflectDamage.Warhead.Detonate"); this->ReflectDamage_Multiplier.Read(exINI, pSection, "ReflectDamage.Multiplier"); - this->ReflectDamage_AffectsHouses.Read(exINI, pSection, "ReflectDamage.AffectsHouses"); + this->ReflectDamage_AffectsHouse.Read(exINI, pSection, "ReflectDamage.AffectsHouse"); this->ReflectDamage_Chance.Read(exINI, pSection, "ReflectDamage.Chance"); this->ReflectDamage_Override.Read(exINI, pSection, "ReflectDamage.Override"); this->ReflectDamage_UseInvokerAsOwner.Read(exINI, pSection, "ReflectDamage.UseInvokerAsOwner"); @@ -182,7 +182,7 @@ void AttachEffectTypeClass::Serialize(T& Stm) .Process(this->PenetratesForceShield) .Process(this->AffectTypes) .Process(this->IgnoreTypes) - .Process(this->AffectTargets) + .Process(this->AffectsTarget) .Process(this->Animation) .Process(this->CumulativeAnimations) .Process(this->CumulativeAnimations_RestartOnChange) @@ -216,13 +216,13 @@ void AttachEffectTypeClass::Serialize(T& Stm) .Process(this->Crit_AllowWarheads) .Process(this->Crit_DisallowWarheads) .Process(this->RevengeWeapon) - .Process(this->RevengeWeapon_AffectsHouses) + .Process(this->RevengeWeapon_AffectsHouse) .Process(this->RevengeWeapon_UseInvokerAsOwner) .Process(this->ReflectDamage) .Process(this->ReflectDamage_Warhead) .Process(this->ReflectDamage_Warhead_Detonate) .Process(this->ReflectDamage_Multiplier) - .Process(this->ReflectDamage_AffectsHouses) + .Process(this->ReflectDamage_AffectsHouse) .Process(this->ReflectDamage_Chance) .Process(this->ReflectDamage_Override) .Process(this->ReflectDamage_UseInvokerAsOwner) diff --git a/src/New/Type/AttachEffectTypeClass.h b/src/New/Type/AttachEffectTypeClass.h index b3d76711d3..23a8aa7298 100644 --- a/src/New/Type/AttachEffectTypeClass.h +++ b/src/New/Type/AttachEffectTypeClass.h @@ -54,7 +54,7 @@ class AttachEffectTypeClass final : public Enumerable Nullable PenetratesForceShield; ValueableVector AffectTypes; ValueableVector IgnoreTypes; - Valueable AffectTargets; + Valueable AffectsTarget; Valueable Animation; ValueableVector CumulativeAnimations; Valueable CumulativeAnimations_RestartOnChange; @@ -88,13 +88,13 @@ class AttachEffectTypeClass final : public Enumerable ValueableVector Crit_AllowWarheads; ValueableVector Crit_DisallowWarheads; Valueable RevengeWeapon; - Valueable RevengeWeapon_AffectsHouses; + Valueable RevengeWeapon_AffectsHouse; Valueable RevengeWeapon_UseInvokerAsOwner; Valueable ReflectDamage; Nullable ReflectDamage_Warhead; Valueable ReflectDamage_Warhead_Detonate; Valueable ReflectDamage_Multiplier; - Valueable ReflectDamage_AffectsHouses; + Valueable ReflectDamage_AffectsHouse; Valueable ReflectDamage_Chance; Nullable ReflectDamage_Override; Valueable ReflectDamage_UseInvokerAsOwner; @@ -117,7 +117,7 @@ class AttachEffectTypeClass final : public Enumerable , PenetratesForceShield {} , AffectTypes {} , IgnoreTypes {} - , AffectTargets { AffectedTarget::All } + , AffectsTarget { AffectedTarget::All } , Animation {} , CumulativeAnimations {} , CumulativeAnimations_RestartOnChange { true } @@ -151,13 +151,13 @@ class AttachEffectTypeClass final : public Enumerable , Crit_AllowWarheads {} , Crit_DisallowWarheads {} , RevengeWeapon {} - , RevengeWeapon_AffectsHouses { AffectedHouse::All } + , RevengeWeapon_AffectsHouse { AffectedHouse::All } , ReflectDamage { false } , RevengeWeapon_UseInvokerAsOwner { false } , ReflectDamage_Warhead {} , ReflectDamage_Warhead_Detonate { false } , ReflectDamage_Multiplier { 1.0 } - , ReflectDamage_AffectsHouses { AffectedHouse::All } + , ReflectDamage_AffectsHouse { AffectedHouse::All } , ReflectDamage_Chance { 1.0 } , ReflectDamage_Override {} , ReflectDamage_UseInvokerAsOwner { false }