diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index c3b72fb470..a72f06476a 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -23,7 +23,7 @@ jobs: runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive diff --git a/.github/workflows/pr-doc-checker.yml b/.github/workflows/pr-doc-checker.yml index 0024b31a57..90a22d82ef 100644 --- a/.github/workflows/pr-doc-checker.yml +++ b/.github/workflows/pr-doc-checker.yml @@ -19,7 +19,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v6 + with: + fetch-depth: 0 - name: Check that Changelog has been updated run: | # Check that Changelog has been updated @@ -40,7 +42,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v6 + with: + fetch-depth: 0 - name: Check that Credits List has been updated run: | # Check that Credits List has been updated @@ -61,7 +65,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v6 + with: + fetch-depth: 0 - name: Check that Documentation has been updated run: | # Check that Documentation has been updated diff --git a/.github/workflows/pr-nightly.yml b/.github/workflows/pr-nightly.yml index dbb5c97e68..ad7d13bd27 100644 --- a/.github/workflows/pr-nightly.yml +++ b/.github/workflows/pr-nightly.yml @@ -19,7 +19,7 @@ jobs: runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive # ref: ${{ github.event.pull_request.head.sha }} diff --git a/CREDITS.md b/CREDITS.md index d932d5ff63..0f0a0abd1d 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -283,6 +283,7 @@ This page lists all the individual contributions to the project by their author. - Bugfixes to map trigger action `125 Build At...` - Owner change during buildup bugfix - Subterranean harvester pathfinding fix + - Toggle to exclude technos from base center calculations - **Morton (MortonPL)**: - `XDrawOffset` for animations - Shield passthrough & absorption @@ -401,6 +402,9 @@ This page lists all the individual contributions to the project by their author. - Fast access structure - Iron Curtain/Custom Tint Support for SHP Turreted Vehicles - Reactivate unused trigger events 2, 53, and 54 + - Map Action 511, 609, 610 + - Weapons now support `AttackFriendlies` and `AttackCursorOnFriendlies` + - Attack non-threatening structures extensions - **NetsuNegi**: - Forbidding parallel AI queues by type - Jumpjet crash speed fix when crashing onto building @@ -469,6 +473,13 @@ This page lists all the individual contributions to the project by their author. - Fix a bug introduced by Ares where building types that have `UndeploysInto` cannot display `AltCameo` or `AltCameoPCX` even when you infiltrate enemy buildings with `Factory=UnitType` - Fix a bug where units can be promoted when created via trigger actions even if they have `Trainable=false` - Fix the bug that ai will try to product aircraft even the airport has no free dock for it + - Allow techno type considered as other type when recruiting techno for teams + - Fix the issue that technos cannot spawn survivors due to non-probabilistic reasons when the tech type was destroyed + - Fix the bug that vehicle survivor can spawn on wrong position when transport has been destroyed + - Fix the bug that if object has been removed from LogicClass in Update(), next object will be skip + - Fix the bug that weapon cannot used to intercept on gound bullet if it's projectile has `AG=no` + - Customize size for mind controlled unit + - Fix the issue that weapon selection don't check if secondary's warhead has `IsLocomotor=yes` - **Apollo** - Translucent SHP drawing patches - **ststl**: - Customizable `ShowTimer` priority of superweapons @@ -574,7 +585,7 @@ This page lists all the individual contributions to the project by their author. - **Ollerus**: - Build limit group enhancement - Customizable rocker amplitude - + - Type select for buildings (doc) - Enhanced Bombard trajectory - Shield armor inheritance customization @@ -658,6 +669,11 @@ This page lists all the individual contributions to the project by their author. - Fix an issue where non-repairer units needed sensors to attack cloaked friendly units - Allow customizing whether to synchronously change the owner of the RadioLink-linked units when the owner of a building changes - Toggle per-target warhead effects apply timing + - Extra range for chasing and pre-firing + - Fix an issue that rockets do not consider the destination altitude during climbing + - Fix an issue that the AI would set anger towards friendly houses, causing it to act stupidly + - Fix an issue that the AI would look for the first house in the array as an enemy instead of the nearest one when there were no enemies + - Enable playing ingame movie in non-campaign modes - **solar-III (凤九歌)** - Target scanning delay customization (documentation) - Skip target scanning function calling for unarmed technos (documentation) @@ -687,6 +703,7 @@ This page lists all the individual contributions to the project by their author. - **Joshy** - Original FlyingStrings implementation - **CnCVK** - Original custom locomotors experiment - **ZΞPHYɌUS** - win/lose themes code +- **Fridge** - Cursor Fix code - **Neargye (Daniil Goncharov)** - [nameof library](https://github.com/Neargye/nameof) (MIT) - **ayylmao** - help with docs, extensive and thorough testing - **SMxReaver** - help with docs, extensive and thorough testing diff --git a/README.md b/README.md index fc501e3eb1..15ac1c2994 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Every maintenance crew member is welcome to put a donation link to their entry i - **Kerbiter ([@Metadorius](https://github.com/Metadorius))** - T3 maintainer (lead) - [Patreon](https://www.patreon.com/kerbiter) · PayPal (preferable because of no fees) on request -- **[@Starkku](https://github.com/Starkku)** - T2 maintainer +- **[@Starkku](https://github.com/Starkku)** - T3 maintainer (co-lead) - [Patreon](https://www.patreon.com/Starkku) - **[@CrimRecya](https://github.com/CrimRecya) (绯红热茶)** - T2 maintainer - [Alipay](https://i2.hdslb.com/bfs/new_dyn/8de77b17b8fc2e005613821b62008e37362533219.jpg) diff --git a/YRpp b/YRpp index 5af96790ce..b5f8a49939 160000 --- a/YRpp +++ b/YRpp @@ -1 +1 @@ -Subproject commit 5af96790ce73e4ea068a390c60c124dccbc220e1 +Subproject commit b5f8a49939d97bdadbf055c5cb2758cbbfccc4a6 diff --git a/docs/AI-Scripting-and-Mapping.md b/docs/AI-Scripting-and-Mapping.md index c1ac78ce80..f3418c4c05 100644 --- a/docs/AI-Scripting-and-Mapping.md +++ b/docs/AI-Scripting-and-Mapping.md @@ -652,6 +652,19 @@ ID=ActionCount,[Action1],510,0,0,[MCVRedeploy],0,0,0,A,[ActionX] ... ``` +### `511` Undeploy Building to Waypoint + +- Undeploy specific BuildingTypes into VehicleTypes and move them to a specific Waypoint. + - If `` is entered for the Building Type here, then undeploy all BuildingTypes. + +In `mycampaign.map`: +```ini +[Actions] +... +ID=ActionCount,[Action1],511,-10,[BuildingTypesID],[HouseIndex],0,0,0,[WaypointIndex],[ActionX] +... +``` + ### `606` Edit Hate-Value - Edit the hate-value that trigger houses to other houses. @@ -707,6 +720,40 @@ ID=ActionCount,[Action1],608,0,0,[HouseIndex],0,0,0,A,[ActionX] ... ``` +### `609` Set Radar Mode + +- Change the current radar mode of the trigger house. + +In `mycampaign.map`: +```ini +[Actions] +... +ID=ActionCount,[Action1],609,0,0,[RadarMode],0,0,0,A,[ActionX] +... +``` + +- The possible argument values are: + +| *Argument* | *Description* | +| :--------: | :-----------------------------------------------------------------------: | +| 0 | Normal mode, requires buildings that provide radar and sufficient power | +| 1 | Change to [FreeRadar](https://modenc.renegadeprojects.com/FreeRadar) mode | +| 2 | Force enable radar | +| 3 | Force disable radar | + +### `610` Set house's `TeamDelays` value + +- Set the `TeamDelays` value of the trigger's house. + - If this value is less than 0, then use the value of `[General] -> TeamDelays`. + +In `mycampaign.map`: +```ini +[Actions] +... +ID=ActionCount,[Action1],610,0,0,[Number],0,0,0,A,[ActionX] +... +``` + ### `800-802` Display Banner - Display a 'banner' at a fixed location that is relative to the screen. diff --git a/docs/Fixed-or-Improved-Logics.md b/docs/Fixed-or-Improved-Logics.md index 99838b773a..b5a52cf5c5 100644 --- a/docs/Fixed-or-Improved-Logics.md +++ b/docs/Fixed-or-Improved-Logics.md @@ -283,6 +283,12 @@ This page describes all ingame logics that are fixed or improved in Phobos witho - Fixed a bug where units can be promoted when created via trigger actions even if they have `Trainable=false`. - Fixed the bug that ai will try to product aircraft even the airport has no free dock for it. - Fixed the issue where non-repairer units needed sensors to attack cloaked friendly units. +- Fixed the issue that rockets do not consider the destination altitude during climbing. +- Fixed the bug that if object has been removed from LogicClass in Update(), next object will be skip. +- Fixed an issue that the AI would set anger towards friendly houses, causing it to act stupidly. +- Fixed an issue that the AI would look for the first house in the array as an enemy instead of the nearest one when there were no enemies. +- Fixed the issue that weapon selection don't check if secondary's warhead has `IsLocomotor=yes`. +- Enable playing ingame movie in non-campaign modes. ## Fixes / interactions with other extensions @@ -322,6 +328,8 @@ This page describes all ingame logics that are fixed or improved in Phobos witho - Fixed the issue where Ares' `Flash.Duration` cannot override the weapon's repair flash effect. - Fixed the bug that building with `CloningFacility=true` and `WeaponsFactory=true` may cloning multiple vehicles and then they get stuck. - Fixed a bug introduced by Ares where building types that have `UndeploysInto` cannot display `AltCameo` or `AltCameoPCX` even when you infiltrate enemy buildings with `Factory=UnitType`. +- Fixed the issue that technos cannot spawn survivors due to non-probabilistic reasons when the tech type was destroyed. +- Fixed the bug that vehicle survivor can spawn on wrong position when transport has been destroyed. ## Newly added global settings @@ -1840,6 +1848,17 @@ HeightShadowScaling.MinScale=0.0 ; floating point value ShadowSizeCharacteristicHeight= ; integer, height in leptons ``` +### Allow techno type considered as other type when recruiting techno for teams + +- It is now possible to make techno type considered as other type when recruiting techno for teams, both for AI team recruitment and `Create Team` action. + - Only affect techno that's presented on the map. Cannot make AI produce this type of techno if it doesn't have any. + +In `rulesmd.ini`: +```ini +[SOMETECHNO] ; TechnoType +TeamMember.ConsideredAs= ; List of TechnoTypes +``` + ## Terrains ### Animated TerrainTypes @@ -2435,6 +2454,17 @@ AmbientDamage.Warhead= ; WarheadType AmbientDamage.IgnoreTarget=false ; boolean ``` +### Can attack allies + +- Weapons now support `AttackFriendlies` and `AttackCursorOnFriendlies`. They override the firer's `AttackFriendlies` and `AttackCursorOnFriendlies`. + +In `rulesmd.ini`: +```ini +[SOMEWEAPON] ; WeaponType +AttackFriendlies= ; boolean +AttackCursorOnFriendlies= ; boolean +``` + ### Charge turret delays - It is now possible to customize the delay of `IsChargeTurret=true` unit turret animation per weapon, per `Burst` shot instead of defaulting to weapon's rearm timer (`ROF`, `Burst.Delays` etc). Delay in the list corresponding to burst shot is used, or last delay listed if number of listed values is lower than the current burst index. Delay of 0 or less means previous delay, if applicable, is not restarted. diff --git a/docs/New-or-Enhanced-Logics.md b/docs/New-or-Enhanced-Logics.md index 477c1742a6..4b75756f5f 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. @@ -70,6 +70,7 @@ This page describes all the engine features that are either new and introduced b - AttachEffectTypes can be attached to objects via Warheads using `AttachEffect.AttachTypes`. - `AttachEffect.DurationOverrides` can be used to override the default durations. Duration matching the position in `AttachTypes` is used for that type, or the last listed duration if not available. + - `AttachEffect.CumulativeSourceMaxCount` can be used to determine the maximum count of `Cumulative=true` effect from this source, or with no limit if `AttachEffect.CumulativeSourceMaxCount` is a negative number. Work independently from `Cumulative.MaxCount` of the effect. If the target already has `AttachEffect.CumulativeSourceMaxCount` number of the same effect from the same source applied on it, trying to attach another will refresh duration of the attached instance with shortest remaining duration. - `AttachEffect.CumulativeRefreshAll` if set to true makes it so that trying to attach `Cumulative=true` effect to a target that already has `Cumulative.MaxCount` amount of effects will refresh duration of all attached effects of the same type instead of only the one with shortest remaining duration. If `AttachEffect.CumulativeRefreshAll.OnAttach` is also set to true, this refresh applies even if the target does not have maximum allowed amount of effects of same type. - `AttachEffect.CumulativeRefreshSameSourceOnly` controls whether or not trying to apply `Cumulative=true` effect on target requires any existing effects of same type to come from same Warhead by same firer for them to be eligible for duration refresh. - Attached Effects can be removed from objects by Warheads using `AttachEffect.RemoveTypes` or `AttachEffect.RemoveGroups`. @@ -102,7 +103,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 +137,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 @@ -174,6 +175,7 @@ AttachEffect.CheckOnFirer=false ; boolean [SOMEWARHEAD] ; WarheadType AttachEffect.AttachTypes= ; List of AttachEffectTypes +AttachEffect.CumulativeSourceMaxCount=-1 ; integer AttachEffect.CumulativeRefreshAll=false ; boolean AttachEffect.CumulativeRefreshAll.OnAttach=false ; boolean AttachEffect.CumulativeRefreshSameSourceOnly=true ; boolean @@ -793,7 +795,7 @@ BombParachute= ; AnimationType, default to [General] -> BombParachute - 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` 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. + - The interceptor weapon may need `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 high-flying projectiles respectively. - `Interceptor.TargetingDelay` determines how often (in frames) interceptor TechnoType scans for suitable projectiles to intercept. Smaller delay is better for interceptor's capabilities but worse for game performance. Delay cannot be set to 0, this will change the delay to 1 and outputs a developer warning to log. - `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. @@ -1079,8 +1081,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 +1090,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 +1098,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 +1150,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 +1176,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. ``` @@ -1322,6 +1324,18 @@ In `rulesmd.ini`: AttackMove.IgnoreWeaponCheck=false ; boolean ``` +### Attack non-threatening structures (Techno) + +- You can now freely configure whether units can automatically target non-threatening structures. + - `AutoTarget.NoThreatBuildings` affects player-controlled units, `AutoTargetAI.NoThreatBuildings` affects other units. + +In `rulesmd.ini`: +```ini +[General] +AutoTarget.NoThreatBuildings=false ; boolean +AutoTargetAI.NoThreatBuildings=true ; boolean +``` + ### Aircraft spawner customizations ![image](_static/images/spawnrange-01.gif) @@ -1433,13 +1447,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} @@ -1616,6 +1630,16 @@ DisguiseBlinkingVisibility=owner ; List of Affected House Enumeration (none|own UseDisguiseMovementSpeed=false ; boolean ``` +### Exclusion from base center calculations + +- It is possible to exclude TechnoType from base center calculations (used for number of things such as certain AI scripts and AI superweapon targeting modes etc). Normally only buildings are factored in, but the initial base center does count house's starting technos which this does affect. + +In `rulesmd.ini`: +```ini +[SOMETECHNO] ; TechnoType +IgnoreForBaseCenter=false ; boolean +``` + ### Extended gattling rate down logic - Now you can customize some effects of `RateDown`. @@ -1797,6 +1821,7 @@ Please notice that if the object is a unit which carries passengers, they will n *Multiple Mind Control unit auto-releases the first victim in [Fantasy ADVENTURE](https://www.moddb.com/mods/fantasy-adventure)* - Mind controllers now can have the upper limit of the control distance. Tag values greater than 0 will activate this feature. +- Mind controlled targets can have size of control, like passengers in transport. - Mind controllers now can decide which house can see the link drawn between itself and the controlled units. - Mind controllers with multiple controlling slots can now release the first controlled unit when they have reached the control limit and are ordered to control a new target. @@ -1804,6 +1829,8 @@ In `rulesmd.ini`: ```ini [SOMETECHNO] ; TechnoType MindControlRangeLimit=-1.0 ; floating point value +MindControl.IgnoreSize=true ; boolean +MindControlSize=1 ; integer MindControlLink.VisibleToHouse=all ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all) MultiMindControl.ReleaseVictim=false ; boolean ``` @@ -1999,7 +2026,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 +2034,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 +2307,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 +2325,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 +2352,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 +2368,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 +2460,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 +2471,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.AffectsTarget` / `KillWeapon.OnFirer.AffectsTarget` 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,10 +2495,10 @@ 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.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) +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.AffectsTarget=all ; List of Affected Target Enumeration (none|aircraft|buildings|infantry|units|all) +KillWeapon.OnFirer.AffectsTarget=all ; List of Affected Target Enumeration (none|aircraft|buildings|infantry|units|all) [SOMETECHNO] ; TechnoType SuppressKillWeapons=false ; boolean @@ -2634,10 +2661,10 @@ SpawnsCrate(N).Weight=1 ; integer - Now you can set the following flag to `false` to apply the **Phobos** warhead effects that take effect on each target when taking damage, rather than when the projectiles detonate. - This will allow such effects to be applied through damage without projectiles, including but not limited to damage from particles, vanilla radiation, and Ares' `GenericWarhead` superweapon. - This will also cause all effects that can completely prevent damage to also prevent these warhead effects, including but not limited to `DamageSelf`, `DamageAirThreshold`, `AffectsAllies`, `AffectsAir`. - - If you use a warhead with CellSpread to damage a building multiple times, then these effects will be applied multiple times. If you don't want this to happen, use [`MergeBuildingDamage`](#allow-merging-aoe-damage-to-buildings-into-one). + - If you use a warhead with `CellSpread` to damage a building multiple times, then these effects will be applied multiple times. If you don't want this to happen, use [`MergeBuildingDamage`](#allow-merging-aoe-damage-to-buildings-into-one). - The affected effects include: - [Remove mind-control](#break-mind-control-on-impact) - - [Type convertion](#convert-technotype-on-impact) + - [Type conversion](#convert-technotype-on-impact) - [`BuildingSell` & `BuildingUndeploy`](#sell-or-undeploy-building-on-impact) - [`RemoveDisguise`](#remove-disguise-on-impact) - [`ReverseEngineer`](#reverse-engineer-warhead) @@ -2656,7 +2683,7 @@ ApplyPerTargetEffectsOnDetonate= ; boolean, default to [CombatDamage] -> Ap ``` ```{note} -- Ares' warhead effects, such as EMP or IronCurtain warhead, will not be affected. +- Ares' warhead effects, such as EMP or IronCurtain warhead, will not be affected. - Ares' warhead effect controllers, such as `EffectsRequireDamage`, only affect Ares' effects. So they have nothing to do with this. ``` @@ -2717,6 +2744,16 @@ In `rulesmd.ini`: AreaFire.Target=base ; AreaFire Target Enumeration (base|self|random) ``` +### Attack non-threatening structures (Weapon) + +- `AttackNoThreatBuildings` permits shooters to attack non-threatening structures. This setting overrides other configurations. + +In `rulesmd.ini`: +```ini +[SOMEWEAPON] ; WeaponType +AttackNoThreatBuildings= ; boolean +``` + ### Burst delay customizations - `Burst.Delays` allows specifying weapon-specific burst shot delays. Takes precedence over the old `BurstDelayX` logic available on VehicleTypes, functions with Infantry & BuildingType weapons (AircraftTypes are not supported due to their weapon firing system being completely different) and allows every shot of `Burst` to have a separate delay instead of only first four shots. @@ -2781,6 +2818,42 @@ DelayedFire.OnlyOnInitialBurst=false ; boolean AircraftTypes, due to their different attack patterns, will not wait for the delay to expire before attempting to fire and will instead continue without firing if the delay is too long. ``` +### Extra range + +- Now you can adjust weapon's range when the firer or target are under specific conditions. Only work during the attack process and cannot affect other behaviors such as path finding. +- `ExtraRange.TargetMoving` grants the weapon extra range when the target is in a moving state. + - `ExtraRange.TargetMoving.CloseRangeOnly` is used to restrict whether the global default value only applies to units with `CloseRange=yes`. +- `ExtraRange.FirerMoving` grants the weapon extra range when the firer is in a moving state. +- `ExtraRange.Prefiring` grants the weapon extra range when the firer is in a pre-firing state, including: + - Vehicles with tags such as `FiringSyncFrame%d`. + - Aircraft that are firing. + - Buildings with tags such as `IsAnimDelayedFire`. + - Infantry with tags such as `FireUp`. + - Any unit with [`DelayedFire`](#delayed-firing). + - `ExtraRange.Prefiring.IncludeBurst` is used to decide whether the execution of burst is considered as being in a pre-firing state. + +In `rulesmd.ini`: +```ini +[General] +ExtraRange.TargetMoving=0.0 ; float, range in cells +ExtraRange.TargetMoving.CloseRangeOnly=false ; boolean +ExtraRange.FirerMoving=0.0 ; float, range in cells +ExtraRange.Prefiring=0.0 ; float, range in cells +ExtraRange.Prefiring.IncludeBurst=true ; boolean + +[SOMEWEAPON] ; WeaponType +ExtraRange.TargetMoving= ; float, range in cells, the default values refer to the descriptions above +ExtraRange.FirerMoving= ; float, range in cells, default to [General] -> ExtraRange.FirerMoving +ExtraRange.Prefiring= ; float, range in cells, default to [General] -> ExtraRange.Prefiring +ExtraRange.Prefiring.IncludeBurst= ; boolean, default to [General] -> ExtraRange.Prefiring.IncludeBurst +``` + +```{note} +- In vanilla, melee units have difficulty attacking enemies that are moving away, even if they have a slightly higher speed than their targets. This is because the game's pathfinding algorithm searches for a firing position in units of cells, which creates an unacceptable error for melee units, causing the targets to move out of range before they can get close. +- Units with various forms of pre-firing behavior have similar problems. The target may move out of range before they fire. +- This feature can solve the above issues. +``` + ### Extra warhead detonations - It is now possible to have same weapon detonate multiple Warheads on impact by listing `ExtraWarheads`. The warheads are detonated at same location as the main one, after it in listed order. This only works in cases where a projectile has been fired by a weapon and still remembers it when it is detonated (due to currently existing technical limitations, this excludes `AirburstWeapon`). diff --git a/docs/User-Interface.md b/docs/User-Interface.md index 28212091ca..1801e5c9b8 100644 --- a/docs/User-Interface.md +++ b/docs/User-Interface.md @@ -11,6 +11,7 @@ This page lists all user interface additions, changes, fixes that are implemente - Fixed position and layer of info tip and reveal production cameo on selected building. - Timer (superweapon, mission etc) blinking color scheme can be customized by setting `[AudioVisual] -> TimerBlinkColorScheme`. Defaults to third color scheme listed in `[Colors]`. - Fixed sidebar not updating queued unit numbers when adding or removing units when the production is on hold. +- Increased cursor update frequency by setting interval to 1ms instead of 16ms. ```{note} You can use the improved vanilla font which can be found on [Phobos supplementaries repo](https://github.com/Phobos-developers/PhobosSupplementaries) which has way more Unicode character coverage than the default one. diff --git a/docs/Whats-New.md b/docs/Whats-New.md index a32a773c3b..df633160de 100644 --- a/docs/Whats-New.md +++ b/docs/Whats-New.md @@ -89,6 +89,39 @@ 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.Affects` -> `[WarheadType] -> KillWeapon.AffectsTarget` + - `[WarheadType] -> KillWeapon.AffectsHouses` -> `[WarheadType] -> KillWeapon.AffectsHouse` + - `[WarheadType] -> KillWeapon.OnFirer.Affects` -> `[WarheadType] -> KillWeapon.OnFirer.AffectsTarget` + - `[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. @@ -139,66 +172,69 @@ HideShakeEffects=false ; boolean 104=Banner ID,0 [EventsRA2] - 500=Local variable is greater than,48,6,0,0,[LONG DESC],0,1,500,1 - 501=Local variable is less than,48,6,0,0,[LONG DESC],0,1,501,1 - 502=Local variable equals to,48,6,0,0,[LONG DESC],0,1,502,1 - 503=Local variable is greater than or equals to,48,6,0,0,[LONG DESC],0,1,503,1 - 504=Local variable is less than or equals,48,6,0,0,[LONG DESC],0,1,504,1 - 505=Local variable and X is true,48,6,0,0,[LONG DESC],0,1,505,1 - 506=Global variable is greater than,48,6,0,0,[LONG DESC],0,1,506,1 - 507=Global variable is less than,48,6,0,0,[LONG DESC],0,1,507,1 - 508=Global variable equals to,48,6,0,0,[LONG DESC],0,1,508,1 - 509=Global variable is greater than or queals to,48,6,0,0,[LONG DESC],0,1,509,1 - 510=Global variable is less than or equals to,48,6,0,0,[LONG DESC],0,1,510,1 - 511=Global variable and X is true,48,6,0,0,[LONG DESC],0,1,511,1 - 512=Local variable is greater than local variable,48,3,0,0,[LONG DESC],0,1,500,1 - 513=Local variable is less than local variable,48,3,0,0,[LONG DESC],0,1,501,1 - 514=Local variable equals to local variable,48,3,0,0,[LONG DESC],0,1,502,1 - 515=Local variable is greater than or equals to local variable,48,3,0,0,[LONG DESC],0,1,503,1 - 516=Local variable is less than or equals local variable,48,3,0,0,[LONG DESC],0,1,504,1 - 517=Local variable and local variable is true,48,3,0,0,[LONG DESC],0,1,505,1 - 518=Global variable is greater than local variable,48,3,0,0,[LONG DESC],0,1,506,1 - 519=Global variable is less than local variable,48,3,0,0,[LONG DESC],0,1,507,1 - 520=Global variable equals to local variable,48,3,0,0,[LONG DESC],0,1,508,1 - 521=Global variable is greater than or queals to local variable,48,3,0,0,[LONG DESC],0,1,509,1 - 522=Global variable is less than or equals to local variable,48,3,0,0,[LONG DESC],0,1,510,1 - 523=Global variable and local variable is true,48,3,0,0,[LONG DESC],0,1,511,1 - 524=Local variable is greater than global variable,48,35,0,0,[LONG DESC],0,1,500,1 - 525=Local variable is less than global variable,48,35,0,0,[LONG DESC],0,1,501,1 - 526=Local variable equals to global variable,48,35,0,0,[LONG DESC],0,1,502,1 - 527=Local variable is greater than or equals to global variable,48,35,0,0,[LONG DESC],0,1,503,1 - 528=Local variable is less than or equals global variable,48,35,0,0,[LONG DESC],0,1,504,1 - 529=Local variable and global variable is true,48,35,0,0,[LONG DESC],0,1,505,1 - 530=Global variable is greater than global variable,48,35,0,0,[LONG DESC],0,1,506,1 - 531=Global variable is less than global variable,48,35,0,0,[LONG DESC],0,1,507,1 - 532=Global variable equals to global variable,48,35,0,0,[LONG DESC],0,1,508,1 - 533=Global variable is greater than or queals to global variable,48,35,0,0,[LONG DESC],0,1,509,1 - 534=Global variable is less than or equals to global variable,48,35,0,0,[LONG DESC],0,1,510,1 - 535=Global variable and global variable is true,48,35,0,0,[LONG DESC],0,1,511,1 + 500=Local variable is greater than...,48,6,0,0,[LONG DESC],0,1,500,1 + 501=Local variable is less than...,48,6,0,0,[LONG DESC],0,1,501,1 + 502=Local variable equals to...,48,6,0,0,[LONG DESC],0,1,502,1 + 503=Local variable is greater than or equals to...,48,6,0,0,[LONG DESC],0,1,503,1 + 504=Local variable is less than or equals...,48,6,0,0,[LONG DESC],0,1,504,1 + 505=Local variable and X is true...,48,6,0,0,[LONG DESC],0,1,505,1 + 506=Global variable is greater than...,48,6,0,0,[LONG DESC],0,1,506,1 + 507=Global variable is less than...,48,6,0,0,[LONG DESC],0,1,507,1 + 508=Global variable equals to...,48,6,0,0,[LONG DESC],0,1,508,1 + 509=Global variable is greater than or queals to...,48,6,0,0,[LONG DESC],0,1,509,1 + 510=Global variable is less than or equals to...,48,6,0,0,[LONG DESC],0,1,510,1 + 511=Global variable and X is true...,48,6,0,0,[LONG DESC],0,1,511,1 + 512=Local variable is greater than local variable...,48,3,0,0,[LONG DESC],0,1,500,1 + 513=Local variable is less than local variable...,48,3,0,0,[LONG DESC],0,1,501,1 + 514=Local variable equals to local variable...,48,3,0,0,[LONG DESC],0,1,502,1 + 515=Local variable is greater than or equals to local variable...,48,3,0,0,[LONG DESC],0,1,503,1 + 516=Local variable is less than or equals local variable...,48,3,0,0,[LONG DESC],0,1,504,1 + 517=Local variable and local variable is true...,48,3,0,0,[LONG DESC],0,1,505,1 + 518=Global variable is greater than local variable...,48,3,0,0,[LONG DESC],0,1,506,1 + 519=Global variable is less than local variable...,48,3,0,0,[LONG DESC],0,1,507,1 + 520=Global variable equals to local variable...,48,3,0,0,[LONG DESC],0,1,508,1 + 521=Global variable is greater than or queals to local variable...,48,3,0,0,[LONG DESC],0,1,509,1 + 522=Global variable is less than or equals to local variable...,48,3,0,0,[LONG DESC],0,1,510,1 + 523=Global variable and local variable is true...,48,3,0,0,[LONG DESC],0,1,511,1 + 524=Local variable is greater than global variable...,48,35,0,0,[LONG DESC],0,1,500,1 + 525=Local variable is less than global variable...,48,35,0,0,[LONG DESC],0,1,501,1 + 526=Local variable equals to global variable...,48,35,0,0,[LONG DESC],0,1,502,1 + 527=Local variable is greater than or equals to global variable...,48,35,0,0,[LONG DESC],0,1,503,1 + 528=Local variable is less than or equals global variable...,48,35,0,0,[LONG DESC],0,1,504,1 + 529=Local variable and global variable is true...,48,35,0,0,[LONG DESC],0,1,505,1 + 530=Global variable is greater than global variable...,48,35,0,0,[LONG DESC],0,1,506,1 + 531=Global variable is less than global variable...,48,35,0,0,[LONG DESC],0,1,507,1 + 532=Global variable equals to global variable...,48,35,0,0,[LONG DESC],0,1,508,1 + 533=Global variable is greater than or queals to global variable...,48,35,0,0,[LONG DESC],0,1,509,1 + 534=Global variable is less than or equals to global variable...,48,35,0,0,[LONG DESC],0,1,510,1 + 535=Global variable and global variable is true...,48,35,0,0,[LONG DESC],0,1,511,1 600=Shield of the attached object is broken,0,0,0,0,[LONG DESC],0,1,600,1 - 601=House owns Techno Type,68,46,0,0,[LONG DESC],0,1,601,1 - 602=House doesn't own Techno Type,68,46,0,0,[LONG DESC],0,1,602,1 - 604=Techno Type Entered Cell,68,46,0,0,[LONG DESC],0,1,604,1 - 605=AI Target Type Entered Cell,68,70,0,0,[LONG DESC],0,1,605,1 - 606=AttachEffect is attaching to a Techno,-2,71,0,0,[LONG DESC],0,1,606,1 + 601=House owns Techno Type...,68,46,0,0,[LONG DESC],0,1,601,1 + 602=House doesn't own Techno Type...,68,46,0,0,[LONG DESC],0,1,602,1 + 604=Techno Type Entered Cell...,68,46,0,0,[LONG DESC],0,1,604,1 + 605=AI Target Type Entered Cell...,68,70,0,0,[LONG DESC],0,1,605,1 + 606=AttachEffect is attaching to a Techno...,-2,71,0,0,[LONG DESC],0,1,606,1 [ActionsRA2] 41=Play animation at a waypoint...,0,25,69,0,0,0,1,0,0,[LONG DESC].,0,1,41 125=Build at...,-10,47,0,65,0,0,1,0,0,[LONG DESC],0,1,125 - 500=Save game,-4,13,0,0,0,0,0,0,0,[LONG DESC],0,1,500,1 - 501=Edit variable,0,56,55,6,54,0,0,0,0,[LONG DESC],0,1,501,1 - 502=Generate random number,0,56,57,58,54,0,0,0,0,[LONG DESC],0,1,502,1 - 503=Print variable value,0,56,54,0,0,0,0,0,0,[LONG DESC],0,1,503,0 - 504=Binary operation,0,56,55,60,54,59,0,0,0,[LONG DESC],0,1,504,1 - 505=Fire Super Weapon at specified location (Phobos),0,0,20,2,21,22,0,0,0,Launch a Super Weapon from [SuperWeaponTypes] list at a specified location. House=-1 means random target that isn't neutral. House=-2 means the first neutral house. House=-3 means random human target. Coordinate X=-1 means random. Coordinate Y=-1 means random,0,1,505 - 506=Fire Super Weapon at specified waypoint (Phobos),0,0,20,2,30,0,0,0,0,Launch a Super Weapon from [SuperWeaponTypes] list at a specified waypoint. House=-1 means random target that isn't neutral. House=-2 means the first neutral house. House=-3 means random human target. Coordinate X=-1 means random. Coordinate Y=-1 means random,0,1,506 - 510=Toggle MCV Redeployablility (Phobos),0,0,15,0,0,0,0,0,0, Set MCVRedeploys to the given value,0,1,510 - 606=Edit hate-value (Phobos),0,2,55,6,0,0,0,0,0, Edit the hate-value that trigger houses to other houses. -1 works for all houses.,0,1,606 - 607=Clear hate-value (Phobos),0,2,0,0,0,0,0,0,0, Clear the hate-value that trigger houses to other houses. -1 works for all houses.,0,1,607 - 608=Set force enemy (Phobos),0,0,2,0,0,0,0,0,0, Force an enemy, it will not change with the change of hate-value. -1 will remove the forced enemy, -2 will never have any enemies.,0,1,608 - 800=Display banner and local variable (Phobos),-4,101,104,102,103,3,0,0,0,Draw banner on screen and replace banner with same ID,0,1,800 - 801=Display banner and global variable (Phobos),-4,101,104,102,103,35,0,0,0,Draw banner on screen and replace banner with same ID,0,1,801 - 802=Delete banner (Phobos),0,104,0,0,0,0,0,0,0,Delete banner with ID,0,1,802 + 500=Save game... (Phobos),-4,13,0,0,0,0,0,0,0,[LONG DESC],0,1,500,1 + 501=Edit variable... (Phobos),0,56,55,6,54,0,0,0,0,[LONG DESC],0,1,501,1 + 502=Generate random number... (Phobos),0,56,57,58,54,0,0,0,0,[LONG DESC],0,1,502,1 + 503=Print variable value... (Phobos),0,56,54,0,0,0,0,0,0,[LONG DESC],0,1,503,0 + 504=Binary operation... (Phobos),0,56,55,60,54,59,0,0,0,[LONG DESC],0,1,504,1 + 505=Fire Super Weapon at specified location... (Phobos),0,0,20,2,21,22,0,0,0,Launch a Super Weapon from [SuperWeaponTypes] list at a specified location. House=-1 means random target that isn't neutral. House=-2 means the first neutral house. House=-3 means random human target. Coordinate X=-1 means random. Coordinate Y=-1 means random,0,1,505 + 506=Fire Super Weapon at specified waypoint... (Phobos),0,0,20,2,30,0,0,0,0,Launch a Super Weapon from [SuperWeaponTypes] list at a specified waypoint. House=-1 means random target that isn't neutral. House=-2 means the first neutral house. House=-3 means random human target. Coordinate X=-1 means random. Coordinate Y=-1 means random,0,1,506 + 510=Toggle MCV Redeployablility... (Phobos),0,0,15,0,0,0,0,0,0, Set MCVRedeploys to the given value,0,1,510 + 511=Building Type undeploy at... (Phobos),-10,47,2,0,0,0,1,0,0,Recycle the building type into a vehicle and move it to the specified waypoint. If the type is ``, recycle all buildings.,0,1,511 + 606=Edit hate-value... (Phobos),0,2,55,6,0,0,0,0,0, Edit the hate-value that trigger houses to other houses. -1 works for all houses.,0,1,606 + 607=Clear hate-value... (Phobos),0,2,0,0,0,0,0,0,0, Clear the hate-value that trigger houses to other houses. -1 works for all houses.,0,1,607 + 608=Set force enemy... (Phobos),0,0,2,0,0,0,0,0,0, Force an enemy, it will not change with the change of hate-value. -1 will remove the forced enemy, -2 will never have any enemies.,0,1,608 + 609=Set radar mode... (Phobos),0,0,15,0,0,0,0,0,0, Trigger's house can modify the current radar mode. 0 for requires full-power and building, 1 for free radar, 2 for forced enable, 3 for forced disable.,0,1,609 + 610=Set team delay... (Phobos),0,0,6,0,0,0,0,0,0, Trigger's house can customize TeamDelay. When the value is less than 0 in `[General]>TeamDelays`.,0,1,610 + 800=Display banner and local variable... (Phobos),-4,101,104,102,103,3,0,0,0,Draw banner on screen and replace banner with same ID,0,1,800 + 801=Display banner and global variable... (Phobos),-4,101,104,102,103,35,0,0,0,Draw banner on screen and replace banner with same ID,0,1,801 + 802=Delete banner... (Phobos),0,104,0,0,0,0,0,0,0,Delete banner with ID,0,1,802 ; FOLLOWING ENTRIES REQUIRE FA2SP.DLL (by secsome) [ScriptTypeLists] @@ -472,6 +508,14 @@ New: - [Script Action 14004 for forcing all new actions to target only the main owner's enemy](AI-Scripting-and-Mapping.md#force-global-onlytargethouseenemy-value-in-teams-for-new-attack-move-actions-introduced-by-phobos) (by FS-21) - [Allow merging AOE damage to buildings into one](New-or-Enhanced-Logics.md#allow-merging-aoe-damage-to-buildings-into-one) (by CrimRecya) - [Allow customizing whether to synchronously change the owner of the RadioLink-linked units when the owner of a building changes](Fixed-or-Improved-Logics.md#custom-whether-to-synchronously-change-the-owner-of-the-radiolink-linked-units-when-the-owner-of-a-building-changes) (by TaranDahl) +- [Toggle per-target warhead effects apply timing](New-or-Enhanced-Logics.md#toggle-per-target-warhead-effects-apply-timing) (by TaranDahl) +- [Extra range for chasing and pre-firing](New-or-Enhanced-Logics.md#extra-range) (by TaranDahl) +- [Allow techno type considered as other type when recruiting techno for teams](Fixed-or-Improved-Logics.md#allow-techno-type-considered-as-other-type-when-recruiting-techno-for-teams) (by NetsuNegi) +- Map Action [`511` Undeploy Building to Waypoint](AI-Scripting-and-Mapping.md#undeploy-building-to-waypoint), [`609` Set Radar Mode](AI-Scripting-and-Mapping.md#set-radar-mode), [`610` Set house's `TeamDelays` value](AI-Scripting-and-Mapping.md#set-house-s-teamdelays-value) (by FlyStar) +- [Toggle to exclude technos from base center calculations](New-or-Enhanced-Logics.md#exclusion-from-base-center-calculations) (by Starkku) +- [Weapons now support `AttackFriendlies` and `AttackCursorOnFriendlies`](Fixed-or-Improved-Logics.md#can-attack-allies) (by FlyStar) +- [Attack non-threatening structures extensions](New-or-Enhanced-Logics.md#attack-non-threatening-structures-techno) (by FlyStar) +- [Customize size for mind controlled unit](New-or-Enhanced-Logics.md#mind-control-enhancement) (by NetsuNegi) Vanilla fixes: - Fixed sidebar not updating queued unit numbers when adding or removing units when the production is on hold (by CrimRecya) @@ -515,7 +559,13 @@ Vanilla fixes: - Fixed a bug where units can be promoted when created via trigger actions even if they have `Trainable=false` (by NetsuNegi) - Fixed the bug that ai will try to product aircraft even the airport has no free dock for it (by NetsuNegi) - Fixed the issue where non-repairer units needed sensors to attack cloaked friendly units (by TaranDahl) -- Toggle per-target warhead effects apply timing (by TaranDahl) +- Fixed an issue that rockets do not consider the destination altitude during climbing (by TaranDahl) +- Fixed the bug that if object has been removed from LogicClass in Update(), next object will be skip (by NetsuNegi) +- Increased cursor update frequency by setting interval to 1ms instead of 16ms (by Fridge) +- Fixed an issue that the AI would set anger towards friendly houses, causing it to act stupidly (by TaranDahl) +- Fixed an issue that the AI would look for the first house in the array as an enemy instead of the nearest one when there were no enemies (by TaranDahl) +- Fixed the issue that weapon selection don't check if secondary's warhead has `IsLocomotor=yes` (by NetsuNegi) +- Enabled playing ingame movie in non-campaign modes (by TaranDahl) Phobos fixes: - Fixed the bug that `AllowAirstrike=no` cannot completely prevent air strikes from being launched against it (by NetsuNegi) @@ -540,6 +590,9 @@ Phobos fixes: - Fixed an issue that caused Ares's `Battery.KeepOnline` cannot keep defense buildings works fine (by NetsuNegi) - Map Event 601 should return true only when exists in the map like other similar map events (by FS-21) - Fixed OverlayType `ZAdjust` as well as some shield & AttachEffect variables not being correctly saved & loaded (by Ollerus) +- LimboDelivery buildings cannot be selected (by FlyStar) +- Fixed the positive value of `Reveal` on warhead (by NetsuNegi) +- Fixed the bug that weapon cannot used to intercept on gound bullet if it's projectile has `AG=no` (by NetsuNegi) Fixes / interactions with other extensions: @@ -549,6 +602,8 @@ Fixes / interactions with other extensions: - Fixed the bug that building with `CloningFacility=true` and `WeaponsFactory=true` may cloning multiple vehicles and then they get stuck (by NetsuNegi) - [Customize Ares's radar jam logic](New-or-Enhanced-Logics.md#customize-ares-s-radar-jam-logic) (by NetsuNegi) - Fixed a bug introduced by Ares where building types that have `UndeploysInto` cannot display `AltCameo` or `AltCameoPCX` even when you infiltrate enemy buildings with `Factory=UnitType` (by NetsuNegi) +- Fixed the issue that technos cannot spawn survivors due to non-probabilistic reasons when the tech type was destroyed (by NetsuNegi) +- Fixed the bug that vehicle survivor can spawn on wrong position when transport has been destroyed (by NetsuNegi) ``` ### 0.4.0.1 diff --git a/docs/locale/zh_CN/LC_MESSAGES/AI-Scripting-and-Mapping.po b/docs/locale/zh_CN/LC_MESSAGES/AI-Scripting-and-Mapping.po index 7bb6b0434a..aae1a0bd99 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/AI-Scripting-and-Mapping.po +++ b/docs/locale/zh_CN/LC_MESSAGES/AI-Scripting-and-Mapping.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Phobos \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-20 14:21+0800\n" +"POT-Creation-Date: 2026-01-11 22:24+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -158,7 +158,7 @@ msgstr "" #: ../../AI-Scripting-and-Mapping.md:38 ../../AI-Scripting-and-Mapping.md:116 #: ../../AI-Scripting-and-Mapping.md:218 ../../AI-Scripting-and-Mapping.md:458 -#: ../../AI-Scripting-and-Mapping.md:729 +#: ../../AI-Scripting-and-Mapping.md:776 msgid "In `rulesmd.ini`:" msgstr "在 `rulesmd.ini`:" @@ -456,7 +456,7 @@ msgstr "" msgid "*Action*" msgstr "*行为*" -#: ../../AI-Scripting-and-Mapping.md:66 +#: ../../AI-Scripting-and-Mapping.md:66 ../../AI-Scripting-and-Mapping.md:522 msgid "*Argument*" msgstr "*参数*" @@ -469,7 +469,7 @@ msgid "*Target Priority*" msgstr "*目标优先级*" #: ../../AI-Scripting-and-Mapping.md:66 ../../AI-Scripting-and-Mapping.md:522 -#: ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:911 msgid "*Description*" msgstr "*描述*" @@ -1373,6 +1373,7 @@ msgstr "" "x=12002,n\n" #: ../../AI-Scripting-and-Mapping.md:335 ../../AI-Scripting-and-Mapping.md:395 +#: ../../AI-Scripting-and-Mapping.md:735 msgid "The possible argument values are:" msgstr "可选参数有:" @@ -1492,17 +1493,16 @@ msgstr "" #: ../../AI-Scripting-and-Mapping.md:385 msgid "" -"`14004` Force Global `OnlyTargetHouseEnemy` value in Teams for new attack /" -" move actions introduced by Phobos" -msgstr "" -"`14004` 为 Phobos 新增的攻击/移动脚本强制全局更改小队中的 `OnlyTargetHouseEnemy` 值" +"`14004` Force Global `OnlyTargetHouseEnemy` value in Teams for new attack" +" / move actions introduced by Phobos" +msgstr "`14004` 为 Phobos 新增的攻击/移动脚本强制全局更改小队中的 `OnlyTargetHouseEnemy` 值" #: ../../AI-Scripting-and-Mapping.md:387 msgid "" -"Globally forcibly set a value for the `OnlyTargetHouseEnemy` tag on TeamType. " -"Only affects the new attack / move actions introduced by Phobos." -msgstr "" -"全局性地强制为小队上的 `OnlyTargetHouseEnemy` 标签设置一个值。仅适用于 Phobos 新增的攻击/移动脚本。" +"Globally forcibly set a value for the `OnlyTargetHouseEnemy` tag on " +"TeamType. Only affects the new attack / move actions introduced by " +"Phobos." +msgstr "全局性地强制为小队上的 `OnlyTargetHouseEnemy` 标签设置一个值。仅适用于 Phobos 新增的攻击/移动脚本。" #: ../../AI-Scripting-and-Mapping.md:390 msgid "" @@ -1513,7 +1513,7 @@ msgstr "" "x=14004,n ; integer\n" #: ../../AI-Scripting-and-Mapping.md:66 ../../AI-Scripting-and-Mapping.md:522 -#: ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:911 msgid "-1" msgstr "-1" @@ -1804,12 +1804,13 @@ msgstr "例如:`盟军战役25: 僵僵の钱 - 钱全被偷光了!`。" #: ../../AI-Scripting-and-Mapping.md:571 ../../AI-Scripting-and-Mapping.md:583 #: ../../AI-Scripting-and-Mapping.md:596 ../../AI-Scripting-and-Mapping.md:622 #: ../../AI-Scripting-and-Mapping.md:635 ../../AI-Scripting-and-Mapping.md:647 -#: ../../AI-Scripting-and-Mapping.md:660 ../../AI-Scripting-and-Mapping.md:688 -#: ../../AI-Scripting-and-Mapping.md:702 ../../AI-Scripting-and-Mapping.md:747 -#: ../../AI-Scripting-and-Mapping.md:763 ../../AI-Scripting-and-Mapping.md:790 -#: ../../AI-Scripting-and-Mapping.md:817 ../../AI-Scripting-and-Mapping.md:842 -#: ../../AI-Scripting-and-Mapping.md:856 ../../AI-Scripting-and-Mapping.md:874 -#: ../../AI-Scripting-and-Mapping.md:896 +#: ../../AI-Scripting-and-Mapping.md:660 ../../AI-Scripting-and-Mapping.md:673 +#: ../../AI-Scripting-and-Mapping.md:701 ../../AI-Scripting-and-Mapping.md:715 +#: ../../AI-Scripting-and-Mapping.md:727 ../../AI-Scripting-and-Mapping.md:749 +#: ../../AI-Scripting-and-Mapping.md:794 ../../AI-Scripting-and-Mapping.md:810 +#: ../../AI-Scripting-and-Mapping.md:837 ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:889 ../../AI-Scripting-and-Mapping.md:903 +#: ../../AI-Scripting-and-Mapping.md:921 ../../AI-Scripting-and-Mapping.md:943 msgid "In `mycampaign.map`:" msgstr "在 `mycampaign.map`:" @@ -1995,15 +1996,15 @@ msgstr "在指定位置发射 `[SuperWeaponTypes]` 列表中的超级武器。" msgid "`HouseIndex` can take various values:" msgstr "`HouseIndex` 可取以下值:" -#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:911 msgid "*House Index*" msgstr "*所属方索引*" -#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:911 msgid ">= 0" msgstr ">= 0" -#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:911 msgid "The index of the current House in the map" msgstr "地图上当前所属方的索引" @@ -2019,7 +2020,7 @@ msgstr "类似范围 0-7 的索引" msgid "Pick a random House that isn't Neutral" msgstr "选择一个非中立的随机所属方" -#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:522 ../../AI-Scripting-and-Mapping.md:911 msgid "-2" msgstr "-2" @@ -2100,18 +2101,50 @@ msgstr "" "...\n" #: ../../AI-Scripting-and-Mapping.md:655 +msgid "`511` Undeploy Building to Waypoint" +msgstr "`511` 反部署建筑至路径点" + +#: ../../AI-Scripting-and-Mapping.md:657 +msgid "" +"Undeploy specific BuildingTypes into VehicleTypes and move them to a " +"specific Waypoint." +msgstr "" +"反部署特定建筑类型为载具并移动至一个特定路径点。" + +#: ../../AI-Scripting-and-Mapping.md:658 +msgid "" +"If `` is entered for the Building Type here, then undeploy all " +"BuildingTypes." +msgstr "" +"若将此处建筑类型设为 `` 则反部署所有建筑。" + +#: ../../AI-Scripting-and-Mapping.md:661 +msgid "" +"[Actions]\n" +"...\n" +"ID=ActionCount,[Action1],511,-10,[BuildingTypesID],[HouseIndex],0,0,0,[WaypointIndex],[ActionX]" +"\n" +"...\n" +msgstr "" +"[Actions]\n" +"...\n" +"ID=ActionCount,[Action1],511,-10,[BuildingTypesID],[HouseIndex],0,0,0,[WaypointIndex],[ActionX]" +"\n" +"...\n" + +#: ../../AI-Scripting-and-Mapping.md:668 msgid "`606` Edit Hate-Value" msgstr "`606` 编辑仇恨值" -#: ../../AI-Scripting-and-Mapping.md:657 +#: ../../AI-Scripting-and-Mapping.md:670 msgid "Edit the hate-value that trigger houses to other houses." msgstr "编辑触发所属方对指定所属方的仇恨值。" -#: ../../AI-Scripting-and-Mapping.md:658 ../../AI-Scripting-and-Mapping.md:686 +#: ../../AI-Scripting-and-Mapping.md:671 ../../AI-Scripting-and-Mapping.md:699 msgid "-1 works for all houses." msgstr "-1为 所有国家。" -#: ../../AI-Scripting-and-Mapping.md:661 +#: ../../AI-Scripting-and-Mapping.md:674 msgid "" "[Actions]\n" "...\n" @@ -2125,15 +2158,15 @@ msgstr "" "\n" "...\n" -#: ../../AI-Scripting-and-Mapping.md:683 +#: ../../AI-Scripting-and-Mapping.md:696 msgid "`607` Clear Hate-Value" msgstr "`607` 清除仇恨值" -#: ../../AI-Scripting-and-Mapping.md:685 +#: ../../AI-Scripting-and-Mapping.md:698 msgid "Clear the hate-value that trigger houses to other houses." msgstr "清空触发所属方对指定所属方的仇恨值。" -#: ../../AI-Scripting-and-Mapping.md:689 +#: ../../AI-Scripting-and-Mapping.md:702 msgid "" "[Actions]\n" "...\n" @@ -2145,23 +2178,23 @@ msgstr "" "ID=ActionCount,[Action1],607,0,[HouseIndex],0,0,0,0,A,[ActionX]\n" "...\n" -#: ../../AI-Scripting-and-Mapping.md:696 +#: ../../AI-Scripting-and-Mapping.md:709 msgid "`608` Set Force Enemy" msgstr "`608` 强制宣战" -#: ../../AI-Scripting-and-Mapping.md:698 +#: ../../AI-Scripting-and-Mapping.md:711 msgid "Force an enemy, it will not change with the change of hate-value." msgstr "强制和指定所属方成为敌人且不会因任何因素发生改变。" -#: ../../AI-Scripting-and-Mapping.md:699 +#: ../../AI-Scripting-and-Mapping.md:712 msgid "-1 will remove the forced enemy." msgstr "-1 会解除强制宣战。" -#: ../../AI-Scripting-and-Mapping.md:700 +#: ../../AI-Scripting-and-Mapping.md:713 msgid "-2 will never have any enemies." msgstr "-2 则强制没有敌人。" -#: ../../AI-Scripting-and-Mapping.md:703 +#: ../../AI-Scripting-and-Mapping.md:716 msgid "" "[Actions]\n" "...\n" @@ -2173,33 +2206,96 @@ msgstr "" "ID=ActionCount,[Action1],608,0,0,[HouseIndex],0,0,0,A,[ActionX]\n" "...\n" -#: ../../AI-Scripting-and-Mapping.md:710 +#: ../../AI-Scripting-and-Mapping.md:723 +msgid "`609` Set Radar Mode" +msgstr "`609` 设置雷达模式" + +#: ../../AI-Scripting-and-Mapping.md:725 +msgid "Change the current radar mode of the trigger house." +msgstr "更改触发所属方的当前雷达模式" + +#: ../../AI-Scripting-and-Mapping.md:728 +msgid "" +"[Actions]\n" +"...\n" +"ID=ActionCount,[Action1],609,0,0,[RadarMode],0,0,0,A,[ActionX]\n" +"...\n" +msgstr "" +"[Actions]\n" +"...\n" +"ID=ActionCount,[Action1],609,0,0,[RadarMode],0,0,0,A,[ActionX]\n" +"...\n" + +#: ../../AI-Scripting-and-Mapping.md:522 +msgid "Normal mode, requires buildings that provide radar and sufficient power" +msgstr "常规模式,需要提供雷达的建筑并且电力充足。" + +#: ../../AI-Scripting-and-Mapping.md:522 +msgid "Change to [FreeRadar](https://modenc.renegadeprojects.com/FreeRadar) mode" +msgstr "改为 [FreeRadar](https://modenc.renegadeprojects.com/FreeRadar) 模式" + +#: ../../AI-Scripting-and-Mapping.md:522 +msgid "Force enable radar" +msgstr "强制开启雷达" + +#: ../../AI-Scripting-and-Mapping.md:522 +msgid "Force disable radar" +msgstr "强制关闭雷达" + +#: ../../AI-Scripting-and-Mapping.md:744 +msgid "`610` Set house's `TeamDelays` value" +msgstr "`610` 设置所属方的 `TeamDelays` 值" + +#: ../../AI-Scripting-and-Mapping.md:746 +msgid "Set the `TeamDelays` value of the trigger's house." +msgstr "设置触发所属方的 `TeamDelays` 值。" + +#: ../../AI-Scripting-and-Mapping.md:747 +msgid "" +"If this value is less than 0, then use the value of `[General] -> " +"TeamDelays`." +msgstr "" +"若该值小于 0 则使用 `[General] -> TeamDelays` 的值。" + +#: ../../AI-Scripting-and-Mapping.md:750 +msgid "" +"[Actions]\n" +"...\n" +"ID=ActionCount,[Action1],610,0,0,[Number],0,0,0,A,[ActionX]\n" +"...\n" +msgstr "" +"[Actions]\n" +"...\n" +"ID=ActionCount,[Action1],610,0,0,[Number],0,0,0,A,[ActionX]\n" +"...\n" + +#: ../../AI-Scripting-and-Mapping.md:757 msgid "`800-802` Display Banner" msgstr "`800-802` 显示横幅" -#: ../../AI-Scripting-and-Mapping.md:712 +#: ../../AI-Scripting-and-Mapping.md:759 msgid "Display a 'banner' at a fixed location that is relative to the screen." msgstr "在屏幕固定位置显示一个“横幅”。" -#: ../../AI-Scripting-and-Mapping.md:713 +#: ../../AI-Scripting-and-Mapping.md:760 msgid "" "Action `800` will create a new banner or replace the banner with the same" " Banner ID if it exists. Using a local variable's value when displaying a" " text banner." msgstr "结果 `800` 将会创建一个新的横幅或替换掉拥有相同 Banner ID 的旧有横幅。显示文本横幅时将使用 **局部** 变量的值。" -#: ../../AI-Scripting-and-Mapping.md:714 +#: ../../AI-Scripting-and-Mapping.md:761 msgid "" "Action `801` will create a new banner or replace the banner with the same" " Banner ID if it exists. Using a global variable's value when displaying " "a text banner." msgstr "结果 `801` 将会创建一个新的横幅或替换掉拥有相同 Banner ID 的旧有横幅。显示文本横幅时将使用 **全局** 变量的值。" -#: ../../AI-Scripting-and-Mapping.md:715 +#: ../../AI-Scripting-and-Mapping.md:762 msgid "Action `802` will delete the banner corresponding to the set Banner ID." msgstr "结果 `802` 将会删除与设定 Banner ID 相同的横幅。" -#: ../../AI-Scripting-and-Mapping.md:716 +#: ../../AI-Scripting-and-Mapping.md:763 msgid "" "To make use of this, you need to set the properties of a `BannerType` in " "your ini file. The banner can either be a `PCX` file, a Shape (`SHP`) " @@ -2209,74 +2305,74 @@ msgstr "" "使用该功能前需在 ini 文件中配置 `BannerType` 属性。横幅支持使用一个 PCX 文件,一个 SHP 文件,或一个 CSF " "条目。若多项同时设置则同样按此处所列的优先级顺序生效。" -#: ../../AI-Scripting-and-Mapping.md:717 +#: ../../AI-Scripting-and-Mapping.md:764 msgid "" "`SHP.Palette` controls the palette that'll be used when drawing a banner " "for Shape file." msgstr "`SHP.Palette` 控制绘制 SHP 横幅时所使用的色盘。" -#: ../../AI-Scripting-and-Mapping.md:718 +#: ../../AI-Scripting-and-Mapping.md:765 msgid "" "`CSF.Color` controls the color of the text that'll be used when drawing a" " text banner." msgstr "`CSF.Color` 控制使用 CSF 条目横幅时的文本颜色" -#: ../../AI-Scripting-and-Mapping.md:719 +#: ../../AI-Scripting-and-Mapping.md:766 msgid "" "`CSF.Background` controls whether a black background will be displayed " "below the text banner." msgstr "`CSF.Background` 控制使用 CSF 条目横幅时是否具有黑色底色。" -#: ../../AI-Scripting-and-Mapping.md:720 +#: ../../AI-Scripting-and-Mapping.md:767 msgid "" "`CSF.VariableFormat` controls the way to print a variable together with " "the text banner." msgstr "`CSF.VariableFormat` 控制使用 CSF 条目横幅时的变量显示方式。" -#: ../../AI-Scripting-and-Mapping.md:721 +#: ../../AI-Scripting-and-Mapping.md:768 msgid "`none` will make the text banner not display the variable." msgstr "`none` - 不显示变量。" -#: ../../AI-Scripting-and-Mapping.md:722 +#: ../../AI-Scripting-and-Mapping.md:769 msgid "" "`variable` will make the text banner display the variable alone and will " "ignore the text in `CSF`." msgstr "`variable` - 仅显示变量,并忽略 CSF 条目文本。" -#: ../../AI-Scripting-and-Mapping.md:723 +#: ../../AI-Scripting-and-Mapping.md:770 msgid "" "`prefix`/`prefixed` will make the text banner display the variable before" " any other text." msgstr "`prefix`/`prefixed` - 变量在其他文本 **前** 显示。" -#: ../../AI-Scripting-and-Mapping.md:724 +#: ../../AI-Scripting-and-Mapping.md:771 msgid "" "`suffix`/`suffixed` will make the text banner display the variable after " "any other text." msgstr "`suffix`/`suffixed` - 变量在其他文本 **后** 显示。" -#: ../../AI-Scripting-and-Mapping.md:725 +#: ../../AI-Scripting-and-Mapping.md:772 msgid "" "`Duration` determines how long the banner will be displayed. Negative " "values mean the banner can always be displayed until being deleted. The " "banner itself won't be deleted when it's not displaying." msgstr "`Duration` 决定横幅的显示时长。负值代表会在被删除前一直显示。横幅自身不会在不显示时被删除。" -#: ../../AI-Scripting-and-Mapping.md:726 +#: ../../AI-Scripting-and-Mapping.md:773 msgid "" "`Delay` determines when the banner will be displayed again after it stops" " displaying by a positive `Duration`. Neagtive values mean it can't be " "displayed again." msgstr "`Delay` 决定横幅因一个正值 `Duration` 而结束显示后多久才会再次显示。负值代表不会再次显示。" -#: ../../AI-Scripting-and-Mapping.md:727 +#: ../../AI-Scripting-and-Mapping.md:774 msgid "" "If an `SHP` banner displays again after the delay, it'll start from the " "frame when it's stopped last time. This can also be changed to its first " "frame if `SHP.RefreshAfterDelay` set to true." msgstr "一个 `SHP` 横幅会在再次显示时从上次结束时的帧开始。这可以通过 `SHP.RefreshAfterDelay=true` 更改为从头开始。" -#: ../../AI-Scripting-and-Mapping.md:730 +#: ../../AI-Scripting-and-Mapping.md:777 msgid "" "[BannerTypes]\n" "0=SOMEBANNER\n" @@ -2312,7 +2408,7 @@ msgstr "" "Duration=-1 ; integer\n" "Delay=-1 ; integer\n" -#: ../../AI-Scripting-and-Mapping.md:748 +#: ../../AI-Scripting-and-Mapping.md:795 msgid "" "[Actions]\n" "...\n" @@ -2332,19 +2428,19 @@ msgstr "" "ID=ActionCount,[Action1],802,0,[Unique ID],0,0,0,0,A,[ActionX]\n" "...\n" -#: ../../AI-Scripting-and-Mapping.md:757 +#: ../../AI-Scripting-and-Mapping.md:804 msgid "Trigger events" msgstr "触发条件" -#: ../../AI-Scripting-and-Mapping.md:759 +#: ../../AI-Scripting-and-Mapping.md:806 msgid "`500-511` Variable comparation" msgstr "`500-511` 变量比较" -#: ../../AI-Scripting-and-Mapping.md:761 +#: ../../AI-Scripting-and-Mapping.md:808 msgid "Compares the variable's value with given number." msgstr "比较变量值与给定值。" -#: ../../AI-Scripting-and-Mapping.md:764 +#: ../../AI-Scripting-and-Mapping.md:811 msgid "" "[Events]\n" "...\n" @@ -2432,15 +2528,15 @@ msgstr "510" msgid "511" msgstr "511" -#: ../../AI-Scripting-and-Mapping.md:786 +#: ../../AI-Scripting-and-Mapping.md:833 msgid "`512-523` Variable comparation with local variable" msgstr "`512-523` 变量与局部变量比较" -#: ../../AI-Scripting-and-Mapping.md:788 +#: ../../AI-Scripting-and-Mapping.md:835 msgid "Compares the variable's value with given local variable value." msgstr "比较变量值与给定局部变量值。" -#: ../../AI-Scripting-and-Mapping.md:791 +#: ../../AI-Scripting-and-Mapping.md:838 msgid "" "[Events]\n" "...\n" @@ -2526,15 +2622,15 @@ msgstr "522" msgid "523" msgstr "523" -#: ../../AI-Scripting-and-Mapping.md:813 +#: ../../AI-Scripting-and-Mapping.md:860 msgid "`524-535` Variable comparation with global variable" msgstr "`524-535` 变量与全局变量比较" -#: ../../AI-Scripting-and-Mapping.md:815 +#: ../../AI-Scripting-and-Mapping.md:862 msgid "Compares the variable's value with given global variable value." msgstr "比较变量值与给定全局变量值。" -#: ../../AI-Scripting-and-Mapping.md:818 +#: ../../AI-Scripting-and-Mapping.md:865 msgid "" "[Events]\n" "...\n" @@ -2620,11 +2716,11 @@ msgstr "534" msgid "535" msgstr "535" -#: ../../AI-Scripting-and-Mapping.md:840 +#: ../../AI-Scripting-and-Mapping.md:887 msgid "`600` The shield of the attached object is broken" msgstr "`600` 对象护盾被摧毁" -#: ../../AI-Scripting-and-Mapping.md:843 +#: ../../AI-Scripting-and-Mapping.md:890 msgid "" "[Events]\n" "...\n" @@ -2636,27 +2732,27 @@ msgstr "" "ID=EventCount,...,600,2,0,0,...\n" "...\n" -#: ../../AI-Scripting-and-Mapping.md:850 +#: ../../AI-Scripting-and-Mapping.md:897 msgid "`601-602` House owns/doesn't own Techno Type" msgstr "`601-602` 检查所属方是否有/无科技类型" -#: ../../AI-Scripting-and-Mapping.md:852 +#: ../../AI-Scripting-and-Mapping.md:899 msgid "" "`601`: Springs when specified house owns at least 1 instance of set " "TechnoType." msgstr "`601`:当指定所属方至少拥有一个设定的科技类型时触发。" -#: ../../AI-Scripting-and-Mapping.md:853 +#: ../../AI-Scripting-and-Mapping.md:900 msgid "" "`602`: Springs when specified house doesn't own a single instance of set " "TechnoType." msgstr "`602`:当指定所属方没有任何一个设定的科技类型时触发。" -#: ../../AI-Scripting-and-Mapping.md:854 +#: ../../AI-Scripting-and-Mapping.md:901 msgid "Multiplayer houses (indices 4475 through 4482) are supported." msgstr "多人游戏所属方(索引 4475 至 4482)支持。" -#: ../../AI-Scripting-and-Mapping.md:857 +#: ../../AI-Scripting-and-Mapping.md:904 msgid "" "[Events]\n" "...\n" @@ -2668,7 +2764,7 @@ msgstr "" "ID=EventCount,...,[EVENTID],2,[HouseIndex],[TechnoType],...\n" "...\n" -#: ../../AI-Scripting-and-Mapping.md:865 +#: ../../AI-Scripting-and-Mapping.md:912 msgid "" "These events, as opposed to [events 81 & 82 from Ares](https://ares-" "developers.github.io/Ares-docs/new/triggerevents.html#house-owns-techno-" @@ -2679,39 +2775,39 @@ msgstr "" "docs/new/triggerevents.html#house-owns-techno-" "type-81-82)不同,这里的所属方使用触发条件中的所属方参数而不是触发自身的所有者。" -#: ../../AI-Scripting-and-Mapping.md:868 +#: ../../AI-Scripting-and-Mapping.md:915 msgid "`604-605` Checking if a specific Techno enters in a cell" msgstr "`604-605` 检查特定科技类型进入单元格" -#: ../../AI-Scripting-and-Mapping.md:870 +#: ../../AI-Scripting-and-Mapping.md:917 msgid "" "`604`: Checks if the techno that entered in the cell has the same ID " "specified in the event." msgstr "`604`:检查进入单元格的科技类型是否与条件中指定的 ID相同。" -#: ../../AI-Scripting-and-Mapping.md:871 +#: ../../AI-Scripting-and-Mapping.md:918 msgid "" "`605`: Checks if the techno that entered in the cell appears in the " "selected list in `AITargetTypes`." msgstr "`605`:检查进入单元格的科技类型是否出现在选定的 `AITargetTypes` 列表中。" -#: ../../AI-Scripting-and-Mapping.md:872 +#: ../../AI-Scripting-and-Mapping.md:919 msgid "`HouseIndex` can be customized to focus in a specified house." msgstr "`HouseIndex` 可以自定义为指定所属方。" -#: ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:911 msgid "This value is ignored (any house is valid)" msgstr "该值将被忽略(任何所属方均有效)" -#: ../../AI-Scripting-and-Mapping.md:864 +#: ../../AI-Scripting-and-Mapping.md:911 msgid "Pick the owner of the map trigger" msgstr "选择地图触发的所有者" -#: ../../AI-Scripting-and-Mapping.md:889 +#: ../../AI-Scripting-and-Mapping.md:936 msgid "`606` AttachEffect is attaching to a Techno" msgstr "`606` AttachEffect 已被附加到单位" -#: ../../AI-Scripting-and-Mapping.md:891 +#: ../../AI-Scripting-and-Mapping.md:938 msgid "" "Checks if an `AttachEffectType` is attaching to a techno. Doesn't work " "for [attached effects](New-or-Enhanced-Logics.md#attached-effects) that " @@ -2720,11 +2816,11 @@ msgstr "" "检查一个 `AttachEffectType` 是否已附加到某个单位上。不适用于触发器启动前就已附加的 [Attach Effect](New-" "or-Enhanced-Logics.md#attached-effects)。" -#: ../../AI-Scripting-and-Mapping.md:892 +#: ../../AI-Scripting-and-Mapping.md:939 msgid "To be elaborate, the event will be triggered during these occasions:" msgstr "具体而言,该条件将在下述情况被满足:" -#: ../../AI-Scripting-and-Mapping.md:893 +#: ../../AI-Scripting-and-Mapping.md:940 msgid "" "Self-owned effects: initial granted (triggered after " "`AttachEffect.InitialDelays` amount of frames), recreation (triggered " @@ -2734,13 +2830,13 @@ msgstr "" "初始 AE:初始赋予时(在 `AttachEffect.InitialDelays` 帧后)、重新创建时(在 " "`AttachEffect.Delays` 或 `AttachEffect.RecreationDelays` 帧后)。" -#: ../../AI-Scripting-and-Mapping.md:894 +#: ../../AI-Scripting-and-Mapping.md:941 msgid "" "Effects from other sources: granted, refreshing when trying to apply the " "same type of attached effect to the techno." msgstr "外源 AE:赋予时、对同一单位赋予同一 AE 使其刷新时。" -#: ../../AI-Scripting-and-Mapping.md:897 +#: ../../AI-Scripting-and-Mapping.md:944 msgid "" "[Events]\n" "...\n" diff --git a/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po b/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po index 31e8a2ebf9..db3789e484 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po +++ b/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Phobos \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-26 20:55+0800\n" +"POT-Creation-Date: 2026-01-18 20:10+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -185,7 +185,7 @@ msgstr "VSCode 配置" msgid "Code style" msgstr "代码样式" -#: ../../../CREDITS.md:48 ../../../CREDITS.md:495 +#: ../../../CREDITS.md:48 ../../../CREDITS.md:505 msgid "Customizable ElectricBolt Arcs" msgstr "自定义 EBolt 电弧" @@ -290,11 +290,11 @@ msgid "Observer PCX loading screen" msgstr "观察者 PCX 载入图" #: ../../../CREDITS.md:76 ../../../CREDITS.md:105 ../../../CREDITS.md:237 -#: ../../../CREDITS.md:438 +#: ../../../CREDITS.md:441 msgid "Original `Arcing` elevation inaccuracy fix" msgstr "原版 `Arcing` 高差打偏问题修复" -#: ../../../CREDITS.md:77 ../../../CREDITS.md:446 +#: ../../../CREDITS.md:77 ../../../CREDITS.md:449 msgid "Display banner improvement" msgstr "横幅改进" @@ -502,7 +502,7 @@ msgstr "自定义驻军建筑与坦克碉堡属性" msgid "Disable `DamageSound` for buildings" msgstr "禁用 `DamageSound`" -#: ../../../CREDITS.md:132 ../../../CREDITS.md:589 +#: ../../../CREDITS.md:132 ../../../CREDITS.md:599 msgid "Power plant damage factor" msgstr "伤残电厂电量系数" @@ -606,7 +606,7 @@ msgstr "联动超武" #: ../../../CREDITS.md:157 msgid "Unit & infantry auto-conversion on ammo change" -msgstr "" +msgstr "基于弹药量的自动变形" #: ../../../CREDITS.md:158 msgid "**Starkku**:" @@ -1116,6 +1116,11 @@ msgstr "建筑拔起期间变更所属相关 Bug 的修复" msgid "Subterranean harvester pathfinding fix" msgstr "潜地矿车寻路问题修复" +msgid "" +"Toggle to exclude technos from base center calculations" +msgstr "" +"定义单位是否不参与基地中心计算" + #: ../../../CREDITS.md:287 msgid "**Morton (MortonPL)**:" msgstr "**Morton (MortonPL)**:" @@ -1186,7 +1191,7 @@ msgstr "`601 所属方存在科技类型...` 与 `602 所属方不·存在科技 msgid "Extending `Power` to all TechnoTypes" msgstr "将 `Power` 扩展到所有科技类型" -#: ../../../CREDITS.md:306 ../../../CREDITS.md:481 +#: ../../../CREDITS.md:306 ../../../CREDITS.md:491 msgid "Display banner by triggers" msgstr "横幅相关触发" @@ -1353,7 +1358,7 @@ msgstr "限制随机升级工具箱生成于陆地、优化箱子生成地点的 msgid "`ImmuneToCrit` for shields" msgstr "护盾的 `ImmuneToCrit`" -#: ../../../CREDITS.md:348 ../../../CREDITS.md:406 +#: ../../../CREDITS.md:348 ../../../CREDITS.md:409 msgid "Forbidding parallel AI queues by type" msgstr "按类禁止 AI 克隆生产" @@ -1505,7 +1510,7 @@ msgstr "`608 强制宣战` 触发结果" msgid "" "Fix the issue where computer players did not search for new enemies after" " defeating them or forming alliances with them" -msgstr "" +msgstr "修复了 AI 玩家在消灭一家敌人或敌人结盟后不再搜索新敌人的问题" #: ../../../CREDITS.md:384 msgid "Customize the damage taken when falling from a bridge" @@ -1529,7 +1534,7 @@ msgid "" "your building with `Overpowerable=yes`" msgstr "有 `ElectricAssault=yes` 的副武不再会无条件地攻击己方 `Overpowerable=yes` 的建筑" -#: ../../../CREDITS.md:388 ../../../CREDITS.md:483 +#: ../../../CREDITS.md:388 ../../../CREDITS.md:493 msgid "Fix the issue where some units crashed after the deployment transformation" msgstr "修复了某些单位部署变形后崩溃的问题" @@ -1605,7 +1610,7 @@ msgstr "去虚拟化弹头" msgid "Fast access structure" msgstr "快速进楼" -#: ../../../CREDITS.md:403 ../../../CREDITS.md:460 +#: ../../../CREDITS.md:403 ../../../CREDITS.md:463 msgid "Iron Curtain/Custom Tint Support for SHP Turreted Vehicles" msgstr "修复了铁幕/自定义染色不支持 SHP 有炮塔载具的问题" @@ -1614,56 +1619,68 @@ msgid "Reactivate unused trigger events 2, 53, and 54" msgstr "重新激活无效的 2、53 和 54 号触发条件" #: ../../../CREDITS.md:405 +msgid "Map Action 511, 609, 610" +msgstr "511、609 和 610 号地图触发结果" + +#: ../../../CREDITS.md:406 +msgid "Weapons now support `AttackFriendlies` and `AttackCursorOnFriendlies`" +msgstr "支持在武器上定义 `AttackFriendlies` 和 `AttackCursorOnFriendlies`" + +#: ../../../CREDITS.md:407 +msgid "Attack non-threatening structures extensions" +msgstr "攻击无威胁建筑扩展" + +#: ../../../CREDITS.md:408 msgid "**NetsuNegi**:" msgstr "**NetsuNegi**:" -#: ../../../CREDITS.md:407 +#: ../../../CREDITS.md:410 msgid "Jumpjet crash speed fix when crashing onto building" msgstr "Jumpjet 在建筑上坠毁时的坠毁速度修复" -#: ../../../CREDITS.md:408 +#: ../../../CREDITS.md:411 msgid "" "Disguised units not using the correct palette if target has custom " "palette bugfix" msgstr "伪装单位在目标拥有自定义色盘时无法正确使用色盘问题的修复" -#: ../../../CREDITS.md:409 +#: ../../../CREDITS.md:412 msgid "Tunnel/Walk/Mech locomotor being stuck when moving too fast bugfix" msgstr "Tunnel/Walk/Mech 运动模式在移动过快时卡住的 bug 修复" -#: ../../../CREDITS.md:410 +#: ../../../CREDITS.md:413 msgid "Assign Super Weapon cameo to any sidebar tab" msgstr "自定义超级武器所在栏" -#: ../../../CREDITS.md:411 +#: ../../../CREDITS.md:414 msgid "" "Fix impassable invisible barrier created by chronosphere on uncrushable " "unit" msgstr "修复了超时空传送超武将单位传送到一个不可碾压目标上并摧毁时在原位置创建空气墙的问题" -#: ../../../CREDITS.md:412 +#: ../../../CREDITS.md:415 msgid "`FreeUnit` uses its own `SpeedType` to determine where to spawn" msgstr "`FreeUnit` 使用单位自己的 `SpeedType` 来寻找生成位置" -#: ../../../CREDITS.md:413 +#: ../../../CREDITS.md:416 msgid "" "Fix the bug where naval ships set to `AllowedToStartInMultiplayer=yes` " "may spawn incorrectly on land" msgstr "修复了海军舰船设为 `AllowedToStartInMultiplayer=yes` 可能生成在陆地上的 Bug" -#: ../../../CREDITS.md:414 +#: ../../../CREDITS.md:417 msgid "" "Fix the bug where pathfinding issues occur when a building performs " "undeploy" msgstr "修复了建筑执行 `UndeploysInto` 时的寻路问题" -#: ../../../CREDITS.md:415 +#: ../../../CREDITS.md:418 msgid "" "Fix amphibious harvesters can not automatically return to refineries with" " `WaterBound`" msgstr "修复了两栖矿车无法自动返回拥有 `WaterBound` 的矿场的问题" -#: ../../../CREDITS.md:416 +#: ../../../CREDITS.md:419 msgid "" "Fix [EIP " "004C2C19](https://modenc.renegadeprojects.com/Internal_Error#eip_004C2C19)" @@ -1672,27 +1689,27 @@ msgstr "" "修复了 EBolt 相关的 [EIP " "004C2C19](https://modenc.renegadeprojects.com/Internal_Error#eip_004C2C19)" -#: ../../../CREDITS.md:417 ../../../CREDITS.md:582 +#: ../../../CREDITS.md:420 ../../../CREDITS.md:592 msgid "Fix `DefaultDisguise` showing wrong house colors for different players" msgstr "修复了 `DefaultDisguise` 为不同玩家显示不同所属方颜色的问题" -#: ../../../CREDITS.md:418 +#: ../../../CREDITS.md:421 msgid "Taking over Ares' AlphaImage respawn logic to reduce lags from it" msgstr "接管 Ares 的 AlphaImage 重绘逻辑以减少其造成的卡顿" -#: ../../../CREDITS.md:419 +#: ../../../CREDITS.md:422 msgid "Allow voxel projectiles to use `AnimPalette` and `FirersPalette`" msgstr "允许了 Voxel 抛射体使用 `AnimPalette` 和 `FirersPalette`" -#: ../../../CREDITS.md:420 +#: ../../../CREDITS.md:423 msgid "Customize damaged speed ratio of drive/ship loco" msgstr "自定义 `Locomotor` 为 `Drive`/`Ship` 的单位伤残状态的速度比率" -#: ../../../CREDITS.md:421 +#: ../../../CREDITS.md:424 msgid "Customize overpower logic" msgstr "自定义磁暴线圈充能" -#: ../../../CREDITS.md:422 +#: ../../../CREDITS.md:425 msgid "" "Fix the bug that `EnterBioReactorSound`, `LeaveBioReactorSound`, " "`EnterGrinderSound` on technotype does not used" @@ -1700,946 +1717,987 @@ msgstr "" "修复了 `EnterBioReactorSound`、`LeaveBioReactorSound`、`EnterGrinderSound` " "在单位上微观设定无效的 Bug" -#: ../../../CREDITS.md:423 +#: ../../../CREDITS.md:426 msgid "" "Fix the bug that harvester dont stop unloading and cannot unload cargos " "anymore when lifting by `IsLocomotor=yes` warhead" msgstr "修复了矿车被 `IsLocomotor=yes` 的弹头抬起也不会停止卸载状态且无法继续正常卸载的 Bug" -#: ../../../CREDITS.md:424 ../../../CREDITS.md:540 +#: ../../../CREDITS.md:427 ../../../CREDITS.md:550 msgid "Fix an issue that units on the slope tilted at an excessive angle" msgstr "修复了单位在斜坡上倾斜角度过大的问题" -#: ../../../CREDITS.md:425 +#: ../../../CREDITS.md:428 msgid "Enhanced reveal & gap warhead" msgstr "增强版揭示弹与黑幕弹" -#: ../../../CREDITS.md:426 +#: ../../../CREDITS.md:429 msgid "" "Fix an issue that teleport units board transport vehicles on the bridge " "will create an impassable invisible barrier, which may cause the game to " "freeze or even crash" msgstr "修复了单位超时空进入桥上的运输载具会产生空气墙并可能导致游戏卡死乃至崩溃的问题" -#: ../../../CREDITS.md:427 +#: ../../../CREDITS.md:430 msgid "" "Fix wrong shadow when a vehicle has hover locomotor and is being lifted " "by `IsLocomotor=yes` warhead" msgstr "修复了使用悬浮运动模式的载具被 `IsLocomotor=yes` 弹头抬起时显示的错误阴影" -#: ../../../CREDITS.md:428 +#: ../../../CREDITS.md:431 msgid "Customize parasite culling targets" msgstr "自定义寄生秒杀目标" -#: ../../../CREDITS.md:429 +#: ../../../CREDITS.md:432 msgid "Customize harvester dump amount" msgstr "自定义矿车单次倒矿量" -#: ../../../CREDITS.md:430 +#: ../../../CREDITS.md:433 msgid "Select box logic" msgstr "选择框逻辑" -#: ../../../CREDITS.md:431 +#: ../../../CREDITS.md:434 msgid "Customize airstrike targets" msgstr "自定义空袭目标" -#: ../../../CREDITS.md:432 +#: ../../../CREDITS.md:435 msgid "" "Separate the AirstrikeClass pointer between the attacker/aircraft and the" " target to avoid erroneous overwriting issues" msgstr "分离了 AirstrikeClass 中攻击者/战机与目标的指针以避免错误覆盖问题" -#: ../../../CREDITS.md:433 +#: ../../../CREDITS.md:436 msgid "Fix the bug that buildings will always be tinted as airstrike owner" msgstr "修复了建筑总是被染色为空袭所属方颜色的 Bug" -#: ../../../CREDITS.md:434 +#: ../../../CREDITS.md:437 msgid "" "Fix the bug that `AllowAirstrike=no` cannot completely prevent air " "strikes from being launched against it" msgstr "修复了 `AllowAirstrike=no` 未能完全阻止对某个单位进行空袭的 Bug" -#: ../../../CREDITS.md:435 +#: ../../../CREDITS.md:438 msgid "" "Fix the bug that infantry ignored `Passengers` and `SizeLimit` when " "entering buildings" msgstr "修复了步兵进入建筑时忽略 `Passengers` 和 `SizeLimit` 的 Bug" -#: ../../../CREDITS.md:436 +#: ../../../CREDITS.md:439 msgid "Tiberium eater logic" msgstr "马夫逻辑" -#: ../../../CREDITS.md:437 +#: ../../../CREDITS.md:440 msgid "Fix the bug that ships can travel on elevated bridges" msgstr "修复了船只可以在高架桥上行驶的 Bug" -#: ../../../CREDITS.md:439 +#: ../../../CREDITS.md:442 msgid "" "Fix the bug that uncontrolled scatter when elite techno attacked by " "aircraft or some unit try crush it" msgstr "修复精英单位在被战机攻击或一个单位尝试碾压它时强制散开的 Bug" -#: ../../../CREDITS.md:440 ../../../CREDITS.md:551 +#: ../../../CREDITS.md:443 ../../../CREDITS.md:561 msgid "Exclusive SuperWeapon Sidebar" msgstr "超武侧边栏" -#: ../../../CREDITS.md:441 +#: ../../../CREDITS.md:444 msgid "Fix the bug that AlphaImage remained after unit entered tunnel" msgstr "修复了 AlphaImage 在单位进入隧道后会遗留在隧道口的 Bug" -#: ../../../CREDITS.md:442 +#: ../../../CREDITS.md:445 msgid "Weapon target filtering by health percentage" msgstr "武器根据血量百分比筛选目标" -#: ../../../CREDITS.md:443 +#: ../../../CREDITS.md:446 msgid "" "Fix the bug that `DamageSelf` and `AllowDamageOnSelf` are ineffective on " "airforce" msgstr "修复了 `DamageSelf` 和 `AllowDamageOnSelf` 对空军无效的 Bug" -#: ../../../CREDITS.md:444 +#: ../../../CREDITS.md:447 msgid "Customize limit when engineer repair a building" msgstr "自定义工程师维修建筑时的修复值" -#: ../../../CREDITS.md:445 +#: ../../../CREDITS.md:448 msgid "" "Fix the bug that damaged particle dont disappear after building has " "repaired by engineer" msgstr "修复了建筑在被工程师修复后受损粒子不会移除的 Bug" -#: ../../../CREDITS.md:447 +#: ../../../CREDITS.md:450 msgid "Electric/RadBeam trail for laser tails" msgstr "激光尾焰逻辑支持 EBolt/辐射波" -#: ../../../CREDITS.md:448 +#: ../../../CREDITS.md:451 msgid "Ground line for select box" msgstr "为选择框添加了投影线" -#: ../../../CREDITS.md:449 +#: ../../../CREDITS.md:452 msgid "" "Fix the bug that passengers' Temporal attacks wouldn't stop when an " "OpenTopped vehicle was frozen by a Temporal warhead" msgstr "修复了即便 `OpenTopped` 载具被超时空弹头冻结其乘客的超时空武器攻击也不会停止的 Bug" -#: ../../../CREDITS.md:450 +#: ../../../CREDITS.md:453 msgid "Fix the bug that vehicle owned by computer will scatter when cloaking" msgstr "修复了 AI 的载具在隐形时会乱跑的 Bug" -#: ../../../CREDITS.md:451 +#: ../../../CREDITS.md:454 msgid "" "Fix the bug that submarine always turn left after changed owner by map " "event" msgstr "修复了水下单位在被地图触发修改所属后总会朝向左方的 Bug" -#: ../../../CREDITS.md:452 +#: ../../../CREDITS.md:455 msgid "" "Fix the bug that occupyable structure won't redraw when press deploy " "hotkey to release all occupants" msgstr "修复了可驻军建筑在按部署键释放全部驻兵后绘图不会刷新的 Bug" -#: ../../../CREDITS.md:453 +#: ../../../CREDITS.md:456 msgid "" "Fix the bug that Locomotor warhead won't stop working when the attacker " "is being affected by `Temporal=yes` warhead" msgstr "修复了攻击者被 `Temporal=yes` 弹头作用时运动模式弹头不会停止工作的 Bug" -#: ../../../CREDITS.md:454 +#: ../../../CREDITS.md:457 msgid "" "Fix the bug that `IsLocomotor=yes` warhead rendering hover units " "unselectable and undamageable on elevated bridge" msgstr "修复了 `IsLocomotor=yes` 弹头会导致高架桥上的悬浮载具无法选中且无法被伤害的 Bug" -#: ../../../CREDITS.md:455 +#: ../../../CREDITS.md:458 msgid "" "Fix the bug that Locomotor warhead won't stop working when firer (except " "for vehicle) stop firing" msgstr "修复了非载具单位使用运动模式弹头时停止开火也不会停止工作的 Bug" -#: ../../../CREDITS.md:456 +#: ../../../CREDITS.md:459 msgid "Fix the bug that hover vehicle will sink if destroyed on bridge" msgstr "修复了悬浮载具在桥上被摧毁会沉没(而不是爆炸)的 Bug" -#: ../../../CREDITS.md:457 +#: ../../../CREDITS.md:460 msgid "Customize squid grapple animation" msgstr "自定义乌贼拖拽动画" -#: ../../../CREDITS.md:458 +#: ../../../CREDITS.md:461 msgid "" "Fix the bug that armor multiplier of new attacheffect will have extra " "take effect once if restricted warheads" msgstr "修复了新 AE 的护甲倍率在使用了 限制护甲倍率 的情况下会额外计算一次的 Bug" -#: ../../../CREDITS.md:459 +#: ../../../CREDITS.md:462 msgid "" "Fix the bug that techno unit will draw with ironcurtain and airstrike " "color and intensity who disguised as terrain or overlay" msgstr "修复了单位在伪装成地形对象或覆盖物时铁幕与空袭染色强度绘制错误的 Bug" -#: ../../../CREDITS.md:461 +#: ../../../CREDITS.md:464 msgid "" "Allow setting whether `AlternateFLH` applies to vehicle passengers in the" " transport unit" msgstr "允许设定 `AlternateFLH` 是否作用于运输工具中的载具类载员" -#: ../../../CREDITS.md:462 +#: ../../../CREDITS.md:465 msgid "" "Fix the bug that vehicle fall on infantry will make all cell content has " "been removed" msgstr "修复了载具落到有步兵的单元格上时会将格内所有对象全部移除的 Bug" -#: ../../../CREDITS.md:463 +#: ../../../CREDITS.md:466 msgid "Allow deploy controlled MCV" msgstr "允许部署被心控的 MCV" -#: ../../../CREDITS.md:464 +#: ../../../CREDITS.md:467 msgid "Fix the bug that naval ship will sink even they destroyed in air" msgstr "修复了海军舰船即便在空中被摧毁也会在天上沉没的 Bug" -#: ../../../CREDITS.md:465 +#: ../../../CREDITS.md:468 msgid "" "Fix the bug that building with `CloningFacility=true` and " "`WeaponsFactory=true` may cloning multiple vehicles and then they get " "stuck" msgstr "修复了拥有 `CloningFacility=true` 和 `WeaponsFactory=true` 的建筑可能克隆多个载具并卡住的 Bug" -#: ../../../CREDITS.md:466 +#: ../../../CREDITS.md:469 msgid "Customize Ares's radar jam logic" msgstr "自定义 Ares 的雷达干扰逻辑" -#: ../../../CREDITS.md:467 +#: ../../../CREDITS.md:470 msgid "Customize if cloning need power" msgstr "自定义克隆耗电" -#: ../../../CREDITS.md:468 +#: ../../../CREDITS.md:471 msgid "Customize type selection for IFV" msgstr "自定义 IFV 的类型选择" -#: ../../../CREDITS.md:469 +#: ../../../CREDITS.md:472 msgid "" "Fix the issue that units will goto farest location if target is closer " "than `MinimumRange`" msgstr "修复了单位距离目标小于 `MinimumRange` 时会前往最远距离的问题" -#: ../../../CREDITS.md:470 +#: ../../../CREDITS.md:473 msgid "" "Fix a bug introduced by Ares where building types that have " "`UndeploysInto` cannot display `AltCameo` or `AltCameoPCX` even when you " "infiltrate enemy buildings with `Factory=UnitType`" msgstr "修复了 Ares 引入的渗透敌方重工后 `UndeploysInto` 建筑 `AltCameo` 或 `AltCameoPCX` 不显示 Bug" -#: ../../../CREDITS.md:471 +#: ../../../CREDITS.md:474 msgid "" "Fix a bug where units can be promoted when created via trigger actions " "even if they have `Trainable=false`" msgstr "修复了由触发结果创建的单位即便拥有 `Trainable=false` 也可以被升级的 Bug" -#: ../../../CREDITS.md:472 +#: ../../../CREDITS.md:475 msgid "" "Fix the bug that ai will try to product aircraft even the airport has no " "free dock for it" +msgstr "修复了即便在没有可用的空余机位时 AI 也仍会尝试生产战机的 Bug" + +#: ../../../CREDITS.md:476 +msgid "" +"Allow techno type considered as other type when recruiting techno for " +"teams" +msgstr "允许单位作为其他类型的单位参与小队招募" + +#: ../../../CREDITS.md:477 +msgid "" +"Fix the issue that technos cannot spawn survivors due to non-" +"probabilistic reasons when the tech type was destroyed" +msgstr "修复了单位由于非概率原因无法在被摧毁时生成生还者的问题" + +#: ../../../CREDITS.md:478 +msgid "" +"Fix the bug that vehicle survivor can spawn on wrong position when " +"transport has been destroyed" +msgstr "修复了载具生还者在运输工具被摧毁时生成在错误位置的 Bug" + +#: ../../../CREDITS.md:479 +msgid "" +"Fix the bug that if object has been removed from LogicClass in Update(), " +"next object will be skip" +msgstr "修复了当一个物体更新时被移除会导致全局容器中下一个物体被跳过的 Bug" + +#: ../../../CREDITS.md:480 +msgid "" +"Fix the bug that weapon cannot used to intercept on gound bullet if it's " +"projectile has `AG=no`" msgstr "" -"修复了即便在没有可用的空余机位时 AI 也仍会尝试生产战机的 Bug" +"修复了抛射体 `AG=no` 的武器无法拦截贴地飞行的抛射体的 Bug" -#: ../../../CREDITS.md:473 +#: ../../../CREDITS.md:481 +msgid "Customize size for mind controlled unit" +msgstr "自定义被心控单位的心控尺寸" + +#: ../../../CREDITS.md:482 +msgid "" +"Fix the issue that weapon selection don't check if secondary's warhead " +"has `IsLocomotor=yes`" +msgstr "" +"修复了武器选取规则未检查副武弹头是否拥有 `IsLocomotor=yes` 的问题" + +#: ../../../CREDITS.md:483 msgid "**Apollo** - Translucent SHP drawing patches" msgstr "**Apollo** - 半透明 SHP 绘制补丁" -#: ../../../CREDITS.md:474 +#: ../../../CREDITS.md:484 msgid "**ststl**:" msgstr "**ststl**:" -#: ../../../CREDITS.md:475 +#: ../../../CREDITS.md:485 msgid "Customizable `ShowTimer` priority of superweapons" msgstr "自定义超武 `ShowTimer` 优先级" -#: ../../../CREDITS.md:476 +#: ../../../CREDITS.md:486 msgid "Iron Curtain effects customization on infantry and organic units" msgstr "自定义对步兵和有机体的铁幕效果" -#: ../../../CREDITS.md:477 +#: ../../../CREDITS.md:487 msgid "Use `CustomPalette` for animations with `Tiled=yes`" msgstr "允许 `Tiled=yes` 的动画使用 `CustomPalette` 自定义色盘" -#: ../../../CREDITS.md:478 +#: ../../../CREDITS.md:488 msgid "Unlimited `AlternateFLH` entries" msgstr "无限制 `AlternateFLH` 条目" -#: ../../../CREDITS.md:479 +#: ../../../CREDITS.md:489 msgid "Build limit group" msgstr "建造限制组" -#: ../../../CREDITS.md:480 +#: ../../../CREDITS.md:490 msgid "Customizing whether passengers are kicked out when an aircraft fires" msgstr "自定义战机开火时是否踹出乘客" -#: ../../../CREDITS.md:482 +#: ../../../CREDITS.md:492 msgid "New SuperWeapon Type template" msgstr "新超武类型模版" -#: ../../../CREDITS.md:484 +#: ../../../CREDITS.md:494 msgid "**TwinkleStar**:" msgstr "**TwinkleStar**:" -#: ../../../CREDITS.md:485 +#: ../../../CREDITS.md:495 msgid "Custom slaves free sound" msgstr "自定义奴隶解放音效" -#: ../../../CREDITS.md:486 +#: ../../../CREDITS.md:496 msgid "Jumpjet crash rotation control" msgstr "Jumpjet 坠毁旋转控制" -#: ../../../CREDITS.md:487 +#: ../../../CREDITS.md:497 msgid "Vehicle voxel turret shadows & body multi-section shadows" msgstr "Voxel 载具炮塔与多组件 Voxel 车体影子" -#: ../../../CREDITS.md:488 +#: ../../../CREDITS.md:498 msgid "`TurretOffset` support for SHP vehicles" msgstr "Shape 载具的 `TurretOffset` 支持" -#: ../../../CREDITS.md:489 ../../../CREDITS.md:577 +#: ../../../CREDITS.md:499 ../../../CREDITS.md:587 msgid "Customizable rocker amplitude" msgstr "自定义掀起幅度" -#: ../../../CREDITS.md:490 +#: ../../../CREDITS.md:500 msgid "Customizable wake anim" msgstr "自定义水波动画" -#: ../../../CREDITS.md:491 +#: ../../../CREDITS.md:501 msgid "Initial effort on optimization for crates' random distribution" msgstr "对箱子随机分布的初步优化" -#: ../../../CREDITS.md:492 +#: ../../../CREDITS.md:502 msgid "Customizable spawns queue" msgstr "自定义子机序列" -#: ../../../CREDITS.md:493 +#: ../../../CREDITS.md:503 msgid "Initial spawns number" msgstr "初始子机数量" -#: ../../../CREDITS.md:494 +#: ../../../CREDITS.md:504 msgid "**Fryone**:" msgstr "**Fryone**:" -#: ../../../CREDITS.md:496 +#: ../../../CREDITS.md:506 msgid "Sound entry on unit's creation" msgstr "单位创建时的音效条目" -#: ../../../CREDITS.md:497 +#: ../../../CREDITS.md:507 msgid "Auto-deploy/Deploy block on ammo change" msgstr "根据弹药自动部署/阻止部署" -#: ../../../CREDITS.md:498 +#: ../../../CREDITS.md:508 msgid "Flashing Technos on selecting" msgstr "闪烁选中的科技类型" -#: ../../../CREDITS.md:499 +#: ../../../CREDITS.md:509 msgid "Promotion animation" msgstr "升级动画" -#: ../../../CREDITS.md:500 +#: ../../../CREDITS.md:510 msgid "Damaged unit image changes" msgstr "载具伤残更换图像" -#: ../../../CREDITS.md:501 +#: ../../../CREDITS.md:511 msgid "`VoiceDeploy` through hot-key/command bar fix" msgstr "修复了通过快捷键/底边栏按钮部署时不播放 `VoiceDeploy` 的问题" -#: ../../../CREDITS.md:502 +#: ../../../CREDITS.md:512 msgid "Damaged aircraft image changes" msgstr "战机伤残更换图像" -#: ../../../CREDITS.md:503 +#: ../../../CREDITS.md:513 msgid "**ZivDero**:" msgstr "**ZivDero**:" -#: ../../../CREDITS.md:504 +#: ../../../CREDITS.md:514 msgid "Re-enable the Veinhole Monster and Weeds from TS" msgstr "重启 TS 中的泰伯利亚藤蔓怪和泰伯利亚废矿逻辑" -#: ../../../CREDITS.md:505 +#: ../../../CREDITS.md:515 msgid "Recreate the weed-charging of SWs like the TS Chemical Missile" msgstr "重新创建类似于 TS 中化学飞弹那样的超武根据废矿充能效果" -#: ../../../CREDITS.md:506 +#: ../../../CREDITS.md:516 msgid "Allow to change the speed of gas particles" msgstr "允许更改 gas 粒子的速度" -#: ../../../CREDITS.md:507 +#: ../../../CREDITS.md:517 msgid "Fix a jumpjet crash related to voxel shadow drawing" msgstr "修复与 Voxel 阴影绘制相关的 Jumpjet 崩溃问题" -#: ../../../CREDITS.md:508 +#: ../../../CREDITS.md:518 msgid "Replace `BLOWFISH.DLL` using Red Alert source code" msgstr "使用 RA 源码替代掉 `BLOWFISH.DLL`" -#: ../../../CREDITS.md:509 +#: ../../../CREDITS.md:519 msgid "" "Adjust the dehardcoding of the 255 `OverlayType` limit to a different " "format" msgstr "将 255 种覆盖物数量限制解编码方式调整为使用一种不同的格式" -#: ../../../CREDITS.md:510 +#: ../../../CREDITS.md:520 msgid "**CrimRecya**:" msgstr "**CrimRecya**:" -#: ../../../CREDITS.md:511 +#: ../../../CREDITS.md:521 msgid "Fix `LimboKill` not working reliably" msgstr "修复 `LimboKill` 未能可靠工作的问题" -#: ../../../CREDITS.md:512 +#: ../../../CREDITS.md:522 msgid "Allow using waypoints, area guard and attack move with aircraft" msgstr "允许战机使用路径点、区域警戒和移动攻击" -#: ../../../CREDITS.md:513 +#: ../../../CREDITS.md:523 msgid "Fix `Stop` command not working so well in many cases" msgstr "修复 `停止` 命令很多情况下不工作的问题" -#: ../../../CREDITS.md:514 +#: ../../../CREDITS.md:524 msgid "Fix aircraft `MovementZone` and `SpeedType` inconsistencies" msgstr "修复战机自身设置的 `MovementZone` 和 `SpeedType` 与寻路所用的这两项不一致的问题" -#: ../../../CREDITS.md:515 +#: ../../../CREDITS.md:525 msgid "" "Use 2D distance instead of 3D to check whether in air team members have " "arrived destination" msgstr "使用 2D 而不是 3D 距离来检查空中的小队成员是否抵达目的地" -#: ../../../CREDITS.md:516 +#: ../../../CREDITS.md:526 msgid "No rearm and reload in EMP or temporal" msgstr "EMP 或超时空停止 CD" -#: ../../../CREDITS.md:517 +#: ../../../CREDITS.md:527 msgid "Enhanced Straight trajectory" msgstr "增强的直线弹道" -#: ../../../CREDITS.md:518 +#: ../../../CREDITS.md:528 msgid "Enable Building Production Queue" msgstr "启用建筑生产队列" -#: ../../../CREDITS.md:519 +#: ../../../CREDITS.md:529 msgid "Fix for sidebar not updating queued unit numbers when on hold" msgstr "修复侧边栏在生产暂停时未能更新预购单位订单数量的问题" -#: ../../../CREDITS.md:520 +#: ../../../CREDITS.md:530 msgid "New Parabola trajectory" msgstr "新的抛物线弹道" -#: ../../../CREDITS.md:521 ../../../CREDITS.md:580 +#: ../../../CREDITS.md:531 ../../../CREDITS.md:590 msgid "Enhanced Bombard trajectory" msgstr "增强的轰击弹道" -#: ../../../CREDITS.md:522 ../../../CREDITS.md:613 +#: ../../../CREDITS.md:532 ../../../CREDITS.md:623 msgid "No turret unit turn to the target" msgstr "无炮塔单位转向目标" -#: ../../../CREDITS.md:523 +#: ../../../CREDITS.md:533 msgid "Damage multiplier for different houses" msgstr "对不同所属方的伤害修正比" -#: ../../../CREDITS.md:524 +#: ../../../CREDITS.md:534 msgid "Extended gattling rate down logic" msgstr "拓展的盖特掉档逻辑" -#: ../../../CREDITS.md:525 +#: ../../../CREDITS.md:535 msgid "Sell or undeploy building on impact" msgstr "弹头将建筑出售或反部署" -#: ../../../CREDITS.md:526 +#: ../../../CREDITS.md:536 msgid "Draw visual effects for airburst weapons" msgstr "空爆武器正常绘制武器特效" -#: ../../../CREDITS.md:527 +#: ../../../CREDITS.md:537 msgid "Technos recount current burst index when change the firing weapon" msgstr "科技类型在更换开火武器时重置当前连发索引" -#: ../../../CREDITS.md:528 +#: ../../../CREDITS.md:538 msgid "Units will not always stuck in the factory" msgstr "单位将不再会被卡在工厂内" -#: ../../../CREDITS.md:529 +#: ../../../CREDITS.md:539 msgid "Technos can maintain a suitable distance after firing" msgstr "科技类型可以在开火后保持适当的距离" -#: ../../../CREDITS.md:530 +#: ../../../CREDITS.md:540 msgid "Projectile subject to ground check before firing" msgstr "开火前检查抛射体是否会穿地" -#: ../../../CREDITS.md:531 +#: ../../../CREDITS.md:541 msgid "Delay automatic attack on the controlled unit" msgstr "攻击被心控单位的延迟" -#: ../../../CREDITS.md:532 +#: ../../../CREDITS.md:542 msgid "Fast access vehicle" msgstr "快速上车" -#: ../../../CREDITS.md:533 +#: ../../../CREDITS.md:543 msgid "" "Fix an issue that some amphibious technos being unable to enter on water " "structures" msgstr "修复了一些两栖单位无法进入水上建筑的问题" -#: ../../../CREDITS.md:534 +#: ../../../CREDITS.md:544 msgid "" "Fix an issue that aircraft carriers can not find suitable locations for " "attacks when under elevated bridges on their own" msgstr "修复了航空母舰在桥下时无法找到恰当攻击位置的问题" -#: ../../../CREDITS.md:535 ../../../CREDITS.md:623 +#: ../../../CREDITS.md:545 ../../../CREDITS.md:633 msgid "" "Fix an issue that in air aircraft carriers being unable to attack when it" " is near by elevated bridges" msgstr "修复了空天母舰靠近高架桥梁时无法攻击的问题" -#: ../../../CREDITS.md:536 +#: ../../../CREDITS.md:546 msgid "" "Fix an issue that aircraft carriers cannot retract its spawned aircraft " "when on the bridge" msgstr "修复了航空母舰在桥上无法回收子机的问题" -#: ../../../CREDITS.md:537 +#: ../../../CREDITS.md:547 msgid "" "Fix an issue where the shadow of jumpjet remained on the ground when it " "was above the elevated bridge" msgstr "修复了 Jumpjet 在桥梁上方时其影子残留在地面的问题" -#: ../../../CREDITS.md:538 +#: ../../../CREDITS.md:548 msgid "Laser, electric bolt and rad beam scatter" msgstr "激光、EBolt 和辐射波的散布" -#: ../../../CREDITS.md:539 +#: ../../../CREDITS.md:549 msgid "" "Fix an issue that laser, electric bolt and rad beam not support " "`Inviso=true` projectiles with `FlakScatter=true` to scatter" msgstr "修复了激光、EBolt、辐射波在 `FlakScatter=true` 的 `Inviso=true` 抛射体上不不跟随散布的问题" -#: ../../../CREDITS.md:541 +#: ../../../CREDITS.md:551 msgid "" "Fix an issue that the first passenger who call the transport ship no " "longer board the transport ship when the land units call for boarding" msgstr "修复了当陆地单位请求登船时第一个呼叫运输船的乘客不会登船的问题" -#: ../../../CREDITS.md:542 +#: ../../../CREDITS.md:552 msgid "" "Fix an issue that impassable invisible barrier generated by the behavior " "of infantry continuously entering vehicles" msgstr "修复了步兵通过路径点连续进入两个载具等行为会产生空气墙的问题" -#: ../../../CREDITS.md:543 +#: ../../../CREDITS.md:553 msgid "" "Fix an issue that MCV will self-destruct when using trigger 107 to " "teleport" msgstr "修复了使用 107 号触发传送时 MCV 会自毁的问题" -#: ../../../CREDITS.md:544 +#: ../../../CREDITS.md:554 msgid "" "Fix an issue that moving MCV with Teleport locomotion will cause " "reconnection error" msgstr "修复了超时空移动的 MCV 会引发 Reconnection Error 的问题" -#: ../../../CREDITS.md:545 +#: ../../../CREDITS.md:555 msgid "Jumpjet Tilts While Moving" msgstr "Jumpjet 在移动时倾斜" -#: ../../../CREDITS.md:546 +#: ../../../CREDITS.md:556 msgid "" "Fix an issue that game crashes (EIP:7FB178) when infantry are about to " "enter an occupiable building that has been removed and is not real dead" msgstr "修复了当步兵进入一个已被移除但并未真正死亡的可驻军建筑时导致的游戏崩溃问题" -#: ../../../CREDITS.md:547 +#: ../../../CREDITS.md:557 msgid "" "Fix an issue that game crashes when spawnee has been removed and is not " "real dead" msgstr "修复了当子机已被移除但并未真正死亡时导致的游戏崩溃问题" -#: ../../../CREDITS.md:548 +#: ../../../CREDITS.md:558 msgid "Aggressive attack move mission" msgstr "侵略性移动攻击命令" -#: ../../../CREDITS.md:549 +#: ../../../CREDITS.md:559 msgid "Amphibious access vehicle" msgstr "两栖载具装载拓展" -#: ../../../CREDITS.md:550 +#: ../../../CREDITS.md:560 msgid "" "Fix an issue that spawned `Strafe` aircraft on aircraft carriers may not " "be able to return normally if aircraft carriers moved a short distance " "when the aircraft is landing" msgstr "修复了 `Strafe` 状态的子机返航时如果航母移动了一小段距离会导致无法正常返航而一直绕圈的问题" -#: ../../../CREDITS.md:552 +#: ../../../CREDITS.md:562 msgid "" "Fix an issue that the widespread damage caused by detonation on the " "bridge/ground cannot affect objects on the ground/bridge who are in the " "opposite case" msgstr "修复了范围伤害在桥上/地面引爆时无法影响相对情况即在地面/桥上的对象的问题" -#: ../../../CREDITS.md:553 +#: ../../../CREDITS.md:563 msgid "" "Several new Infotypes, no display in specific status and a new single " "frame display method" msgstr "多种新的数显信息类型、特定情况下不显示以及一种新的单帧显示方式" -#: ../../../CREDITS.md:554 +#: ../../../CREDITS.md:564 msgid "" "Customizable spawn delay of `VoxelAnim`'s `TrailerAnim` and fix its " "incorrect position" msgstr "自定义 Voxel 碎片 `TrailerAnim` 生成间隔并修复其生成位置错误的问题" -#: ../../../CREDITS.md:555 +#: ../../../CREDITS.md:565 msgid "Add `DebrisMinimums` to keep the count of debris within a certain range" msgstr "添加了 `DebrisMinimums` 语句以将碎片数量控制在一定范围内" -#: ../../../CREDITS.md:556 +#: ../../../CREDITS.md:566 msgid "Task subtitles display in the middle of the screen" msgstr "字幕居中" -#: ../../../CREDITS.md:557 +#: ../../../CREDITS.md:567 msgid "" "Fix an issue that `MovementZone=Fly` harvesters can not be able to enter " "refinery buildings manually" msgstr "修复了 `MovementZone=Fly` 的矿车无法手动进入矿场的问题" -#: ../../../CREDITS.md:558 +#: ../../../CREDITS.md:568 msgid "" "Fix an issue that jumpjet harvester cannot automatically go mining when " "leaving the weapons factory" msgstr "修复了 `Locomotor=Jumpjet` 的矿车出厂后不会自动去采矿的问题" -#: ../../../CREDITS.md:559 +#: ../../../CREDITS.md:569 msgid "" "Fix an issue that jumpjet harvester will overlap when manually entering " "refinery buildings and cause game crashes" msgstr "修复了 `Locomotor=Jumpjet` 的矿车会因为手动进入矿场而交叠并导致游戏崩溃的问题" -#: ../../../CREDITS.md:560 +#: ../../../CREDITS.md:570 msgid "" "Fix an issue that `Spawned` aircraft will fly towards the edge of the map" " when its `Spawner` is under EMP" msgstr "修了拥有 `Spawned` 的战机会在子机发射器单位处于 EMP 状态时飞向地图边界的问题" -#: ../../../CREDITS.md:561 ../../../CREDITS.md:636 +#: ../../../CREDITS.md:571 ../../../CREDITS.md:646 msgid "Burst without delay" msgstr "无间隔连发" -#: ../../../CREDITS.md:562 +#: ../../../CREDITS.md:572 msgid "" "Fix an issue that if the garrison unload occupants when there is no open " "space around it would result in the disappearance of the occupants" msgstr "修复了周围没有空地时释放驻军会导致它们消失的问题" -#: ../../../CREDITS.md:563 +#: ../../../CREDITS.md:573 msgid "" "Fix an issue where Ares' `Convert.Deploy` triggers repeatedly when the " "unit is turning or moving" msgstr "修复了 Ares 的 `Convert.Deploy` 会在单位转向或移动中反复触发的问题" -#: ../../../CREDITS.md:564 +#: ../../../CREDITS.md:574 msgid "Reverse engineer warhead" msgstr "逆向工程弹头" -#: ../../../CREDITS.md:565 +#: ../../../CREDITS.md:575 msgid "AI base construction modification" msgstr "AI 基地建设机制更改" -#: ../../../CREDITS.md:566 +#: ../../../CREDITS.md:576 msgid "Restore turret recoil effect" msgstr "复原炮塔制退" -#: ../../../CREDITS.md:567 +#: ../../../CREDITS.md:577 msgid "" "Fix an issue that `FireAngle` was not taken into account when drawing " "barrel in `TurretShadow`" msgstr "修复了使用 `TurretShadow` 绘制炮管影子时未考虑 `FireAngle` 的问题" -#: ../../../CREDITS.md:568 +#: ../../../CREDITS.md:578 msgid "" "Fix an issue that barrel anim data will be incorrectly overwritten by " "turret anim data if the techno's section exists in the map file" msgstr "修复了地图文件中内置了某单位时其炮管动画数据会被炮塔动画数据错误覆盖的问题" -#: ../../../CREDITS.md:569 +#: ../../../CREDITS.md:579 msgid "Jumpjet Climbing Logic Enhancement" msgstr "Jumpjet 爬升逻辑增强" -#: ../../../CREDITS.md:570 +#: ../../../CREDITS.md:580 msgid "" "Fix for pathfinding crashes on big maps due to too small pathfinding node" " buffer" msgstr "修复了在较大的地图中由于寻路节点缓冲区过小而引发的寻路崩溃问题" -#: ../../../CREDITS.md:571 +#: ../../../CREDITS.md:581 msgid "" "Fix an issue that units' `LaserTrails` will always lags behind by one " "frame" msgstr "修复了单位的 `LaserTrails` 总会滞后一帧的问题" -#: ../../../CREDITS.md:572 +#: ../../../CREDITS.md:582 msgid "" "Fix an issue that the currently hovered planning node not update up-to-" "date, such as using hotkeys to select technos" msgstr "修复了所谓的高等路径学" -#: ../../../CREDITS.md:573 +#: ../../../CREDITS.md:583 msgid "" "Allow the aircraft to enter area guard mission and not crash immediately " "without any airport" msgstr "允许战机执行区域警戒任务且在无机场的情况下不会立即坠毁" -#: ../../../CREDITS.md:574 +#: ../../../CREDITS.md:584 msgid "Allow merging AOE damage to buildings into one" msgstr "允许将建筑所受的 AOE 伤害合而为一" -#: ../../../CREDITS.md:575 +#: ../../../CREDITS.md:585 msgid "**Ollerus**:" msgstr "**Ollerus**:" -#: ../../../CREDITS.md:576 +#: ../../../CREDITS.md:586 msgid "Build limit group enhancement" msgstr "建造限制组增强" -#: ../../../CREDITS.md:579 +#: ../../../CREDITS.md:589 msgid "Type select for buildings (doc)" msgstr "建筑的类型选择(文档)" -#: ../../../CREDITS.md:581 +#: ../../../CREDITS.md:591 msgid "Shield armor inheritance customization" msgstr "自定义护盾继承单位护甲" -#: ../../../CREDITS.md:583 +#: ../../../CREDITS.md:593 msgid "Fire weapon when Warhead kills something" msgstr "击杀武器" -#: ../../../CREDITS.md:584 +#: ../../../CREDITS.md:594 msgid "Promotion animation deglobalization" msgstr "自定义升级动画" -#: ../../../CREDITS.md:585 +#: ../../../CREDITS.md:595 msgid "Forcing specific weapon by range and target type" msgstr "根据射程和目标类型选取武器" -#: ../../../CREDITS.md:586 +#: ../../../CREDITS.md:596 msgid "Passenger-based insignias" msgstr "根据乘客切换军衔" -#: ../../../CREDITS.md:587 +#: ../../../CREDITS.md:597 msgid "Use `InsigniaType` to set the properties of insignia in a batch" msgstr "使用 `InsigniaType` 批量设置军衔属性" -#: ../../../CREDITS.md:588 +#: ../../../CREDITS.md:598 msgid "" "Allow player's self-healing effects to be benefited by allied or " "`PlayerControl=true` houses" msgstr "允许玩家的自愈效果可以从友军或 `PlayerControl=true` 的所属方受益" -#: ../../../CREDITS.md:590 +#: ../../../CREDITS.md:600 msgid "Allow faking digital display for `InfoType=Health` at disguise" msgstr "允许 `InfoType=Health` 伪造出伪装目标的数值" -#: ../../../CREDITS.md:591 +#: ../../../CREDITS.md:601 msgid "Display banner improvement and doc" msgstr "横幅的改进与文档" -#: ../../../CREDITS.md:592 +#: ../../../CREDITS.md:602 msgid "Damage multiplier for health percentage" msgstr "对不同剩余血量的伤害修正比" -#: ../../../CREDITS.md:593 +#: ../../../CREDITS.md:603 msgid "Linked superweapons tweak" msgstr "对联动超武的调整" -#: ../../../CREDITS.md:594 +#: ../../../CREDITS.md:604 msgid "Randomized anims for several behaviors" msgstr "几种行为的随机动画" -#: ../../../CREDITS.md:595 +#: ../../../CREDITS.md:605 msgid "Fix customized `WarpAway` anim's wrong definition" msgstr "修复了自定义 `WarpAway` 动画的错误定义" -#: ../../../CREDITS.md:596 +#: ../../../CREDITS.md:606 msgid "Shield respawn animation and weapon" msgstr "护盾重生动画与武器" -#: ../../../CREDITS.md:597 +#: ../../../CREDITS.md:607 msgid "Toggle off laser trail and shake effects" msgstr "关闭激光尾焰与屏幕抖动效果" -#: ../../../CREDITS.md:598 +#: ../../../CREDITS.md:608 msgid "OpenTopped range bonus and damage multiplier customization for passengers" msgstr "在乘客上自定义 OpenTopped 射程加成和杀伤倍率" -#: ../../../CREDITS.md:599 +#: ../../../CREDITS.md:609 msgid "AutoDeath upon ownership change" msgstr "所属更改引发自毁" -#: ../../../CREDITS.md:600 +#: ../../../CREDITS.md:610 msgid "**NaotoYuuki** - Vertical & meteor trajectory projectile prototypes" msgstr "**NaotoYuuki** - 垂直和流星弹道雏形" -#: ../../../CREDITS.md:601 +#: ../../../CREDITS.md:611 msgid "**handama** - AI script action to `16005 Jump Back To Previous Script`" msgstr "**handama** - AI 动作脚本 `16005 跳回上一个脚本`" -#: ../../../CREDITS.md:602 +#: ../../../CREDITS.md:612 msgid "**TaranDahl (航味麻酱)**:" msgstr "**TaranDahl (航味麻酱)**:" -#: ../../../CREDITS.md:603 +#: ../../../CREDITS.md:613 msgid "" "Skirmish AI \"sell all buildings and set all technos to hunt\" behavior " "dehardcode" msgstr "遭遇战 AI 卖家冲锋行为的去硬编码化" -#: ../../../CREDITS.md:604 +#: ../../../CREDITS.md:614 msgid "Skirmish AI \"gather when MCV deploy\" behavior dehardcode" msgstr "遭遇战 AI 基地部署时集结行为的去硬编码化" -#: ../../../CREDITS.md:605 +#: ../../../CREDITS.md:615 msgid "Global value of `RepairBaseNodes`" msgstr "`RepairBaseNodes` 的全局值" -#: ../../../CREDITS.md:606 +#: ../../../CREDITS.md:616 msgid "Skip anim delay for burst fire" msgstr "为有 `Burst` 的武器跳过建筑开火前摇动画" -#: ../../../CREDITS.md:607 +#: ../../../CREDITS.md:617 msgid "Type select for buildings (code)" msgstr "建筑的类型选择(代码)" -#: ../../../CREDITS.md:608 +#: ../../../CREDITS.md:618 msgid "Raise alert when technos are taking damage" msgstr "当科技类型受到伤害时发出警报" -#: ../../../CREDITS.md:609 +#: ../../../CREDITS.md:619 msgid "Toggle waypoint for building" msgstr "建筑路径点开关" -#: ../../../CREDITS.md:610 +#: ../../../CREDITS.md:620 msgid "Parasite returning bug fix" msgstr "寄生返回 bug 修复" -#: ../../../CREDITS.md:611 +#: ../../../CREDITS.md:621 msgid "Bunkerable checks dehardcode" msgstr "坦克碉堡准入检查的去硬编码化" -#: ../../../CREDITS.md:612 +#: ../../../CREDITS.md:622 msgid "" "Prevent the units with locomotors that cause problems from entering the " "tank bunker" msgstr "防止使用了可能导致问题的运动模式的单位进入坦克碉堡" -#: ../../../CREDITS.md:614 +#: ../../../CREDITS.md:624 msgid "" "Units are now unable to kick out from a factory that is in construction " "process" msgstr "单位现在不会再从正在建造的工厂中驶出" -#: ../../../CREDITS.md:615 +#: ../../../CREDITS.md:625 msgid "" "Fix issues caused by incorrect reference removal (f.ex. If the unit " "cloaks/enters transport, it cannot gain experience from previously " "launched spawners/C4/projectiles)" msgstr "修复了错误脱引用导致的问题(例如,如果单位隐形/进入运输工具则无法自此前发射的子机/抛射体以及安置的 C4 炸弹获得经验)" -#: ../../../CREDITS.md:616 +#: ../../../CREDITS.md:626 msgid "Recycle spawner in long-range" msgstr "远距离回收子机" -#: ../../../CREDITS.md:617 +#: ../../../CREDITS.md:627 msgid "Play an anim when recycling a spawner" msgstr "回收子机时播放动画" -#: ../../../CREDITS.md:618 +#: ../../../CREDITS.md:628 msgid "Recycle the spawner on other FLH" msgstr "使用其他 FLH 回收子机" -#: ../../../CREDITS.md:619 +#: ../../../CREDITS.md:629 msgid "" "Fix the bug that spawned can not return to buildings with foundation " "bigger than 1x1" msgstr "修复了占地面积超过 1x1 的建筑无法回收子机的 Bug" -#: ../../../CREDITS.md:620 +#: ../../../CREDITS.md:630 msgid "`BombParachute` deglobalization" msgstr "抛射体自定义 `BombParachute`" -#: ../../../CREDITS.md:621 +#: ../../../CREDITS.md:631 msgid "Sinkablity and sinking speed customization" msgstr "自定义能否沉没以及沉没速度" -#: ../../../CREDITS.md:622 +#: ../../../CREDITS.md:632 msgid "" "Fix an issue where `FireAngle` would not work properly under certain " "circumstances" msgstr "修复了 `FireAngle` 在某些情况下未能正常工作的问题" -#: ../../../CREDITS.md:624 +#: ../../../CREDITS.md:634 msgid "" "Fix the bug that healing weapons could not automatically acquire aerial " "targets" msgstr "修复了治疗武器无法自动获取到空中目标的 Bug" -#: ../../../CREDITS.md:625 +#: ../../../CREDITS.md:635 msgid "" "Fix an issue where AI would select unreachable buildings and get stuck " "when looking for buildings like tank bunkers, bio reactors, etc" msgstr "修复了 AI 会找实际无法抵达的坦克碉堡、生化反应炉等建筑作为目标而导致卡住的问题" -#: ../../../CREDITS.md:626 +#: ../../../CREDITS.md:636 msgid "Prone speed customization" msgstr "自定义匍匐速度" -#: ../../../CREDITS.md:627 +#: ../../../CREDITS.md:637 msgid "RadarInvisible for non-enemy house" msgstr "不仅限于敌方的 `RadarInvisible`" -#: ../../../CREDITS.md:628 +#: ../../../CREDITS.md:638 msgid "Allow miners do area guard" msgstr "允许矿车区域警戒" -#: ../../../CREDITS.md:629 +#: ../../../CREDITS.md:639 msgid "Make harvesters do addtional scan after unload" msgstr "使矿车卸载后重新扫描较近的矿区" -#: ../../../CREDITS.md:630 +#: ../../../CREDITS.md:640 msgid "Customize the scatter caused by aircraft attack mission" msgstr "自定义战机攻击任务引发分散" -#: ../../../CREDITS.md:631 +#: ../../../CREDITS.md:641 msgid "Customize whether `Crater=yes` animation would destroy tiberium" msgstr "自定义 `Crater=yes` 的动画能否摧毁矿石" -#: ../../../CREDITS.md:632 +#: ../../../CREDITS.md:642 msgid "Targeting limitation for berzerk technos" msgstr "狂暴单位索敌限制" -#: ../../../CREDITS.md:633 +#: ../../../CREDITS.md:643 msgid "Allows refineries to use multiple ActiveAnim simultaneously" msgstr "允许矿场同时播放多个 `ActiveAnim` 动画" -#: ../../../CREDITS.md:634 +#: ../../../CREDITS.md:644 msgid "Several attackmove related enhancement" msgstr "几个移动攻击相关的增强" -#: ../../../CREDITS.md:635 +#: ../../../CREDITS.md:645 msgid "" "Fix the bug that `OpenToppedWarpDistance` is calculated incorrectly for " "building target" msgstr "修复了建筑类目标 `OpenToppedWarpDistance` 计算错误的 Bug" -#: ../../../CREDITS.md:637 +#: ../../../CREDITS.md:647 msgid "Target scanning delay customization (code)" msgstr "自定义索敌间隔(代码)" -#: ../../../CREDITS.md:638 +#: ../../../CREDITS.md:648 msgid "Skip target scanning function calling for unarmed technos (code)" msgstr "禁用了无武器单位的索敌(代码)" -#: ../../../CREDITS.md:639 +#: ../../../CREDITS.md:649 msgid "Force techno targeting in distributed frames to improve performance" msgstr "强制单位索敌行为分散到不同帧以提升性能" -#: ../../../CREDITS.md:640 +#: ../../../CREDITS.md:650 msgid "" "Use `SkipCrushSlowdown=true` to avoid the bug related to " "`Accelerates=true` and `MovementZone=CrushAll`" @@ -2647,191 +2705,217 @@ msgstr "" "使用 `SkipCrushSlowdown=true` 来避免 `Accelerates=true` 与 " "`MovementZone=CrushAll` 相关的 Bug" -#: ../../../CREDITS.md:641 +#: ../../../CREDITS.md:651 msgid "Auto deploy for GI-like infantry" msgstr "GI 式步兵自动部署" -#: ../../../CREDITS.md:642 +#: ../../../CREDITS.md:652 msgid "" "Fix an issue that Ares' Type Conversion not resetting barrel's direction " "by `FireAngle`" msgstr "修复了 Ares 的单位转换不会通过 `FireAngle` 重设炮管方向的问题" -#: ../../../CREDITS.md:643 +#: ../../../CREDITS.md:653 msgid "Fix an issue that jumpjets in air can not correctly spawn missiles" msgstr "修复了 Jumpjet 单位在空中时无法生成导弹子机的问题" -#: ../../../CREDITS.md:644 +#: ../../../CREDITS.md:654 msgid "Customize the chained damage of the wall" msgstr "自定义墙的连锁伤害" -#: ../../../CREDITS.md:645 +#: ../../../CREDITS.md:655 msgid "" "Fix an issue that jumpjet vehicles can not stop correctly when assigned a" " target in range" msgstr "修复了 Jumpjet 载具在指定射程内目标时无法正确停止的问题" -#: ../../../CREDITS.md:646 +#: ../../../CREDITS.md:656 msgid "" "Fix an issue that jumpjet infantry stop incorrectly when assigned a " "target out of range" msgstr "修复了 Jumpjet 步兵在指定超出射程的目标时停止不正确的问题" -#: ../../../CREDITS.md:647 +#: ../../../CREDITS.md:657 msgid "" "Fix an issue that jumpjet infantry' shadow is always drawn even if they " "are cloaked" msgstr "修复了 Jumpjet 步兵隐形时依然绘制影子的问题" -#: ../../../CREDITS.md:648 +#: ../../../CREDITS.md:658 msgid "" "Fix an issue that technos head to building's dock even they are not going" " to dock" msgstr "修复了单位不执行停靠命令的情况下也会前往停靠位置的问题" -#: ../../../CREDITS.md:649 +#: ../../../CREDITS.md:659 msgid "" "Fix an issue that the jumpjet vehicles cannot stop correctly after going " "berserk" msgstr "修复了被混乱的 Jumpjet 载具无法正确停止的问题" -#: ../../../CREDITS.md:650 +#: ../../../CREDITS.md:660 msgid "Attack and damage technos underground" msgstr "攻击和杀伤地下单位" -#: ../../../CREDITS.md:651 +#: ../../../CREDITS.md:661 msgid "" "Fix an issue that infantry walking through a cell containing a tree would" " cause it to be impassable to other houses" msgstr "修复了步兵占据包含树木的单元格会导致该单元格对其他所属方不可通行的问题" -#: ../../../CREDITS.md:652 +#: ../../../CREDITS.md:662 msgid "" "Fix an issue that the AI would enter a combat state when its building " "receiving damage from friendly units or damage not greater than 0" msgstr "修复了 AI 在建筑受到的伤害即便来自友军单位或不大于 0 点也依然进入防御状态的问题" -#: ../../../CREDITS.md:653 +#: ../../../CREDITS.md:663 msgid "" "Fix an issue that the techno with weapon with `AA=yes` and `AG=no` would " "not auto targeting units that are falling, such as paratroopers" msgstr "修复了所用武器 `AA=yes` 且 `AG=no` 的单位不会主动攻击坠落中的单位(例如伞兵)的问题" -#: ../../../CREDITS.md:654 +#: ../../../CREDITS.md:664 msgid "Dehardcode the `ZAdjust` of warhead anim" msgstr "弹头动画 `ZAdjust` 去硬编码" -#: ../../../CREDITS.md:655 +#: ../../../CREDITS.md:665 msgid "" "Fix an issue where some effects pointing to a unit were not properly " "cleared when the unit changed its owner" msgstr "修复了指向某个某个单位的部分效果在该单位变更所属时未能正确清除的问题" -#: ../../../CREDITS.md:656 +#: ../../../CREDITS.md:666 msgid "Fix an issue where the vanilla script ignores jumpjets" msgstr "修复了原版脚本会忽略 Jumpjet 单位的问题" -#: ../../../CREDITS.md:657 +#: ../../../CREDITS.md:667 msgid "CellSpread in cylinder shape" -msgstr "" +msgstr "圆柱形弹头范围" -#: ../../../CREDITS.md:658 +#: ../../../CREDITS.md:668 msgid "CellSpread damage check if victim is in air or on floor" -msgstr "" +msgstr "弹头范围对目标的空地判定" -#: ../../../CREDITS.md:659 +#: ../../../CREDITS.md:669 msgid "" "Fix an issue where non-repairer units needed sensors to attack cloaked " "friendly units" -msgstr "" -"修复了非维修单位需要能够反隐才能攻击友军隐形单位的问题" +msgstr "修复了非维修单位需要能够反隐才能攻击友军隐形单位的问题" -#: ../../../CREDITS.md:660 +#: ../../../CREDITS.md:670 msgid "" "Allow customizing whether to synchronously change the owner of the " "RadioLink-linked units when the owner of a building changes" +msgstr "允许自定义单位是否会在其所连接建筑发生所属变更时同步变更所属" + +#: ../../../CREDITS.md:671 +msgid "Toggle per-target warhead effects apply timing" +msgstr "设置按目标生效的弹头效果应用时机" + +#: ../../../CREDITS.md:672 +msgid "Extra range for chasing and pre-firing" +msgstr "追击和预开火时的额外射程" + +#: ../../../CREDITS.md:673 +msgid "" +"Fix an issue that rockets do not consider the destination altitude during" +" climbing" +msgstr "修复了导弹在爬升过程中不考虑目标高度的问题" + +#: ../../../CREDITS.md:674 +msgid "" +"Fix an issue that the AI would set anger towards friendly houses, causing" +" it to act stupidly" msgstr "" -"允许自定义单位是否会在其所连接建筑发生所属变更时同步变更所属" +"修复了 AI 会对友军所属方产生愤怒而导致行为异常的问题" -#: ../../../CREDITS.md:661 +#: ../../../CREDITS.md:675 +msgid "" +"Fix an issue that the AI would look for the first house in the array as " +"an enemy instead of the nearest one when there were no enemies" +msgstr "" +"修复了没有敌人的 AI 寻找敌人时会使用数组中第一个所属方而非空间上最近者的问题" + +#: ../../../CREDITS.md:676 msgid "**solar-III (凤九歌)**" msgstr "**solar-III(凤九歌)**" -#: ../../../CREDITS.md:662 +#: ../../../CREDITS.md:677 msgid "Target scanning delay customization (documentation)" msgstr "自定义索敌间隔(文档)" -#: ../../../CREDITS.md:663 +#: ../../../CREDITS.md:678 msgid "Skip target scanning function calling for unarmed technos (documentation)" msgstr "禁用了无武器单位的索敌(文档)" -#: ../../../CREDITS.md:664 +#: ../../../CREDITS.md:679 msgid "**Flactine** - add target filtering options to attacheffect system" msgstr "**Flactine** - 为 AE 系统添加目标过滤选项" -#: ../../../CREDITS.md:665 +#: ../../../CREDITS.md:680 msgid "**tyuah8**:" msgstr "**tyuah8**:" -#: ../../../CREDITS.md:666 +#: ../../../CREDITS.md:681 msgid "" "Drive/Jumpjet/Ship/Teleport locomotor did not power on when it is un-" "piggybacked bugfix" msgstr "修复了 Drive/Jumpjet/Ship/Teleport 运动方式在退出 piggybacked 接口时无法激活的问题" -#: ../../../CREDITS.md:667 +#: ../../../CREDITS.md:682 msgid "Destroyed unit leaves sensors bugfix" msgstr "单位被摧毁后遗留反隐区域的 bug 修复" -#: ../../../CREDITS.md:668 +#: ../../../CREDITS.md:683 msgid "" "**Aephiex** - initial fix for Ares academy not working on the initial " "payloads of vehicles built from a war factory" msgstr "**Aephiex** - 对于 Ares 训练所逻辑在产自重工的载具其初始载员上不生效问题初始的修复方式" -#: ../../../CREDITS.md:669 +#: ../../../CREDITS.md:684 msgid "" "**Multfinite** - Allow to toggle main exception handler via command line " "argument `-ExceptionHandler=boolean`" msgstr "**Multfinite** - 允许通过命令行参数 `-ExceptionHandler=boolean` 开关主循环异常处理程序" -#: ../../../CREDITS.md:670 +#: ../../../CREDITS.md:685 msgid "" "**hejiajun107, Xkein** - Fix a jumpjet crash related to voxel shadow " "drawing" msgstr "**hejiajun107, Xkein** - 修复与 Voxel 阴影绘制相关的 Jumpjet 崩溃问题" -#: ../../../CREDITS.md:671 +#: ../../../CREDITS.md:686 msgid "**Ares developers**:" msgstr "**Ares developers**:" -#: ../../../CREDITS.md:672 +#: ../../../CREDITS.md:687 msgid "" "YRpp and Syringe which are used, save/load, project foundation and " "generally useful code from Ares" msgstr "Ares 所使用的 YRpp 和 Syringe、存读档、项目基础和一些通用代码" -#: ../../../CREDITS.md:673 +#: ../../../CREDITS.md:688 msgid "unfinished RadTypes code" msgstr "半成品自定义辐射类型代码" -#: ../../../CREDITS.md:674 +#: ../../../CREDITS.md:689 msgid "prototype deployer fixes" msgstr "部署修复雏形" -#: ../../../CREDITS.md:675 +#: ../../../CREDITS.md:690 msgid "Superweapon launch site & availability code" msgstr "超级武器发射地点与超武可用性代码" -#: ../../../CREDITS.md:676 +#: ../../../CREDITS.md:691 msgid "AI vehicle production update code" msgstr "AI 载具生产更新代码" -#: ../../../CREDITS.md:677 +#: ../../../CREDITS.md:692 msgid "parts of TechnoType conversion placeholder code" msgstr "单位转换占位符代码的一部分" -#: ../../../CREDITS.md:678 +#: ../../../CREDITS.md:693 msgid "" "**ststl, FlyStar, NaotoYuuki, Saigyouji, JunJacobYoung, CrimRecya** - " "Digital Display" @@ -2839,23 +2923,23 @@ msgstr "" "**ststl, FlyStar, NaotoYuuki, Saigyouji, JunJacobYoung, CrimRecya** - " "数字化显示" -#: ../../../CREDITS.md:679 +#: ../../../CREDITS.md:694 msgid "**SukaHati (Erzoid)** - Minimum interceptor guard range" msgstr "**SukaHati (Erzoid)** - 抛射体最小拦截距离" -#: ../../../CREDITS.md:680 +#: ../../../CREDITS.md:695 msgid "**E1 Elite** - TileSet 255 and above bridge repair fix" msgstr "**E1 Elite** - TileSet 达到 255 以上后的桥梁维修修复" -#: ../../../CREDITS.md:681 +#: ../../../CREDITS.md:696 msgid "**AutoGavy** - interceptor logic, Warhead critical hit logic" msgstr "**AutoGavy** - 抛射体拦截逻辑、弹头暴击逻辑" -#: ../../../CREDITS.md:682 +#: ../../../CREDITS.md:697 msgid "**Chasheen (Chasheenburg)** - CN docs help for Build#24" msgstr "**Chasheen (Chasheenburg)** - Build#24 的中文文档协助" -#: ../../../CREDITS.md:683 +#: ../../../CREDITS.md:698 msgid "" "**Noble Fish** - some minor improvements and fixes, established Community" " Chinese docs, took over and completely rewrite the Official Chinese docs" @@ -2864,36 +2948,40 @@ msgstr "" "**Noble Fish** - 一些小改进与修复、文档维护者(官方英文文档维护、创建了社区中文文档、在 Build#46 " "接管并完全重写了官方中文文档)" -#: ../../../CREDITS.md:684 +#: ../../../CREDITS.md:699 msgid "" "**tomsons26** - all-around help, assistance and guidance in reverse-" "engineering, YR binary mappings" msgstr "**tomsons26** - 全方位协助,逆向工程方面的协助与指导、YR 二进制映射" -#: ../../../CREDITS.md:685 +#: ../../../CREDITS.md:700 msgid "" "**CCHyper** - all-around help, current project logo, assistance and " "guidance in reverse-engineering, YR binary mappings, custom locomotors " "example implementation" msgstr "**CCHyper** - 全方位协助,当前项目 Logo 设计、逆向工程方面的协助与指导、YR 二进制映射、自定义运动模式示例实现" -#: ../../../CREDITS.md:686 +#: ../../../CREDITS.md:701 msgid "**AlexB** - Original FlyingStrings implementation" msgstr "**AlexB** - 原始 FlyingStrings 实现" -#: ../../../CREDITS.md:687 +#: ../../../CREDITS.md:702 msgid "**Joshy** - Original FlyingStrings implementation" msgstr "**Joshy** - 原始 FlyingStrings 实现" -#: ../../../CREDITS.md:688 +#: ../../../CREDITS.md:703 msgid "**CnCVK** - Original custom locomotors experiment" msgstr "**CnCVK** - 原始的自定义运动模式尝试" -#: ../../../CREDITS.md:689 +#: ../../../CREDITS.md:704 msgid "**ZΞPHYɌUS** - win/lose themes code" msgstr "**ZΞPHYɌUS** - 胜利/失败主题音乐代码" -#: ../../../CREDITS.md:690 +#: ../../../CREDITS.md:705 +msgid "**Fridge** - Cursor Fix code" +msgstr "**Fridge** - 光标修复代码" + +#: ../../../CREDITS.md:706 msgid "" "**Neargye (Daniil Goncharov)** - [nameof " "library](https://github.com/Neargye/nameof) (MIT)" @@ -2901,33 +2989,33 @@ msgstr "" "**Neargye (Daniil Goncharov)** - [nameof " "库](https://github.com/Neargye/nameof)(MIT)" -#: ../../../CREDITS.md:691 +#: ../../../CREDITS.md:707 msgid "**ayylmao** - help with docs, extensive and thorough testing" msgstr "**ayylmao** - 文档协助,广泛且深入的测试" -#: ../../../CREDITS.md:692 +#: ../../../CREDITS.md:708 msgid "**SMxReaver** - help with docs, extensive and thorough testing" msgstr "**SMxReaver** - 文档协助,广泛且深入的测试" -#: ../../../CREDITS.md:693 +#: ../../../CREDITS.md:709 msgid "**4SG** - help with docs" msgstr "**4SG** - 文档协助" -#: ../../../CREDITS.md:694 +#: ../../../CREDITS.md:710 msgid "" "**thomassneddon** - general assistance, knowledge about voxel lighting " "model" msgstr "**thomassneddon** - 一般性协助、Voxel 照明模型知识" -#: ../../../CREDITS.md:695 +#: ../../../CREDITS.md:711 msgid "**Xkein** - general assistance, YRpp edits" msgstr "**Xkein** - 一般性协助、YRpp 编辑" -#: ../../../CREDITS.md:696 +#: ../../../CREDITS.md:712 msgid "**mevitar** - honorary shield tester *triple* award" msgstr "**mevitar** - 荣誉护盾测试员 **三重** 奖章" -#: ../../../CREDITS.md:697 +#: ../../../CREDITS.md:713 msgid "" "**Mentalmeisters Team (Speeder, Ollerus, mevitar, Reedom, Takitoru, " "Terumasa, Zhelin)** - extensive and thorough testing" @@ -2935,7 +3023,7 @@ msgstr "" "**Mentalmeisters Team (Speeder, Ollerus, mevitar, Reedom, Takitoru, " "Terumasa, Zhelin)** - 广泛且深入的测试" -#: ../../../CREDITS.md:698 +#: ../../../CREDITS.md:714 msgid "" "**Phobos CN Tester Group (Mantis, Swim Wing, Examon, AKB, Pusheen, ZQ, " "Claptrap, BunkerGeneral, Big J, Skywalker, ChickEmperor, Shifty, Mikain, " @@ -2949,19 +3037,19 @@ msgstr "" "Yumeri_Rei, Nacho, Zhuzi, Ika_Aru, EUSiegfried, HanpiBaozi, Nxusbot, " "TientsinWind)** - 广泛且深入的测试" -#: ../../../CREDITS.md:699 +#: ../../../CREDITS.md:715 msgid "**Damfoos** - extensive and thorough testing" msgstr "**Damfoos** - 广泛且深入的测试" -#: ../../../CREDITS.md:700 +#: ../../../CREDITS.md:716 msgid "**Dmitry Volkov** - extensive and thorough testing" msgstr "**Dmitry Volkov** - 广泛且深入的测试" -#: ../../../CREDITS.md:701 +#: ../../../CREDITS.md:717 msgid "**Rise of the East community** - extensive playtesting of in-dev features" msgstr "**东方崛起社区** - 对开发功能的广泛测试" -#: ../../../CREDITS.md:702 +#: ../../../CREDITS.md:718 msgid "" "**11EJDE11** - Prevent mpdebug number from being drawn when visibility " "toggled off" diff --git a/docs/locale/zh_CN/LC_MESSAGES/Fixed-or-Improved-Logics.po b/docs/locale/zh_CN/LC_MESSAGES/Fixed-or-Improved-Logics.po index 6d118cebf5..69a7454b3c 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/Fixed-or-Improved-Logics.po +++ b/docs/locale/zh_CN/LC_MESSAGES/Fixed-or-Improved-Logics.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Phobos \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-26 20:55+0800\n" +"POT-Creation-Date: 2026-01-18 20:10+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -173,17 +173,17 @@ msgstr "" #: ../../Fixed-or-Improved-Logics.md:30 ../../Fixed-or-Improved-Logics.md:40 #: ../../Fixed-or-Improved-Logics.md:50 ../../Fixed-or-Improved-Logics.md:79 -#: ../../Fixed-or-Improved-Logics.md:634 ../../Fixed-or-Improved-Logics.md:1003 -#: ../../Fixed-or-Improved-Logics.md:1272 -#: ../../Fixed-or-Improved-Logics.md:1385 -#: ../../Fixed-or-Improved-Logics.md:1410 -#: ../../Fixed-or-Improved-Logics.md:1514 -#: ../../Fixed-or-Improved-Logics.md:1813 -#: ../../Fixed-or-Improved-Logics.md:1875 -#: ../../Fixed-or-Improved-Logics.md:2102 -#: ../../Fixed-or-Improved-Logics.md:2451 -#: ../../Fixed-or-Improved-Logics.md:2496 -#: ../../Fixed-or-Improved-Logics.md:2521 +#: ../../Fixed-or-Improved-Logics.md:641 ../../Fixed-or-Improved-Logics.md:1010 +#: ../../Fixed-or-Improved-Logics.md:1279 +#: ../../Fixed-or-Improved-Logics.md:1392 +#: ../../Fixed-or-Improved-Logics.md:1417 +#: ../../Fixed-or-Improved-Logics.md:1521 +#: ../../Fixed-or-Improved-Logics.md:1820 +#: ../../Fixed-or-Improved-Logics.md:1893 +#: ../../Fixed-or-Improved-Logics.md:2120 +#: ../../Fixed-or-Improved-Logics.md:2469 +#: ../../Fixed-or-Improved-Logics.md:2514 +#: ../../Fixed-or-Improved-Logics.md:2539 msgid "image" msgstr "图像" @@ -1711,27 +1711,44 @@ msgstr "修复了由触发结果创建的单位即便拥有 `Trainable=false` msgid "" "Fixed the bug that ai will try to product aircraft even the airport has " "no free dock for it." -msgstr "" -"修复了即便在没有可用的空余机位时 AI 也仍会尝试生产战机的 Bug。" +msgstr "修复了即便在没有可用的空余机位时 AI 也仍会尝试生产战机的 Bug。" #: ../../Fixed-or-Improved-Logics.md:285 msgid "" "Fixed the issue where non-repairer units needed sensors to attack cloaked" " friendly units." -msgstr "" -"修复了非维修单位需要能够反隐才能攻击友军隐形单位的问题。" +msgstr "修复了非维修单位需要能够反隐才能攻击友军隐形单位的问题。" + +#: ../../Fixed-or-Improved-Logics.md:286 +msgid "" +"Fixed the issue that rockets do not consider the destination altitude " +"during climbing." +msgstr "修复了导弹在爬升过程中不考虑目标高度的问题。" #: ../../Fixed-or-Improved-Logics.md:287 +msgid "" +"Fixed the bug that if object has been removed from LogicClass in " +"Update(), next object will be skip." +msgstr "修复了当一个物体更新时被移除会导致全局容器中下一个物体被跳过的 Bug。" + +#: ../../Fixed-or-Improved-Logics.md:288 +msgid "" +"Fixed the issue that weapon selection don't check if secondary's warhead " +"has `IsLocomotor=yes`." +msgstr "" +"修复了武器选取规则未检查副武弹头是否拥有 `IsLocomotor=yes` 的问题。" + +#: ../../Fixed-or-Improved-Logics.md:290 msgid "Fixes / interactions with other extensions" msgstr "修复或与其他扩展的交互" -#: ../../Fixed-or-Improved-Logics.md:289 +#: ../../Fixed-or-Improved-Logics.md:292 msgid "" "Weapons fired by EMPulse superweapons *(Ares feature)* now fully respect " "the firing building's FLH." msgstr "现在由 EMPulse 超级武器(*Ares 功能*)发射的武器将完全遵照发射建筑的 FLH 设置。" -#: ../../Fixed-or-Improved-Logics.md:290 +#: ../../Fixed-or-Improved-Logics.md:293 msgid "" "Weapons fired by EMPulse superweapons *(Ares feature)* without " "`EMPulse.TargetSelf=true` can now create radiation." @@ -1739,57 +1756,57 @@ msgstr "" "现在由 EMPulse 超级武器(*Ares 功能*)发射的武器在没有 `EMPulse.TargetSelf=true` " "的情况下也可以正常产生辐射。" -#: ../../Fixed-or-Improved-Logics.md:291 +#: ../../Fixed-or-Improved-Logics.md:294 msgid "" "Weapons fired by EMPulse superweapons *(Ares feature)* now respect " "`Floater` and Phobos-added `Gravity` setting." msgstr "现在由 EMPulse 超级武器(*Ares 功能*)发射的武器遵守 `Floater` 与 Phobos 添加的 `Gravity` 设定" -#: ../../Fixed-or-Improved-Logics.md:292 +#: ../../Fixed-or-Improved-Logics.md:295 msgid "" "`IsSimpleDeployer` units with Hover locomotor and `DeployToLand` no " "longer get stuck after deploying or play their move sound indefinitely." msgstr "拥有 Hover 运动模式的 `IsSimpleDeployer` 且 `DeployToLand` 的单位在部署后不再会卡住或无限播放移动音效。" -#: ../../Fixed-or-Improved-Logics.md:293 +#: ../../Fixed-or-Improved-Logics.md:296 msgid "" "`Convert.Deploy` displays 'NoDeploy' cursor if the new type is not " "allowed to move to the cell due to `SpeedType` etc." msgstr "当 `Convert.Deploy` 转换的目标单位由于 `SpeedType` 等原因无法移动到目标单元格时将会显示 `NoDeploy` 光标。" -#: ../../Fixed-or-Improved-Logics.md:294 +#: ../../Fixed-or-Improved-Logics.md:297 msgid "" "All forms of type conversion (including Ares') now correctly update the " "warp-in delay if unit with teleport `Locomotor` was converted while the " "delay was active." msgstr "现在所有单位转换形式(包括 Ares 的)在使用超时空 `Locomotor` 的单位处于僵直状态被转换时可以正确的更新传送延迟。" -#: ../../Fixed-or-Improved-Logics.md:295 +#: ../../Fixed-or-Improved-Logics.md:298 msgid "" "All forms of type conversion (including Ares') now correctly update " "`MoveSound` if a moving unit has their type changed." msgstr "现在所有单位转换形式(包括 Ares 的)在移动单位的类型被转换时可以正确更新 `MoveSound`。" -#: ../../Fixed-or-Improved-Logics.md:296 +#: ../../Fixed-or-Improved-Logics.md:299 msgid "" "All forms of type conversion (including Ares') now correctly update " "`OpenTopped` state of passengers in transport that is converted." msgstr "现在所有单位转换形式(包括 Ares 的)在运输工具被转换时可以正确更新乘客的 `OpenTopped` 状态。" -#: ../../Fixed-or-Improved-Logics.md:297 +#: ../../Fixed-or-Improved-Logics.md:300 msgid "" "Fixed an issue introduced by Ares that caused building `ActiveAnim` to be" " incorrectly restored while `SpecialAnim` was playing and the building " "was sold, erased or destroyed." msgstr "修复了 Ares 引入的一个当 `SpecialAnim` 播放且建筑被出售、删除或摧毁时它的 `ActiveAnim` 会被错误地恢复的问题。" -#: ../../Fixed-or-Improved-Logics.md:298 +#: ../../Fixed-or-Improved-Logics.md:301 msgid "" "Fixed Ares' Abductor weapon leaves permanent placement stats when " "abducting moving vehicles." msgstr "修复了 Ares 的超时空监狱武器在绑架移动载具时会留下永久放置统计(空气墙)的问题。" -#: ../../Fixed-or-Improved-Logics.md:299 +#: ../../Fixed-or-Improved-Logics.md:302 msgid "" "Suppressed Ares' swizzle warning when parsing `Tags` and `TaskForces` " "(typically begin with `[Developer fatal]Pointer 00000000 declared change " @@ -1798,48 +1815,48 @@ msgstr "" "在解析 `Tags` 和 `TaskForces` 时抑制 Ares 的 swizzle 警告(通常以 `[Developer " "fatal]Pointer 00000000 declared change to both` 开头)。" -#: ../../Fixed-or-Improved-Logics.md:300 +#: ../../Fixed-or-Improved-Logics.md:303 msgid "" "Fixed Academy *(Ares feature)* not working on the initial payloads *(Ares" " feature)* of vehicles built from a war factory." msgstr "修复了训练所(*Ares 功能*)在由战车工厂所生产载具的初始载员(*Ares 功能*)上不起作用的问题。" -#: ../../Fixed-or-Improved-Logics.md:301 +#: ../../Fixed-or-Improved-Logics.md:304 msgid "" "Fixed Ares' InitialPayload not being created for vehicles spawned by " "trigger actions." msgstr "修复了 Ares 的初始荷载未为触发行为生成的载具创建的问题。" -#: ../../Fixed-or-Improved-Logics.md:303 +#: ../../Fixed-or-Improved-Logics.md:306 msgid "" "Taking over Ares' AlphaImage respawn logic to make it not recreate in " "every frame for buildings, static techno and techno without turret, in " "order to reduce lags from it." msgstr "接管了 Ares 的 AlphaImage 重绘逻辑,使其用于建筑、静止单位和无炮塔单位时不会每帧重绘,以减少其造成的卡顿。" -#: ../../Fixed-or-Improved-Logics.md:304 +#: ../../Fixed-or-Improved-Logics.md:307 msgid "" "Fixed an issue where a portion of Ares's trigger event 75/77 was " "determined unsuccessfully." msgstr "修复了 Ares 触发条件 75/77 有时判定不成功的问题。" -#: ../../Fixed-or-Improved-Logics.md:305 +#: ../../Fixed-or-Improved-Logics.md:308 msgid "" "Fixed an issue where some units crashed after the deployment " "transformation." msgstr "修复了某些单位部署变形后崩溃的问题。" -#: ../../Fixed-or-Improved-Logics.md:306 +#: ../../Fixed-or-Improved-Logics.md:309 msgid "Fixed the bug that AlphaImage remained after unit entered tunnel." msgstr "修复了 AlphaImage 在单位进入隧道后会遗留在隧道口的 Bug。" -#: ../../Fixed-or-Improved-Logics.md:307 +#: ../../Fixed-or-Improved-Logics.md:310 msgid "" "Fixed an issue where Ares' `Convert.Deploy` triggers repeatedly when the " "unit is turning or moving." msgstr "修复了 Ares 的 `Convert.Deploy` 会在单位转向或移动中反复触发的问题。" -#: ../../Fixed-or-Improved-Logics.md:308 +#: ../../Fixed-or-Improved-Logics.md:311 msgid "" "The game now automatically changes save file name from `SAVEGAME.NET` to " "`SVGM_XXX.NET` (where `XXX` is a number) when saving to prevent " @@ -1849,13 +1866,13 @@ msgstr "" "游戏现在在保存时会自动将存档文件名从 `SAVEGAME.NET` 改为 `SVGM_XXX.NET`(此处 `XXX` 为数字)以防止在 " "Phobos 与 XNA CNCNet Client 共用且保存过于频繁时偶尔覆盖存档文件。" -#: ../../Fixed-or-Improved-Logics.md:309 +#: ../../Fixed-or-Improved-Logics.md:312 msgid "" "1000 save files are supported, from `SVGM_000.NET` to `SVGM_999.NET`. " "When the limit is reached, the game will overwrite the latest save file." msgstr "支持从 `SVGM_000.NET` 到 `SVGM_999.NET` 的 1000 个文件。当达到上线后游戏将会覆盖此前最新的存档文件。" -#: ../../Fixed-or-Improved-Logics.md:310 +#: ../../Fixed-or-Improved-Logics.md:313 msgid "" "The previous `SVGM_XXX.NET` files are cleaned up before first copy if " "it's a new game, otherwise the highest numbered `SVGM_XXX.NET` file is " @@ -1864,19 +1881,19 @@ msgstr "" "如果是新游戏,在首次保存前会清理先前存在的 `SVGM_XXX.NET` 文件,否则游戏会查找编号最大的 `SVGM_XXX.NET` " "文件并在可行的情况下递增编号。" -#: ../../Fixed-or-Improved-Logics.md:311 +#: ../../Fixed-or-Improved-Logics.md:314 msgid "" "The game also automatically copies `spawn.ini` to the save folder as " "`spawnSG.ini` when saving a game." msgstr "游戏还会在保存时自动将 `spawn.ini` 复制到存档文件夹中的 `spawnSG.ini`。" -#: ../../Fixed-or-Improved-Logics.md:314 +#: ../../Fixed-or-Improved-Logics.md:317 msgid "" "The described behavior is a replica of and is compliant with XNA CnCNet " "Client's multiplayer save game support." msgstr "上述行为复刻并兼容了 XNA CNCNet Client 的多人游戏存档功能支持。" -#: ../../Fixed-or-Improved-Logics.md:318 +#: ../../Fixed-or-Improved-Logics.md:321 msgid "" "At the moment this is only useful if you use a version of [YRpp " "Spawner](https://github.com/CnCNet/yrpp-spawner) with multiplayer saves " @@ -1887,159 +1904,186 @@ msgstr "" "spawner) 版本(同时配合 [XNA CnCNet Client](https://github.com/CnCNet/xna-" "cncnet-client)) 时才有用。" -#: ../../Fixed-or-Improved-Logics.md:321 +#: ../../Fixed-or-Improved-Logics.md:324 msgid "" "Fixed an issue that Ares' Type Conversion not resetting barrel's " "direction by `FireAngle`." msgstr "修复了 Ares 的单位转换不会通过 `FireAngle` 重设炮管方向的问题。" -#: ../../Fixed-or-Improved-Logics.md:322 +#: ../../Fixed-or-Improved-Logics.md:325 msgid "" "Fixed the issue where Ares' `Flash.Duration` cannot override the weapon's" " repair flash effect." msgstr "修复了 Ares 的 `[WarheadType] -> Flash.Duration=` 无法覆盖维修武器闪光效果的问题。" -#: ../../Fixed-or-Improved-Logics.md:323 +#: ../../Fixed-or-Improved-Logics.md:326 msgid "" "Fixed the bug that building with `CloningFacility=true` and " "`WeaponsFactory=true` may cloning multiple vehicles and then they get " "stuck." msgstr "修复了拥有 `CloningFacility=true` 和 `WeaponsFactory=true` 的建筑可能克隆多个载具并卡住的 Bug。" -#: ../../Fixed-or-Improved-Logics.md:324 +#: ../../Fixed-or-Improved-Logics.md:327 msgid "" "Fixed a bug introduced by Ares where building types that have " "`UndeploysInto` cannot display `AltCameo` or `AltCameoPCX` even when you " "infiltrate enemy buildings with `Factory=UnitType`." msgstr "修复了 Ares 引入的渗透敌方重工后 `UndeploysInto` 建筑 `AltCameo` 或 `AltCameoPCX` 不显示 Bug。" -#: ../../Fixed-or-Improved-Logics.md:326 +#: ../../Fixed-or-Improved-Logics.md:328 +msgid "" +"Fixed the issue that technos cannot spawn survivors due to non-" +"probabilistic reasons when the tech type was destroyed." +msgstr "修复了单位由于非概率原因无法在被摧毁时生成生还者的问题。" + +#: ../../Fixed-or-Improved-Logics.md:329 +msgid "" +"Fixed the bug that vehicle survivor can spawn on wrong position when " +"transport has been destroyed." +msgstr "修复了载具生还者在运输工具被摧毁时生成在错误位置的 Bug。" + +#: ../../Fixed-or-Improved-Logics.md:330 +msgid "" +"Fixed an issue that the AI would set anger towards friendly houses, " +"causing it to act stupidly." +msgstr "" +"修复了 AI 会对友军所属方产生愤怒而导致行为异常的问题。" + +#: ../../Fixed-or-Improved-Logics.md:331 +msgid "" +"Fixed an issue that the AI would look for the first house in the array as" +" an enemy instead of the nearest one when there were no enemies." +msgstr "" +"修复了没有敌人的 AI 寻找敌人时会使用数组中第一个所属方而非空间上最近者的问题。" + +#: ../../Fixed-or-Improved-Logics.md:333 msgid "Newly added global settings" msgstr "新增的全局设定" -#: ../../Fixed-or-Improved-Logics.md:329 +#: ../../Fixed-or-Improved-Logics.md:336 msgid "" "This category lists all features that are globally effective without " "needing to be defined on any specific object." msgstr "这个类别下列出了所有全局生效而无需在任何特定对象上定义的功能。" -#: ../../Fixed-or-Improved-Logics.md:338 +#: ../../Fixed-or-Improved-Logics.md:345 msgid "Allow deploy controlled MCV" msgstr "允许部署被心控的 MCV" -#: ../../Fixed-or-Improved-Logics.md:340 +#: ../../Fixed-or-Improved-Logics.md:347 msgid "" "In vanilla, you cannot deploy a controlled vehicle to " "`ConstructionYard=true` building. Now you can customize it." msgstr "在原版中你不能将一个被心灵控制的载具部署为 `ConstructionYard=true` 的建筑。现在你可以自定义了。" -#: ../../Fixed-or-Improved-Logics.md:342 ../../Fixed-or-Improved-Logics.md:356 -#: ../../Fixed-or-Improved-Logics.md:372 ../../Fixed-or-Improved-Logics.md:388 -#: ../../Fixed-or-Improved-Logics.md:416 ../../Fixed-or-Improved-Logics.md:427 -#: ../../Fixed-or-Improved-Logics.md:438 ../../Fixed-or-Improved-Logics.md:449 -#: ../../Fixed-or-Improved-Logics.md:459 ../../Fixed-or-Improved-Logics.md:472 -#: ../../Fixed-or-Improved-Logics.md:483 ../../Fixed-or-Improved-Logics.md:498 -#: ../../Fixed-or-Improved-Logics.md:509 ../../Fixed-or-Improved-Logics.md:529 -#: ../../Fixed-or-Improved-Logics.md:543 ../../Fixed-or-Improved-Logics.md:568 -#: ../../Fixed-or-Improved-Logics.md:599 ../../Fixed-or-Improved-Logics.md:623 -#: ../../Fixed-or-Improved-Logics.md:642 ../../Fixed-or-Improved-Logics.md:659 -#: ../../Fixed-or-Improved-Logics.md:671 ../../Fixed-or-Improved-Logics.md:681 -#: ../../Fixed-or-Improved-Logics.md:701 ../../Fixed-or-Improved-Logics.md:724 -#: ../../Fixed-or-Improved-Logics.md:736 ../../Fixed-or-Improved-Logics.md:803 -#: ../../Fixed-or-Improved-Logics.md:882 ../../Fixed-or-Improved-Logics.md:897 -#: ../../Fixed-or-Improved-Logics.md:918 ../../Fixed-or-Improved-Logics.md:940 -#: ../../Fixed-or-Improved-Logics.md:956 ../../Fixed-or-Improved-Logics.md:966 -#: ../../Fixed-or-Improved-Logics.md:980 ../../Fixed-or-Improved-Logics.md:995 -#: ../../Fixed-or-Improved-Logics.md:1017 -#: ../../Fixed-or-Improved-Logics.md:1034 -#: ../../Fixed-or-Improved-Logics.md:1052 -#: ../../Fixed-or-Improved-Logics.md:1062 -#: ../../Fixed-or-Improved-Logics.md:1073 -#: ../../Fixed-or-Improved-Logics.md:1103 -#: ../../Fixed-or-Improved-Logics.md:1116 -#: ../../Fixed-or-Improved-Logics.md:1128 -#: ../../Fixed-or-Improved-Logics.md:1141 -#: ../../Fixed-or-Improved-Logics.md:1161 -#: ../../Fixed-or-Improved-Logics.md:1173 -#: ../../Fixed-or-Improved-Logics.md:1202 -#: ../../Fixed-or-Improved-Logics.md:1231 -#: ../../Fixed-or-Improved-Logics.md:1243 -#: ../../Fixed-or-Improved-Logics.md:1253 -#: ../../Fixed-or-Improved-Logics.md:1263 -#: ../../Fixed-or-Improved-Logics.md:1279 -#: ../../Fixed-or-Improved-Logics.md:1295 -#: ../../Fixed-or-Improved-Logics.md:1311 -#: ../../Fixed-or-Improved-Logics.md:1343 -#: ../../Fixed-or-Improved-Logics.md:1368 -#: ../../Fixed-or-Improved-Logics.md:1390 -#: ../../Fixed-or-Improved-Logics.md:1402 -#: ../../Fixed-or-Improved-Logics.md:1419 -#: ../../Fixed-or-Improved-Logics.md:1451 -#: ../../Fixed-or-Improved-Logics.md:1504 -#: ../../Fixed-or-Improved-Logics.md:1522 -#: ../../Fixed-or-Improved-Logics.md:1534 -#: ../../Fixed-or-Improved-Logics.md:1548 -#: ../../Fixed-or-Improved-Logics.md:1577 -#: ../../Fixed-or-Improved-Logics.md:1603 -#: ../../Fixed-or-Improved-Logics.md:1618 -#: ../../Fixed-or-Improved-Logics.md:1638 -#: ../../Fixed-or-Improved-Logics.md:1656 -#: ../../Fixed-or-Improved-Logics.md:1675 -#: ../../Fixed-or-Improved-Logics.md:1690 -#: ../../Fixed-or-Improved-Logics.md:1717 -#: ../../Fixed-or-Improved-Logics.md:1747 -#: ../../Fixed-or-Improved-Logics.md:1760 -#: ../../Fixed-or-Improved-Logics.md:1771 -#: ../../Fixed-or-Improved-Logics.md:1792 -#: ../../Fixed-or-Improved-Logics.md:1832 -#: ../../Fixed-or-Improved-Logics.md:1853 -#: ../../Fixed-or-Improved-Logics.md:1882 +#: ../../Fixed-or-Improved-Logics.md:349 ../../Fixed-or-Improved-Logics.md:363 +#: ../../Fixed-or-Improved-Logics.md:379 ../../Fixed-or-Improved-Logics.md:395 +#: ../../Fixed-or-Improved-Logics.md:423 ../../Fixed-or-Improved-Logics.md:434 +#: ../../Fixed-or-Improved-Logics.md:445 ../../Fixed-or-Improved-Logics.md:456 +#: ../../Fixed-or-Improved-Logics.md:466 ../../Fixed-or-Improved-Logics.md:479 +#: ../../Fixed-or-Improved-Logics.md:490 ../../Fixed-or-Improved-Logics.md:505 +#: ../../Fixed-or-Improved-Logics.md:516 ../../Fixed-or-Improved-Logics.md:536 +#: ../../Fixed-or-Improved-Logics.md:550 ../../Fixed-or-Improved-Logics.md:575 +#: ../../Fixed-or-Improved-Logics.md:606 ../../Fixed-or-Improved-Logics.md:630 +#: ../../Fixed-or-Improved-Logics.md:649 ../../Fixed-or-Improved-Logics.md:666 +#: ../../Fixed-or-Improved-Logics.md:678 ../../Fixed-or-Improved-Logics.md:688 +#: ../../Fixed-or-Improved-Logics.md:708 ../../Fixed-or-Improved-Logics.md:731 +#: ../../Fixed-or-Improved-Logics.md:743 ../../Fixed-or-Improved-Logics.md:810 +#: ../../Fixed-or-Improved-Logics.md:889 ../../Fixed-or-Improved-Logics.md:904 +#: ../../Fixed-or-Improved-Logics.md:925 ../../Fixed-or-Improved-Logics.md:947 +#: ../../Fixed-or-Improved-Logics.md:963 ../../Fixed-or-Improved-Logics.md:973 +#: ../../Fixed-or-Improved-Logics.md:987 ../../Fixed-or-Improved-Logics.md:1002 +#: ../../Fixed-or-Improved-Logics.md:1024 +#: ../../Fixed-or-Improved-Logics.md:1041 +#: ../../Fixed-or-Improved-Logics.md:1059 +#: ../../Fixed-or-Improved-Logics.md:1069 +#: ../../Fixed-or-Improved-Logics.md:1080 +#: ../../Fixed-or-Improved-Logics.md:1110 +#: ../../Fixed-or-Improved-Logics.md:1123 +#: ../../Fixed-or-Improved-Logics.md:1135 +#: ../../Fixed-or-Improved-Logics.md:1148 +#: ../../Fixed-or-Improved-Logics.md:1168 +#: ../../Fixed-or-Improved-Logics.md:1180 +#: ../../Fixed-or-Improved-Logics.md:1209 +#: ../../Fixed-or-Improved-Logics.md:1238 +#: ../../Fixed-or-Improved-Logics.md:1250 +#: ../../Fixed-or-Improved-Logics.md:1260 +#: ../../Fixed-or-Improved-Logics.md:1270 +#: ../../Fixed-or-Improved-Logics.md:1286 +#: ../../Fixed-or-Improved-Logics.md:1302 +#: ../../Fixed-or-Improved-Logics.md:1318 +#: ../../Fixed-or-Improved-Logics.md:1350 +#: ../../Fixed-or-Improved-Logics.md:1375 +#: ../../Fixed-or-Improved-Logics.md:1397 +#: ../../Fixed-or-Improved-Logics.md:1409 +#: ../../Fixed-or-Improved-Logics.md:1426 +#: ../../Fixed-or-Improved-Logics.md:1458 +#: ../../Fixed-or-Improved-Logics.md:1511 +#: ../../Fixed-or-Improved-Logics.md:1529 +#: ../../Fixed-or-Improved-Logics.md:1541 +#: ../../Fixed-or-Improved-Logics.md:1555 +#: ../../Fixed-or-Improved-Logics.md:1584 +#: ../../Fixed-or-Improved-Logics.md:1610 +#: ../../Fixed-or-Improved-Logics.md:1625 +#: ../../Fixed-or-Improved-Logics.md:1645 +#: ../../Fixed-or-Improved-Logics.md:1663 +#: ../../Fixed-or-Improved-Logics.md:1682 +#: ../../Fixed-or-Improved-Logics.md:1697 +#: ../../Fixed-or-Improved-Logics.md:1724 +#: ../../Fixed-or-Improved-Logics.md:1754 +#: ../../Fixed-or-Improved-Logics.md:1767 +#: ../../Fixed-or-Improved-Logics.md:1778 +#: ../../Fixed-or-Improved-Logics.md:1799 +#: ../../Fixed-or-Improved-Logics.md:1839 +#: ../../Fixed-or-Improved-Logics.md:1855 +#: ../../Fixed-or-Improved-Logics.md:1871 #: ../../Fixed-or-Improved-Logics.md:1900 -#: ../../Fixed-or-Improved-Logics.md:1919 -#: ../../Fixed-or-Improved-Logics.md:1931 -#: ../../Fixed-or-Improved-Logics.md:1944 -#: ../../Fixed-or-Improved-Logics.md:1958 -#: ../../Fixed-or-Improved-Logics.md:1971 -#: ../../Fixed-or-Improved-Logics.md:1985 -#: ../../Fixed-or-Improved-Logics.md:1996 -#: ../../Fixed-or-Improved-Logics.md:2013 -#: ../../Fixed-or-Improved-Logics.md:2030 -#: ../../Fixed-or-Improved-Logics.md:2045 -#: ../../Fixed-or-Improved-Logics.md:2057 -#: ../../Fixed-or-Improved-Logics.md:2074 -#: ../../Fixed-or-Improved-Logics.md:2091 +#: ../../Fixed-or-Improved-Logics.md:1918 +#: ../../Fixed-or-Improved-Logics.md:1937 +#: ../../Fixed-or-Improved-Logics.md:1949 +#: ../../Fixed-or-Improved-Logics.md:1962 +#: ../../Fixed-or-Improved-Logics.md:1976 +#: ../../Fixed-or-Improved-Logics.md:1989 +#: ../../Fixed-or-Improved-Logics.md:2003 +#: ../../Fixed-or-Improved-Logics.md:2014 +#: ../../Fixed-or-Improved-Logics.md:2031 +#: ../../Fixed-or-Improved-Logics.md:2048 +#: ../../Fixed-or-Improved-Logics.md:2063 +#: ../../Fixed-or-Improved-Logics.md:2075 +#: ../../Fixed-or-Improved-Logics.md:2092 #: ../../Fixed-or-Improved-Logics.md:2109 -#: ../../Fixed-or-Improved-Logics.md:2130 -#: ../../Fixed-or-Improved-Logics.md:2145 +#: ../../Fixed-or-Improved-Logics.md:2127 +#: ../../Fixed-or-Improved-Logics.md:2148 #: ../../Fixed-or-Improved-Logics.md:2163 -#: ../../Fixed-or-Improved-Logics.md:2188 -#: ../../Fixed-or-Improved-Logics.md:2205 -#: ../../Fixed-or-Improved-Logics.md:2227 -#: ../../Fixed-or-Improved-Logics.md:2240 -#: ../../Fixed-or-Improved-Logics.md:2252 -#: ../../Fixed-or-Improved-Logics.md:2268 -#: ../../Fixed-or-Improved-Logics.md:2280 -#: ../../Fixed-or-Improved-Logics.md:2293 +#: ../../Fixed-or-Improved-Logics.md:2181 +#: ../../Fixed-or-Improved-Logics.md:2206 +#: ../../Fixed-or-Improved-Logics.md:2223 +#: ../../Fixed-or-Improved-Logics.md:2245 +#: ../../Fixed-or-Improved-Logics.md:2258 +#: ../../Fixed-or-Improved-Logics.md:2270 +#: ../../Fixed-or-Improved-Logics.md:2286 +#: ../../Fixed-or-Improved-Logics.md:2298 #: ../../Fixed-or-Improved-Logics.md:2311 -#: ../../Fixed-or-Improved-Logics.md:2335 -#: ../../Fixed-or-Improved-Logics.md:2348 -#: ../../Fixed-or-Improved-Logics.md:2359 -#: ../../Fixed-or-Improved-Logics.md:2374 -#: ../../Fixed-or-Improved-Logics.md:2388 -#: ../../Fixed-or-Improved-Logics.md:2405 -#: ../../Fixed-or-Improved-Logics.md:2419 -#: ../../Fixed-or-Improved-Logics.md:2431 -#: ../../Fixed-or-Improved-Logics.md:2443 -#: ../../Fixed-or-Improved-Logics.md:2454 -#: ../../Fixed-or-Improved-Logics.md:2465 -#: ../../Fixed-or-Improved-Logics.md:2478 -#: ../../Fixed-or-Improved-Logics.md:2488 -#: ../../Fixed-or-Improved-Logics.md:2504 -#: ../../Fixed-or-Improved-Logics.md:2526 +#: ../../Fixed-or-Improved-Logics.md:2329 +#: ../../Fixed-or-Improved-Logics.md:2353 +#: ../../Fixed-or-Improved-Logics.md:2366 +#: ../../Fixed-or-Improved-Logics.md:2377 +#: ../../Fixed-or-Improved-Logics.md:2392 +#: ../../Fixed-or-Improved-Logics.md:2406 +#: ../../Fixed-or-Improved-Logics.md:2423 +#: ../../Fixed-or-Improved-Logics.md:2437 +#: ../../Fixed-or-Improved-Logics.md:2449 +#: ../../Fixed-or-Improved-Logics.md:2461 +#: ../../Fixed-or-Improved-Logics.md:2472 +#: ../../Fixed-or-Improved-Logics.md:2483 +#: ../../Fixed-or-Improved-Logics.md:2496 +#: ../../Fixed-or-Improved-Logics.md:2506 +#: ../../Fixed-or-Improved-Logics.md:2522 +#: ../../Fixed-or-Improved-Logics.md:2544 msgid "In `rulesmd.ini`:" msgstr "在 `rulesmd.ini`:" -#: ../../Fixed-or-Improved-Logics.md:343 +#: ../../Fixed-or-Improved-Logics.md:350 msgid "" "[General]\n" "AllowDeployControlledMCV=false ; boolean\n" @@ -2047,11 +2091,11 @@ msgstr "" "[General]\n" "AllowDeployControlledMCV=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:348 +#: ../../Fixed-or-Improved-Logics.md:355 msgid "Chrono sparkle animation customization & improvements" msgstr "超时空闪光动画的自定义与改进" -#: ../../Fixed-or-Improved-Logics.md:350 +#: ../../Fixed-or-Improved-Logics.md:357 msgid "" "It is now possible to customize the frame delay between instances of " "`[General] -> ChronoSparkle1` animations created on objects being warped " @@ -2060,7 +2104,7 @@ msgstr "" "现在可以通过设置 `[General] -> ChronoSparkleDisplayDelay` 来自定义被冻结的对象上创建 " "`[General] -> ChronoSparkle1` 动画之间的帧间隔。" -#: ../../Fixed-or-Improved-Logics.md:351 +#: ../../Fixed-or-Improved-Logics.md:358 msgid "" "By default on buildings with `MaxNumberOccupants` higher than 0, chrono " "sparkle animation would be shown at each of the `MuzzleFlashX` " @@ -2070,7 +2114,7 @@ msgstr "" "默认情况下对于 `MaxNumberOccupants` 大于 0 的建筑,超时空闪烁动画会在每个 `MuzzleFlashX` " "坐标处显示。现在这种行为可以自定义,并且支持大于 10 的 `MuzzleFlashX` 索引。" -#: ../../Fixed-or-Improved-Logics.md:352 +#: ../../Fixed-or-Improved-Logics.md:359 msgid "" "`[General] -> ChronoSparkleBuildingDisplayPositions` can be set to show " "the sparkle animation on the building (`building`), muzzle flash " @@ -2081,7 +2125,7 @@ msgstr "" "(`building`)、在当前驻军的枪口坐标闪烁 (`occupants`)、所有驻军的枪口闪烁坐标 (`occupantslots`) " "或这些中任意组合的情况下显示。" -#: ../../Fixed-or-Improved-Logics.md:353 +#: ../../Fixed-or-Improved-Logics.md:360 msgid "" "If `occupants` or `occupantslots` is listed without `building`, a single " "chrono sparkle animation is still displayed on building if it doesn't " @@ -2091,14 +2135,14 @@ msgstr "" "如果列出了 `occupants` 或 `occupantslots` 而没有 `building`,那么在建筑没有任何驻军或其 " "`MaxNumberOccupants` 小于 1 的情况下仍会在建筑上显示一个超时空闪烁动画。" -#: ../../Fixed-or-Improved-Logics.md:354 +#: ../../Fixed-or-Improved-Logics.md:361 msgid "" "The chrono sparkle animation that is displayed on building itself is also" " now displayed at the center of it rather than at center of its topmost " "cell." msgstr "现在显示在建筑自身的超时空闪烁动画位于其正中心而不再是其最顶端单元格的中心。" -#: ../../Fixed-or-Improved-Logics.md:357 +#: ../../Fixed-or-Improved-Logics.md:364 msgid "" "[General]\n" "ChronoSparkleDisplayDelay=24 ; integer, game " @@ -2112,28 +2156,28 @@ msgstr "" "ChronoSparkleBuildingDisplayPositions=occupantslots ; List of chrono " "sparkle position enum (building | occupants | occupantslots | all)\n" -#: ../../Fixed-or-Improved-Logics.md:363 +#: ../../Fixed-or-Improved-Logics.md:370 msgid "Crate improvements" msgstr "升级工具箱增强" -#: ../../Fixed-or-Improved-Logics.md:365 +#: ../../Fixed-or-Improved-Logics.md:372 msgid "There are some improvements on goodie crate logic:" msgstr "对升级工具箱逻辑提供了以下改进:" -#: ../../Fixed-or-Improved-Logics.md:366 +#: ../../Fixed-or-Improved-Logics.md:373 msgid "" "The statistic distribution of the randomly generated crates is now more " "uniform within the visible map region by using an optimized sampling " "procedure." msgstr "优化了随机算法使得随机生成的升级工具箱在可见地图区域内的统计分布更加均匀。" -#: ../../Fixed-or-Improved-Logics.md:367 +#: ../../Fixed-or-Improved-Logics.md:374 msgid "" "You can now limit the crates' spawn region to land only by setting " "`[CrateRules] -> CreateOnlyOnLand` to true." msgstr "现在你可以通过将 `[CrateRules] -> CreateOnlyOnLand` 设为 true 来让升级工具箱的生成区域仅限陆地。" -#: ../../Fixed-or-Improved-Logics.md:368 +#: ../../Fixed-or-Improved-Logics.md:375 msgid "" "The limit of vehicles a player can own before unit crates start giving " "money instead can now be customized by setting `UnitCrateVehicleCap`. " @@ -2142,7 +2186,7 @@ msgstr "" "现在可以通过 `UnitCrateVehicleCap` " "来设置玩家在单位箱子转为给予金钱之前可以拥有的载具数量上限。负数将禁用上限也就是永久生成载具不会达到一定数目后转为金钱。" -#: ../../Fixed-or-Improved-Logics.md:369 +#: ../../Fixed-or-Improved-Logics.md:376 msgid "" "`FreeMCV` setting is now actually respected and can be used to disable " "the forced unit selected from `[General] -> BaseUnit` that is given if " @@ -2152,13 +2196,13 @@ msgstr "" "现在尊重 `FreeMCV` 设置并且可以用来禁止玩家拾取升级工具箱且拥有足够的资金单然而没有建筑或 `BaseUnit` 载具时强制将内容选择为" " `[General] -> BaseUnit` 中的单位。" -#: ../../Fixed-or-Improved-Logics.md:370 +#: ../../Fixed-or-Improved-Logics.md:377 msgid "" "The previously hardcoded credits threshold that must be passed can also " "now be customized via `FreeMCV.CreditsThreshold`." msgstr "现在可以通过 `FreeMCV.CreditsThreshold` 自定义先前硬编码需要高于的资金阈值。" -#: ../../Fixed-or-Improved-Logics.md:373 +#: ../../Fixed-or-Improved-Logics.md:380 msgid "" "[CrateRules]\n" "CrateOnlyOnLand=false ; boolean\n" @@ -2172,18 +2216,18 @@ msgstr "" "FreeMCV=true ; boolean\n" "FreeMCV.CreditsThreshold=1500 ; integer\n" -#: ../../Fixed-or-Improved-Logics.md:381 +#: ../../Fixed-or-Improved-Logics.md:388 msgid "Customizable unit image in art" msgstr "在 art 中自定义单位图像" -#: ../../Fixed-or-Improved-Logics.md:383 +#: ../../Fixed-or-Improved-Logics.md:390 msgid "" "`Image` tag in art INI is no longer limited to AnimationTypes and " "BuildingTypes, and can be applied to all TechnoTypes (InfantryTypes, " "VehicleTypes, AircraftTypes, BuildingTypes)." msgstr "art INI 中的 `Image` 标签不再局限于动画类型和建筑类型,而是作用于所有科技类型(步兵类型、载具类型、战机类型、建筑类型)。" -#: ../../Fixed-or-Improved-Logics.md:384 +#: ../../Fixed-or-Improved-Logics.md:391 msgid "" "The tag specifies **only** the file name (without extension) of the asset" " that replaces TechnoType's graphics. If the name in `Image` is also an " @@ -2192,19 +2236,19 @@ msgstr "" "这个标签**仅**指定替代科技类型图像的文件名(无扩展名)。如果 `Image` 中的名称也是 art INI " "中的一个条目,那么**不会从中读取任何标签**。" -#: ../../Fixed-or-Improved-Logics.md:385 +#: ../../Fixed-or-Improved-Logics.md:392 msgid "" "**By default this feature is disabled** to remain compatible with YR. To " "use this feature, enable it in rules with `ArtImageSwap=true`." msgstr "**此功能默认关闭**以保持对 YR 原行为的兼容。为使用该功能,需要在 rules 中使用 `ArtImageSwap=true` 来开启。" -#: ../../Fixed-or-Improved-Logics.md:386 +#: ../../Fixed-or-Improved-Logics.md:393 msgid "" "This feature supports SHP images for InfantryTypes, SHP and VXL images " "for VehicleTypes and VXL images for AircraftTypes." msgstr "此功能仅支持 Shape 图像用于步兵类型,Shape 与 Voxel 图像用于载具类型以及 Voxel 图像用于战机类型。" -#: ../../Fixed-or-Improved-Logics.md:389 +#: ../../Fixed-or-Improved-Logics.md:396 msgid "" "[General]\n" "ArtImageSwap=false ; disabled by default\n" @@ -2212,27 +2256,27 @@ msgstr "" "[General]\n" "ArtImageSwap=false ; disabled by default\n" -#: ../../Fixed-or-Improved-Logics.md:395 +#: ../../Fixed-or-Improved-Logics.md:402 msgid "" "To use this feature properly, you need to remove or replace the following" " segments in the YR INI code to avoid compatibility issues between the " "original Westwood INI code and this feature." msgstr "为了正常使用该功能,你需要移除或替换下面这些 YR INI 代码中的选段以避免 Westwood 原有 INI 代码与该功能的兼容问题。" -#: ../../Fixed-or-Improved-Logics.md:398 ../../Fixed-or-Improved-Logics.md:752 -#: ../../Fixed-or-Improved-Logics.md:773 ../../Fixed-or-Improved-Logics.md:788 -#: ../../Fixed-or-Improved-Logics.md:809 ../../Fixed-or-Improved-Logics.md:830 -#: ../../Fixed-or-Improved-Logics.md:854 ../../Fixed-or-Improved-Logics.md:864 -#: ../../Fixed-or-Improved-Logics.md:907 ../../Fixed-or-Improved-Logics.md:929 -#: ../../Fixed-or-Improved-Logics.md:1084 -#: ../../Fixed-or-Improved-Logics.md:1325 -#: ../../Fixed-or-Improved-Logics.md:1819 -#: ../../Fixed-or-Improved-Logics.md:1863 -#: ../../Fixed-or-Improved-Logics.md:2211 +#: ../../Fixed-or-Improved-Logics.md:405 ../../Fixed-or-Improved-Logics.md:759 +#: ../../Fixed-or-Improved-Logics.md:780 ../../Fixed-or-Improved-Logics.md:795 +#: ../../Fixed-or-Improved-Logics.md:816 ../../Fixed-or-Improved-Logics.md:837 +#: ../../Fixed-or-Improved-Logics.md:861 ../../Fixed-or-Improved-Logics.md:871 +#: ../../Fixed-or-Improved-Logics.md:914 ../../Fixed-or-Improved-Logics.md:936 +#: ../../Fixed-or-Improved-Logics.md:1091 +#: ../../Fixed-or-Improved-Logics.md:1332 +#: ../../Fixed-or-Improved-Logics.md:1826 +#: ../../Fixed-or-Improved-Logics.md:1881 +#: ../../Fixed-or-Improved-Logics.md:2229 msgid "In `artmd.ini`:" msgstr "在 `artmd.ini`:" -#: ../../Fixed-or-Improved-Logics.md:399 +#: ../../Fixed-or-Improved-Logics.md:406 msgid "" "[CAML]\n" "Image=JOSH\n" @@ -2246,7 +2290,7 @@ msgstr "" "[BFRT]\n" "Image=SREF\n" -#: ../../Fixed-or-Improved-Logics.md:408 +#: ../../Fixed-or-Improved-Logics.md:415 msgid "" "In vanilla, `[CLNT]` does not have its own image. Originally, in " "`artmd.ini`, it uses another image placeholder via `Image=ARND`, but due " @@ -2263,11 +2307,11 @@ msgstr "" "来实现图像资源调用,但它不是与其他 art 小节那样只是更改实现方式,而是还同时改为了 `Image=CIVC` 而非 `ARND`,虽然这在 " "`[General] -> ArtImageSwap=true` 时不会直接表现为冲突,但 modder 们可能需要注意。" -#: ../../Fixed-or-Improved-Logics.md:411 +#: ../../Fixed-or-Improved-Logics.md:418 msgid "Customize resource storage" msgstr "自定义资源储存" -#: ../../Fixed-or-Improved-Logics.md:413 +#: ../../Fixed-or-Improved-Logics.md:420 msgid "" "Now Ares `Storage` feature can set which Tiberium type from `[Tiberiums]`" " list should be used for storing resources in structures with " @@ -2276,11 +2320,11 @@ msgstr "" "现在 Ares 的 `Storage` 功能可以设置 `[Tiberiums]` 列表中的哪种类型被用于在拥有 " "`Refinery.UseStorage=yes` 且 `Storage` > 0 的建筑中存储。" -#: ../../Fixed-or-Improved-Logics.md:414 +#: ../../Fixed-or-Improved-Logics.md:421 msgid "This tag can not be used without Ares." msgstr "此标签无法在没有 Ares 的情况下使用。" -#: ../../Fixed-or-Improved-Logics.md:417 +#: ../../Fixed-or-Improved-Logics.md:424 msgid "" "[General]\n" "Storage.TiberiumIndex=-1 ; integer, [Tiberiums] list index\n" @@ -2288,11 +2332,11 @@ msgstr "" "[General]\n" "Storage.TiberiumIndex=-1 ; integer, [Tiberiums] list index\n" -#: ../../Fixed-or-Improved-Logics.md:422 +#: ../../Fixed-or-Improved-Logics.md:429 msgid "Customize the chained damage of the wall" msgstr "自定义墙的连锁伤害" -#: ../../Fixed-or-Improved-Logics.md:424 +#: ../../Fixed-or-Improved-Logics.md:431 msgid "" "In vanilla, when the wall is damaged, it will deal 200 damage to the " "walls in the 4 nearby cells. This makes connected walls more vulnerable " @@ -2301,11 +2345,11 @@ msgstr "" "原版中当围墙受到伤害时会对周围 4 个单元格内的墙体造成 200 " "点伤害。这使得相连的墙体比单独矗立的墙体更容易被损伤(这就是打完剩下的单格墙体更能抗伤的原因)。" -#: ../../Fixed-or-Improved-Logics.md:425 +#: ../../Fixed-or-Improved-Logics.md:432 msgid "Now you can customize that damage by using the following flag." msgstr "现在你可以使用下面的标签自定义这个杀伤值。" -#: ../../Fixed-or-Improved-Logics.md:428 +#: ../../Fixed-or-Improved-Logics.md:435 msgid "" "[CombatDamage]\n" "AdjacentWallDamage=200 ; integer\n" @@ -2313,18 +2357,18 @@ msgstr "" "[CombatDamage]\n" "AdjacentWallDamage=200 ; integer\n" -#: ../../Fixed-or-Improved-Logics.md:433 +#: ../../Fixed-or-Improved-Logics.md:440 msgid "Customizing effect of level lighting on air units" msgstr "自定义光照等级对空中单位的影响" -#: ../../Fixed-or-Improved-Logics.md:435 +#: ../../Fixed-or-Improved-Logics.md:442 msgid "" "It is now possible to customize how air units are affected by level " "lighting, separately for AircraftTypes and infantry/vehicles with Jumpjet" " `Locomotor`." msgstr "现在可以分别针战机类型和使用 `Locomotor=Jumpjet` 的步兵/载具自定义空中单位所受光照等级影响的方式。" -#: ../../Fixed-or-Improved-Logics.md:436 +#: ../../Fixed-or-Improved-Logics.md:443 msgid "" "`AircraftLevelLightMultiplier` & `JumpjetLevelLightMultiplier` are direct" " multipliers to level lighting applied on the units, for height levels " @@ -2333,7 +2377,7 @@ msgstr "" "`AircraftLevelLightMultiplier` 和 `JumpjetLevelLightMultiplier` " "是直接用于单位的光照等级强度倍率,适用于它们所飞掠单元格的高度。" -#: ../../Fixed-or-Improved-Logics.md:439 +#: ../../Fixed-or-Improved-Logics.md:446 msgid "" "[AudioVisual]\n" "AircraftLevelLightMultiplier=1.0 ; floating point value, percents or " @@ -2347,11 +2391,11 @@ msgstr "" "JumpjetLevelLightMultiplier=0.0 ; floating point value, percents or " "absolute\n" -#: ../../Fixed-or-Improved-Logics.md:445 +#: ../../Fixed-or-Improved-Logics.md:452 msgid "Customizing default ColorScheme" msgstr "自定义默认配色方案" -#: ../../Fixed-or-Improved-Logics.md:447 +#: ../../Fixed-or-Improved-Logics.md:454 msgid "" "In vanilla, an `AltPalette=yes` animation or `Voxel=yes` Projectile image" " that cannot properly remap will use the first Color Scheme in the " @@ -2360,7 +2404,7 @@ msgstr "" "在原版中,一个无法正确重映射颜色的 `AltPalette=yes` 动画或 `Voxel=yes` 的抛射体图像会使用 `[Colors]` " "列表中的第一个配色方案作为默认配色方案来映射所属色,现在它可以被手动指定了。" -#: ../../Fixed-or-Improved-Logics.md:450 +#: ../../Fixed-or-Improved-Logics.md:457 msgid "" "[AudioVisual]\n" "AnimRemapDefaultColorScheme= ; ColorScheme name\n" @@ -2368,17 +2412,17 @@ msgstr "" "[AudioVisual]\n" "AnimRemapDefaultColorScheme= ; ColorScheme name\n" -#: ../../Fixed-or-Improved-Logics.md:455 +#: ../../Fixed-or-Improved-Logics.md:462 msgid "Iron Curtain & Force Shield extra tint intensity" msgstr "铁幕和力场护盾的额外染色强度" -#: ../../Fixed-or-Improved-Logics.md:457 +#: ../../Fixed-or-Improved-Logics.md:464 msgid "" "It is now possible to specify additional tint intensity applied to Iron " "Curtained and Force Shielded units." msgstr "现在可以指定应用于处于铁幕和力场护盾中的单位的额外染色强度。" -#: ../../Fixed-or-Improved-Logics.md:460 +#: ../../Fixed-or-Improved-Logics.md:467 msgid "" "[AudioVisual]\n" "IronCurtain.ExtraTintIntensity=0.0 ; floating point value\n" @@ -2388,11 +2432,11 @@ msgstr "" "IronCurtain.ExtraTintIntensity=0.0 ; floating point value\n" "ForceShield.ExtraTintIntensity=0.0 ; floating point value\n" -#: ../../Fixed-or-Improved-Logics.md:466 +#: ../../Fixed-or-Improved-Logics.md:473 msgid "Jumpjet climbing logic enhancement" msgstr "Jumpjet 爬升逻辑增强" -#: ../../Fixed-or-Improved-Logics.md:468 +#: ../../Fixed-or-Improved-Logics.md:475 msgid "" "You can now let the jumpjets increase their height earlier by set " "`JumpjetClimbPredictHeight` to true. The jumpjet will raise its height 5 " @@ -2402,7 +2446,7 @@ msgstr "" "现在你可以通过将 `JumpjetClimbPredictHeight` 设为 true 来使 Jumpjet " "单位提前增加飞行高度。Jumpjet 将会提前 5 个单元格开始抬升而非仅在悬崖和建筑马上贴脸了才抬升高度。" -#: ../../Fixed-or-Improved-Logics.md:469 +#: ../../Fixed-or-Improved-Logics.md:476 msgid "" "You can also let them simply skip the stop check by set " "`JumpjetClimbWithoutCutOut` to true. The jumpjet will not stop moving " @@ -2412,7 +2456,7 @@ msgstr "" "你还可以通过将 `JumpjetClimbWithoutCutOut` 设为 true 来跳过停止移动检查。Jumpjet " "在已经抵近悬崖或建筑时将不会停止水平方向上的移动,而是在抬升高度的同时继续前行。" -#: ../../Fixed-or-Improved-Logics.md:470 +#: ../../Fixed-or-Improved-Logics.md:477 msgid "" "When `JumpjetClimbPredictHeight` is enabled, if the height raised five " "grids in advance is still not enough to cross cliffs or buildings, it " @@ -2422,7 +2466,7 @@ msgstr "" "当启用 `JumpjetClimbPredictHeight` 时,若提前 5 个单元格后的高度仍然不足以越过悬崖或建筑,Jumpjet " "将会像原先那样停止水平方向上的移动,除非还启用了 `JumpjetClimbWithoutCutOut`。" -#: ../../Fixed-or-Improved-Logics.md:473 +#: ../../Fixed-or-Improved-Logics.md:480 msgid "" "[General]\n" "JumpjetClimbPredictHeight=false ; boolean\n" @@ -2432,18 +2476,18 @@ msgstr "" "JumpjetClimbPredictHeight=false ; boolean\n" "JumpjetClimbWithoutCutOut=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:479 +#: ../../Fixed-or-Improved-Logics.md:486 msgid "Move IvanBomb Position" msgstr "移动伊文炸弹位置" -#: ../../Fixed-or-Improved-Logics.md:481 +#: ../../Fixed-or-Improved-Logics.md:488 msgid "" "In vanilla, IvanBomb images display and the bombs detonate at the top-" "leftmost cell of the building foundation instead of at the center of " "buildings. This can now be changed." msgstr "在原版中,伊文炸弹的图像显示位置和炸弹引爆位置在建筑占地左上角的单元格而不是建筑中心。现在这可以被更改。" -#: ../../Fixed-or-Improved-Logics.md:484 +#: ../../Fixed-or-Improved-Logics.md:491 msgid "" "[CombatDamage]\n" "IvanBombAttachToCenter=false ; boolean\n" @@ -2451,22 +2495,22 @@ msgstr "" "[CombatDamage]\n" "IvanBombAttachToCenter=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:490 +#: ../../Fixed-or-Improved-Logics.md:497 msgid "Due to technical constraints this cannot be customized per WeaponType." msgstr "由于技术限制,这无法在每种武器上微观定义。" -#: ../../Fixed-or-Improved-Logics.md:493 +#: ../../Fixed-or-Improved-Logics.md:500 msgid "RadialIndicator visibility" msgstr "范围指示环可见性" -#: ../../Fixed-or-Improved-Logics.md:495 +#: ../../Fixed-or-Improved-Logics.md:502 msgid "" "In vanilla game, a structure's radial indicator can be drawn only when it" " belongs to the player. Now it can also be visible to observer. On top of" " that, you can specify its visibility from other houses." msgstr "在原本的游戏中,建筑的范围指示环只有在玩家拥有时才绘制。现在它也对观察者可见。此外,你还可以指定其他所属方的可见性。" -#: ../../Fixed-or-Improved-Logics.md:499 +#: ../../Fixed-or-Improved-Logics.md:506 msgid "" "[AudioVisual]\n" "RadialIndicatorVisibility=allies ; List of Affected House Enumeration " @@ -2476,21 +2520,21 @@ msgstr "" "RadialIndicatorVisibility=allies ; List of Affected House Enumeration " "(owner/self | allies/ally | enemies/enemy | all)\n" -#: ../../Fixed-or-Improved-Logics.md:504 +#: ../../Fixed-or-Improved-Logics.md:511 msgid "Re-enable obsolete `[JumpjetControls]`" msgstr "重启废弃的 `[JumpjetControls]`" -#: ../../Fixed-or-Improved-Logics.md:506 +#: ../../Fixed-or-Improved-Logics.md:513 msgid "" "Re-enable obsolete `[JumpjetControls]`, the keys in it will be as the " "default value of jumpjet units." msgstr "重启了废弃的 `[JumpjetControls]`,其中的标签将用于 Jumpjet 单位的默认值。" -#: ../../Fixed-or-Improved-Logics.md:507 +#: ../../Fixed-or-Improved-Logics.md:514 msgid "Moreover, added two tags for missing ones." msgstr "此外,新增了两个标签用于空缺项。" -#: ../../Fixed-or-Improved-Logics.md:510 +#: ../../Fixed-or-Improved-Logics.md:517 msgid "" "[JumpjetControls]\n" "Crash=5.0 ; floating point value\n" @@ -2500,7 +2544,7 @@ msgstr "" "Crash=5.0 ; floating point value\n" "NoWobbles=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:517 +#: ../../Fixed-or-Improved-Logics.md:524 msgid "" "`CruiseHeight` is for `JumpjetHeight`, `WobblesPerSecond` is for " "`JumpjetWobbles`, `WobbleDeviation` is for `JumpjetDeviation`, and " @@ -2511,18 +2555,18 @@ msgstr "" "`JumpjetWobbles`、`WobbleDeviation` 对应 `JumpjetDeviation` 以及 " "`Acceleration` 对应 `JumpjetAccel`。其他所有相应的标签只是去掉了 Jumpjet 前缀。" -#: ../../Fixed-or-Improved-Logics.md:520 +#: ../../Fixed-or-Improved-Logics.md:527 msgid "Skirmish AI behavior dehardcode" msgstr "遭遇战 AI 行为去硬编码" -#: ../../Fixed-or-Improved-Logics.md:522 +#: ../../Fixed-or-Improved-Logics.md:529 msgid "" "In vanilla, there is a hardcoded behavior that when an skirmish AI player" " has no factory and has not taken damage for a while, it will sell its " "buildings and set its units to hunt. This can be customized now." msgstr "在原版中存在一个遭遇战 AI 玩家没有 Factory 类建筑且一段时间未受到伤害将会发起卖家冲锋(让所有单位进入 Hunt)的硬编码的行为。" -#: ../../Fixed-or-Improved-Logics.md:523 +#: ../../Fixed-or-Improved-Logics.md:530 msgid "" "`[General] -> AIFireSale` and `[General] -> AIAllToHunt` control whether " "the AI will act selling and hunting respectively." @@ -2530,7 +2574,7 @@ msgstr "" "`[General] -> AIFireSale` 和 `[General] -> AIAllToHunt` 分别控制 AI " "是否会执行卖家和狩猎(冲锋)行为。" -#: ../../Fixed-or-Improved-Logics.md:524 +#: ../../Fixed-or-Improved-Logics.md:531 msgid "" "`[General] -> AIFireSaleDelay` defines a timer, it will only work if " "`[General] -> AIFireSale` is set to `true`. When the first time the AI " @@ -2540,23 +2584,23 @@ msgstr "" "`[General] -> AIFireSaleDelay` 定义了一个计时器,它只有当 `[General] -> AIFireSale` 设为" " true 时才会生效。当 AI 首次达到原有行为的触发条件时计时器开始计时,并在计时器到期之前阻止出售建筑的行为。" -#: ../../Fixed-or-Improved-Logics.md:525 +#: ../../Fixed-or-Improved-Logics.md:532 msgid "" "You can use these flags to make the AIs \"all in\" before they are " "defeated." msgstr "你可以用这些标签让 AI 被击败前 “全力以赴”" -#: ../../Fixed-or-Improved-Logics.md:526 +#: ../../Fixed-or-Improved-Logics.md:533 msgid "" "Another hardcoded behavior is that, when the AI deploys a MCV, it will " "gather all of its forces to that place. This can be toggle off now." msgstr "另一个硬编码行为是,当 AI 部署 MCV 时,它会将所有部队集结到该地点。现在可以关闭这一行为。" -#: ../../Fixed-or-Improved-Logics.md:527 +#: ../../Fixed-or-Improved-Logics.md:534 msgid "`[General] -> GatherWhenMCVDeploy` controls this behavior." msgstr "`[General] -> GatherWhenMCVDeploy` 控制这一行为。" -#: ../../Fixed-or-Improved-Logics.md:530 +#: ../../Fixed-or-Improved-Logics.md:537 msgid "" "[General]\n" "AIFireSale=true ; boolean\n" @@ -2570,11 +2614,11 @@ msgstr "" "AIAllToHunt=true ; boolean\n" "GatherWhenMCVDeploy=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:538 +#: ../../Fixed-or-Improved-Logics.md:545 msgid "Use 8-bit RGB parameters for `[ColorAdd]`" msgstr "为 `[ColorAdd]` 使用 8 位 RGB 参数" -#: ../../Fixed-or-Improved-Logics.md:540 +#: ../../Fixed-or-Improved-Logics.md:547 msgid "" "In vanilla, the values in the `[ColorAdd]` entry are used as RGB565 (0-31" " for red & blue, 0-63 for green). Now, with this setting, you can use the" @@ -2583,7 +2627,7 @@ msgstr "" "在原版中,`[ColorAdd]` 条目中的值会被按照 RGB565(红色和蓝色为 0-31,绿色为 " "0-63)来使用,现在,你可以通过这一设置使其使用对人类用户更加友好的 8 位 RGB(0-255)来填写。" -#: ../../Fixed-or-Improved-Logics.md:541 +#: ../../Fixed-or-Improved-Logics.md:548 msgid "" "This works for `LaserTargetColor`, `IronCurtainColor`, `BerserkColor` and" " `ForceShieldColor`." @@ -2591,7 +2635,7 @@ msgstr "" "这适用于 `LaserTargetColor`、`IronCurtainColor`、`BerserkColor` 和 " "`ForceShieldColor`。" -#: ../../Fixed-or-Improved-Logics.md:544 +#: ../../Fixed-or-Improved-Logics.md:551 msgid "" "[AudioVisual]\n" "ColorAddUse8BitRGB=false ; boolean\n" @@ -2599,44 +2643,44 @@ msgstr "" "[AudioVisual]\n" "ColorAddUse8BitRGB=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:549 +#: ../../Fixed-or-Improved-Logics.md:556 msgid "Veinholes & Weeds" msgstr "泰伯利亚藤蔓与泰伯利亚废矿" -#: ../../Fixed-or-Improved-Logics.md:551 +#: ../../Fixed-or-Improved-Logics.md:558 msgid "Veinholes" msgstr "泰伯利亚藤蔓" -#: ../../Fixed-or-Improved-Logics.md:553 +#: ../../Fixed-or-Improved-Logics.md:560 msgid "Veinhole monsters now work like they used to in Tiberian Sun." msgstr "泰伯利亚藤蔓怪现在可以像《泰伯利亚之日》中那样工作。" -#: ../../Fixed-or-Improved-Logics.md:554 +#: ../../Fixed-or-Improved-Logics.md:561 msgid "Their core parameters are still loaded from `[General]`." msgstr "它们的核心参数仍然从 `[General]` 读取。" -#: ../../Fixed-or-Improved-Logics.md:555 +#: ../../Fixed-or-Improved-Logics.md:562 msgid "" "The Warhead used by veins is specified under `[CombatDamage]`. The " "warhead has to have `Veinhole=yes` set." msgstr "藤蔓的弹头在 `[CombatDamage]` 下指定。弹头必须设置 `Veinhole=yes`。" -#: ../../Fixed-or-Improved-Logics.md:556 +#: ../../Fixed-or-Improved-Logics.md:563 msgid "Veinholes are hardcoded to use several overlay types." msgstr "泰伯利亚藤蔓被硬编码使用几种覆盖物。" -#: ../../Fixed-or-Improved-Logics.md:557 +#: ../../Fixed-or-Improved-Logics.md:564 msgid "" "The vein attack animation specified under `[AudioVisual]` is what deals " "the damage. The animation has to be properly listed under `[Animations]` " "as well." msgstr "泰伯利亚藤蔓造成杀伤的攻击效果动画于 `[AudioVisual]` 下指定。动画必须列于 `[Animations]` 注册表中。" -#: ../../Fixed-or-Improved-Logics.md:558 +#: ../../Fixed-or-Improved-Logics.md:565 msgid "Units can be made immune to veins the same way as in Tiberian Sun." msgstr "单位可以像在《泰伯利亚之日》中一样设置对泰伯利亚藤蔓免疫。" -#: ../../Fixed-or-Improved-Logics.md:559 +#: ../../Fixed-or-Improved-Logics.md:566 msgid "" "The monster itself is represented by the `VEINTREE` TerrainType, which " "has `IsVeinhole=true` set. Its strength is what determines the strength " @@ -2645,7 +2689,7 @@ msgstr "" "怪物主体以 `VEINTREE` 地形对象的形式存在,其拥有 `IsVeinhole=true` 设置。并且它的 `Strength` " "决定了泰伯利亚藤蔓的生命值。" -#: ../../Fixed-or-Improved-Logics.md:562 +#: ../../Fixed-or-Improved-Logics.md:569 msgid "" "Everything listed below functions identically to Tiberian Sun. Many of " "the tags from Tiberian Sun have been re-enabled. The values provided " @@ -2668,7 +2712,7 @@ msgstr "" "中的值相同。你可以在 MODENC " "上了解更多关于它们的信息:[VeinholeGrowthRate](https://modenc.renegadeprojects.com/VeinholeGrowthRate)、[VeinholeShrinkRate](https://modenc.renegadeprojects.com/VeinholeShrinkRate)、[MaxVeinholeGrowth](https://modenc.renegadeprojects.com/MaxVeinholeGrowth)、[VeinDamage](https://modenc.renegadeprojects.com/VeinDamage)、[VeinholeTypeClass](https://modenc.renegadeprojects.com/VeinholeTypeClass)、[VeinholeWarhead](https://modenc.renegadeprojects.com/VeinholeWarhead)、[Veinhole](https://modenc.renegadeprojects.com/Veinhole)、[VeinAttack](https://modenc.renegadeprojects.com/VeinAttack)、[ImmuneToVeins](https://modenc.renegadeprojects.com/ImmuneToVeins)、[IsVeinhole](https://modenc.renegadeprojects.com/IsVeinhole)" -#: ../../Fixed-or-Improved-Logics.md:569 +#: ../../Fixed-or-Improved-Logics.md:576 msgid "" "[General]\n" "VeinholeGrowthRate=300 ; integer\n" @@ -2718,7 +2762,7 @@ msgstr "" "IsVeinhole=true\n" "Strength=1000 ; integer - the strength of the Veinhole\n" -#: ../../Fixed-or-Improved-Logics.md:596 +#: ../../Fixed-or-Improved-Logics.md:603 msgid "" "The game expects certain overlays related to Veinholes to have certain " "indices, they are listed below. Please keep in mind that the indices in " @@ -2729,7 +2773,7 @@ msgstr "" "游戏需要泰伯利亚藤蔓相关的覆盖物使用特定的索引,如下所示。请注意 `OverlayTypes` 注册表中的索引是从 0 " "开始的,由于游戏内部规则,等号左侧的标识符无关紧要。原版 `rulesmd.ini` 已经在正确的索引处列出了所需的覆盖物。" -#: ../../Fixed-or-Improved-Logics.md:600 +#: ../../Fixed-or-Improved-Logics.md:607 msgid "" "[OverlayTypes]\n" "126=VEINS ; The veins (weeds)\n" @@ -2741,55 +2785,55 @@ msgstr "" "167=VEINHOLE ; The Veinhole itself\n" "178=VEINHOLEDUMMY ; A technical overlay\n" -#: ../../Fixed-or-Improved-Logics.md:607 +#: ../../Fixed-or-Improved-Logics.md:614 msgid "Weeds & Weed Eaters" msgstr "泰伯利亚废矿与废矿采集者" -#: ../../Fixed-or-Improved-Logics.md:609 +#: ../../Fixed-or-Improved-Logics.md:616 msgid "" "Vehicles with `Weeder=yes` can now collect weeds. The weeds can then be " "deposited into a building with `Weeder=yes`." msgstr "拥有 `Weeder=yes` 的载具现在可以收集泰伯利亚废矿。然后这些废矿可以存入 `Weeder=yes` 的建筑中。" -#: ../../Fixed-or-Improved-Logics.md:610 +#: ../../Fixed-or-Improved-Logics.md:617 msgid "" "Weeds are not stored in a building's storage, but rather in a House's " "storage. The weed capacity is listed under `[General] -> WeedCapacity`." msgstr "泰伯利亚废矿并不是储藏在储存仓建筑中而是这个阵营的内部数据。废矿的储藏量读取自 `[General] -> WeedCapacity`。" -#: ../../Fixed-or-Improved-Logics.md:611 +#: ../../Fixed-or-Improved-Logics.md:618 msgid "" "Weeders now show the ore gathering animation. It can be customized the " "same way as for harvesters." msgstr "废矿矿车现在可以像普通矿车那样自定义矿石采集动画。" -#: ../../Fixed-or-Improved-Logics.md:612 +#: ../../Fixed-or-Improved-Logics.md:619 msgid "Weeders can use the Teleport locomotor like chrono miners." msgstr "废矿矿车可以像超时空矿车一样使用 Teleport 运动模式。" -#: ../../Fixed-or-Improved-Logics.md:613 +#: ../../Fixed-or-Improved-Logics.md:620 msgid "" "Total amount of weeds in storage can be displayed on sidebar, see [Weeds " "counter](User-Interface.md#weeds-counter)." msgstr "储存的废矿总量可以在侧边栏上显示,参见 [废矿计数器](User-Interface.md#weeds-counter)。" -#: ../../Fixed-or-Improved-Logics.md:615 +#: ../../Fixed-or-Improved-Logics.md:622 msgid "Weed-consuming superweapons" msgstr "消耗废矿的超级武器" -#: ../../Fixed-or-Improved-Logics.md:617 +#: ../../Fixed-or-Improved-Logics.md:624 msgid "" "Superweapons can consume weeds to recharge, like the Chemical Missile " "special in Tiberian Sun." msgstr "超级武器可以消耗泰伯利亚废矿来加载,就像《泰伯利亚之日》中的化学飞弹一样。" -#: ../../Fixed-or-Improved-Logics.md:620 +#: ../../Fixed-or-Improved-Logics.md:627 msgid "" "As the code for the Chemical Missile had been removed, setting " "`Type=ChemMissile` will not work." msgstr "由于化学飞弹的代码已被移除,设置 `Type=ChemMissile` 并不会生效。" -#: ../../Fixed-or-Improved-Logics.md:624 +#: ../../Fixed-or-Improved-Logics.md:631 #, python-format msgid "" "[SOMESW] ; SuperWeaponType\n" @@ -2814,11 +2858,11 @@ msgstr "" " weeds % are stored, the SW will show it's ready on the building (open " "nuke/open chrono, etc.)\n" -#: ../../Fixed-or-Improved-Logics.md:632 +#: ../../Fixed-or-Improved-Logics.md:639 msgid "Voxel light source customization" msgstr "自定义 Voxel 光源" -#: ../../Fixed-or-Improved-Logics.md:634 +#: ../../Fixed-or-Improved-Logics.md:641 msgid "" "![image](_static/images/VoxelLightSourceComparison1.png) " "![image](_static/images/VoxelLightSourceComparison2.png) *Voxel by C&CrispS(另存为并解压第二张图片即可获得包括 pal & vpl 的示例文件)*" -#: ../../Fixed-or-Improved-Logics.md:638 +#: ../../Fixed-or-Improved-Logics.md:645 msgid "" "It is now possible to change the position of the light relative to the " "voxels. This allows for better lighting to be set up." msgstr "现在可以改变光源相对于 Voxel 素材的位置。这有助于更好的设置光照。" -#: ../../Fixed-or-Improved-Logics.md:639 +#: ../../Fixed-or-Improved-Logics.md:646 msgid "" "Only the direction of the light is accounted, the distance to the voxel " "is not accounted." msgstr "仅考虑光源的方向,不考虑与 Voxel 的距离(视为平行光)" -#: ../../Fixed-or-Improved-Logics.md:640 +#: ../../Fixed-or-Improved-Logics.md:647 msgid "" "Vanilla light (assuming `UseFixedVoxelLighting=false`) is located roughly" " at `VoxelLightSource=0.201,-0.907,-0.362`." @@ -2852,7 +2896,7 @@ msgstr "" "原版光照(假设 `UseFixedVoxelLighting=false`)大致位于 " "`VoxelLightSource=0.201,-0.907,-0.362`。" -#: ../../Fixed-or-Improved-Logics.md:643 +#: ../../Fixed-or-Improved-Logics.md:650 msgid "" "[AudioVisual]\n" "UseFixedVoxelLighting=false ; boolean, whether to fix the lighting\n" @@ -2864,7 +2908,7 @@ msgstr "" "VoxelLightSource= ; X,Y,Z - position of the light in the world" " relative to each voxel, floating point values\n" -#: ../../Fixed-or-Improved-Logics.md:650 +#: ../../Fixed-or-Improved-Logics.md:657 msgid "" "In order to easily preview the light source settings use the [VXL Viewer " "and VPL Generator tool by thomassneddon](https://github.com/ThomasSneddon" @@ -2877,24 +2921,24 @@ msgstr "" "renderer/releases)。使用该工具时**先将其解压**然后将需要预览的 Voxel 文件**拖拽**到工具上(辅助 VXL 和 " "HVA 文件必须在同一文件夹中)。" -#: ../../Fixed-or-Improved-Logics.md:652 +#: ../../Fixed-or-Improved-Logics.md:659 msgid "" "Keep in mind that the tool doesn't account for " "`UseFixedVoxelLighting=true` as of yet, so the values shown in tool need " "to be offset when putting in the game with with fixed voxel lighting." msgstr "请注意该工具目前尚未考虑 `UseFixedVoxelLighting=true` 的情况,因此工具中显示的值在启用该修复项的游戏中需要进行调整。" -#: ../../Fixed-or-Improved-Logics.md:655 +#: ../../Fixed-or-Improved-Logics.md:662 msgid "Waypoints for buildings" msgstr "建筑路径点" -#: ../../Fixed-or-Improved-Logics.md:657 +#: ../../Fixed-or-Improved-Logics.md:664 msgid "" "In vanilla, buildings are forbidden to use waypoints. Now you can allow " "that using the following flag." msgstr "在原版中,建筑被禁止使用路径点。现在你可以使用以下标签来允许使用。" -#: ../../Fixed-or-Improved-Logics.md:660 +#: ../../Fixed-or-Improved-Logics.md:667 msgid "" "[General]\n" "BuildingWaypoints=false ; boolean\n" @@ -2902,21 +2946,21 @@ msgstr "" "[General]\n" "BuildingWaypoints=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:665 +#: ../../Fixed-or-Improved-Logics.md:672 msgid "Aircraft" msgstr "战机类型" -#: ../../Fixed-or-Improved-Logics.md:667 +#: ../../Fixed-or-Improved-Logics.md:674 msgid "Carryall pickup voice" msgstr "吊运拾取音效" -#: ../../Fixed-or-Improved-Logics.md:669 +#: ../../Fixed-or-Improved-Logics.md:676 msgid "" "It is now possible to override `VoiceMove` for `Carryall=true` aircraft " "for when commanding it to pick up vehicles by setting `VoicePickup`." msgstr "现在可以通过设置 `VoicePickup` 来覆盖 `Carryall=true` 战机在命令其拾取载具时的 `VoiceMove` 音效。" -#: ../../Fixed-or-Improved-Logics.md:672 +#: ../../Fixed-or-Improved-Logics.md:679 msgid "" "[SOMEAIRCRAFT] ; AircraftType\n" "VoicePickup= ; Sound entry\n" @@ -2924,18 +2968,18 @@ msgstr "" "[SOMEAIRCRAFT] ; AircraftType\n" "VoicePickup= ; Sound entry\n" -#: ../../Fixed-or-Improved-Logics.md:677 +#: ../../Fixed-or-Improved-Logics.md:684 msgid "Customize the scatter caused by aircraft attack mission" msgstr "自定义战机攻击任务引发分散" -#: ../../Fixed-or-Improved-Logics.md:679 +#: ../../Fixed-or-Improved-Logics.md:686 msgid "" "In vanilla, when an aircraft attacks, it forces the target's cell to " "trigger a scatter. Now you can disable this behavior by setting the " "following flag to `false`." msgstr "在原版中当一架战机发起攻击它会强制触发目标单元格上的分散效果。现在你可以通过将下面的语句设为 `false` 来禁用该行为。" -#: ../../Fixed-or-Improved-Logics.md:682 +#: ../../Fixed-or-Improved-Logics.md:689 msgid "" "[SOMEAIRCRAFT] ; AircraftType\n" "FiringForceScatter=true ; boolean\n" @@ -2943,15 +2987,15 @@ msgstr "" "[SOMEAIRCRAFT] ; AircraftType\n" "FiringForceScatter=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:687 +#: ../../Fixed-or-Improved-Logics.md:694 msgid "Extended Aircraft Missions" msgstr "拓展的战机任务" -#: ../../Fixed-or-Improved-Logics.md:689 +#: ../../Fixed-or-Improved-Logics.md:696 msgid "Aircraft will now be able to use waypoints." msgstr "战机现在将能够使用路径点。" -#: ../../Fixed-or-Improved-Logics.md:690 +#: ../../Fixed-or-Improved-Logics.md:697 msgid "" "When a `guard` command (`[G]` by default) or a `area guard` command " "(`[Ctrl]+[Alt]`) is issued, the aircraft will search for targets around " @@ -2962,13 +3006,13 @@ msgstr "" "命令(`[Ctrl]+[Alt]`)时战机将根据位置(`guard` 为当前位置,`area guard` " "为目标位置)周围搜素目标并在弹药耗尽时立即返回。" -#: ../../Fixed-or-Improved-Logics.md:691 +#: ../../Fixed-or-Improved-Logics.md:698 msgid "" "If the target is not found, or if there is still ammo when the target is " "destroyed, it will continue to hover over the guarded area." msgstr "若未发现目标,或摧毁目标后仍有弹药,则继续在警戒区域上方巡游。" -#: ../../Fixed-or-Improved-Logics.md:692 +#: ../../Fixed-or-Improved-Logics.md:699 msgid "" "When an `attack move` command (`[Ctrl]+[Shift]`) is issued, the aircraft " "will move towards the destination and search for nearby targets on the " @@ -2978,18 +3022,18 @@ msgstr "" "当发出 `attack move` " "命令(`[Ctrl]+[Shift]`)时战机将向目的地移动并在路线上搜索附近的目标进行攻击。一旦弹药耗尽或抵达目的地,它将返回。" -#: ../../Fixed-or-Improved-Logics.md:693 +#: ../../Fixed-or-Improved-Logics.md:700 msgid "" "If the automatically selected target is destroyed but ammo is not " "depleted yet during the process, the aircraft will continue flying to the" " destination." msgstr "如果在过程中自动选择的目标被摧毁但弹药尚未耗尽,战机将继续飞往目的地。" -#: ../../Fixed-or-Improved-Logics.md:694 +#: ../../Fixed-or-Improved-Logics.md:701 msgid "In addition, the actions of aircraft are also changed." msgstr "此外,战机的行为也可以更改。" -#: ../../Fixed-or-Improved-Logics.md:695 +#: ../../Fixed-or-Improved-Logics.md:702 msgid "" "`ExtendedAircraftMissions.SmoothMoving` controls whether the aircraft " "will return to the airport when the distance to the destination is less " @@ -2998,7 +3042,7 @@ msgstr "" "`ExtendedAircraftMissions.SmoothMoving` 控制战机距离目的地距离小于 `SlowdownDistance` " "的一半或其转弯半径时是否会返回机场。" -#: ../../Fixed-or-Improved-Logics.md:696 +#: ../../Fixed-or-Improved-Logics.md:703 msgid "" "`ExtendedAircraftMissions.EarlyDescend` controls whether the aircraft not" " have to fly directly above the airport before starting to descend when " @@ -3008,7 +3052,7 @@ msgstr "" "`ExtendedAircraftMissions.EarlyDescend` 控制战机距离着陆点小于 `SlowdownDistance` " "时是否无需飞越机场正上方即可开始下降(对航母舰载机同样有效)。" -#: ../../Fixed-or-Improved-Logics.md:697 +#: ../../Fixed-or-Improved-Logics.md:704 msgid "" "`ExtendedAircraftMissions.RearApproach` controls whether the aircraft " "should start landing at the airport from the opposite direction of " @@ -3017,13 +3061,13 @@ msgstr "" "`ExtendedAircraftMissions.RearApproach` 控制战机返回机场时是否应从与 `LandingDir` " "相反的方向飞入,即下降时向 `LandingDir` 的方向飞行并着陆。" -#: ../../Fixed-or-Improved-Logics.md:698 +#: ../../Fixed-or-Improved-Logics.md:705 msgid "" "`ExtendedAircraftMissions.FastScramble` controls whether the aircraft can" " scramble when its airport has been destroyed." msgstr "`ExtendedAircraftMissions.FastScramble` 控制战机在所属的机场被摧毁后是否仍能紧急升空。" -#: ../../Fixed-or-Improved-Logics.md:699 +#: ../../Fixed-or-Improved-Logics.md:706 msgid "" "`ExtendedAircraftMissions.UnlandDamage` controls the damage suffered by " "the aircraft every 4 frames when there is no airport for the aircraft to " @@ -3033,7 +3077,7 @@ msgstr "" "`ExtendedAircraftMissions.UnlandDamage` 控制战机在无机场可降落时每 4 " "帧受到的损伤。若为负则立即坠毁。未启用 `ExtendedAircraftMissions` 时不建议使用此参数。" -#: ../../Fixed-or-Improved-Logics.md:702 +#: ../../Fixed-or-Improved-Logics.md:709 msgid "" "[General]\n" "ExtendedAircraftMissions=false ; boolean\n" @@ -3067,7 +3111,7 @@ msgstr "" "ExtendedAircraftMissions.UnlandDamage= ; integer, default to [General]" " -> ExtendedAircraftMissions.UnlandDamage\n" -#: ../../Fixed-or-Improved-Logics.md:716 +#: ../../Fixed-or-Improved-Logics.md:723 msgid "" "And now when `ExtendedAircraftMissions` is enabled, aircraft that can " "land at the airport will check at any time to see if they have a dock. " @@ -3078,11 +3122,11 @@ msgstr "" "目前当 `ExtendedAircraftMissions` " "被启用时,能够降落到机场的战机会始终检查自身是否拥有用于停靠的机位。因此若你的任务中需要存在能够降落到机场的战机但没有提供足够的空余机位也没有禁用该功能,那么这些战机将立即坠毁。" -#: ../../Fixed-or-Improved-Logics.md:719 +#: ../../Fixed-or-Improved-Logics.md:726 msgid "Fixed spawn distance & spawn height for airstrike / SpyPlane aircraft" msgstr "空袭战机和侦察机的生成距离和生成高度" -#: ../../Fixed-or-Improved-Logics.md:721 +#: ../../Fixed-or-Improved-Logics.md:728 msgid "" "It is now possible to have aircraft spawned from " "`(Elite)AirstrikeTeamType` or `Type=SpyPlane` superweapons to be created " @@ -3092,7 +3136,7 @@ msgstr "" "现在可以通过设置 `SpawnDistanceFromTarget` 来让由 `(Elite)AirstrikeTeamType` 或 " "`Type=SpyPlane` 超级武器生成的战机在与目标/目的地固定距离处生成而不再是地图边界。" -#: ../../Fixed-or-Improved-Logics.md:722 +#: ../../Fixed-or-Improved-Logics.md:729 msgid "" "`SpawnHeight` can also be used to override the initial height of the " "aircraft, which defaults to `FlightLevel`, or if not set then `[General] " @@ -3101,18 +3145,18 @@ msgstr "" "也可以通过 `SpawnHeight` 来覆盖战机的初始高度,默认为 `FlightLevel`,如果没有设置则使用 `[General] -> " "FlightLevel`。" -#: ../../Fixed-or-Improved-Logics.md:725 +#: ../../Fixed-or-Improved-Logics.md:732 msgid "" "[SOMEAIRCRAFT] ; AircraftType\n" "SpawnDistanceFromTarget= ; floating point value, distance in cells\n" "SpawnHeight= ; integer, height in leptons\n" msgstr "" -#: ../../Fixed-or-Improved-Logics.md:731 +#: ../../Fixed-or-Improved-Logics.md:738 msgid "Landing direction" msgstr "降落方向" -#: ../../Fixed-or-Improved-Logics.md:733 +#: ../../Fixed-or-Improved-Logics.md:740 msgid "" "By default aircraft land facing the direction specified by `[AudioVisual]" " -> PoseDir`. This can now be customized per AircraftType via " @@ -3124,13 +3168,13 @@ msgstr "" " 进行自定义,默认为 `[AudioVisual] -> PoseDir`。如果战机停靠的建筑设置了[战机停靠方向](#aircraft-" "docking-direction),则该设置优先于此设置。" -#: ../../Fixed-or-Improved-Logics.md:734 +#: ../../Fixed-or-Improved-Logics.md:741 msgid "" "Negative values are allowed as a special case for `AirportBound=false` " "aircraft which makes them land facing their current direction." msgstr "对于 `AirportBound=false` 的战机允许使用负值以使其降落时面向当前方向。" -#: ../../Fixed-or-Improved-Logics.md:737 +#: ../../Fixed-or-Improved-Logics.md:744 msgid "" "[SOMEAIRCRAFT] ; AircraftType\n" "LandingDir= ; Direction type (integers from 0-255). Accepts negative " @@ -3140,15 +3184,15 @@ msgstr "" "LandingDir= ; Direction type (integers from 0-255). Accepts negative " "values as a special case.\n" -#: ../../Fixed-or-Improved-Logics.md:742 +#: ../../Fixed-or-Improved-Logics.md:749 msgid "Animations" msgstr "动画类型" -#: ../../Fixed-or-Improved-Logics.md:744 +#: ../../Fixed-or-Improved-Logics.md:751 msgid "Animation weapon and damage settings" msgstr "动画武器和伤害设置" -#: ../../Fixed-or-Improved-Logics.md:746 +#: ../../Fixed-or-Improved-Logics.md:753 msgid "" "`Weapon` can be set to a WeaponType, to create a projectile and " "immediately detonate it instead of simply dealing `Damage` by `Warhead`. " @@ -3157,7 +3201,7 @@ msgstr "" "现在 `Weapon` 可以设置为完整的 WeaponType,以创建一个抛射体并立即引爆,而不是简单地通过 `Warhead` 造成 " "`Damage`。这允许武器效果正常使用。" -#: ../../Fixed-or-Improved-Logics.md:747 +#: ../../Fixed-or-Improved-Logics.md:754 msgid "" "`Damage.Delay` determines delay between two applications of `Damage`. " "Requires `Damage` to be set to 1.0 or above. Value of 0 disables the " @@ -3168,7 +3212,7 @@ msgstr "" "`Damage.Delay` 确定两次应用 `Damage` 之间的间隔。需要将 `Damage` 设置为 1.0 或更高。值为 0 " "将禁用间隔。请注意这是以动画帧为单位而不是游戏帧。动画会根据 `Rate` 可能在每个游戏帧上推进动画帧也可能不进行推进。" -#: ../../Fixed-or-Improved-Logics.md:748 +#: ../../Fixed-or-Improved-Logics.md:755 msgid "" "`Damage.DealtByInvoker`, if set to true, makes any `Damage` dealt to be " "considered as coming from the animation's invoker (f.ex, firer of the " @@ -3185,14 +3229,14 @@ msgstr "" "动画则为被摧毁的载具;或者动画所附着的对象)。即便调用者已经死亡或不存在也会继续使用调用者的所属方来造成伤害并应用 Phobos " "引入的弹头效果。若未设置该参数则默认使用动画所有者的所属方,若动画无所有者则使用动画所附着对象的所属方。" -#: ../../Fixed-or-Improved-Logics.md:749 +#: ../../Fixed-or-Improved-Logics.md:756 msgid "" "`Damage.ApplyFirepowerMult` determines whether or not firepower modifiers" " from the animation's invoker are applied on the damage dealt from this " "animation, if exists." msgstr "`Damage.ApplyFirepowerMult` 决定动画存在调用者时是否可以获取其火力加成效果。" -#: ../../Fixed-or-Improved-Logics.md:750 +#: ../../Fixed-or-Improved-Logics.md:757 msgid "" "`Damage.ApplyOncePerLoop`, if set to true, makes `Damage` be dealt only " "once per animation loop (on single loop animations, only once, period) " @@ -3204,7 +3248,7 @@ msgstr "" "`Damage`(在单次循环的动画中只会造成一次)而不是在每帧或由 `Damage.Delay` 定义的间隔造成。造成伤害的帧由 " "`Damage.Delay` 决定,默认为在第一个动画帧之后。" -#: ../../Fixed-or-Improved-Logics.md:753 +#: ../../Fixed-or-Improved-Logics.md:760 msgid "" "[SOMEANIM] ; AnimationType\n" "Weapon= ; WeaponType\n" @@ -3220,7 +3264,7 @@ msgstr "" "Damage.ApplyOncePerLoop=false ; boolean\n" "Damage.ApplyFirepowerMult=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:763 +#: ../../Fixed-or-Improved-Logics.md:770 msgid "" "`Weapon` and `Damage.Delay`, beyond the other additions, should function " "similarly to the equivalent features introduced by Ares and take " @@ -3229,27 +3273,27 @@ msgstr "" "`Weapon` 和 `Damage.Delay`,除了其他新增功能外应与 Ares 引入的等效功能类似,并且在 Phobos 与 Ares " "一起使用时优先于它们。" -#: ../../Fixed-or-Improved-Logics.md:766 +#: ../../Fixed-or-Improved-Logics.md:773 msgid "Attached animation position customization" msgstr "自定义附着动画位置" -#: ../../Fixed-or-Improved-Logics.md:768 +#: ../../Fixed-or-Improved-Logics.md:775 msgid "" "You can now customize position of attached animations via different " "values for `AttachedAnimPosition`." msgstr "现在你可以通过为 `AttachedAnimPosition` 设置不同的值来自定义附着动画显示的位置。" -#: ../../Fixed-or-Improved-Logics.md:769 +#: ../../Fixed-or-Improved-Logics.md:776 msgid "" "`default`: Animation shows up at the parent object's logical position " "(for buildings, this is the top-leftmost cell / cell #0)." msgstr "`default`:动画显示在父对象的逻辑中心(对于建筑,这是最上方的 0 号单元格)。" -#: ../../Fixed-or-Improved-Logics.md:770 +#: ../../Fixed-or-Improved-Logics.md:777 msgid "`center`: Animation shows up at the parent object's visual center." msgstr "`center`:动画显示在父对象的视觉中心。" -#: ../../Fixed-or-Improved-Logics.md:771 +#: ../../Fixed-or-Improved-Logics.md:778 msgid "" "`ground`: Animation shows up at the parent object's visual center but " "forced to ground level. Note that the animations is still considered " @@ -3257,7 +3301,7 @@ msgid "" "object itself would cover unless other settings are used to compensate." msgstr "`ground`:动画显示在父对象视觉中心正下方所对应的地面。注意该动画仍被视为附着于对象,因此如果不通过其他设置进行调整的话该动画的图层可能在该对象本应覆盖的其他对象之上。" -#: ../../Fixed-or-Improved-Logics.md:774 +#: ../../Fixed-or-Improved-Logics.md:781 msgid "" "[SOMEANIM] ; AnimationType\n" "AttachedAnimPosition=default ; Attached animation position enumeration " @@ -3267,11 +3311,11 @@ msgstr "" "AttachedAnimPosition=default ; Attached animation position enumeration " "(default|center|ground)\n" -#: ../../Fixed-or-Improved-Logics.md:779 ../../Fixed-or-Improved-Logics.md:2219 +#: ../../Fixed-or-Improved-Logics.md:786 ../../Fixed-or-Improved-Logics.md:2237 msgid "Customizable debris & meteor impact and warhead detonation behaviour" msgstr "自定义碎片 & 流星撞击和弹头引爆行为" -#: ../../Fixed-or-Improved-Logics.md:781 +#: ../../Fixed-or-Improved-Logics.md:788 msgid "" "`ExplodeOnWater` can be set to true to make the animation explode on " "impact with water. `ExpireAnim` will be played and `Warhead` is detonated" @@ -3280,7 +3324,7 @@ msgstr "" "`Warhead.Detonate` 设置为 true 可以使动画在与水面接触时爆炸。`ExpireAnim` 将被触发,`Warhead` " "将被引爆或用于造成伤害/产生闪光。" -#: ../../Fixed-or-Improved-Logics.md:782 +#: ../../Fixed-or-Improved-Logics.md:789 msgid "" "`Warhead.Detonate`, if set to true, makes the `Warhead` fully detonate " "instead of simply being used to deal damage and generate light flash if " @@ -3289,7 +3333,7 @@ msgstr "" "如果将 `Warhead.Detonate` 设置为 true,则 `Warhead` 将完全引爆,而不仅仅是用于造成伤害和产生闪光(如果它拥有 " "`Bright=true`)。" -#: ../../Fixed-or-Improved-Logics.md:783 +#: ../../Fixed-or-Improved-Logics.md:790 msgid "" "`WakeAnim` contains wake animations to play if `ExplodeOnWater` is not " "set and the animation impacts with water. Defaults to `[General] -> Wake`" @@ -3299,13 +3343,13 @@ msgstr "" "`WakeAnim` 包含一组在 `ExplodeOnWater` 没有设置且动画与水面接触时使用的水波动画。如果 `IsMeteor` 未设置为" " true 则默认为 `[General] -> Wake`,否则无动画。如果列出了多个动画,则将随机选择一个。" -#: ../../Fixed-or-Improved-Logics.md:784 +#: ../../Fixed-or-Improved-Logics.md:791 msgid "" "`SplashAnims` contains list of splash animations used if `ExplodeOnWater`" " is not set and the animation impacts with water." msgstr "`SplashAnims` 包含一组在 `ExplodeOnWater` 没有设置且动画与水面接触时使用的水花动画。" -#: ../../Fixed-or-Improved-Logics.md:785 +#: ../../Fixed-or-Improved-Logics.md:792 msgid "" "If `SplashAnims.PickRandom` is set to true, picks a random animation from" " `SplashAnims` to use on each impact with water. Otherwise last listed " @@ -3314,13 +3358,13 @@ msgstr "" "如果设置 `SplashAnims.PickRandom` 为 true,则从 `SplashAnims` 中随机选择一个动画。否则使用 " "`SplashAnims` 中列出的最后一个动画。" -#: ../../Fixed-or-Improved-Logics.md:786 +#: ../../Fixed-or-Improved-Logics.md:793 msgid "" "`ExtraShadow` can be set to false to disable the display of shadows on " "the ground." msgstr "`ExtraShadow` 可以设为 false 以禁用地面上的影子显示。" -#: ../../Fixed-or-Improved-Logics.md:789 +#: ../../Fixed-or-Improved-Logics.md:796 msgid "" "[SOMEANIM] ; AnimationType\n" "ExplodeOnWater=false ; boolean\n" @@ -3340,18 +3384,18 @@ msgstr "" "SplashAnims.PickRandom=false ; boolean\n" "ExtraShadow=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:799 +#: ../../Fixed-or-Improved-Logics.md:806 msgid "Customize whether `Crater=yes` animation would destroy tiberium" msgstr "自定义 `Crater=yes` 的动画能否摧毁矿石" -#: ../../Fixed-or-Improved-Logics.md:801 +#: ../../Fixed-or-Improved-Logics.md:808 msgid "" "In vanilla, the anim with `Crater=yes` is hardcoded to destroy the " "tiberium in its cell. Now you can disable this behavior by setting the " "following tags to `false`." msgstr "在原版中带有 `Crater=yes` 的动画硬编码会摧毁其所在单元格的矿石。现在你可以通过将下面的语句设为 `false` 来禁用该行为。" -#: ../../Fixed-or-Improved-Logics.md:804 +#: ../../Fixed-or-Improved-Logics.md:811 msgid "" "[General]\n" "AnimCraterDestroyTiberium=true ; boolean\n" @@ -3359,7 +3403,7 @@ msgstr "" "[General]\n" "AnimCraterDestroyTiberium=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:810 +#: ../../Fixed-or-Improved-Logics.md:817 msgid "" "[SOMEANIM] ; AnimationType\n" "Crater.DestroyTiberium= ; boolean, default to [General] -> " @@ -3369,11 +3413,11 @@ msgstr "" "Crater.DestroyTiberium= ; boolean, default to [General] -> " "AnimCraterDestroyTiberium\n" -#: ../../Fixed-or-Improved-Logics.md:815 +#: ../../Fixed-or-Improved-Logics.md:822 msgid "Fire animations spawned by Scorch & Flamer" msgstr "由 Scorch 和 Flamer 生成的火焰动画" -#: ../../Fixed-or-Improved-Logics.md:817 +#: ../../Fixed-or-Improved-Logics.md:824 msgid "" "Tiberian Sun allowed `Scorch=true` and `Flamer=true` animations to spawn " "fire animations from `[AudioVisual] -> SmallFire` & `LargeFire`. This " @@ -3382,14 +3426,14 @@ msgstr "" "《泰伯利亚之日》中允许 `Scorch=true` 和 `Flamer=true` 的动画生成 `[AudioVisual] -> " "SmallFire` 和 `LargeFire` 指定的火焰动画。此行为已重新实现,并且完全可自定义。" -#: ../../Fixed-or-Improved-Logics.md:818 +#: ../../Fixed-or-Improved-Logics.md:825 msgid "" "`ConstrainFireAnimsToCellSpots` controls whether or not spawned " "animations are locked to cell spots (e.g the subcell positions infantry " "are also constrained to)." msgstr "`ConstrainFireAnimsToCellSpots` 控制生成的动画是否锁定到单元格位置(例如步兵也受子单元格位置限制)。" -#: ../../Fixed-or-Improved-Logics.md:819 +#: ../../Fixed-or-Improved-Logics.md:826 msgid "" "`FireAnimDisallowedLandTypes` controls which landtypes the fire " "animations are not allowed to spawn on. Defaults to " @@ -3398,7 +3442,7 @@ msgstr "" "`FireAnimDisallowedLandTypes` 控制不允许生成火焰动画的地形类型。对于 `Scorch=true` 默认为 " "`water,rock,beach,ice` 否则为 `none`。" -#: ../../Fixed-or-Improved-Logics.md:820 +#: ../../Fixed-or-Improved-Logics.md:827 msgid "" "`AttachFireAnimsToParent` controls if the spawned animations are attached" " to the owner of the parent animation if it is also attached. Defaults to" @@ -3407,7 +3451,7 @@ msgstr "" "`AttachFireAnimsToParent` 控制生成的动画是否附着于父动画所附着的对象(如果父动画也是附着动画)。对于 " "`Scorch=true` 默认为 true,否则为 false。" -#: ../../Fixed-or-Improved-Logics.md:821 +#: ../../Fixed-or-Improved-Logics.md:828 msgid "" "`SmallFireCount` determines number of small fire animations to spawn by " "both `Scorch=true` and `Flamer=true` animations. Defaults to 2 for " @@ -3416,13 +3460,13 @@ msgstr "" "`SmallFireCount` 决定由 `Scorch=true` 和 `Flamer=true` 动画生成小火焰动画的数量。对于 " "`Flamer=true` 默认为 2,否则为 1。" -#: ../../Fixed-or-Improved-Logics.md:822 +#: ../../Fixed-or-Improved-Logics.md:829 msgid "" "`SmallFireAnims` can be used to set the animation types, defaults to " "`[AudioVisual] -> SmallFire` (single animation)." msgstr "`SmallFireAnims` 可以用于设置动画类型,默认为 `[AudioVisual] -> SmallFire`(单个动画)。" -#: ../../Fixed-or-Improved-Logics.md:823 +#: ../../Fixed-or-Improved-Logics.md:830 msgid "" "`SmallFireChances` is a list of probabilities for the animations to " "spawn, up to `SmallFireCount` amount of items are read. Last item listed " @@ -3433,7 +3477,7 @@ msgstr "" "数量的项。如果计数超出列出的概率数量则超出部分使用最后一个列出的概率。对于 `Flamer=true` 默认为 `1.0,0.5`,否则为 " "`1.0`。" -#: ../../Fixed-or-Improved-Logics.md:824 +#: ../../Fixed-or-Improved-Logics.md:831 msgid "" "`SmallFireDistances` is a list of distances in cells for the animations " "to spawn at from the parent animation's coordinates, up to " @@ -3445,19 +3489,19 @@ msgstr "" "数量的项。如果计数超出列出的概率数量则超出部分使用最后一个列出的概率。对于 `Flamer=true` 默认为 `0.25,0.625`,否则为 " "`0.0`。" -#: ../../Fixed-or-Improved-Logics.md:825 +#: ../../Fixed-or-Improved-Logics.md:832 msgid "" "`LargeFireCount` determines number of large fire animations to spawn by " "`Flamer=true` animations only." msgstr "`LargeFireCount` 决定仅由 `Flamer=true` 动画生成的大火焰动画的数量。" -#: ../../Fixed-or-Improved-Logics.md:826 +#: ../../Fixed-or-Improved-Logics.md:833 msgid "" "`LargeFireAnims` can be used to set the animation types, defaults to " "`[AudioVisual] -> LargeFire` (single animation)." msgstr "`LargeFireAnims` 可以用于设置动画类型,默认为 `[AudioVisual] -> LargeFire`(单个动画)。" -#: ../../Fixed-or-Improved-Logics.md:827 +#: ../../Fixed-or-Improved-Logics.md:834 msgid "" "`LargeFireChances` is a list of probabilities for the animations to " "spawn, up to `LargeFireCount` amount of items are read. Last item listed " @@ -3466,7 +3510,7 @@ msgstr "" "`LargeFireChances` 是一个用于动画生成的概率列表,最多读取前 `LargeFireCount` " "数量的项。如果计数超出列出的概率数量则超出部分使用最后一个列出的概率。" -#: ../../Fixed-or-Improved-Logics.md:828 +#: ../../Fixed-or-Improved-Logics.md:835 msgid "" "`LargeFireDistances` is a list of distances in cells for the animations " "to spawn at from the parent animation's coordinates, up to " @@ -3476,7 +3520,7 @@ msgstr "" "`SmallFireDistances` 是一个用于动画相对父动画坐标生成位置单元格距离的列表,最多读取前 `LargeFireCount` " "数量的项。如果计数超出列出的概率数量则超出部分使用最后一个列出的概率。" -#: ../../Fixed-or-Improved-Logics.md:831 +#: ../../Fixed-or-Improved-Logics.md:838 msgid "" "[SOMEANIM] ; AnimationType\n" "ConstrainFireAnimsToCellSpots=true ; boolean\n" @@ -3516,25 +3560,25 @@ msgstr "" "LargeFireDistances=0.4375 ; List of floating point values, " "distance in cells\n" -#: ../../Fixed-or-Improved-Logics.md:847 +#: ../../Fixed-or-Improved-Logics.md:854 msgid "" "Save for the change that `Flamer` does not spawn animations if the parent" " animation is in air, the default settings should provide identical " "results to similar feature from Ares." msgstr "除了 `Flamer` 在父动画位于空中时不生成这一更改外,默认设置应该与 Ares 中类似功能拥有相同的效果。" -#: ../../Fixed-or-Improved-Logics.md:850 +#: ../../Fixed-or-Improved-Logics.md:857 msgid "Layer on animations attached to objects" msgstr "附加动画的图层" -#: ../../Fixed-or-Improved-Logics.md:852 +#: ../../Fixed-or-Improved-Logics.md:859 msgid "" "You can now customize whether or not animations attached to objects " "follow the object's layer or respect their own `Layer` setting. If this " "is unset, attached animations use `ground` layer." msgstr "现在你可以自定义让附加于对象的动画跟随对象的图层还是遵循它们自身的 `Layer` 设置。如果不设置,附加的动画会使用 `ground` 图层。" -#: ../../Fixed-or-Improved-Logics.md:855 +#: ../../Fixed-or-Improved-Logics.md:862 msgid "" "[SOMEANIM] ; AnimationType\n" "Layer.UseObjectLayer= ; boolean\n" @@ -3542,11 +3586,11 @@ msgstr "" "[SOMEANIM] ; AnimationType\n" "Layer.UseObjectLayer= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:860 +#: ../../Fixed-or-Improved-Logics.md:867 msgid "Ore stage threshold for `HideIfNoOre`" msgstr "`HideIfNoOre` 的矿石阶段阈值" -#: ../../Fixed-or-Improved-Logics.md:862 +#: ../../Fixed-or-Improved-Logics.md:869 msgid "" "You can now customize which growth stage should an ore/tiberium cell have" " to have animation with `HideIfNoOre` displayed. Cells with growth stage " @@ -3555,7 +3599,7 @@ msgstr "" "现在你可以自定义一个矿石/泰伯利亚所在的单元格至少需要到哪个生长阶段才能显示带有 `HideIfNoOre` " "的动画。生长阶段低于指定值的单元格将不允许动画显示。" -#: ../../Fixed-or-Improved-Logics.md:865 +#: ../../Fixed-or-Improved-Logics.md:872 msgid "" "[SOMEANIM] ; AnimationType\n" "HideIfNoOre.Threshold=0 ; integer, minimal ore growth stage\n" @@ -3563,38 +3607,38 @@ msgstr "" "[SOMEANIM] ; AnimationType\n" "HideIfNoOre.Threshold=0 ; integer, minimal ore growth stage\n" -#: ../../Fixed-or-Improved-Logics.md:870 +#: ../../Fixed-or-Improved-Logics.md:877 msgid "Buildings" msgstr "建筑类型" -#: ../../Fixed-or-Improved-Logics.md:872 +#: ../../Fixed-or-Improved-Logics.md:879 msgid "AI base construction modification" msgstr "AI 基地建设机制更改" -#: ../../Fixed-or-Improved-Logics.md:874 +#: ../../Fixed-or-Improved-Logics.md:881 msgid "AI can now have some new behaviors." msgstr "现在 AI 可以执行一些新的行为。" -#: ../../Fixed-or-Improved-Logics.md:875 +#: ../../Fixed-or-Improved-Logics.md:882 msgid "" "`AIAutoDeployMCV` controls whether AI will still automatically deploy the" " mcv after owning a construction yard." msgstr "`AIAutoDeployMCV` 控制 AI 在拥有建造厂后是否仍然会自动部署 MCV。" -#: ../../Fixed-or-Improved-Logics.md:876 +#: ../../Fixed-or-Improved-Logics.md:883 msgid "" "`AISetBaseCenter` controls whether AI will still set the newly deployed " "construction yard as the base center after owning a construction yard." msgstr "`AISetBaseCenter` 控制 AI 在拥有建造厂后是否仍会将新部署的建造厂设为基地中心。" -#: ../../Fixed-or-Improved-Logics.md:877 +#: ../../Fixed-or-Improved-Logics.md:884 msgid "" "`AIBiasSpawnCell` controls whether AI will preferentially select the " "construction yard close to the birth point as the base center (useless in" " campaign)." msgstr "`AIBiasSpawnCell` 控制 AI 是否优先选择靠近出生点的建造厂作为基地中心(战役模式无效)。" -#: ../../Fixed-or-Improved-Logics.md:878 +#: ../../Fixed-or-Improved-Logics.md:885 msgid "" "`AIForbidConYard` controls whether AI cannot place buildings with " "`ConstructionYard=true`. AI will try to build one after a construction " @@ -3605,13 +3649,13 @@ msgstr "" "`AIForbidConYard` 控制 AI 是否禁止摆放拥有 `ConstructionYard=true` 的建筑。当建造厂被摧毁后 AI " "会尝试重建但不会实际摆放。随后它会继续建造其他建筑。建造厂的建造仍会占用时间。你可以尝试缩短它的建造所需时长。" -#: ../../Fixed-or-Improved-Logics.md:879 +#: ../../Fixed-or-Improved-Logics.md:886 msgid "" "`AINodeWallsOnly` controls whether AI can only automatically connect " "adjacent walls when there are wall base nodes around." msgstr "`AINodeWallsOnly` 控制 AI 是否仅在周围存在围墙节点时才自动连接相邻围墙。" -#: ../../Fixed-or-Improved-Logics.md:880 +#: ../../Fixed-or-Improved-Logics.md:887 msgid "" "`AICleanWallNode` controls whether AI cannot place walls when there are " "no `ProtectWithWall` buildings around. If it cannot be placed, this base " @@ -3620,7 +3664,7 @@ msgstr "" "`AICleanWallNode` 控制 AI 是否在周边都是无 `ProtectWithWall` " "的建筑时禁止摆放围墙。若无法摆放,该基地节点将被一同移除。" -#: ../../Fixed-or-Improved-Logics.md:883 +#: ../../Fixed-or-Improved-Logics.md:890 msgid "" "[AI]\n" "AIAutoDeployMCV=true ; boolean\n" @@ -3638,11 +3682,11 @@ msgstr "" "AINodeWallsOnly=false ; boolean\n" "AICleanWallNode=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:893 +#: ../../Fixed-or-Improved-Logics.md:900 msgid "Aircraft docking direction" msgstr "战机停靠方向" -#: ../../Fixed-or-Improved-Logics.md:895 +#: ../../Fixed-or-Improved-Logics.md:902 msgid "" "It is now possible to customize the landing direction for docking " "aircraft via `AircraftDockingDir(N)` (`N` optionally replaced by 0-based " @@ -3657,7 +3701,7 @@ msgstr "" "是没有为特定偏移设置方向时将使用的同义词)来设置停靠战机的降落方向。这会覆盖战机自己的 [降落方向](#landing-direction) " "设置并默认为 `[AudioVisual] -> PoseDir`。" -#: ../../Fixed-or-Improved-Logics.md:898 +#: ../../Fixed-or-Improved-Logics.md:905 msgid "" "[SOMEBUILDING] ; BuildingType\n" "AircraftDockingDir(N)= ; Direction type (integers from 0-255)\n" @@ -3665,18 +3709,18 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "AircraftDockingDir(N)= ; Direction type (integers from 0-255)\n" -#: ../../Fixed-or-Improved-Logics.md:903 +#: ../../Fixed-or-Improved-Logics.md:910 msgid "Allows refineries to use multiple ActiveAnim simultaneously" msgstr "允许矿场同时播放多个 `ActiveAnim` 动画" -#: ../../Fixed-or-Improved-Logics.md:905 +#: ../../Fixed-or-Improved-Logics.md:912 msgid "" "In vanilla, the refinery uses different ActiveAnims depending on the " "storage. You can now make it use multiple ActiveAnims simultaneously like" " any other building." msgstr "在原版中矿场会根据其矿石存储量的不同播放不同的 `ActiveAnim`。现在你可以让它像其他建筑一样同时播放多个 `ActiveAnim`。" -#: ../../Fixed-or-Improved-Logics.md:908 +#: ../../Fixed-or-Improved-Logics.md:915 msgid "" "[SOMEBUILDING] ; BuildingType\n" "Refinery.UseNormalActiveAnim=false ; boolean\n" @@ -3684,11 +3728,11 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "Refinery.UseNormalActiveAnim=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:913 +#: ../../Fixed-or-Improved-Logics.md:920 msgid "Allowed / disallowed types for FactoryPlant" msgstr "工业工厂的类型限制" -#: ../../Fixed-or-Improved-Logics.md:915 +#: ../../Fixed-or-Improved-Logics.md:922 msgid "" "It is now possible to customize which TechnoTypes benefit from bonuses of" " a `FactoryPlant=true` building by listing them on " @@ -3697,13 +3741,13 @@ msgstr "" "现在可以通过在 `FactoryPlant.AllowTypes` 和 `FactoryPlant.DisallowTypes` " "中列出有哪些科技类型受到 `FactoryPlant=true` 建筑的加成。" -#: ../../Fixed-or-Improved-Logics.md:916 +#: ../../Fixed-or-Improved-Logics.md:923 msgid "" "`FactoryPlant.Multiplier` *(Ares feature)* is still applied on the " "bonuses if they are in effect." msgstr "`FactoryPlant.Multiplier`(*Ares 功能*)仍然会应用于加成。" -#: ../../Fixed-or-Improved-Logics.md:919 +#: ../../Fixed-or-Improved-Logics.md:926 msgid "" "[SOMEBUILDING] ; BuildingType\n" "FactoryPlant.AllowTypes= ; List of TechnoTypes\n" @@ -3713,11 +3757,11 @@ msgstr "" "FactoryPlant.AllowTypes= ; List of TechnoTypes\n" "FactoryPlant.DisallowTypes= ; List of TechnoTypes\n" -#: ../../Fixed-or-Improved-Logics.md:925 +#: ../../Fixed-or-Improved-Logics.md:932 msgid "Apply ZShapePointMove during buildups" msgstr "在拔起期间应用 ZShapePointMove" -#: ../../Fixed-or-Improved-Logics.md:927 +#: ../../Fixed-or-Improved-Logics.md:934 msgid "" "By default buildings do not apply `ZShapePointMove` (which offsets the 'z" " shape' applied on buildings which is used to adjust them in depth buffer" @@ -3729,7 +3773,7 @@ msgstr "" "以在深度缓冲区中调整它们并用于修复与此相关的例如建筑缺角等问题)。现在可以通过设置 `ZShapePointMove.OnBuildup` " "来开关此行为。" -#: ../../Fixed-or-Improved-Logics.md:930 +#: ../../Fixed-or-Improved-Logics.md:937 msgid "" "[SOMEBUILDING] ; BuildingType\n" "ZShapePointMove.OnBuildup=false ; boolean\n" @@ -3737,11 +3781,11 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "ZShapePointMove.OnBuildup=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:935 +#: ../../Fixed-or-Improved-Logics.md:942 msgid "Buildings considered as vehicles" msgstr "被视为载具的建筑" -#: ../../Fixed-or-Improved-Logics.md:937 +#: ../../Fixed-or-Improved-Logics.md:944 msgid "" "By default game considers buildings with both `UndeploysInto` set and " "`Foundation` equaling `1x1` as vehicles, in a manner of speaking. This " @@ -3753,13 +3797,13 @@ msgstr "" "总的来说默认情况下游戏将同时设置了 `UndeploysInto` 且 `Foundation=1x1` 的建筑视为载具。现在可以通过设置 " "`ConsideredVehicle` 来开关此行为。这些建筑在单位计数追踪中被视为载具,受损时不会被视为基地受到攻击,并且默认可以进行批量选择。" -#: ../../Fixed-or-Improved-Logics.md:938 +#: ../../Fixed-or-Improved-Logics.md:945 msgid "" "When capturing such \"buildings\", the player won't be notified by EVA " "capture event." msgstr "当占领此类 “建筑” 时,玩家不会收到 EVA 占领事件的播报。" -#: ../../Fixed-or-Improved-Logics.md:941 +#: ../../Fixed-or-Improved-Logics.md:948 msgid "" "[SOMEBUILDING] ; BuildingType\n" "ConsideredVehicle= ; boolean\n" @@ -3767,11 +3811,11 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "ConsideredVehicle= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:946 +#: ../../Fixed-or-Improved-Logics.md:953 msgid "Custom exit cell for infantry factory" msgstr "兵营自定义出口" -#: ../../Fixed-or-Improved-Logics.md:948 +#: ../../Fixed-or-Improved-Logics.md:955 msgid "" "By default `Factory=InfantryType` buildings use exit cell for the created" " infantry based on hardcoded settings if any of `GDIBarracks`, " @@ -3783,39 +3827,39 @@ msgstr "" "`Factory=InfantryType` 的建筑将会根据硬编码设置为创建的步兵设置出口单元格。现在可以通过 " "`BarracksExitCell` 为这类建筑定义任意单元格为出口。以下是硬编码值的单元格偏移量参考值。" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "Key" msgstr "标签" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "Cell Offset" msgstr "单元格偏移" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "`GDIBarracks`" msgstr "`GDIBarracks`" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "1,2" msgstr "1,2" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "`NODBarracks`" msgstr "`NODBarracks`" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "2,2" msgstr "2,2" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "`YuriBarracks`" msgstr "`YuriBarracks`" -#: ../../Fixed-or-Improved-Logics.md:846 +#: ../../Fixed-or-Improved-Logics.md:853 msgid "2,1" msgstr "2,1" -#: ../../Fixed-or-Improved-Logics.md:957 +#: ../../Fixed-or-Improved-Logics.md:964 msgid "" "[SOMEBUILDING] ; BuildingType\n" "BarracksExitCell= ; X,Y - cell offset\n" @@ -3823,23 +3867,23 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "BarracksExitCell= ; X,Y - cell offset\n" -#: ../../Fixed-or-Improved-Logics.md:962 +#: ../../Fixed-or-Improved-Logics.md:969 msgid "" "Custom whether to synchronously change the owner of the RadioLink-linked " "units when the owner of a building changes" -msgstr "" -"自定义单位是否会在其所连接建筑发生所属变更时同步变更所属" +msgstr "自定义单位是否会在其所连接建筑发生所属变更时同步变更所属" -#: ../../Fixed-or-Improved-Logics.md:964 +#: ../../Fixed-or-Improved-Logics.md:971 msgid "" "In vanilla, buildings with RadioLink (f.ex. war factory and air base) " "will change the owner of the RadioLink-linked units when the owner of the" " building changes. Now you can toggle this behaviour off by the following" " flags." msgstr "" -"在原版中,拥有 `RadioLink` 链接的建筑(例如战车工厂和机场)会在建筑发生所属变更时更改被 `RadioLink` 所链接单位的所属。现在你可以通过以下语句禁用该行为。" +"在原版中,拥有 `RadioLink` 链接的建筑(例如战车工厂和机场)会在建筑发生所属变更时更改被 " +"`RadioLink` 所链接单位的所属。现在你可以通过以下语句禁用该行为。" -#: ../../Fixed-or-Improved-Logics.md:967 +#: ../../Fixed-or-Improved-Logics.md:974 msgid "" "[General]\n" "BuildingRadioLink.SyncOwner=true ; boolean\n" @@ -3855,21 +3899,21 @@ msgstr "" "BuildingRadioLink.SyncOwner= ; boolean, default to [General] -> " "BuildingRadioLink.SyncOwner\n" -#: ../../Fixed-or-Improved-Logics.md:975 +#: ../../Fixed-or-Improved-Logics.md:982 msgid "Customizable garrison and bunker properties" msgstr "自定义驻军建筑与坦克碉堡属性" -#: ../../Fixed-or-Improved-Logics.md:977 +#: ../../Fixed-or-Improved-Logics.md:984 msgid "" "You can now customize damage or ROF multipliers of a garrison or tank " "bunker building." msgstr "现在可以自定义驻军建筑或坦克堡垒的 Damage 或 ROF 倍率。" -#: ../../Fixed-or-Improved-Logics.md:978 +#: ../../Fixed-or-Improved-Logics.md:985 msgid "You can now customize enter or exit sound of a tank bunker building." msgstr "现在可以自定义坦克碉堡建筑进入和离开时的音效。" -#: ../../Fixed-or-Improved-Logics.md:981 +#: ../../Fixed-or-Improved-Logics.md:988 msgid "" "[SOMEBUILDING] ; BuildingType\n" "OccupyDamageMultiplier= ; floating point value, default to " @@ -3899,13 +3943,13 @@ msgstr "" "BunkerWallsDownSound= ; Sound entry, default to [AudioVisual] -> " "BunkerWallsDownSound\n" -#: ../../Fixed-or-Improved-Logics.md:991 +#: ../../Fixed-or-Improved-Logics.md:998 msgid "" "Customizable selling buildup sequence length for buildings that can " "undeploy" msgstr "自定义可反部署建筑出售序列动画长度" -#: ../../Fixed-or-Improved-Logics.md:993 +#: ../../Fixed-or-Improved-Logics.md:1000 msgid "" "By default buildings with `UndeploysInto` will only play 23 frames of " "their buildup sequence (in reverse starting from last frame) when being " @@ -3915,7 +3959,7 @@ msgstr "" "默认情况下拥有 `UndeploysInto` 的建筑在出售时只会播放其建造动画序列的前 23 帧(从最后一帧开始反向播放)。现在可以通过 " "`SellBuildupLength` 自定义。" -#: ../../Fixed-or-Improved-Logics.md:996 +#: ../../Fixed-or-Improved-Logics.md:1003 msgid "" "[SOMEBUILDING] ; BuildingType\n" "SellBuildupLength=23 ; integer, number of buildup frames to play\n" @@ -3923,11 +3967,11 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "SellBuildupLength=23 ; integer, number of buildup frames to play\n" -#: ../../Fixed-or-Improved-Logics.md:1001 +#: ../../Fixed-or-Improved-Logics.md:1008 msgid "Customizable & new grinder properties" msgstr "自定义 & 新的部队回收站特性" -#: ../../Fixed-or-Improved-Logics.md:1003 +#: ../../Fixed-or-Improved-Logics.md:1010 msgid "" "![image](_static/images/grinding.gif) *Using ally grinder, restricting to" " vehicles only and refund display ([Project " @@ -3936,50 +3980,50 @@ msgstr "" "![image](_static/images/grinding.gif) *[幽灵计划](https://www.moddb.com/mods" "/project-phantom) 中使用友军的部队回收站、仅限载具以及显示资金*" -#: ../../Fixed-or-Improved-Logics.md:1006 +#: ../../Fixed-or-Improved-Logics.md:1013 msgid "" "You can now customize which types of objects a building with `Grinding` " "set can grind as well as the grinding sound." msgstr "现在你可以自定义具有 `Grinding` 设置的建筑可回收的对象类别以及回收使用的音效。" -#: ../../Fixed-or-Improved-Logics.md:1007 +#: ../../Fixed-or-Improved-Logics.md:1014 msgid "" "`Grinding.AllowAllies` changes whether or not to allow units to enter " "allies' buildings." msgstr "`Grinding.AllowAllies` 决定是否允许单位进入友军的这座建筑。" -#: ../../Fixed-or-Improved-Logics.md:1008 +#: ../../Fixed-or-Improved-Logics.md:1015 msgid "" "`Grinding.AllowOwner` changes whether or not to allow units to enter your" " own buildings." msgstr "`Grinding.AllowOwner` 决定是否允许单位进入己方的这座建筑。" -#: ../../Fixed-or-Improved-Logics.md:1009 +#: ../../Fixed-or-Improved-Logics.md:1016 msgid "" "`Grinding.AllowTypes` can be used to define InfantryTypes and " "VehicleTypes that can be grinded by the building. Listing any will " "disable grinding for all types except those listed." msgstr "`Grinding.AllowTypes` 可以用于定义可以被这座建筑回收的步兵和载具。只要设置列表就会导致其他不在表中的任何类型无法被回收。" -#: ../../Fixed-or-Improved-Logics.md:1010 +#: ../../Fixed-or-Improved-Logics.md:1017 msgid "" "`Grinding.DisallowTypes` can be used to exclude InfantryTypes or " "VehicleTypes from being able to enter the grinder building." msgstr "`Grinding.DisallowTypes` 可以定义不可被这座建筑回收的步兵和载具。" -#: ../../Fixed-or-Improved-Logics.md:1011 +#: ../../Fixed-or-Improved-Logics.md:1018 msgid "" "`Grinding.PlayDieSound` controls if the units' `DieSound` and `VoiceDie` " "are played when entering the grinder." msgstr "`Grinding.PlayDieSound` 控制单位的 `DieSound` 和 `VoiceDie` 是否都会在进入回收站时播放。" -#: ../../Fixed-or-Improved-Logics.md:1012 +#: ../../Fixed-or-Improved-Logics.md:1019 msgid "" "`Grinding.Sound` is a sound played by when object is grinded by the " "building." msgstr "`Grinding.Sound` 用于定义物体被这座建筑回收时所播放的音效。" -#: ../../Fixed-or-Improved-Logics.md:1013 +#: ../../Fixed-or-Improved-Logics.md:1020 msgid "" "`Grinding.Weapon` is a weapon fired at the building & by the building " "when it grinds an object. Will only be fired if at least weapon's `ROF` " @@ -3988,14 +4032,14 @@ msgstr "" "`Grinding.Weapon` 用于定义当建筑回收物体时由建筑向该建筑发射的武器。只有在其上次开火以来至少经过了武器 `ROF` " "设置的帧数后才能被发射。" -#: ../../Fixed-or-Improved-Logics.md:1014 +#: ../../Fixed-or-Improved-Logics.md:1021 msgid "" "`Grinding.Weapon.RequiredCredits` can be set to have the weapon require " "accumulated credits from grinding to fire. Accumulated credits for this " "purpose are reset every time when the weapon fires." msgstr "`Grinding.Weapon.RequiredCredits` 可以设置武器开火所需的资金。为此目的积累的资金会在每次武器开火时重置。" -#: ../../Fixed-or-Improved-Logics.md:1015 +#: ../../Fixed-or-Improved-Logics.md:1022 msgid "" "For money string indication upon grinding, please refer to " "[`DisplayIncome`](User-Interface.md#visual-indication-of-income-from-" @@ -4004,7 +4048,7 @@ msgstr "" "关于回收时的资金字符串提示,请参考 [`DisplayIncome`](User-Interface.md#visual-indication-" "of-income-from-grinders-and-refineries)。" -#: ../../Fixed-or-Improved-Logics.md:1018 +#: ../../Fixed-or-Improved-Logics.md:1025 msgid "" "[SOMEBUILDING] ; BuildingType\n" "Grinding.AllowAllies=false ; boolean\n" @@ -4032,15 +4076,15 @@ msgstr "" "Grinding.Weapon= ; WeaponType\n" "Grinding.Weapon.RequiredCredits=0 ; integer\n" -#: ../../Fixed-or-Improved-Logics.md:1030 +#: ../../Fixed-or-Improved-Logics.md:1037 msgid "Customize overpower logic" msgstr "自定义磁暴线圈充能" -#: ../../Fixed-or-Improved-Logics.md:1032 +#: ../../Fixed-or-Improved-Logics.md:1039 msgid "Now you can specific how building can be overpowerd." msgstr "现在你可以设定建筑什么情形下才会过载。" -#: ../../Fixed-or-Improved-Logics.md:1035 +#: ../../Fixed-or-Improved-Logics.md:1042 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "ElectricAssaultLevel=1 ; integer\n" @@ -4060,7 +4104,7 @@ msgstr "" "Overpower.ChargeWeapon=1 ; integer, negative values mean that weapons " "can never be switched\n" -#: ../../Fixed-or-Improved-Logics.md:1045 +#: ../../Fixed-or-Improved-Logics.md:1052 msgid "" "Ares' [Battery Super Weapon](https://ares-developers.github.io/Ares-" "docs/new/superweapons/types/battery.html) won't be affected by this." @@ -4068,15 +4112,15 @@ msgstr "" "Ares 的 [电池超武](https://ares-developers.github.io/Ares-" "docs/new/superweapons/types/battery.html) 不受此影响。" -#: ../../Fixed-or-Improved-Logics.md:1048 +#: ../../Fixed-or-Improved-Logics.md:1055 msgid "Disable `DamageSound`" msgstr "禁用 `DamageSound`" -#: ../../Fixed-or-Improved-Logics.md:1050 +#: ../../Fixed-or-Improved-Logics.md:1057 msgid "Now you can disable `DamageSound` of a building." msgstr "现在你可以禁用一个建筑的 `DamageSound`。" -#: ../../Fixed-or-Improved-Logics.md:1053 +#: ../../Fixed-or-Improved-Logics.md:1060 msgid "" "[SOMEBUILDING] ; BuildingType\n" "DisableDamageSound=false ; boolean\n" @@ -4084,17 +4128,17 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "DisableDamageSound=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1058 +#: ../../Fixed-or-Improved-Logics.md:1065 msgid "Exclude Factory from providing multiple factory bonus" msgstr "排除特定工厂的多工厂加成" -#: ../../Fixed-or-Improved-Logics.md:1060 +#: ../../Fixed-or-Improved-Logics.md:1067 msgid "" "It is now possible to exclude a building with `Factory` from counting " "towards `MultipleFactory` bonus." msgstr "现在可以将某个具有 `Factory` 的建筑排除在 `MultipleFactory` 之外" -#: ../../Fixed-or-Improved-Logics.md:1063 +#: ../../Fixed-or-Improved-Logics.md:1070 msgid "" "[SOMEBUILDING] ; BuildingType\n" "ExcludeFromMultipleFactoryBonus=false ; boolean\n" @@ -4102,11 +4146,11 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "ExcludeFromMultipleFactoryBonus=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1068 +#: ../../Fixed-or-Improved-Logics.md:1075 msgid "Power plant damage factor" msgstr "伤残电厂电量系数" -#: ../../Fixed-or-Improved-Logics.md:1070 +#: ../../Fixed-or-Improved-Logics.md:1077 msgid "" "It is possible to customize the power decrement of a power plant when " "it's damaged. The actual power output for this plant will be: `Power` " @@ -4117,13 +4161,13 @@ msgstr "" "时损失的发电量,即 `损失发电量 = [1 - (当前血量 / 最大血量)] * PowerPlant.DamageFactor * " "Power=`;发电功率无法低于 0。" -#: ../../Fixed-or-Improved-Logics.md:1071 +#: ../../Fixed-or-Improved-Logics.md:1078 msgid "" "Specifically, if the factor is set to 0.0, power output won't be " "decreased by losing health for this power plant." msgstr "具体来说,如果该系数设为 0.0,则电厂的发电功率不受血量影响。" -#: ../../Fixed-or-Improved-Logics.md:1074 +#: ../../Fixed-or-Improved-Logics.md:1081 msgid "" "[SOMEBUILDING] ; BuildingType\n" "PowerPlant.DamageFactor=1.0 ; floating point value\n" @@ -4131,22 +4175,22 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "PowerPlant.DamageFactor=1.0 ; floating point value\n" -#: ../../Fixed-or-Improved-Logics.md:1079 +#: ../../Fixed-or-Improved-Logics.md:1086 msgid "Skip anim delay for burst fire" msgstr "跳过 `DelayedFireDelay`" -#: ../../Fixed-or-Improved-Logics.md:1081 +#: ../../Fixed-or-Improved-Logics.md:1088 msgid "" "In Red Alert 1, the tesla coil will attack multiple times after charging " "animation. This is not possible in Red Alert 2, where the building must " "play the charge animation every time it fires." msgstr "《红色警戒 1》中的磁暴线圈会在充能后多次攻击。这在《红色警戒 2》中是不可能的,因为建筑必须每次发射时都播放充能动画。" -#: ../../Fixed-or-Improved-Logics.md:1082 +#: ../../Fixed-or-Improved-Logics.md:1089 msgid "Now you can implement the above logic using the following flag." msgstr "现在你可以使用下面的标签实现上述逻辑。" -#: ../../Fixed-or-Improved-Logics.md:1085 +#: ../../Fixed-or-Improved-Logics.md:1092 msgid "" "[SOMEBUILDING] ; BuildingType\n" "IsAnimDelayedBurst=true ; boolean\n" @@ -4154,17 +4198,17 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "IsAnimDelayedBurst=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1091 +#: ../../Fixed-or-Improved-Logics.md:1098 msgid "" "The prism towers' fire is hardcoded to be delayed. Their fire will ignore" " this flag, just as they ignore `IsAnimDelayedFire`." msgstr "光棱塔开火硬编码延迟。就像无视 `IsAnimDelayedFire` 那样,它们同样无视该语句。" -#: ../../Fixed-or-Improved-Logics.md:1094 +#: ../../Fixed-or-Improved-Logics.md:1101 msgid "Unit repair customization" msgstr "在建筑上自定义单位维修参数" -#: ../../Fixed-or-Improved-Logics.md:1096 +#: ../../Fixed-or-Improved-Logics.md:1103 msgid "" "It is now possible to customize the repairing of units by " "`UnitRepair=true`, `UnitReload=true` and `Hospital=true` buildings." @@ -4172,7 +4216,7 @@ msgstr "" "现在可以通过 `UnitRepair=true`、`UnitReload=true` 和 `Hospital=true` " "的建筑来自定义单位的维修参数。" -#: ../../Fixed-or-Improved-Logics.md:1097 +#: ../../Fixed-or-Improved-Logics.md:1104 msgid "" "`Units.RepairRate` customizes the rate at which the units are repaired. " "This defaults to `[General] -> ReloadRate` if `UnitReload=true` and if " @@ -4184,17 +4228,17 @@ msgstr "" "ReloadRate` 并覆盖每个战机类型独立的时间设置(*Ares 功能*)。对于 `UnitRepair=true` 的建筑则默认为 " "`[General] -> URepairRate`。" -#: ../../Fixed-or-Improved-Logics.md:1098 +#: ../../Fixed-or-Improved-Logics.md:1105 msgid "" "On `UnitReload=true` building setting this to negative value will fully " "disable the repair functionality." msgstr "在 `UnitReload=true` 的建筑上将此值设置为负数将完全禁用维修功能。" -#: ../../Fixed-or-Improved-Logics.md:1099 +#: ../../Fixed-or-Improved-Logics.md:1106 msgid "`Units.RepairStep` how much `Strength` is restored per repair tick." msgstr "`Units.RepairStep` 设置每次维修时恢复多少点 `Strength`。" -#: ../../Fixed-or-Improved-Logics.md:1100 +#: ../../Fixed-or-Improved-Logics.md:1107 msgid "" "`Units.RepairPercent` is a multiplier to cost of repairing (cost / " "(maximum health / repair step)). Note that the final cost is set to 1 if " @@ -4203,13 +4247,13 @@ msgstr "" "`Units.RepairPercent` " "是维修成本的倍率[`Cost`/(`Strength`/`RepairStep`)]。注意如果最终的成本低于 1 那么会设为 1。" -#: ../../Fixed-or-Improved-Logics.md:1101 +#: ../../Fixed-or-Improved-Logics.md:1108 msgid "" "`Units.UseRepairCost` can be used to customize if repair cost is applied " "at all. Defaults to false for infantry, true for everything else." msgstr "`Units.UseRepairCost` 可以用于自定义是否使用维修成本。步兵默认为 false,其他默认为 true。" -#: ../../Fixed-or-Improved-Logics.md:1104 +#: ../../Fixed-or-Improved-Logics.md:1111 msgid "" "[SOMEBUILDING] ; BuildingType\n" "Units.RepairRate= ; floating point value, ingame minutes\n" @@ -4225,17 +4269,17 @@ msgstr "" "default to [General] -> RepairPercent\n" "Units.UseRepairCost= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1112 +#: ../../Fixed-or-Improved-Logics.md:1119 msgid "Customize if cloning need power" msgstr "自定义克隆耗电" -#: ../../Fixed-or-Improved-Logics.md:1114 +#: ../../Fixed-or-Improved-Logics.md:1121 msgid "" "In vanilla, cloning vats can work fine even low power. Starting from Ares" " 2.0, they need power to work. Now you can specific it." msgstr "在原版中,克隆缸即便没电也可以工作。从 Ares 2.0 开始,它们需要电力运作。现在你可以指定。" -#: ../../Fixed-or-Improved-Logics.md:1117 +#: ../../Fixed-or-Improved-Logics.md:1124 msgid "" "[SOMEBUILDING] ; BuildingType\n" "Cloning.Powered=true ; boolean\n" @@ -4243,15 +4287,15 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "Cloning.Powered=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1122 +#: ../../Fixed-or-Improved-Logics.md:1129 msgid "Infantry" msgstr "步兵" -#: ../../Fixed-or-Improved-Logics.md:1124 +#: ../../Fixed-or-Improved-Logics.md:1131 msgid "Auto deploy for GI-like infantry" msgstr "GI 式步兵自动部署" -#: ../../Fixed-or-Improved-Logics.md:1126 +#: ../../Fixed-or-Improved-Logics.md:1133 msgid "" "In RA2, the GI-like infantry controlled by the AI will automatically " "deploy to use their more powerful secondary weapons when engaging the " @@ -4261,7 +4305,7 @@ msgstr "" "在《红色警戒2》中,由 AI " "控制的美国大兵在与敌人交战时会自动部署以使用火力更强的副武器。此特性在《尤里的复仇》中遭到破坏。现在你可以通过下面的开关语句重启这一特性。" -#: ../../Fixed-or-Improved-Logics.md:1129 +#: ../../Fixed-or-Improved-Logics.md:1136 msgid "" "[General]\n" "InfantryAutoDeploy=false ; boolean\n" @@ -4277,15 +4321,15 @@ msgstr "" "InfantryAutoDeploy= ; boolean, default to [General] -> " "InfantryAutoDeploy\n" -#: ../../Fixed-or-Improved-Logics.md:1137 +#: ../../Fixed-or-Improved-Logics.md:1144 msgid "Prone speed customization" msgstr "自定义匍匐速度" -#: ../../Fixed-or-Improved-Logics.md:1139 +#: ../../Fixed-or-Improved-Logics.md:1146 msgid "In vanilla, infantry has hardcoded prone speed. Now you can customize it." msgstr "原版中步兵匍匐前进的速度是硬编码的。现在你可以自由定义了。" -#: ../../Fixed-or-Improved-Logics.md:1142 +#: ../../Fixed-or-Improved-Logics.md:1149 msgid "" "[General]\n" "ProneSpeed.Crawls=0.67 ; floating point value, multiplier\n" @@ -4303,15 +4347,15 @@ msgstr "" "ProneSpeed= ; floating point value, multiplier, by " "default, use the corresponding global value according to Crawls\n" -#: ../../Fixed-or-Improved-Logics.md:1155 +#: ../../Fixed-or-Improved-Logics.md:1162 msgid "Particle systems" msgstr "粒子系统" -#: ../../Fixed-or-Improved-Logics.md:1157 +#: ../../Fixed-or-Improved-Logics.md:1164 msgid "Fire particle target coordinate adjustment when firer rotates" msgstr "开火者旋转时火焰粒子目标坐标调整" -#: ../../Fixed-or-Improved-Logics.md:1159 +#: ../../Fixed-or-Improved-Logics.md:1166 msgid "" "By default particle systems with `BehavesLike=Fire` shift their target " "coordinates if the object that created the particle system (e.g firer of " @@ -4321,7 +4365,7 @@ msgstr "" "默认情况下拥有 `BehavesLike=Fire` " "的粒子系统会根据创建粒子系统的对象(例如武器的开火者)是否旋转来调整其坐标。现在可以为每个粒子系统禁用这一行为。" -#: ../../Fixed-or-Improved-Logics.md:1162 +#: ../../Fixed-or-Improved-Logics.md:1169 msgid "" "[SOMEPARTICLESYSTEM] ; ParticleSystemType\n" "AdjustTargetCoordsOnRotation=true ; boolean\n" @@ -4329,19 +4373,19 @@ msgstr "" "[SOMEPARTICLESYSTEM] ; ParticleSystemType\n" "AdjustTargetCoordsOnRotation=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1167 +#: ../../Fixed-or-Improved-Logics.md:1174 msgid "Particles" msgstr "粒子" -#: ../../Fixed-or-Improved-Logics.md:1169 +#: ../../Fixed-or-Improved-Logics.md:1176 msgid "Customizable gas particle speed" msgstr "自定义 gas 粒子速度" -#: ../../Fixed-or-Improved-Logics.md:1171 +#: ../../Fixed-or-Improved-Logics.md:1178 msgid "Gas particles can now drift at a custom speed." msgstr "Gas 类的粒子现在可以自定义漂浮速度。" -#: ../../Fixed-or-Improved-Logics.md:1174 +#: ../../Fixed-or-Improved-Logics.md:1181 msgid "" "[GASPARTICLE] ; Particle with BehavesLike=Gas\n" "Gas.MaxDriftSpeed=2 ; integer (TS default is 5)\n" @@ -4349,53 +4393,53 @@ msgstr "" "[GASPARTICLE] ; Particle with BehavesLike=Gas\n" "Gas.MaxDriftSpeed=2 ; integer (TS default is 5)\n" -#: ../../Fixed-or-Improved-Logics.md:1179 +#: ../../Fixed-or-Improved-Logics.md:1186 msgid "Projectiles" msgstr "抛射体" -#: ../../Fixed-or-Improved-Logics.md:1181 +#: ../../Fixed-or-Improved-Logics.md:1188 msgid "Airburst & Splits" msgstr "空爆与分裂" -#: ../../Fixed-or-Improved-Logics.md:1183 +#: ../../Fixed-or-Improved-Logics.md:1190 msgid "" "`AirburstWeapon` logic has been reimplemented and thus there are several " "additions & changes to it." msgstr "`AirburstWeapon` 逻辑已被重新实现从而对其进行了一些添加和更改。" -#: ../../Fixed-or-Improved-Logics.md:1184 +#: ../../Fixed-or-Improved-Logics.md:1191 msgid "" "`Splits` can be set to true to use projectile splitting logic from " "Firestorm, with the number of split projectiles defined by `Cluster`." msgstr "`Splits` 可以设置为 true 以使用 《火风暴》 中的抛射体分裂逻辑,分裂抛射体的数量由 `Cluster` 决定。" -#: ../../Fixed-or-Improved-Logics.md:1185 +#: ../../Fixed-or-Improved-Logics.md:1192 msgid "" "`RetargetAccuracy` defines the probability that the splitted projectiles " "head to the same target as the original projectile." msgstr "`RetargetAccuracy` 决定了分裂抛射体与原抛射体瞄准同一目标的概率。" -#: ../../Fixed-or-Improved-Logics.md:1186 +#: ../../Fixed-or-Improved-Logics.md:1193 msgid "" "`RetargetSelf` determines if it is possible for the splitted projectiles " "to aim at the firer of the original projectile." msgstr "`RetargetSelf` 决定了分裂抛射体是否可以将原抛射体的发射者视为目标。" -#: ../../Fixed-or-Improved-Logics.md:1187 +#: ../../Fixed-or-Improved-Logics.md:1194 msgid "" "`RetargetSelf.Probability` is the probability that if the original firer " "is chosen as a target, it is kept as the target instead of rerolled to " "another." msgstr "`RetargetSelf.Probability` 是选择了原本的开火者为目标时它将保留其为目标而不是去重新随机另一个目标的概率。" -#: ../../Fixed-or-Improved-Logics.md:1188 +#: ../../Fixed-or-Improved-Logics.md:1195 msgid "" "`Splits.TargetingDistance` is the distance in cells that any potential " "target has to be within from the original target coordinates to be " "eligible for targeting by the splitted projectiles." msgstr "`Splits.TargetingDistance` 是以单元格为单位的距离,任何潜在目标都必须在原始目标坐标的这个范围内才能够被分裂的抛射体瞄准。" -#: ../../Fixed-or-Improved-Logics.md:1189 +#: ../../Fixed-or-Improved-Logics.md:1196 msgid "" "`Splits.TargetCellRange` is the distance in whole cells from the original" " target cell from which the splitted projectiles can pick new target " @@ -4404,7 +4448,7 @@ msgstr "" "`Splits.TargetCellRange` " "是以完整单元格数为单位的距离,用于附近没有发现足够的科技类型目标时分裂的抛射体从该范围选取新的目标单元格。" -#: ../../Fixed-or-Improved-Logics.md:1190 +#: ../../Fixed-or-Improved-Logics.md:1197 msgid "" "`Splits.UseWeaponTargeting`, if set to true, enables weapon targeting " "filter for when checking targets for splitted projectiles. Target's " @@ -4418,7 +4462,7 @@ msgstr "" "href=\"New-or-Enhanced-Logics.html#weapon-targeting-filter\">武器瞄准筛选 和" " [AttachEffect 筛选](New-or-Enhanced-Logics.md#attached-effects) 都将被检查。" -#: ../../Fixed-or-Improved-Logics.md:1191 +#: ../../Fixed-or-Improved-Logics.md:1198 msgid "" "Do note that this overrides checking Warhead for " "`AffectsAllies/Owner/Enemies` for targeting. You can use " @@ -4428,31 +4472,31 @@ msgstr "" "注意这会在瞄准时覆盖弹头对 `AffectsAllies/Owner/Enemies` 的检查。不过,你可以通过在 " "`AirburstWeapon` 设置的武器上使用 `CanTargetHouses` 来实现类似的行为。" -#: ../../Fixed-or-Improved-Logics.md:1192 +#: ../../Fixed-or-Improved-Logics.md:1199 msgid "Behaviour for if `Airburst` is set to true can also be customized." msgstr "如果将 `Airburst` 设为 true 其行为也同样可以自定义。" -#: ../../Fixed-or-Improved-Logics.md:1193 +#: ../../Fixed-or-Improved-Logics.md:1200 msgid "" "`AirburstSpread` is the distance in cells that the effect covers, with " "each cell in range being targeted by `AirburstWeapon` by default." msgstr "`AirburstSpread` 是以单元格为单位的效果所覆盖范围,默认情况下范围内的每个单元格都会被 `AirburstWeapon` 瞄准。" -#: ../../Fixed-or-Improved-Logics.md:1194 +#: ../../Fixed-or-Improved-Logics.md:1201 msgid "" "`Airburst.UseCluster`, if set to true, makes it so that only number of " "cells in the affected area dictated by `Cluster` will be affected, " "instead of all of them." msgstr "`Airburst.UseCluster` 如果设为 true,则只有 `Cluster` 所指定数量的单元格会被影响,而不是所有单元格。" -#: ../../Fixed-or-Improved-Logics.md:1195 +#: ../../Fixed-or-Improved-Logics.md:1202 msgid "" "If `Airburst.RandomClusters` is set to true, the cells affected will be " "picked by random. Otherwise they will be evenly spaced (counting from " "center to edges of affected area)." msgstr "`Airburst.RandomClusters` 如果设为 true,则受影响的单元格将随机选取。否则它们将均匀分布(从受影响区域的中心到边缘)。" -#: ../../Fixed-or-Improved-Logics.md:1196 +#: ../../Fixed-or-Improved-Logics.md:1203 msgid "" "`Airburst.TargetAsSource` can be used to override source or 'firing' " "coordinate to match that of the intended target instead of projectile's " @@ -4461,13 +4505,13 @@ msgstr "" "`Airburst.TargetAsSource` 可用于令空爆中心坐标跟随目标坐标而非使用抛射体当前位置。例如原先会在爆点生成根据 " "`[Projectile] -> AroundTarget` 决定飞向原点或目标位置,现在会直接以目标为中心爆开。" -#: ../../Fixed-or-Improved-Logics.md:1197 +#: ../../Fixed-or-Improved-Logics.md:1204 msgid "" "If `Airburst.TargetAsSource.SkipHeight` is also set, then projectile's " "current height will be used instead of target's height still." msgstr "如果还设置了 `Airburst.TargetAsSource.SkipHeight` 则仍然使用抛射体当前高度而非目标高度。" -#: ../../Fixed-or-Improved-Logics.md:1198 +#: ../../Fixed-or-Improved-Logics.md:1205 msgid "" "`AroundTarget` controls whether or not targets for projectiles created by" " `Airburst` or `Splits` are checked for in area around the original " @@ -4477,7 +4521,7 @@ msgstr "" "`AroundTarget` 控制由 `Airburst` 或 `Splits` " "创建的抛射体的目标是否在原抛射体目标周围的区域检查获取,否则从原抛射体爆炸的位置。默认为 `Splits` 值。" -#: ../../Fixed-or-Improved-Logics.md:1199 +#: ../../Fixed-or-Improved-Logics.md:1206 msgid "" "`AirburstWeapon.ApplyFirepowerMult` determines whether or not firepower " "modifiers from the firer of the original projectile are applied on the " @@ -4486,7 +4530,7 @@ msgstr "" "`AirburstWeapon.ApplyFirepowerMult` 决定是否将原抛射体发射者的火力加成应用于由 " "`AirburstWeapon` 创建的抛射体。" -#: ../../Fixed-or-Improved-Logics.md:1200 +#: ../../Fixed-or-Improved-Logics.md:1207 msgid "" "`AirburstWeapon.SourceScatterMin` and `AirburstWeapon.SourceScatterMax` " "can be used to scatter the source or 'firing' coordinate around the " @@ -4495,7 +4539,7 @@ msgstr "" "`AirburstWeapon.SourceScatterMin` 和 `AirburstWeapon.SourceScatterMax` " "可用于令空爆中心坐标产生散布。" -#: ../../Fixed-or-Improved-Logics.md:1203 +#: ../../Fixed-or-Improved-Logics.md:1210 msgid "" "[SOMEPROJECTILE] ; Projectile\n" "Splits= ; boolean\n" @@ -4545,7 +4589,7 @@ msgstr "" "AirburstWeapon.SourceScatterMax=0.0 ; floating point value, " "distance in cells\n" -#: ../../Fixed-or-Improved-Logics.md:1224 +#: ../../Fixed-or-Improved-Logics.md:1231 msgid "" "`Splits`, `AirburstSpread`, `RetargetAccuracy`, `RetargetSelf` and " "`AroundTarget`, beyond the other additions, should function similarly to " @@ -4556,11 +4600,11 @@ msgstr "" "`AroundTarget`,除了其他新增功能外,应该与 Ares 所引入的类似功能拥有相同效果并且如果 Phobos 与 Ares " "一起使用则优先于 Ares 的。" -#: ../../Fixed-or-Improved-Logics.md:1227 +#: ../../Fixed-or-Improved-Logics.md:1234 msgid "Cluster scatter distance customization" msgstr "自定义 Cluster 散布距离" -#: ../../Fixed-or-Improved-Logics.md:1229 +#: ../../Fixed-or-Improved-Logics.md:1236 msgid "" "`ClusterScatter.Min` and `ClusterScatter.Max` can be used to set minimum " "and maximum distance, respectively, in cells from the original detonation" @@ -4570,7 +4614,7 @@ msgstr "" "`ClusterScatter.Min` 和 `ClusterScatter.Max` 可各自用于设置最小和最大距离,用于当 `Cluster` " "设为一个大于 1 的值时任何额外爆炸可出现的位置相对原爆炸坐标以单元格为单位的距离。" -#: ../../Fixed-or-Improved-Logics.md:1232 +#: ../../Fixed-or-Improved-Logics.md:1239 msgid "" "[SOMEPROJECTILE] ; Projectile\n" "ClusterScatter.Min=1.0 ; floating point value, distance in cells\n" @@ -4580,15 +4624,15 @@ msgstr "" "ClusterScatter.Min=1.0 ; floating point value, distance in cells\n" "ClusterScatter.Max=2.0 ; floating point value, distance in cells\n" -#: ../../Fixed-or-Improved-Logics.md:1238 +#: ../../Fixed-or-Improved-Logics.md:1245 msgid "Customizable projectile gravity" msgstr "自定义抛射体重力" -#: ../../Fixed-or-Improved-Logics.md:1240 +#: ../../Fixed-or-Improved-Logics.md:1247 msgid "You can now specify individual projectile gravity." msgstr "现在你可以为特定抛射体指定其重力。" -#: ../../Fixed-or-Improved-Logics.md:1241 +#: ../../Fixed-or-Improved-Logics.md:1248 msgid "" "Setting `Gravity=0` is not recommended as it will cause the projectile to" " fly backwards and be unable to hit the target which is not at the same " @@ -4598,7 +4642,7 @@ msgstr "" "由于 `Gravity=0` 会导致抛射体向后飞行并且无法击中不在相同高度的目标因此不推荐设置 `Gravity=0` 。我们建议使用 [直线弹道" "](New-or-Enhanced-Logics.md#projectile-trajectories) 替代。" -#: ../../Fixed-or-Improved-Logics.md:1244 +#: ../../Fixed-or-Improved-Logics.md:1251 msgid "" "[SOMEPROJECTILE] ; Projectile\n" "Gravity=6.0 ; floating point value\n" @@ -4606,11 +4650,11 @@ msgstr "" "[SOMEPROJECTILE] ; Projectile\n" "Gravity=6.0 ; floating point value\n" -#: ../../Fixed-or-Improved-Logics.md:1249 +#: ../../Fixed-or-Improved-Logics.md:1256 msgid "Customizing initial facing behavior" msgstr "自定义初始朝向行为" -#: ../../Fixed-or-Improved-Logics.md:1251 +#: ../../Fixed-or-Improved-Logics.md:1258 msgid "" "Previously projectiles that had `Voxel=true` images were hardcoded to " "have downwards initial trajectory. This behavior can now be toggled on " @@ -4621,7 +4665,7 @@ msgstr "" "先前拥有 `Voxel=true` 的抛射体被硬编码为初始向下的弹道。现在该行为可以为其他类型抛射体开启或为 Voxel 抛射体关闭。除了对 " "`Voxel=true` 的抛射体默认为 `true` 外,现对所有 `Vertical=true` 的抛射体也同样设为 `true`。" -#: ../../Fixed-or-Improved-Logics.md:1254 +#: ../../Fixed-or-Improved-Logics.md:1261 msgid "" "[SOMEPROJECTILE] ; Projectile\n" "VerticalInitialFacing= ; boolean\n" @@ -4629,11 +4673,11 @@ msgstr "" "[SOMEPROJECTILE] ; Projectile\n" "VerticalInitialFacing= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1259 +#: ../../Fixed-or-Improved-Logics.md:1266 msgid "FlakScatter distance customization" msgstr "自定义 FlakScatter 距离" -#: ../../Fixed-or-Improved-Logics.md:1261 +#: ../../Fixed-or-Improved-Logics.md:1268 msgid "" "By default `FlakScatter=true` makes `Inviso=true` projectiles scatter " "within a distance range calculated as `[Minimum * 2, Maximum * 2]` in " @@ -4651,7 +4695,7 @@ msgstr "" "`BallisticScatter.Min` 设置 `最小值` 和 通过 `BallisticScatter.Max` 设置 `最大值` " "来实现自定义。如果没有设置则使用原有的行为作为默认值。注意在估算实际范围时原有算法中的 `*2` 计算仍然存在。" -#: ../../Fixed-or-Improved-Logics.md:1264 +#: ../../Fixed-or-Improved-Logics.md:1271 msgid "" "[SOMEPROJECTILE] ; Projectile\n" "BallisticScatter.Min= ; floating point value, distance in cells\n" @@ -4661,11 +4705,11 @@ msgstr "" "BallisticScatter.Min= ; floating point value, distance in cells\n" "BallisticScatter.Max= ; floating point value, distance in cells\n" -#: ../../Fixed-or-Improved-Logics.md:1270 +#: ../../Fixed-or-Improved-Logics.md:1277 msgid "Shrapnel enhancements" msgstr "溅射增强" -#: ../../Fixed-or-Improved-Logics.md:1272 +#: ../../Fixed-or-Improved-Logics.md:1279 msgid "" "![image](_static/images/shrapnel.gif) *Shrapnel appearing against ground " "& buildings in [Project Phantom](https://www.moddb.com/mods/project-" @@ -4674,13 +4718,13 @@ msgstr "" "![image](_static/images/shrapnel.gif) *[幽灵计划](https://www.moddb.com/mods" "/project-phantom) 中击中地面和建筑的溅射*" -#: ../../Fixed-or-Improved-Logics.md:1275 +#: ../../Fixed-or-Improved-Logics.md:1282 msgid "" "`ShrapnelWeapon` can now be triggered against ground & buildings via " "`Shrapnel.AffectsGround` and `Shrapnel.AffectsBuildings`." msgstr "现在可以通过 `Shrapnel.AffectsGround` 和 `Shrapnel.AffectsBuildings` 触发对地面和建筑的溅射。" -#: ../../Fixed-or-Improved-Logics.md:1276 +#: ../../Fixed-or-Improved-Logics.md:1283 msgid "" "Setting `Shrapnel.UseWeaponTargeting` now allows weapon target filtering " "to be enabled for `ShrapnelWeapon`. Target's `LegalTarget` setting, " @@ -4694,14 +4738,14 @@ msgstr "" "=\"New-or-Enhanced-Logics.html#weapon-targeting-filter\">武器目标筛选 和 [AE" " 武器过滤](New-or-Enhanced-Logics.md#attached-effects) 将被检查。" -#: ../../Fixed-or-Improved-Logics.md:1277 +#: ../../Fixed-or-Improved-Logics.md:1284 msgid "" "Do note that this overrides the normal check of only allowing shrapnels " "to hit non-allied objects. Use `CanTargetHouses=enemies` to manually " "enable this behaviour again." msgstr "注意这会覆盖允许溅射武器选择非盟友对象的默认检查。使用 `CanTargetHouses=enemies` 可手动重新启用此行为。" -#: ../../Fixed-or-Improved-Logics.md:1280 +#: ../../Fixed-or-Improved-Logics.md:1287 msgid "" "[SOMEPROJECTILE] ; Projectile\n" "Shrapnel.AffectsGround=false ; boolean\n" @@ -4713,34 +4757,34 @@ msgstr "" "Shrapnel.AffectsBuildings=false ; boolean\n" "Shrapnel.UseWeaponTargeting=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1287 +#: ../../Fixed-or-Improved-Logics.md:1294 msgid "Technos" msgstr "科技类型" -#: ../../Fixed-or-Improved-Logics.md:1289 +#: ../../Fixed-or-Improved-Logics.md:1296 msgid "Airstrike flare visual customizations" msgstr "自定义空袭引导效果" -#: ../../Fixed-or-Improved-Logics.md:1291 +#: ../../Fixed-or-Improved-Logics.md:1298 msgid "" "It is now possible to customize color of airstrike flare tint on target " "on the TechnoType calling in the airstrike as well as customize the color" " of the line drawn to target." msgstr "现在可以在召唤空袭的单位上自定义目标染色效果及引导激光颜色。" -#: ../../Fixed-or-Improved-Logics.md:1292 +#: ../../Fixed-or-Improved-Logics.md:1299 msgid "" "`LaserTargetColor` can be used to set the index of color from " "`[ColorAdd]`." msgstr "`LaserTargetColor` 用于填写颜色在 `[ColorAdd]` 中的索引序号。" -#: ../../Fixed-or-Improved-Logics.md:1293 +#: ../../Fixed-or-Improved-Logics.md:1300 msgid "" "`AirstrikeLineColor` sets the color of the line and dot drawn from firer " "to target." msgstr "`AirstrikeLineColor` 用于填写引导激光的颜色。" -#: ../../Fixed-or-Improved-Logics.md:1296 +#: ../../Fixed-or-Improved-Logics.md:1303 msgid "" "[AudioVisual]\n" "AirstrikeLineColor=255,0,0 ; integer - Red,Green,Blue\n" @@ -4760,11 +4804,11 @@ msgstr "" "AirstrikeLineColor= ; integer - Red,Green,Blue, default to " "[AudioVisual] -> AirstrikeLineColor\n" -#: ../../Fixed-or-Improved-Logics.md:1305 +#: ../../Fixed-or-Improved-Logics.md:1312 msgid "Airstrike target eligibility" msgstr "空袭目标筛选" -#: ../../Fixed-or-Improved-Logics.md:1307 +#: ../../Fixed-or-Improved-Logics.md:1314 msgid "" "By default whether or not a building can be targeted by airstrikes " "(`Airstrike=true` Warhead) depends on value of `CanC4`, which also " @@ -4775,20 +4819,20 @@ msgstr "" "默认情况下建筑能否被空袭武器(弹头 `Airstrike=true`)作为目标取决于 `CanC4` 的值,这也会影响其他方面。现在可以通过设置 " "`AllowAirstrike` 来独立更改这一点,如果未设置,默认为 `CanC4` 的值。对于非建筑类单位这默认为 true。" -#: ../../Fixed-or-Improved-Logics.md:1308 +#: ../../Fixed-or-Improved-Logics.md:1315 msgid "" "`AirstrikeTargets` determines what types of targets are valid airstrike " "targets for this Warhead." msgstr "`AirstrikeTargets` 决定了哪些目标是该弹头的有效空袭目标。" -#: ../../Fixed-or-Improved-Logics.md:1309 +#: ../../Fixed-or-Improved-Logics.md:1316 msgid "" "The airstrike aircraft will now aim at the target itself rather than the " "cell beneath its feet, therefore it is possible to properly designate air" " strikes against non-building targets." msgstr "现在空袭的战机会将目标设为单位自身而不再是单位脚下的单元格,因此可以对非建筑类目标正常地进行空袭引导。" -#: ../../Fixed-or-Improved-Logics.md:1312 +#: ../../Fixed-or-Improved-Logics.md:1319 msgid "" "[SOMETECHNO] ; TechnoType\n" "AllowAirstrike= ; boolean\n" @@ -4804,11 +4848,11 @@ msgstr "" "AirstrikeTargets=buildings ; List of Affected Target Enumeration " "(none|infantry|units|buildings|all)\n" -#: ../../Fixed-or-Improved-Logics.md:1320 +#: ../../Fixed-or-Improved-Logics.md:1327 msgid "Alternate FLH customizations" msgstr "跟随炮塔旋转的 `AlternateFLH`" -#: ../../Fixed-or-Improved-Logics.md:1322 +#: ../../Fixed-or-Improved-Logics.md:1329 msgid "" "`AlternateFLH.OnTurret` can be used to customize whether or not " "`AlternateFLH` used for `OpenTopped` transport firing coordinates, " @@ -4818,7 +4862,7 @@ msgstr "" "`AlternateFLH.OnTurret` 可自定义 `AlternateFLH` 用于 `OpenTopped` " "运输工具的开火坐标、多重心控链接偏移等逻辑时其位置是否相对于炮塔而非车体。" -#: ../../Fixed-or-Improved-Logics.md:1323 +#: ../../Fixed-or-Improved-Logics.md:1330 msgid "" "`AlternateFLH.ApplyVehicle` can be used to customize whether or not a " "transport applies its `AlternateFLH` to passengers of the VehicleType, " @@ -4828,7 +4872,7 @@ msgstr "" "`AlternateFLH.ApplyVehicle` 可用于自定义运输工具的 `AlternateFLH` " "是否作用于载具类载员,它们默认使用自身的 FLH 而不像步兵类载员那样遵照 `AlternateFLH`。" -#: ../../Fixed-or-Improved-Logics.md:1326 +#: ../../Fixed-or-Improved-Logics.md:1333 msgid "" "[SOMETECHNO] ; TechnoType\n" "AlternateFLH.OnTurret=true ; boolean\n" @@ -4838,11 +4882,11 @@ msgstr "" "AlternateFLH.OnTurret=true ; boolean\n" "AlternateFLH.ApplyVehicle=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1332 +#: ../../Fixed-or-Improved-Logics.md:1339 msgid "Building-provided self-healing customization" msgstr "自定义建筑提供的自愈" -#: ../../Fixed-or-Improved-Logics.md:1334 +#: ../../Fixed-or-Improved-Logics.md:1341 msgid "" "It is now possible to set a global cap for the effects of " "`InfantryGainSelfHeal` and `UnitsGainSelfHeal` by setting " @@ -4853,7 +4897,7 @@ msgstr "" "`UnitsGainSelfHealCap` 来为 `InfantryGainSelfHeal` 和 `UnitsGainSelfHeal` " "的效果设置全局上限。" -#: ../../Fixed-or-Improved-Logics.md:1335 +#: ../../Fixed-or-Improved-Logics.md:1342 msgid "" "Whether or not `MultiplayPassive=true` houses benefit from these effects " "can be controlled via `GainSelfHealAllowMultiplayPassive`." @@ -4861,7 +4905,7 @@ msgstr "" "`MultiplayPassive=true` 的所属方是否受益于这些效果可以通过 " "`GainSelfHealAllowMultiplayPassive` 加以控制。" -#: ../../Fixed-or-Improved-Logics.md:1336 +#: ../../Fixed-or-Improved-Logics.md:1343 msgid "" "In campaign, whether or not these effects for player can be benefited by " "houses with `PlayerControl=true` can be controlled via " @@ -4870,13 +4914,13 @@ msgstr "" "玩家能否通过带有 `PlayerControl=true` 的所属方获得这些受益可以通过 " "`GainSelfHealFromPlayerControl` 控制。" -#: ../../Fixed-or-Improved-Logics.md:1337 +#: ../../Fixed-or-Improved-Logics.md:1344 msgid "" "Whether or not these effects can be benefited by allied houses can be " "controlled via `GainSelfHealFromAllies`." msgstr "玩家能否通过盟友所属获得这些受益效果可以由 `GainSelfHealFromAllies` 控制。" -#: ../../Fixed-or-Improved-Logics.md:1338 +#: ../../Fixed-or-Improved-Logics.md:1345 msgid "" "It is also possible to change the pip frames displayed from `pips.shp` " "individually for infantry, units and buildings by setting the frames for " @@ -4887,7 +4931,7 @@ msgstr "" "还可以分别为步兵、载具和建筑在 `[AudioVisual]` 中使用 " "`Pips.SelfHeal.(Infantry/Units/Buildings)` 设置各自 `pips.shp` 中用于显示的 pip 帧。" -#: ../../Fixed-or-Improved-Logics.md:1339 +#: ../../Fixed-or-Improved-Logics.md:1346 msgid "" "`Pips.SelfHeal.(Infantry/Units/Buildings).Offset` can be used to " "customize the pixel offsets for the displayed pips, individually for " @@ -4896,7 +4940,7 @@ msgstr "" "`Pips.SelfHeal.(Infantry/Units/Buildings).Offset` 可以被用于分别自定义步兵、载具和建筑显示 " "pip 使用的像素偏移量。" -#: ../../Fixed-or-Improved-Logics.md:1340 +#: ../../Fixed-or-Improved-Logics.md:1347 msgid "" "Whether or not a TechnoType benefits from effects of " "`InfantryGainSelfHeal` or `UnitsGainSelfHeal` buildings or neither can " @@ -4905,7 +4949,7 @@ msgstr "" "通过设置 `SelfHealGainType` 可以控制科技类型是否受到 `InfantryGainSelfHeal` 或 " "`UnitsGainSelfHeal` 建筑的增益效果或者对两者都不享有。" -#: ../../Fixed-or-Improved-Logics.md:1341 +#: ../../Fixed-or-Improved-Logics.md:1348 msgid "" "If `SelfHealGainType` is not set, InfantryTypes and VehicleTypes with " "`Organic` set to true gain self-healing from `InfantryGainSelfHeal`, " @@ -4916,7 +4960,7 @@ msgstr "" "`InfantryGainSelfHeal` 获得自愈,其他载具类型从 `UnitsGainSelfHeal` " "获得以及战机类型和建筑类型永远不会获得自愈。" -#: ../../Fixed-or-Improved-Logics.md:1344 +#: ../../Fixed-or-Improved-Logics.md:1351 msgid "" "[General]\n" "InfantryGainSelfHealCap= ; integer, maximum amount of " @@ -4972,18 +5016,18 @@ msgstr "" "SelfHealGainType= ; Self-Heal Gain Type Enumeration" " (noheal|infantry|units)\n" -#: ../../Fixed-or-Improved-Logics.md:1364 +#: ../../Fixed-or-Improved-Logics.md:1371 msgid "Customizable ChronoSphere teleport delays for units" msgstr "单位自定义 ChronoSphere 传送延迟" -#: ../../Fixed-or-Improved-Logics.md:1366 +#: ../../Fixed-or-Improved-Logics.md:1373 msgid "" "It is now possible to customize (globally and per TechnoType) the warp-in" " delay for units teleporting through `Type=ChronoSphere/Warp` " "Superweapon, both before and after the jump." msgstr "现在可以自定义(全局和所有科技类型)单位通过 `Type=ChronoSphere/Warp` 超级武器传送前后的延迟。" -#: ../../Fixed-or-Improved-Logics.md:1369 +#: ../../Fixed-or-Improved-Logics.md:1376 msgid "" "[General]\n" "ChronoSphereDelay=0 ; integer, game frames\n" @@ -5005,7 +5049,7 @@ msgstr "" "ChronoSpherePreDelay= ; integer, game frames, default to [General] -> " "ChronoSpherePreDelay\n" -#: ../../Fixed-or-Improved-Logics.md:1380 +#: ../../Fixed-or-Improved-Logics.md:1387 msgid "" "Due to technical constraints, these settings do not apply to buildings " "teleported by Ares' customizable ChronoSphere SW. They only have a pre-" @@ -5014,11 +5058,11 @@ msgstr "" "由于技术限制,这些设置不适用于 Ares 的自定义 ChronoSphere 超级武器传送的建筑。它们仅有一个共用的 `[General] -> " "ChronoDelay`。" -#: ../../Fixed-or-Improved-Logics.md:1383 +#: ../../Fixed-or-Improved-Logics.md:1390 msgid "Customizable harvester ore gathering animation" msgstr "自定义采矿动画" -#: ../../Fixed-or-Improved-Logics.md:1385 +#: ../../Fixed-or-Improved-Logics.md:1392 msgid "" "![image](_static/images/oregath.gif) *Custom ore gathering anims in " "[Project Phantom](https://www.moddb.com/mods/project-phantom)*" @@ -5026,13 +5070,13 @@ msgstr "" "![image](_static/images/oregath.gif) *在 [幽灵计划](https://www.moddb.com/mods" "/project-phantom) 中的自定义矿石采集动画*" -#: ../../Fixed-or-Improved-Logics.md:1388 +#: ../../Fixed-or-Improved-Logics.md:1395 msgid "" "You can now specify which anim should be drawn when a harvester of " "specified type is gathering specified type of ore." msgstr "现在你可以在设定特定矿车在采集特定类型的矿石时哪些动画应当被绘制。" -#: ../../Fixed-or-Improved-Logics.md:1391 +#: ../../Fixed-or-Improved-Logics.md:1398 msgid "" "[SOMETECHNO] ; TechnoType\n" "OreGathering.Anims= ; List of AnimationTypes\n" @@ -5044,11 +5088,11 @@ msgstr "" "OreGathering.FramesPerDir=15 ; List of integers\n" "OreGathering.Tiberiums=0 ; List of Tiberium IDs\n" -#: ../../Fixed-or-Improved-Logics.md:1398 +#: ../../Fixed-or-Improved-Logics.md:1405 msgid "Customizable target evaluation map zone check behaviour" msgstr "自定义目标评估地图区域检查行为" -#: ../../Fixed-or-Improved-Logics.md:1400 +#: ../../Fixed-or-Improved-Logics.md:1407 msgid "" "By default, any non-AircraftType units seeking targets via ScriptType " "team mission (action) `0 Attack Target Type` or any [attack team missions" @@ -5064,7 +5108,7 @@ msgstr "" "(`TargetZoneScanType=any`) 或者仅当目标在武器射程内时才允许选择 " "(`TargetZoneScanType=inrange`)。" -#: ../../Fixed-or-Improved-Logics.md:1403 +#: ../../Fixed-or-Improved-Logics.md:1410 msgid "" "[SOMETECHNO] ; TechnoType\n" "TargetZoneScanType=same ; target zone scan enumeration " @@ -5074,11 +5118,11 @@ msgstr "" "TargetZoneScanType=same ; target zone scan enumeration " "(same|any|inrange)\n" -#: ../../Fixed-or-Improved-Logics.md:1408 +#: ../../Fixed-or-Improved-Logics.md:1415 msgid "Customizable Teleport/Chrono Locomotor settings per TechnoType" msgstr "自定义超时空运动设置" -#: ../../Fixed-or-Improved-Logics.md:1410 +#: ../../Fixed-or-Improved-Logics.md:1417 msgid "" "![image](_static/images/cust-Chrono.gif) *Chrono Legionnaire and Ronco " "using different teleportation settings in [YR: New " @@ -5088,20 +5132,20 @@ msgstr "" "War](https://www.moddb.com/mods/yuris-revenge-new-war) 中的超时空军团兵与 Ronco " "使用不同的超时空设置*" -#: ../../Fixed-or-Improved-Logics.md:1413 +#: ../../Fixed-or-Improved-Logics.md:1420 msgid "" "You can now specify Teleport/Chrono Locomotor settings per TechnoType to " "override default rules values. Unfilled values default to values in " "`[General]`." msgstr "现在你可以为每个科技类型指定其超时空运动方式设置以覆盖默认规则的值。未填充值则默认使用 `[General]` 中的值。" -#: ../../Fixed-or-Improved-Logics.md:1414 +#: ../../Fixed-or-Improved-Logics.md:1421 msgid "" "Applicable to Techno that have Teleport/Chrono Locomotor attached, or " "being chronowarped by chronosphere." msgstr "对使用超时空运动方式或者被超时空传送超武移动的科技类型有效。" -#: ../../Fixed-or-Improved-Logics.md:1415 +#: ../../Fixed-or-Improved-Logics.md:1422 msgid "" "`Chronoshift.WarpOut` and `Chronoshift.WarpIn` will override `WarpOut` " "and `WarpIn` respectively when the techno is being chronowarped by " @@ -5110,7 +5154,7 @@ msgstr "" "当单位被 `Type=ChronoSphere` 的超级武器传送时 `Chronoshift.WarpOut` 和 " "`Chronoshift.WarpIn` 会分别替代 `WarpOut` 和 `WarpIn` 使用。" -#: ../../Fixed-or-Improved-Logics.md:1416 +#: ../../Fixed-or-Improved-Logics.md:1423 msgid "" "`WarpAway` specify the anim when the techno is being erased by " "`Temporal=yes` warhead. Will override Ares' `Temporal.WarpAway` tag on " @@ -5119,13 +5163,13 @@ msgstr "" "单位上的 `[TechnoType] -> WarpAway` 会在其被 `Temporal=yes` 的弹头抹除时覆盖 Ares 引入的 " "`[WarheadType] -> Temporal.WarpAway=` 生效。" -#: ../../Fixed-or-Improved-Logics.md:1417 +#: ../../Fixed-or-Improved-Logics.md:1424 msgid "" "If more than one animation is listed in `WarpOut`, `WarpIn` or " "`WarpAway`, a random one is selected." msgstr "如果 `WarpOut`、`WarpIn` 或 `WarpAway` 中列出了多个动画,则将随机选择一个。" -#: ../../Fixed-or-Improved-Logics.md:1420 +#: ../../Fixed-or-Improved-Logics.md:1427 msgid "" "[SOMETECHNO] ; TechnoType\n" "WarpOut= ; List of AnimationTypes (played when Techno " @@ -5169,15 +5213,15 @@ msgstr "" "within which the delay is constant\n" "ChronoDelay= ; integer, delay after teleport for chronosphere\n" -#: ../../Fixed-or-Improved-Logics.md:1434 +#: ../../Fixed-or-Improved-Logics.md:1441 msgid "Customizable veterancy insignias" msgstr "自定义等级军衔" -#: ../../Fixed-or-Improved-Logics.md:1436 +#: ../../Fixed-or-Improved-Logics.md:1443 msgid "You can now customize veterancy insignia of TechnoTypes." msgstr "现在可以自定义科技类型的等级军衔。" -#: ../../Fixed-or-Improved-Logics.md:1437 +#: ../../Fixed-or-Improved-Logics.md:1444 msgid "" "`Insignia.(Rookie|Veteran|Elite)` can be used to set a custom insignia " "file, optionally for each veterancy stage. Like the original / default " @@ -5186,7 +5230,7 @@ msgstr "" "`Insignia.(Rookie|Veteran|Elite)` 可用于为每个等级设置一个自定义军衔文件。与原本/默认的文件 " "`pips.shp` 一样,它们使用 `palette.pal` 作为色盘进行绘制。" -#: ../../Fixed-or-Improved-Logics.md:1438 +#: ../../Fixed-or-Improved-Logics.md:1445 msgid "" "`InsigniaFrame(.Rookie|Veteran|Elite)` can be used to set (zero-based) " "frame index of the insignia to display, optionally for each veterancy " @@ -5196,7 +5240,7 @@ msgstr "" "`InsigniaFrame(.Rookie|Veteran|Elite)` 可用于为每个等级阶段设置军衔的(从 0 开始的)帧索引。使用 -1 " "表示使用默认设置。默认设置对新兵为 -1(无),对老兵为 14,对精英为 15。" -#: ../../Fixed-or-Improved-Logics.md:1439 +#: ../../Fixed-or-Improved-Logics.md:1446 msgid "" "A shorthand `InsigniaFrames` can be used to list them in order from " "rookie, veteran and elite instead as well. " @@ -5205,7 +5249,7 @@ msgstr "" "也可以使用简写 `InsigniaFrames` " "按顺序列出新兵、老兵和精英的帧索引。`InsigniaFrame(.Rookie|Veteran|Elite)` 的优先级高于此。" -#: ../../Fixed-or-Improved-Logics.md:1440 +#: ../../Fixed-or-Improved-Logics.md:1447 msgid "" "These settings will be overriden by the properties set in " "[InsigniaType](Miscellanous.md#insignia-type), if `InsigniaType` is set." @@ -5213,7 +5257,7 @@ msgstr "" "如果设置了 `InsigniaType` 则上述设置会被 [InsigniaType](Miscellanous.md#insignia-" "type) 中定义的属性覆盖。" -#: ../../Fixed-or-Improved-Logics.md:1441 +#: ../../Fixed-or-Improved-Logics.md:1448 msgid "" "Normal insignia can be overridden for specific weapon modes of " "`Gunner=true` units by setting `Insignia(.Frame/.Frames).WeaponN` where " @@ -5223,7 +5267,7 @@ msgstr "" "可以通过设置 `Insignia(.Frame/.Frames).WeaponN` 来为 `Gunner=true` " "的单位使用不同武器时换成不同的军衔,其中 `N` 表示基于 1 的武器模式索引。如果不设置,默认使用非特定模式的军衔设置。" -#: ../../Fixed-or-Improved-Logics.md:1442 +#: ../../Fixed-or-Improved-Logics.md:1449 msgid "" "These settings will be overriden by the properties set in " "[InsigniaType](Miscellanous.md#insignia-type), if `InsigniaType.WeaponN` " @@ -5232,7 +5276,7 @@ msgstr "" "如果设置了 `InsigniaType.WeaponN` 则上述设置会被 [InsigniaType](Miscellanous.md" "#insignia-type) 中定义的属性覆盖。" -#: ../../Fixed-or-Improved-Logics.md:1443 +#: ../../Fixed-or-Improved-Logics.md:1450 msgid "" "Normal insignia can be overridden when its current passenger size reaches" " a certain amount by setting `Insignia(.Frame/.Frames).PassengersN` where" @@ -5245,7 +5289,7 @@ msgstr "" " `N` 表示当前载员数量(从 0 到运输工具 `Passengers` 的值)。如果不设置,默认无载员模式的军衔设置。如果已经设置了 " "`Insignia(.Frame/.Frames).WeaponN` 则覆盖该语句的效果。" -#: ../../Fixed-or-Improved-Logics.md:1444 +#: ../../Fixed-or-Improved-Logics.md:1451 msgid "" "These settings will be overriden by the properties set in " "[InsigniaType](Miscellanous.md#insignia-type), if " @@ -5254,19 +5298,19 @@ msgstr "" "如果设置了 `InsigniaType.PassengersN` 则上述设置会被 [InsigniaType](Miscellanous.md" "#insignia-type) 中定义的属性覆盖。" -#: ../../Fixed-or-Improved-Logics.md:1445 +#: ../../Fixed-or-Improved-Logics.md:1452 msgid "" "`Insignia.ShowEnemy` controls whether or not the insignia is shown to " "enemy players." msgstr "`Insignia.ShowEnemy` 控制军衔是否对敌方玩家可见。" -#: ../../Fixed-or-Improved-Logics.md:1446 +#: ../../Fixed-or-Improved-Logics.md:1453 msgid "" "You can make insignias appear only on selected units using " "`DrawInsignia.OnlyOnSelected`." msgstr "你可以使用 `DrawInsignia.OnlyOnSelected` 来使军衔仅出现在被选中的单位上。" -#: ../../Fixed-or-Improved-Logics.md:1447 +#: ../../Fixed-or-Improved-Logics.md:1454 msgid "" "Position for insignias can be adjusted by setting " "`DrawInsignia.AdjustPos.Infantry` for infantry, " @@ -5277,7 +5321,7 @@ msgstr "" "`DrawInsignia.AdjustPos.Buildings`、为其他单位设置 `DrawInsignia.AdjustPos.Units`" " 来调整军衔的位置。" -#: ../../Fixed-or-Improved-Logics.md:1448 +#: ../../Fixed-or-Improved-Logics.md:1455 msgid "" "`DrawInsignia.AdjustPos.BuildingsAnchor` can be set to an anchor point to" " anchor the insignia position relative to the building's selection " @@ -5287,7 +5331,7 @@ msgstr "" "`DrawInsignia.AdjustPos.BuildingsAnchor` " "可以设置一个锚点,用于相对建筑选择框锚定军衔位置。默认情况下军衔位置未锚定到选择框。" -#: ../../Fixed-or-Improved-Logics.md:1449 +#: ../../Fixed-or-Improved-Logics.md:1456 msgid "" "`DrawInsignia.UsePixelSelectionBracketDelta` can be set to use techno's " "`PixelSelectionBracketDelta` to additionally adjust insignias vertically." @@ -5295,7 +5339,7 @@ msgstr "" "`DrawInsignia.UsePixelSelectionBracketDelta` 可以让军衔位置根据单位的 " "`PixelSelectionBracketDelta` 在竖直方向上调整位置。" -#: ../../Fixed-or-Improved-Logics.md:1452 +#: ../../Fixed-or-Improved-Logics.md:1459 msgid "" "[General]\n" "EnemyInsignia=true ; boolean\n" @@ -5443,7 +5487,7 @@ msgstr "" "Insignia.ShowEnemy= ; boolean, " "defaults to [General] -> EnemyInsignia\n" -#: ../../Fixed-or-Improved-Logics.md:1496 +#: ../../Fixed-or-Improved-Logics.md:1503 msgid "" "Insignia customization besides the `InsigniaFrames` shorthand should " "function similarly to the equivalent feature introduced by Ares and takes" @@ -5452,23 +5496,23 @@ msgstr "" "除了使用 `InsigniaFrames` 简写外,自定义军衔功能类似于 Ares 引入的相应功能,并且如果 Phobos 与 Ares " "一起使用则优先于 Ares 的。" -#: ../../Fixed-or-Improved-Logics.md:1499 +#: ../../Fixed-or-Improved-Logics.md:1506 msgid "Customizable wake anim" msgstr "自定义水波动画" -#: ../../Fixed-or-Improved-Logics.md:1501 +#: ../../Fixed-or-Improved-Logics.md:1508 msgid "" "You can now specify the `Wake` anim per TechnoType to override default " "rules value." msgstr "现在你可以为每个科技类型指定 `Wake` 动画以覆盖默认规则值。" -#: ../../Fixed-or-Improved-Logics.md:1502 +#: ../../Fixed-or-Improved-Logics.md:1509 msgid "" "`Wake.Grapple` and `Wake.Sinking` can be used to further customize wake " "anim when the techno is being parasited or sunken." msgstr "`Wake.Grapple` 和 `Wake.Sinking` 可用于在科技类型被寄生或沉没时进一步自定义水波动画。" -#: ../../Fixed-or-Improved-Logics.md:1505 +#: ../../Fixed-or-Improved-Logics.md:1512 msgid "" "[SOMETECHNO] ; TechnoType\n" "Wake= ; Anim (played when Techno moving on the water), " @@ -5486,11 +5530,11 @@ msgstr "" "Wake.Sinking= ; Anim (played when Techno sinking), defaults to " "[TechnoType] -> Wake\n" -#: ../../Fixed-or-Improved-Logics.md:1512 +#: ../../Fixed-or-Improved-Logics.md:1519 msgid "Customize bridge falling down damage" msgstr "自定义桥上坠落伤害" -#: ../../Fixed-or-Improved-Logics.md:1514 +#: ../../Fixed-or-Improved-Logics.md:1521 msgid "" "![image](_static/images/fallingdowndamage.gif) *Use different fall damage" " depending on whether it lands in water in **Zero Boundary** by " @@ -5500,31 +5544,31 @@ msgstr "" "*@[暴风硫](https://space.bilibili.com/11638715/lists/5358986) 在 **零点界限** " "中根据是否落入水中使用不同的坠落伤害*" -#: ../../Fixed-or-Improved-Logics.md:1517 +#: ../../Fixed-or-Improved-Logics.md:1524 msgid "" "Now you can customize the damage a unit receives when it falls from a " "bridge." msgstr "现在你可以自定义单位从桥上坠落时受到的伤害。" -#: ../../Fixed-or-Improved-Logics.md:1518 +#: ../../Fixed-or-Improved-Logics.md:1525 msgid "" "`FallingDownDamage` customizes the damage a unit receives at the end of a" " fall. It can be a percentage or an integer." msgstr "`FallingDownDamage` 用于自定义单位坠落触底时所受到的伤害值,可以是比率或固定整数值。" -#: ../../Fixed-or-Improved-Logics.md:1519 +#: ../../Fixed-or-Improved-Logics.md:1526 msgid "" "`FallingDownDamage.Water` customizes the damage a unit receives when it " "falls onto the water. Defaults to `FallingDownDamage`." msgstr "`FallingDownDamage.Water` 用于自定义单位坠落到水中时所受的伤害值,默认同 `FallingDownDamage`。" -#: ../../Fixed-or-Improved-Logics.md:1520 +#: ../../Fixed-or-Improved-Logics.md:1527 msgid "" "If it is a negative percentage, corresponding damage will be dealt based " "on the current health of the unit." msgstr "若设置负百分比则会根据单位当前生命值按比例造成对应伤害。" -#: ../../Fixed-or-Improved-Logics.md:1523 +#: ../../Fixed-or-Improved-Logics.md:1530 msgid "" "[SOMETECHNO] ; TechnoType\n" "FallingDownDamage= ; integer / percentage\n" @@ -5534,23 +5578,23 @@ msgstr "" "FallingDownDamage= ; integer / percentage\n" "FallingDownDamage.Water= ; integer / percentage\n" -#: ../../Fixed-or-Improved-Logics.md:1529 +#: ../../Fixed-or-Improved-Logics.md:1536 msgid "Damaged speed customization" msgstr "自定义伤残速度" -#: ../../Fixed-or-Improved-Logics.md:1531 +#: ../../Fixed-or-Improved-Logics.md:1538 msgid "" "In vanilla, units using drive/ship loco will has hardcoded speed " "multiplier when damaged. Now you can customize it." msgstr "原版中 `Locomotor` 使用 `Drive`/`Ship` 的单位在伤残时有一个硬编码的速度倍率。现在你可以自由定义了。" -#: ../../Fixed-or-Improved-Logics.md:1532 +#: ../../Fixed-or-Improved-Logics.md:1539 msgid "" "The max valuebale value is 1.0, you cannot make unit get faster on yellow" " condition by it." msgstr "最大有效值为 1.0,你无法凭借这个逻辑让单位在黄血时变得更快。" -#: ../../Fixed-or-Improved-Logics.md:1535 +#: ../../Fixed-or-Improved-Logics.md:1542 msgid "" "[General]\n" "DamagedSpeed=0.75 ; floating point value, multiplier\n" @@ -5564,12 +5608,12 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "DamagedSpeed= ; floating point value, multiplier\n" -#: ../../Fixed-or-Improved-Logics.md:1543 +#: ../../Fixed-or-Improved-Logics.md:1550 msgid "Debris voxel animations limitation" msgstr "Voxel 碎片数量限制" -#: ../../Fixed-or-Improved-Logics.md:1545 -#: ../../Fixed-or-Improved-Logics.md:2277 +#: ../../Fixed-or-Improved-Logics.md:1552 +#: ../../Fixed-or-Improved-Logics.md:2295 msgid "" "Now, the original `DebrisMaximums` can be used in conjunction with new " "`DebrisMinimums` to limit the quantity of `DebrisTypes` when " @@ -5578,15 +5622,15 @@ msgstr "" "当启用 `DebrisTypes.Limit` 时可通过原有的 `DebrisMaximums` 结合新增的 `DebrisMinimums` " "共同限制 `DebrisTypes` 的数量。" -#: ../../Fixed-or-Improved-Logics.md:1546 -#: ../../Fixed-or-Improved-Logics.md:2278 +#: ../../Fixed-or-Improved-Logics.md:1553 +#: ../../Fixed-or-Improved-Logics.md:2296 msgid "" "The default value of `DebrisTypes.Limit` is whether the number of " "`DebrisMaximums` is greater than (not equal to) 1 (for compatibility " "reasons)." msgstr "出于兼容目的,若 `DebrisMaximums` 大于(不包括等于)1 则默认启用 `DebrisTypes.Limit`。" -#: ../../Fixed-or-Improved-Logics.md:1549 +#: ../../Fixed-or-Improved-Logics.md:1556 msgid "" "[SOMETECHNO] ; TechnoType\n" "DebrisTypes.Limit= ; boolean\n" @@ -5598,84 +5642,84 @@ msgstr "" "DebrisMaximums= ; List of integers\n" "DebrisMinimums= ; List of integers\n" -#: ../../Fixed-or-Improved-Logics.md:1557 +#: ../../Fixed-or-Improved-Logics.md:1564 msgid "How to generate `DebrisTypes` in the game:" msgstr "游戏如何生成 `DebrisTypes`:" -#: ../../Fixed-or-Improved-Logics.md:1558 +#: ../../Fixed-or-Improved-Logics.md:1565 msgid "" "Generate the total number of debris through `MaxDebris` and `MinDebris` " "first." msgstr "首先通过 `MaxDebris` 与 `MinDebris` 确定所要生成碎片的总量。" -#: ../../Fixed-or-Improved-Logics.md:1559 +#: ../../Fixed-or-Improved-Logics.md:1566 msgid "" "Traverse `DebrisTypes` and limit the quantity range through " "`DebrisMaximums` and `DebrisMinimums`." msgstr "遍历 `DebrisTypes` 列表并通过 `DebrisMaximums` 和 `DebrisMinimums` 限制数量范围。" -#: ../../Fixed-or-Improved-Logics.md:1560 +#: ../../Fixed-or-Improved-Logics.md:1567 msgid "" "When the number of generated debris will exceeds the total number, limit " "the quantity and end the traversal." msgstr "当已生成碎片数量将要超过总量时限制数量并停止遍历。" -#: ../../Fixed-or-Improved-Logics.md:1561 +#: ../../Fixed-or-Improved-Logics.md:1568 msgid "" "When the number of debris generated after a single traversal is not " "enough to exceed the total number, it will end if `DebrisTypes.Limit` is " "enabled, otherwise the traversal will restart like vanilla game do." msgstr "当遍历完成但碎片的数量并未达到总量时,若启用 `DebrisTypes.Limit` 则直接结束,否则按原版游戏机制重新进行遍历。" -#: ../../Fixed-or-Improved-Logics.md:1564 +#: ../../Fixed-or-Improved-Logics.md:1571 msgid "DropPod" msgstr "空降仓" -#: ../../Fixed-or-Improved-Logics.md:1566 +#: ../../Fixed-or-Improved-Logics.md:1573 msgid "" "DropPod properties can now be customized on a per-TechnoType (non-" "building) basis." msgstr "现在可以在每个非建筑类单位上微观定义 DropPod 属性。" -#: ../../Fixed-or-Improved-Logics.md:1567 +#: ../../Fixed-or-Improved-Logics.md:1574 msgid "" "If you want to attach the trailer animation to the pod, set " "`DropPod.Trailer.Attached` to yes." msgstr "如果你要将尾烟动画附加到空降仓上,请将 `DropPod.Trailer.Attached` 设为 yes。" -#: ../../Fixed-or-Improved-Logics.md:1568 +#: ../../Fixed-or-Improved-Logics.md:1575 msgid "" "By default LaserTrails that are attached to the infantry will not be " "drawn if it's on DropPod." msgstr "默认情况下附加到步兵上的激光尾焰如果处于 DropPod 状态将不会绘制。" -#: ../../Fixed-or-Improved-Logics.md:1569 +#: ../../Fixed-or-Improved-Logics.md:1576 msgid "" "If you really want to use it, set `DropPodOnly` on the LaserTrail's type " "entry in art." msgstr "如果你实在想要使用它,那么请在 art 中的激光尾焰条目下设置 `DropPodOnly`。" -#: ../../Fixed-or-Improved-Logics.md:1570 +#: ../../Fixed-or-Improved-Logics.md:1577 msgid "" "If you want `DropPod.Weapon` to be fired only upon hard landing, set " "`DropPod.Weapon.HitLandOnly` to true." msgstr "如果要在着陆时才发射 `DropPod.Weapon`,请将 `DropPod.Weapon.HitLandOnly` 设为 true。" -#: ../../Fixed-or-Improved-Logics.md:1571 +#: ../../Fixed-or-Improved-Logics.md:1578 msgid "" "The landing speed is not smaller than it's current height /10 + 2 for " "unknown reason. A small `DropPod.Speed` value therefore results in " "exponential deceleration." msgstr "由于某些未知原因着陆速度不小于其当前高度 / 20 + 2 的值。因此较小的 `DropPod.Speed` 值会导致指数级减速。" -#: ../../Fixed-or-Improved-Logics.md:1574 +#: ../../Fixed-or-Improved-Logics.md:1581 msgid "" "Due to technical constraints `DropPod.AirImage` is only drawn for " "InfantryTypes (as the DropPod is the infantry itself with its image " "swapped). This may change in future." msgstr "由于技术限制,`DropPod.AirImage` 仅在步兵类单位上绘制(因为空降仓本身就是替换了图像的步兵自身)。未来可能会进行更改。" -#: ../../Fixed-or-Improved-Logics.md:1578 +#: ../../Fixed-or-Improved-Logics.md:1585 msgid "" "[SOMETECHNO] ; TechnoType\n" "DropPod.Angle= ; double, default to [General] -> " @@ -5723,7 +5767,7 @@ msgstr "" "DropPodWeapon\n" "DropPod.Weapon.HitLandOnly= ; boolean, default to no\n" -#: ../../Fixed-or-Improved-Logics.md:1595 +#: ../../Fixed-or-Improved-Logics.md:1602 msgid "" "`[General] -> DropPodTrailer` is [Ares feature](https://ares-" "developers.github.io/Ares-docs/new/droppod.html)." @@ -5731,11 +5775,11 @@ msgstr "" "`[General] -> DropPodTrailer` 是一个 [Ares 功能](https://ares-" "developers.github.io/Ares-docs/new/droppod.html)。" -#: ../../Fixed-or-Improved-Logics.md:1598 +#: ../../Fixed-or-Improved-Logics.md:1605 msgid "Exploding object customizations" msgstr "爆炸对象的自定义" -#: ../../Fixed-or-Improved-Logics.md:1600 +#: ../../Fixed-or-Improved-Logics.md:1607 msgid "" "By default `Explodes=true` TechnoTypes have all of their passengers " "killed when they are destroyed. This behaviour can now be disabled by " @@ -5744,7 +5788,7 @@ msgstr "" "默认情况下 `Explodes=true` 的科技类型被摧毁时它们的所有乘客都会被击杀。现在可以通过设置 " "`Explodes.KillPassengers=false` 禁用此行为。" -#: ../../Fixed-or-Improved-Logics.md:1601 +#: ../../Fixed-or-Improved-Logics.md:1608 msgid "" "BuildingTypes with `Explodes=true` can by default explode even when they " "are still being built or sold. This can be disabled by setting " @@ -5755,7 +5799,7 @@ msgstr "" "`Explodes.DuringBuildup` 为 false 来禁用。这样它们在建造或出售过程中会表现得像是 `Explodes` 被设为 " "false 一样。" -#: ../../Fixed-or-Improved-Logics.md:1604 +#: ../../Fixed-or-Improved-Logics.md:1611 msgid "" "[SOMETECHNO] ; TechnoType\n" "Explodes.KillPassengers=true ; boolean\n" @@ -5769,30 +5813,30 @@ msgstr "" "[SOMEBUILDING] ; BuildingType\n" "Explodes.DuringBuildup=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1612 +#: ../../Fixed-or-Improved-Logics.md:1619 msgid "Forbid parallel AI queues" msgstr "禁止 AI 并行生产队列" -#: ../../Fixed-or-Improved-Logics.md:1614 +#: ../../Fixed-or-Improved-Logics.md:1621 msgid "" "You can now set if specific types of factories do not have AI production " "cloning issue instead of Ares' indiscriminate behavior of " "`AllowParallelAIQueues=no`." msgstr "现在你可以设置特定类型的工厂是否禁用 AI 克隆生产而不是 Ares 的 `AllowParallelAIQueues=no` 那样全部禁用。" -#: ../../Fixed-or-Improved-Logics.md:1615 +#: ../../Fixed-or-Improved-Logics.md:1622 msgid "" "If `AllowParallelAIQueues=no` *(Ares feature)* is set, the tags have no " "effect." msgstr "如果 `AllowParallelAIQueues=no`(*Ares 功能*)被设置,该标签无效。" -#: ../../Fixed-or-Improved-Logics.md:1616 +#: ../../Fixed-or-Improved-Logics.md:1623 msgid "" "You can also exclude specific TechnoTypes from being built in parallel by" " AI by setting `ForbidParallelAIQueues` to true on a TechnoType." msgstr "你还可以通过在科技类型上将 `ForbidParallelAIQueues` 设为 true 来禁止特定科技类型被 AI 克隆生产。" -#: ../../Fixed-or-Improved-Logics.md:1619 +#: ../../Fixed-or-Improved-Logics.md:1626 msgid "" "[GlobalControls]\n" "AllowParallelAIQueues=yes ; must be set yes/true unless you " @@ -5818,11 +5862,11 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "ForbidParallelAIQueues=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1632 +#: ../../Fixed-or-Improved-Logics.md:1639 msgid "Force techno targeting in distributed frames to improve performance" msgstr "强制单位索敌行为分散到不同帧以提升性能" -#: ../../Fixed-or-Improved-Logics.md:1634 +#: ../../Fixed-or-Improved-Logics.md:1641 msgid "" "When you create many technos in a same frame (i.e. starting the game with" " a campaign map that initially has a large number of technos), they will " @@ -5831,7 +5875,7 @@ msgid "" "targeting is still synchronized." msgstr "当你在同一帧内创建大量单位(例如进入一个初始预置了大量单位的战役地图)时它们总是会同时扫描目标从而导致游戏卡顿。仅通过增大索敌间隔并不能改善这点,因为它们仍会同时索敌。" -#: ../../Fixed-or-Improved-Logics.md:1635 +#: ../../Fixed-or-Improved-Logics.md:1642 msgid "" "It is now possible to force them to seek targets separately. If " "`DistributeTargetingFrame=true` is set, techno's targeting timer will be " @@ -5843,13 +5887,13 @@ msgstr "" "`DistributeTargetingFrame=true`,单位的瞄准计时器将在随机延迟后启动,延迟范围在 `[0,15]` " "之间。这可以将它们的瞄准时间分散在 15 帧内,从而缓解上述卡顿问题。" -#: ../../Fixed-or-Improved-Logics.md:1636 +#: ../../Fixed-or-Improved-Logics.md:1643 msgid "" "You can use `DistributeTargetingFrame.AIOnly` to make it only work for AI" " (Players are not likely to have so many technos.)" msgstr "你可以使用 `DistributeTargetingFrame.AIOnly` 使其仅对 AI 生效(人类玩家通常不太可能有那么多单位)。" -#: ../../Fixed-or-Improved-Logics.md:1639 +#: ../../Fixed-or-Improved-Logics.md:1646 msgid "" "[General]\n" "DistributeTargetingFrame=false ; boolean\n" @@ -5865,11 +5909,11 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "DistributeTargetingFrame= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1648 +#: ../../Fixed-or-Improved-Logics.md:1655 msgid "Iron Curtain & Force Shield effects on organics customization" msgstr "铁幕和力场护盾对有机体效果的自定义" -#: ../../Fixed-or-Improved-Logics.md:1650 +#: ../../Fixed-or-Improved-Logics.md:1657 msgid "" "In vanilla game, when Iron Curtain is applied on `Organic=true` units " "like squids or infantry, they could only get killed instantly by " @@ -5881,28 +5925,28 @@ msgstr "" "瞬间击杀。现在此行为已被解除硬编码,并且可以通过全局的 `IronCurtain.EffectOnOrganics` 和每个科技类型的 " "`IronCurtain.Effect` 属性来自定义。可接受的值如下:" -#: ../../Fixed-or-Improved-Logics.md:1651 +#: ../../Fixed-or-Improved-Logics.md:1658 msgid "" "`kill` : Iron Curtain kills the organic object with a specifc warhead. " "This is the default value for `Organic=true` units and infantry if not " "otherwise specified." msgstr "`kill`:铁幕会用特定的弹头杀死有机体,这是 `Organic=true` 单位和步兵的默认值,除非专门指定。" -#: ../../Fixed-or-Improved-Logics.md:1652 +#: ../../Fixed-or-Improved-Logics.md:1659 msgid "" "`invulnerable` : Iron Curtain makes the organic object invulnerable like " "buildings and vehicles." msgstr "`invulnerable`:铁幕会使有机体像建筑和载具一样获得无敌效果。" -#: ../../Fixed-or-Improved-Logics.md:1653 +#: ../../Fixed-or-Improved-Logics.md:1660 msgid "`ignore` : Iron Curtain doesn't give any effect on the organic object." msgstr "`ignore`:铁幕不会对有机体造成任何影响。" -#: ../../Fixed-or-Improved-Logics.md:1654 +#: ../../Fixed-or-Improved-Logics.md:1661 msgid "Identical controls are available for Force Shield as well." msgstr "力场护盾也有相同的控制选项。" -#: ../../Fixed-or-Improved-Logics.md:1657 +#: ../../Fixed-or-Improved-Logics.md:1664 msgid "" "[CombatDamage]\n" "IronCurtain.EffectOnOrganics=kill ; Iron Curtain effect Enumeration " @@ -5944,17 +5988,17 @@ msgstr "" "ForceShield.KillWarhead= ; WarheadType, default to " "[CombatDamage] -> ForceShield.KillOrganicsWarhead\n" -#: ../../Fixed-or-Improved-Logics.md:1671 +#: ../../Fixed-or-Improved-Logics.md:1678 msgid "Jumpjet rotating on crashing toggle" msgstr "Jumpjet 旋转着坠毁的开关" -#: ../../Fixed-or-Improved-Logics.md:1673 +#: ../../Fixed-or-Improved-Logics.md:1680 msgid "" "Jumpjet that is going to crash starts to change its facing " "uncontrollably, this can now be turned off." msgstr "即将坠毁的 Jumpjet 会开始不可控地改变其朝向,现在可以将其关闭。" -#: ../../Fixed-or-Improved-Logics.md:1676 +#: ../../Fixed-or-Improved-Logics.md:1683 msgid "" "[SOMETECHNO] ; TechnoType\n" "JumpjetRotateOnCrash=true ; boolean\n" @@ -5962,25 +6006,25 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "JumpjetRotateOnCrash=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1682 +#: ../../Fixed-or-Improved-Logics.md:1689 msgid "This may subject to further changes." msgstr "这可能会在未来进一步更改。" -#: ../../Fixed-or-Improved-Logics.md:1685 +#: ../../Fixed-or-Improved-Logics.md:1692 msgid "Kill spawns on low power" msgstr "断电时击杀子机" -#: ../../Fixed-or-Improved-Logics.md:1687 +#: ../../Fixed-or-Improved-Logics.md:1694 msgid "" "`Powered=yes` structures that spawn aircraft like Aircraft Carriers will " "stop targeting the enemy if low power." msgstr "拥有 `Powered=yes` 的建筑航母在断电时将会停止攻击敌人。" -#: ../../Fixed-or-Improved-Logics.md:1688 +#: ../../Fixed-or-Improved-Logics.md:1695 msgid "Spawned aircraft self-destruct if they are flying." msgstr "被生成的战机如果正在飞行那么会自毁。" -#: ../../Fixed-or-Improved-Logics.md:1691 +#: ../../Fixed-or-Improved-Logics.md:1698 msgid "" "[SOMESTRUCTURE] ; BuildingType\n" "Powered.KillSpawns=false ; boolean\n" @@ -5988,17 +6032,17 @@ msgstr "" "[SOMESTRUCTURE] ; BuildingType\n" "Powered.KillSpawns=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1696 +#: ../../Fixed-or-Improved-Logics.md:1703 msgid "PipScale pip customizations" msgstr "自定义 PipScale" -#: ../../Fixed-or-Improved-Logics.md:1698 +#: ../../Fixed-or-Improved-Logics.md:1705 msgid "" "It is now possible to change the size of pips (or more accurately the " "pixel increment to the next pip drawn) displayed on `PipScale`." msgstr "现在可以更改在 `PipScale` 中显示的 pip 的大小(或者更确切的说是绘制下一个 pip 的像素增量)。" -#: ../../Fixed-or-Improved-Logics.md:1699 +#: ../../Fixed-or-Improved-Logics.md:1706 msgid "" "`Pips.Generic.(Buildings.)Size` is for non-ammo pips on non-building " "TechnoTypes / buildings, accordingly, and `Pips.Ammo.(Buildings.)Size` is" @@ -6008,17 +6052,17 @@ msgstr "" "`Pips.Generic.(Buildings.)Size` 用于非建筑科技类型/建筑的非弹药 " "pip,相应的,`Pips.Ammo.(Buildings.)Size` 则是针对弹药 pip,同样分别对应非建筑科技类型/建筑。" -#: ../../Fixed-or-Improved-Logics.md:1700 +#: ../../Fixed-or-Improved-Logics.md:1707 msgid "" "Ammo pip size can also be overridden on per TechnoType-basis using " "`AmmoPipSize`." msgstr "还可以通过 `AmmoPipSize` 为每个科技类型重写弹药 pip 的大小。" -#: ../../Fixed-or-Improved-Logics.md:1701 +#: ../../Fixed-or-Improved-Logics.md:1708 msgid "Ammo pip frames can now also be customized." msgstr "现在也可以自定义弹药 pip 的帧。" -#: ../../Fixed-or-Improved-Logics.md:1702 +#: ../../Fixed-or-Improved-Logics.md:1709 msgid "" "`AmmoPipFrame` and `EmptyAmmoPipFrame` are frames (zero-based) of " "`pips2.shp` used for ammo pip and empty ammo pip (this is not set by " @@ -6027,7 +6071,7 @@ msgstr "" "`AmmoPipFrame` 和 `EmptyAmmoPipFrame` 是在 `PipWrap=0`(这是默认行为)时使用的 " "`pips2.shp` 中(从 0 开始的)帧,用于弹药 pip 和空弹药 pip。" -#: ../../Fixed-or-Improved-Logics.md:1703 +#: ../../Fixed-or-Improved-Logics.md:1710 msgid "" "`AmmoPipWrapStartFrame` is used as start frame (zero-based, from " "`pips2.shp`) for when `PipWrap` is above 0. The start frame is the empty " @@ -6037,21 +6081,21 @@ msgstr "" "`AmmoPipWrapStartFrame` 用作 `PipWrap` 大于 0 时将 `pips2.shp` 中(从 0 " "开始的)帧设为起始帧。起始帧是空帧,从起始帧之后最多有 `Ammo` 除以 `PipWrap` 个帧用于不同的装填阶段。" -#: ../../Fixed-or-Improved-Logics.md:1704 +#: ../../Fixed-or-Improved-Logics.md:1711 msgid "`AmmoPipOffset` can be used to shift the starting position of ammo pips." msgstr "`AmmoPipOffset` 可用于移动弹药 pip 的起始位置。" -#: ../../Fixed-or-Improved-Logics.md:1705 +#: ../../Fixed-or-Improved-Logics.md:1712 msgid "Pips for TechnoTypes with `Spawns` can now also be customized." msgstr "现在带有 `Spawns` 的科技类型的 pip 也可以进行自定义。" -#: ../../Fixed-or-Improved-Logics.md:1706 +#: ../../Fixed-or-Improved-Logics.md:1713 msgid "" "`ShowSpawnsPips` determines whether or not these pips are shown at all, " "as they are independent from `PipScale` setting." msgstr "`ShowSpawnsPips` 决定这些 pip 是否显示,因为它们与 `PipScale` 设置无关。" -#: ../../Fixed-or-Improved-Logics.md:1707 +#: ../../Fixed-or-Improved-Logics.md:1714 msgid "" "`SpawnsPipFrame` and `EmptySpawnsPipFrame` are frames (zero-based) of " "`pips.shp` (for buildings) or `pips2.shp` (for others) used for a spawnee" @@ -6060,7 +6104,7 @@ msgstr "" "`SpawnsPipFrame` 和 `EmptySpawnsPipFrame` 分别是 `pips.shp`(对于建筑)或 " "`pips2.shp`(对于其他)中(从 0 开始的)帧,用于子机 pip 和空子机 pip。" -#: ../../Fixed-or-Improved-Logics.md:1708 +#: ../../Fixed-or-Improved-Logics.md:1715 msgid "" "`SpawnsPipSize` determines the pixel increment to the next pip drawn. " "Defaults to `[AudioVisual] -> Pips.Generic.(Buildings.)Size` if not set." @@ -6068,19 +6112,19 @@ msgstr "" "`SpawnsPipSize` 决定了到下一个 pip 绘制的像素增量。若未设置则默认为 `[AudioVisual] -> " "Pips.Generic.(Buildings.)Size`。" -#: ../../Fixed-or-Improved-Logics.md:1709 +#: ../../Fixed-or-Improved-Logics.md:1716 msgid "" "`SpawnsPipoffset` can be used to shift the starting position of spawnee " "pips." msgstr "`SpawnsPipoffset` 可以被用于移动子机 pip 的起始位置。" -#: ../../Fixed-or-Improved-Logics.md:1710 +#: ../../Fixed-or-Improved-Logics.md:1717 msgid "" "Pips for `Storage` can now also be customized via new keys in " "`[AudioVisual]`." msgstr "现在可以通过 `[AudioVisual]` 中的新标签来自定义 `Storage` 的 pip。" -#: ../../Fixed-or-Improved-Logics.md:1711 +#: ../../Fixed-or-Improved-Logics.md:1718 msgid "" "`Pips.Tiberiums.Frames` can be used to list frames (zero-based) of " "`pips.shp` (for buildings) or `pips2.shp` (for others) used for tiberium " @@ -6090,13 +6134,13 @@ msgstr "" "`Pips.Tiberiums.Frames` 可用于列出用于泰伯利亚类型的 `pips.shp`(用于建筑)或 " "`pips2.shp`(用于其他)中(从 0 开始的)帧,按与泰伯利亚类型序数对应的列表排列顺序,泰伯利亚类型为 1 时默认为 5,否则为 2。" -#: ../../Fixed-or-Improved-Logics.md:1712 +#: ../../Fixed-or-Improved-Logics.md:1719 msgid "" "`Pips.Tiberiums.EmptyFrame` can be used to set the frame for empty slots," " defaults to 0." msgstr "`Pips.Tiberiums.EmptyFrame` 可用于设置空槽的帧,默认为 0。" -#: ../../Fixed-or-Improved-Logics.md:1713 +#: ../../Fixed-or-Improved-Logics.md:1720 msgid "" "`Pips.Tiberiums.DisplayOrder` controls in which order the tiberium type " "pips are displayed, takes a list of tiberium type indices. Any tiberium " @@ -6106,7 +6150,7 @@ msgstr "" "`Pips.Tiberiums.DisplayOrder` 控制泰伯利亚类型 pip " "显示的顺序,取一个泰伯利亚类型索引列表。任何未列出的将在列出后按顺序显示。" -#: ../../Fixed-or-Improved-Logics.md:1714 +#: ../../Fixed-or-Improved-Logics.md:1721 msgid "" "`Pips.Tiberiums.WeedFrame` controls which frame is displayed on Technos " "with `Weeder=yes`, takes a (zero-based) index of a frame in `pips.shp` " @@ -6115,13 +6159,13 @@ msgstr "" "`Pips.Tiberiums.WeedFrame` 控制在 `Weeder=yes` 科技类型上显示的帧,使用 " "`pips.shp`(用于建筑)或 `pips2.shp`(用于其他)中(从 0 开始的)索引,默认为 1。" -#: ../../Fixed-or-Improved-Logics.md:1715 +#: ../../Fixed-or-Improved-Logics.md:1722 msgid "" "`Pips.Tiberiums.WeedEmptyFrame` can be used to set the frame for empty " "weed slots, defaults to 0." msgstr "`Pips.Tiberiums.WeedEmptyFrame` 可用于设置空置废矿槽的帧,默认为 0。" -#: ../../Fixed-or-Improved-Logics.md:1718 +#: ../../Fixed-or-Improved-Logics.md:1725 msgid "" "[AudioVisual]\n" "Pips.Generic.Size=4,0 ; X,Y, increment in pixels to next " @@ -6201,17 +6245,17 @@ msgstr "" "pip\n" "SpawnsPipOffset=0,0 ; X,Y, position offset from default\n" -#: ../../Fixed-or-Improved-Logics.md:1743 +#: ../../Fixed-or-Improved-Logics.md:1750 msgid "Power drain for units" msgstr "单位消耗电力" -#: ../../Fixed-or-Improved-Logics.md:1745 +#: ../../Fixed-or-Improved-Logics.md:1752 msgid "" "Infantry, vehicles and aircraft can now drain or provide `Power` if " "`UnitPowerDrain=true` is set." msgstr "如果设置了 `UnitPowerDrain=true`,步兵、载具和战机现在都将可以消耗或提供 `Power`。" -#: ../../Fixed-or-Improved-Logics.md:1748 +#: ../../Fixed-or-Improved-Logics.md:1755 msgid "" "[General]\n" "UnitPowerDrain=false ; boolean\n" @@ -6227,17 +6271,17 @@ msgstr "" "Power=0 ; integer, positive means output, negative means " "drain\n" -#: ../../Fixed-or-Improved-Logics.md:1756 +#: ../../Fixed-or-Improved-Logics.md:1763 msgid "RadarInvisible for non-enemy house" msgstr "不仅限于敌方的 `RadarInvisible`" -#: ../../Fixed-or-Improved-Logics.md:1758 +#: ../../Fixed-or-Improved-Logics.md:1765 msgid "" "In vanilla, `RadarInvisible` is ignored if the techno is allied with the " "current player. Now you can change this behavior." msgstr "在原版游戏中 `RadarInvisible` 仅对当前非友军的玩家有效,现在你可以更改这一行为。" -#: ../../Fixed-or-Improved-Logics.md:1761 +#: ../../Fixed-or-Improved-Logics.md:1768 msgid "" "[SOMETECHNO] ; TechnoType\n" "RadarInvisibleToHouse= ; Affected House Enumeration " @@ -6249,17 +6293,17 @@ msgstr "" "(none|owner/self|allies/ally|team|enemies/enemy|all), default to enemy if" " RadarInvisible=true, none otherwise\n" -#: ../../Fixed-or-Improved-Logics.md:1766 +#: ../../Fixed-or-Improved-Logics.md:1773 msgid "Subterranean unit travel height and speed" msgstr "潜地单位移动高度和速度" -#: ../../Fixed-or-Improved-Logics.md:1768 +#: ../../Fixed-or-Improved-Logics.md:1775 msgid "" "It is now possible to control the height at which units with subterranean" " (Tunnel) `Locomotor` travel, globally or per TechnoType." msgstr "现在可以控制拥有潜地(Tunnel)`Locomotor` 的单位移动的高度,可以在全局和每个科技类型上定义。" -#: ../../Fixed-or-Improved-Logics.md:1769 +#: ../../Fixed-or-Improved-Logics.md:1776 msgid "" "Subterranean movement speed is now also customizable, both globally and " "per TechnoType. If per-TechnoType value is negative, global value is " @@ -6270,7 +6314,7 @@ msgstr "" "潜地移动速度现在也可以自定义,同样拥有全局和微观标签。如果微观标签的值为负数则使用全局值。这不会影响单位在潜地时的垂直移动速度。该速度由 " "`Speed` * `[General] -> TunnelSpeed` 决定。" -#: ../../Fixed-or-Improved-Logics.md:1772 +#: ../../Fixed-or-Improved-Logics.md:1779 msgid "" "[General]\n" "SubterraneanHeight=-256 ; integer, height in leptons (1/256th of a cell)" @@ -6292,17 +6336,17 @@ msgstr "" "\n" "SubterraneanSpeed=-1 ; floating point value\n" -#: ../../Fixed-or-Improved-Logics.md:1783 +#: ../../Fixed-or-Improved-Logics.md:1790 msgid "" "`SubterraneanHeight` expects negative values to be used and may behave " "erratically if set to above -50." msgstr "`SubterraneanHeight` 最好使用一个负值并且如果设置为大于 -50 的值可能会出现异常行为。" -#: ../../Fixed-or-Improved-Logics.md:1786 +#: ../../Fixed-or-Improved-Logics.md:1793 msgid "Target scanning delay optimization" msgstr "索敌间隔优化" -#: ../../Fixed-or-Improved-Logics.md:1788 +#: ../../Fixed-or-Improved-Logics.md:1795 msgid "" "In vanilla, the game used `NormalTargetingDelay` and " "`GuardAreaTargetingDelay` to globally control the target searching " @@ -6312,20 +6356,20 @@ msgstr "" "原版中游戏使用 `NormalTargetingDelay` 和 `GuardAreaTargetingDelay` " "来全局控制单位的索敌间隔。增大这些值会导致单位反应迟钝,减小这些值则可能导致游戏卡顿。" -#: ../../Fixed-or-Improved-Logics.md:1789 +#: ../../Fixed-or-Improved-Logics.md:1796 msgid "" "Now, you can define them per techno, also allowing different values for " "AI and players. The default values are the same as those originally " "defined by the vanilla flags." msgstr "现在可以在每种单位上微观定义这些参数,且可为 AI 玩家和人类玩家分离设置。默认值取自原版全局。" -#: ../../Fixed-or-Improved-Logics.md:1790 +#: ../../Fixed-or-Improved-Logics.md:1797 msgid "" "You can also specific this delay for attack move mission. The default " "value is `NormalTargetingDelay`." msgstr "你还可以为移动攻击指令单独设定间隔。默认使用 `NormalTargetingDelay` 的值。" -#: ../../Fixed-or-Improved-Logics.md:1793 +#: ../../Fixed-or-Improved-Logics.md:1800 msgid "" "[General]\n" "AINormalTargetingDelay= ; integer, game frames\n" @@ -6359,11 +6403,11 @@ msgstr "" "AIAttackMoveTargetingDelay= ; integer, game frames\n" "PlayerAttackMoveTargetingDelay= ; integer, game frames\n" -#: ../../Fixed-or-Improved-Logics.md:1811 +#: ../../Fixed-or-Improved-Logics.md:1818 msgid "Voxel body multi-section shadows" msgstr "Voxel 主体多组件阴影" -#: ../../Fixed-or-Improved-Logics.md:1813 +#: ../../Fixed-or-Improved-Logics.md:1820 msgid "" "![image](_static/images/uh0-be.gif) *UH-0 helicopter with dynamic " "propeller and its shadow in [Bellum " @@ -6372,7 +6416,7 @@ msgstr "" "![image](_static/images/uh0-be.gif) " "*[万世之战](https://ra2be.com/zh/download.html) 中拥有可动螺旋桨及其影子的 UH-0 直升机*" -#: ../../Fixed-or-Improved-Logics.md:1816 +#: ../../Fixed-or-Improved-Logics.md:1823 msgid "" "It is also now possible for vehicles and aircraft to display shadows for " "multiple sections of the voxel body at once, instead of just one section " @@ -6384,7 +6428,7 @@ msgstr "" "`ShadowIndex`)指定多个组件索引来一性次显示出 Voxel 主体中多个组件的影子,而不再仅限于绘制 `ShadowIndex` " "所指定的单个组件。" -#: ../../Fixed-or-Improved-Logics.md:1817 +#: ../../Fixed-or-Improved-Logics.md:1824 msgid "" "`ShadowIndex.Frame` and `ShadowIndices.Frame` can be used to customize " "which frame of the HVA animation for the section from `ShadowIndex` and " @@ -6396,7 +6440,7 @@ msgstr "" "`ShadowIndices` 所指定组件的 HVA 动画中显示影子时所使用的帧。-1 是一个用于表示使用当前帧的特殊值,并且 " "`ShadowIndices.Frame` 默认如此。" -#: ../../Fixed-or-Improved-Logics.md:1820 +#: ../../Fixed-or-Improved-Logics.md:1827 msgid "" "[SOMETECHNO] ; TechnoType\n" "ShadowIndices= ; List of integers (voxel section indices)\n" @@ -6408,11 +6452,11 @@ msgstr "" "ShadowIndex.Frame=0 ; integer (HVA animation frame index)\n" "ShadowIndices.Frame= ; List of integers (HVA animation frame indices)\n" -#: ../../Fixed-or-Improved-Logics.md:1827 +#: ../../Fixed-or-Improved-Logics.md:1834 msgid "Voxel shadow scaling in air" msgstr "Voxel 在空中时的影子缩放" -#: ../../Fixed-or-Improved-Logics.md:1829 +#: ../../Fixed-or-Improved-Logics.md:1836 msgid "" "It is now possible to adjust how voxel air units (`VehicleType` & " "`AircraftType`) shadows scale in air. By default the shadows scale by " @@ -6422,7 +6466,7 @@ msgstr "" "现在可以调整 Voxel 空中单位(载具和战机)的影子如何缩放。默认情况下如果单位拥有 `ConsideredAircraft=true` " "那么影子会按 `AirShadowBaseScale` (默认为 0.5)进行缩放" -#: ../../Fixed-or-Improved-Logics.md:1830 +#: ../../Fixed-or-Improved-Logics.md:1837 msgid "" "If `HeightShadowScaling=true`, the shadow is scaled by amount that is " "determined by following formula: `Max(AirShadowBaseScale ^ (currentHeight" @@ -6439,7 +6483,7 @@ msgstr "" "是一个可覆盖的值,默认为最大巡航高度(`JumpjetHeight`、`FlightLevel` 等),而 " "`HeightShadowScaling.MinScale` 设置了缩放的下限。" -#: ../../Fixed-or-Improved-Logics.md:1833 +#: ../../Fixed-or-Improved-Logics.md:1840 msgid "" "[AudioVisual]\n" "AirShadowBaseScale=0.5 ; floating point value\n" @@ -6457,15 +6501,42 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "ShadowSizeCharacteristicHeight= ; integer, height in leptons\n" -#: ../../Fixed-or-Improved-Logics.md:1843 +#: ../../Fixed-or-Improved-Logics.md:1850 +msgid "" +"Allow techno type considered as other type when recruiting techno for " +"teams" +msgstr "允许单位作为其他类型的单位参与小队招募" + +#: ../../Fixed-or-Improved-Logics.md:1852 +msgid "" +"It is now possible to make techno type considered as other type when " +"recruiting techno for teams, both for AI team recruitment and `Create " +"Team` action." +msgstr "现在小队(包括 AI 小队招募和 `建立作战小队...` 行为)招募单位时可以将一个单位视为其他类型的单位。" + +#: ../../Fixed-or-Improved-Logics.md:1853 +msgid "" +"Only affect techno that's presented on the map. Cannot make AI produce " +"this type of techno if it doesn't have any." +msgstr "仅影响存在于地图上的单位。AI 不会在没有作为其他类型参与招募的单位时使从工厂生产它们。" + +#: ../../Fixed-or-Improved-Logics.md:1856 +msgid "" +"[SOMETECHNO] ; TechnoType\n" +"TeamMember.ConsideredAs= ; List of TechnoTypes\n" +msgstr "" +"[SOMETECHNO] ; TechnoType\n" +"TeamMember.ConsideredAs= ; List of TechnoTypes\n" + +#: ../../Fixed-or-Improved-Logics.md:1861 msgid "Terrains" msgstr "地形对象" -#: ../../Fixed-or-Improved-Logics.md:1845 +#: ../../Fixed-or-Improved-Logics.md:1863 msgid "Animated TerrainTypes" msgstr "动画化地形对象" -#: ../../Fixed-or-Improved-Logics.md:1847 +#: ../../Fixed-or-Improved-Logics.md:1865 msgid "" "![Waving trees](_static/images/tree-shake.gif) *Animated trees used in " "[Ion Shock](https://www.moddb.com/mods/tiberian-war-ionshock)*" @@ -6473,11 +6544,11 @@ msgstr "" "![Waving trees](_static/images/tree-shake.gif) *[Ion " "Shock](https://www.moddb.com/mods/tiberian-war-ionshock) 中会动的树*" -#: ../../Fixed-or-Improved-Logics.md:1847 +#: ../../Fixed-or-Improved-Logics.md:1865 msgid "Waving trees" msgstr "会动的树" -#: ../../Fixed-or-Improved-Logics.md:1850 +#: ../../Fixed-or-Improved-Logics.md:1868 msgid "" "By default `IsAnimated`, `AnimationRate` and `AnimationProbability` only " "work on TerrainTypes with `SpawnsTiberium` set to true. This restriction " @@ -6486,7 +6557,7 @@ msgstr "" "默认情况下 `IsAnimated`、`AnimationRate` 和 `AnimationProbability` 仅适用于 " "`SpawnsTiberium` 设置为 true 的地形对象。这一限制已被解除。" -#: ../../Fixed-or-Improved-Logics.md:1851 +#: ../../Fixed-or-Improved-Logics.md:1869 msgid "" "Length of the animation can now be customized by setting " "`AnimationLength` as well, defaulting to half (or quarter if [damaged " @@ -6496,7 +6567,7 @@ msgstr "" "现在动画的长度可以通过设置 `AnimationLength` 来自定义,默认为地形对象图像帧数的一半(如果启用了[破损帧](#damaged-" "frames-and-crumbling-animation)则为四分之一)。" -#: ../../Fixed-or-Improved-Logics.md:1854 +#: ../../Fixed-or-Improved-Logics.md:1872 msgid "" "[SOMETERRAINTYPE] ; TerrainType\n" "AnimationLength= ; integer, number of frames\n" @@ -6504,17 +6575,17 @@ msgstr "" "[SOMETERRAINTYPE] ; TerrainType\n" "AnimationLength= ; integer, number of frames\n" -#: ../../Fixed-or-Improved-Logics.md:1859 +#: ../../Fixed-or-Improved-Logics.md:1877 msgid "Custom palette" msgstr "自定义色盘" -#: ../../Fixed-or-Improved-Logics.md:1861 +#: ../../Fixed-or-Improved-Logics.md:1879 msgid "" "You can now specify custom palette for TerrainTypes in similar manner as " "TechnoTypes can." msgstr "现在你可以像为科技类型那样为地形对象指定自定义色盘。" -#: ../../Fixed-or-Improved-Logics.md:1864 +#: ../../Fixed-or-Improved-Logics.md:1882 msgid "" "[SOMETERRAINTYPE] ; TerrainType\n" "Palette= ; filename - excluding .pal extension and three-" @@ -6524,18 +6595,18 @@ msgstr "" "Palette= ; filename - excluding .pal extension and three-" "character theater-specific suffix\n" -#: ../../Fixed-or-Improved-Logics.md:1870 +#: ../../Fixed-or-Improved-Logics.md:1888 msgid "" "This palette behaves like an object palette and does not use tint etc. " "that have been applied to the tile the TerrainType resides on like a " "TerrainType using tile palette would." msgstr "此色盘的行为就像原有的对象色盘那样不受光效影响。也就是地形对象将不会同步使用应用于地形对象所在地块上的色调。" -#: ../../Fixed-or-Improved-Logics.md:1873 +#: ../../Fixed-or-Improved-Logics.md:1891 msgid "Customizable ore spawners" msgstr "自定义矿柱" -#: ../../Fixed-or-Improved-Logics.md:1875 +#: ../../Fixed-or-Improved-Logics.md:1893 msgid "" "![image](_static/images/ore-01.png) *Different ore spawners in [Rise of " "the East](https://www.moddb.com/mods/riseoftheeast)*" @@ -6543,18 +6614,18 @@ msgstr "" "![image](_static/images/ore-01.png) " "*[东方崛起](https://www.moddb.com/mods/riseoftheeast) 中不同的矿柱*" -#: ../../Fixed-or-Improved-Logics.md:1878 +#: ../../Fixed-or-Improved-Logics.md:1896 msgid "You can now specify which type of ore certain TerrainType would generate." msgstr "现在你可以指定地形对象将会生成哪种矿石。" -#: ../../Fixed-or-Improved-Logics.md:1879 +#: ../../Fixed-or-Improved-Logics.md:1897 msgid "" "It's also now possible to specify a range value for an ore generation " "area different compared to standard 3x3 rectangle. Ore will be uniformly " "distributed across all affected cells in a spread range." msgstr "现在还可以指定与标准 3x3 矩形不同的矿石生成区域范围值。矿石将均匀地分布在扩散范围内所有受影响的单元格中。" -#: ../../Fixed-or-Improved-Logics.md:1880 +#: ../../Fixed-or-Improved-Logics.md:1898 msgid "" "You can specify which ore growth stage will be spawned and how many cells" " will be filled with ore per ore generation animation. Corresponding tags" @@ -6562,7 +6633,7 @@ msgid "" "allow randomized growth stages from the range (inclusive)." msgstr "此外也可以指定将生成哪个矿石生长阶段以及每次播放矿石生成动画将会填充多少个单元格。相对应的标签接受单个整数值或两个逗号分隔的值以允许范围内(含)随机化的生长阶段。" -#: ../../Fixed-or-Improved-Logics.md:1883 +#: ../../Fixed-or-Improved-Logics.md:1901 msgid "" "[SOMETERRAINTYPE] ; TerrainType\n" "SpawnsTiberium.Type=0 ; tiberium/ore type index\n" @@ -6576,11 +6647,11 @@ msgstr "" "SpawnsTiberium.GrowthStage=3 ; integer - single or comma-sep. range\n" "SpawnsTiberium.CellsPerAnim=1 ; integer - single or comma-sep. range\n" -#: ../../Fixed-or-Improved-Logics.md:1891 +#: ../../Fixed-or-Improved-Logics.md:1909 msgid "Damaged frames and crumbling animation" msgstr "伤残和倒坍动画" -#: ../../Fixed-or-Improved-Logics.md:1893 +#: ../../Fixed-or-Improved-Logics.md:1911 msgid "" "By default game shows damage frame only for TerrainTypes alive at only 1 " "point of health left. Because none of the original game TerrainType " @@ -6590,7 +6661,7 @@ msgstr "" "默认情况下游戏在地形对象仅 1 点血时显示破损帧。由于原本游戏中的地形对象资源文件并未考虑这一点因此目前该逻辑仅限添加了 " "`HasDamagedFrames` 的情况下使用。" -#: ../../Fixed-or-Improved-Logics.md:1894 +#: ../../Fixed-or-Improved-Logics.md:1912 msgid "" "Instead of showing at 1 point of HP left, TerrainTypes switch to damaged " "frames once their health reaches `[AudioVisual] -> " @@ -6599,7 +6670,7 @@ msgstr "" "地形对象不再在仅剩 1 点血时显示破损帧,而是在其血量达到 `[AudioVisual] -> ConditionYellow.Terrain` " "的百分比时才进行切换。" -#: ../../Fixed-or-Improved-Logics.md:1895 +#: ../../Fixed-or-Improved-Logics.md:1913 msgid "" "In addition, TerrainTypes can now show 'crumbling' animation after their " "health has reached zero and before they are deleted from the map by " @@ -6608,25 +6679,25 @@ msgstr "" "此外,地形对象现在可以在其血量归 0 后到从地图中删除前的这段时间中通过设置 `HasCrumblingFrames` 为 true 来显示一个 " "“倒坍” 动画。" -#: ../../Fixed-or-Improved-Logics.md:1896 +#: ../../Fixed-or-Improved-Logics.md:1914 msgid "" "Crumbling frames start from first frame after both regular & damaged " "frames and ends at halfway point of the frames in TerrainType's image." msgstr "倒坍所用的帧从紧随于常规帧和破损帧之后的第一帧开始直到地形对象图像帧的一半处中止(另一半是影子)。" -#: ../../Fixed-or-Improved-Logics.md:1897 +#: ../../Fixed-or-Improved-Logics.md:1915 msgid "" "Sound event from `CrumblingSound` (if set) is played when crumbling " "animation starts playing." msgstr "当倒坍动画开始播放时将会播放 `CrumblingSound`(如果设置)指定的音效。" -#: ../../Fixed-or-Improved-Logics.md:1898 +#: ../../Fixed-or-Improved-Logics.md:1916 msgid "" "[Destroy animation & sound](New-or-Enhanced-Logics.md#destroy-animation--" "sound) only play after crumbling animation has finished." msgstr "[摧毁动画和音效](New-or-Enhanced-Logics.md#destroy-animation--sound) 仅在倒坍动画结束后播放。" -#: ../../Fixed-or-Improved-Logics.md:1901 +#: ../../Fixed-or-Improved-Logics.md:1919 msgid "" "[AudioVisual]\n" "ConditionYellow.Terrain= ; floating-point value, default to " @@ -6646,7 +6717,7 @@ msgstr "" "HasCrumblingFrames=false ; boolean\n" "CrumblingSound= ; Sound entry\n" -#: ../../Fixed-or-Improved-Logics.md:1912 +#: ../../Fixed-or-Improved-Logics.md:1930 msgid "" "The number of regular & damage frames considered for this depends on " "value of `HasDamagedFrames` and for `IsAnimated` TerrainTypes, " @@ -6658,18 +6729,18 @@ msgstr "" "`AnimationLength` 的值(见 [动画化地形对象](#animated-" "terraintypes))。请谨慎操作以确保显示的帧数正确。" -#: ../../Fixed-or-Improved-Logics.md:1915 -#: ../../Fixed-or-Improved-Logics.md:1940 +#: ../../Fixed-or-Improved-Logics.md:1933 +#: ../../Fixed-or-Improved-Logics.md:1958 msgid "Minimap color customization" msgstr "自定义小地图颜色" -#: ../../Fixed-or-Improved-Logics.md:1917 +#: ../../Fixed-or-Improved-Logics.md:1935 msgid "" "TerrainTypes can now be made to display on minimap with different colors " "by setting `MinimapColor`." msgstr "现在地形对象可以通过设置 `MinimapColor` 使用不同的颜色显示在小地图上。" -#: ../../Fixed-or-Improved-Logics.md:1920 +#: ../../Fixed-or-Improved-Logics.md:1938 msgid "" "[SOMETERRAINTYPE] ; TerrainType\n" "MinimapColor= ; integer - Red,Green,Blue\n" @@ -6677,29 +6748,29 @@ msgstr "" "[SOMETERRAINTYPE] ; TerrainType\n" "MinimapColor= ; integer - Red,Green,Blue\n" -#: ../../Fixed-or-Improved-Logics.md:1925 +#: ../../Fixed-or-Improved-Logics.md:1943 msgid "Passable & buildable-upon TerrainTypes" msgstr "可通行和可建造于其上的地形对象" -#: ../../Fixed-or-Improved-Logics.md:1927 +#: ../../Fixed-or-Improved-Logics.md:1945 msgid "" "TerrainTypes can now be made passable or buildable upon by setting " "`IsPassable` or `CanBeBuiltOn`, respectively." msgstr "现在可以分别通过设置 `IsPassable` 或 `CanBeBuiltOn` 来让地形对象可通行或可以将建筑建造于其上。" -#: ../../Fixed-or-Improved-Logics.md:1928 +#: ../../Fixed-or-Improved-Logics.md:1946 msgid "" "Movement cursor is displayed on `IsPassable` TerrainTypes unless force-" "firing." msgstr "除非使用强制开火否则 `IsPassable` 的地形对象上会显示移动光标。" -#: ../../Fixed-or-Improved-Logics.md:1929 +#: ../../Fixed-or-Improved-Logics.md:1947 msgid "" "`CanBeBuiltOn=true` terrain objects are removed when building is placed " "on them." msgstr "`CanBeBuiltOn=true` 的地形对象在建筑建造于其上时会被移除。" -#: ../../Fixed-or-Improved-Logics.md:1932 +#: ../../Fixed-or-Improved-Logics.md:1950 msgid "" "[SOMETERRAINTYPE] ; TerrainType\n" "IsPassable=false ; boolean\n" @@ -6709,17 +6780,17 @@ msgstr "" "IsPassable=false ; boolean\n" "CanBeBuiltOn=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1938 +#: ../../Fixed-or-Improved-Logics.md:1956 msgid "Tiberiums (ores)" msgstr "泰伯利亚(矿石)" -#: ../../Fixed-or-Improved-Logics.md:1942 +#: ../../Fixed-or-Improved-Logics.md:1960 msgid "" "Ore can now be made to display on minimap with different colors by " "setting `MinimapColor` on Tiberiums." msgstr "矿石现在可以通过设置 `MinimapColor` 使用不同的颜色显示在小地图上。" -#: ../../Fixed-or-Improved-Logics.md:1945 +#: ../../Fixed-or-Improved-Logics.md:1963 msgid "" "[SOMEORE] ; Tiberium\n" "MinimapColor= ; integer - Red,Green,Blue\n" @@ -6727,15 +6798,15 @@ msgstr "" "[SOMEORE] ; Tiberium\n" "MinimapColor= ; integer - Red,Green,Blue\n" -#: ../../Fixed-or-Improved-Logics.md:1950 +#: ../../Fixed-or-Improved-Logics.md:1968 msgid "Vehicles" msgstr "载具类型" -#: ../../Fixed-or-Improved-Logics.md:1952 +#: ../../Fixed-or-Improved-Logics.md:1970 msgid "Allow miners do area guard" msgstr "允许矿车区域警戒" -#: ../../Fixed-or-Improved-Logics.md:1954 +#: ../../Fixed-or-Improved-Logics.md:1972 msgid "" "In vanilla, when miners enter area guard mission, they immediately switch" " to harvest mission. Now you can make them perform area guard mission " @@ -6744,21 +6815,22 @@ msgstr "" "在原版中当一个矿车进入 `Area Guard` 任务时会立即切换为 `Havrest` 任务。现在你可以让它们像其他单位那样正常执行 `Area" " Guard` 任务了。" -#: ../../Fixed-or-Improved-Logics.md:1955 +#: ../../Fixed-or-Improved-Logics.md:1973 msgid "" "We made it work only for miners controlled by the player, because this " "will prevent AI's miners from going work." msgstr "这仅对玩家控制的矿车有效,因为这会阻断 AI 矿车正常工作。" -#: ../../Fixed-or-Improved-Logics.md:1956 +#: ../../Fixed-or-Improved-Logics.md:1974 msgid "" "If `Harvester.CanGuardArea.RequireTarget` set to true, it'll switch back " "to regular harvest mission when there's no valid target within its guard " "range." msgstr "" -"若 `Harvester.CanGuardArea.RequireTarget` 设为 true,当单位警戒范围内不存在有效目标时将会切换回通常所用的 `Havrest` 任务。" +"若 `Harvester.CanGuardArea.RequireTarget` 设为 " +"true,当单位警戒范围内不存在有效目标时将会切换回通常所用的 `Havrest` 任务。" -#: ../../Fixed-or-Improved-Logics.md:1959 +#: ../../Fixed-or-Improved-Logics.md:1977 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "Harvester.CanGuardArea=false ; boolean\n" @@ -6768,11 +6840,11 @@ msgstr "" "Harvester.CanGuardArea=false ; boolean\n" "Harvester.CanGuardArea.RequireTarget=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1965 +#: ../../Fixed-or-Improved-Logics.md:1983 msgid "Bunker entering check dehardcode" msgstr "去除坦克碉堡准入检查的硬编码" -#: ../../Fixed-or-Improved-Logics.md:1967 +#: ../../Fixed-or-Improved-Logics.md:1985 msgid "" "In vanilla, vehicles entering tank bunkers are subject to a series of " "hardcoding restrictions, including having to have turrets, having to have" @@ -6782,17 +6854,17 @@ msgstr "" "在原版,载具进入坦克碉堡时受到一系列硬编码限制,包括必须拥有炮塔、必须拥有武器以及速度类型不能为 " "`SpeedType=Hover`。现在你可以跳过这些限制。" -#: ../../Fixed-or-Improved-Logics.md:1968 +#: ../../Fixed-or-Improved-Logics.md:1986 msgid "This needs to be used with `Bunkerable=yes`." msgstr "这需要与 `Bunkerable=yes` 共同使用。" -#: ../../Fixed-or-Improved-Logics.md:1969 +#: ../../Fixed-or-Improved-Logics.md:1987 msgid "" "This flag only skips the static check, that is, the check on the unit " "type. The dynamic check (cannot be parasitized) remains unchanged." msgstr "这个标签仅跳过静态检查,即对单位类型的检查。动态检查(不能处于被寄生状态)保持不变。" -#: ../../Fixed-or-Improved-Logics.md:1972 +#: ../../Fixed-or-Improved-Logics.md:1990 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "BunkerableAnyway=false ; boolean\n" @@ -6800,7 +6872,7 @@ msgstr "" "[SOMEVEHICLE] ; VehicleType\n" "BunkerableAnyway=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:1978 +#: ../../Fixed-or-Improved-Logics.md:1996 msgid "" "Skipping checks with this feature doesn't mean that vehicles and tank " "bunkers will interact correctly. Following the simple checks performed by" @@ -6811,11 +6883,11 @@ msgstr "" "使用此功能跳过检查并不就意味着载具和坦克碉堡可以正确的交互。根据次功能提供者的简单检查,坦克碉堡的效果主要受到运动模式影响。不同运动模式进入坦克碉堡的详细信息可以在" " [MODENC](https://modenc.renegadeprojects.com/Bunkerable) 上找到。" -#: ../../Fixed-or-Improved-Logics.md:1981 +#: ../../Fixed-or-Improved-Logics.md:1999 msgid "Custom Unit Crate Reroll Chance" msgstr "自定义单位箱子重新随机选取的概率" -#: ../../Fixed-or-Improved-Logics.md:1983 +#: ../../Fixed-or-Improved-Logics.md:2001 msgid "" "It is possible to influence weighting of units given from crates " "(`CrateGoodie=true`) via `CrateGoodie.RerollChance`, which determines the" @@ -6825,7 +6897,7 @@ msgstr "" "现在可以通过 `CrateGoodie.RerollChance` 来影响从升级工具箱 (`CrateGoodie=true`) " "中获得一个单位的权重,该值决定了如果随机到这种类型的单位,那么它将重新随机另一种单位的概率。" -#: ../../Fixed-or-Improved-Logics.md:1986 +#: ../../Fixed-or-Improved-Logics.md:2004 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "CrateGoodie.RerollChance=0.0 ; floating point value, percents or " @@ -6835,23 +6907,23 @@ msgstr "" "CrateGoodie.RerollChance=0.0 ; floating point value, percents or " "absolute (0.0-1.0)\n" -#: ../../Fixed-or-Improved-Logics.md:1991 +#: ../../Fixed-or-Improved-Logics.md:2009 msgid "Customize harvester dump amount" msgstr "自定义矿车单次倒矿量" -#: ../../Fixed-or-Improved-Logics.md:1993 +#: ../../Fixed-or-Improved-Logics.md:2011 msgid "" "Now you can limit how much ore the harvester can dump out per time, like " "it in Tiberium Sun." msgstr "现在你可以限制矿车每次倒矿时卸载的矿石量,就像《泰伯利亚之日》中的设定" -#: ../../Fixed-or-Improved-Logics.md:1994 +#: ../../Fixed-or-Improved-Logics.md:2012 msgid "" "Less than or equal to 0 means no limit, it will always dump out all at " "one time." msgstr "若该值小于等于 0 则表示一次倒完,就像《红色警戒2》中原本的行为" -#: ../../Fixed-or-Improved-Logics.md:1997 +#: ../../Fixed-or-Improved-Logics.md:2015 msgid "" "[General]\n" "HarvesterDumpAmount=0.0 ; float point value\n" @@ -6865,18 +6937,18 @@ msgstr "" "[SOMEVEHICLE] ; VehicleType\n" "HarvesterDumpAmount= ; float point value\n" -#: ../../Fixed-or-Improved-Logics.md:2005 +#: ../../Fixed-or-Improved-Logics.md:2023 msgid "Customize type selection for IFV" msgstr "自定义 IFV 的类型选择" -#: ../../Fixed-or-Improved-Logics.md:2007 +#: ../../Fixed-or-Improved-Logics.md:2025 msgid "" "In vanilla game, when using type selection command on IFVs, all of them " "will be selected regardless of their current modes, which is allowed to " "customize now." msgstr "在原文的游戏中,当对 IFV 使用类型选择命令时会直接选中所有 IFV 而无论其当前的模式,现在这可以自定义了。" -#: ../../Fixed-or-Improved-Logics.md:2008 +#: ../../Fixed-or-Improved-Logics.md:2026 msgid "" "`WeaponGroupAsN` determines which group the IFV is in when enabling " "`WeaponN`, where N stands for 1-based weapon mode index. IFVs in the same" @@ -6886,26 +6958,26 @@ msgstr "" "`WeaponGroupAsN` 决定当 IFV 启用 `WeaponN` 时所属的组别,N 为从 1 " "开始的武器模式序号。进行类型选择时将会选中同组 IFV 而不会包含非同组的。" -#: ../../Fixed-or-Improved-Logics.md:2009 +#: ../../Fixed-or-Improved-Logics.md:2027 msgid "" "`TypeSelectUseIFVMode` determines whether all IFV modes will be " "considered as its own group by default during a type selection." msgstr "`TypeSelectUseIFVMode` 决定类型选择时所有 IFVMode 是否默认自成一组。" -#: ../../Fixed-or-Improved-Logics.md:2010 +#: ../../Fixed-or-Improved-Logics.md:2028 msgid "" "If it's set to true, `WeaponGroupAsN` will be default to N for each " "`WeaponN`, which makes each of them become a standalone type during a " "type selection." msgstr "若设为 true 则 `WeaponGroupAsN` 默认为 N 的值以使每个模式都作为独立的组。" -#: ../../Fixed-or-Improved-Logics.md:2011 +#: ../../Fixed-or-Improved-Logics.md:2029 msgid "" "If it's set to false, `WeaponGroupAsN` will be default to 0 for all " "weapons, which makes type selection on IFVs work the same as before." msgstr "若设为 false 则 `WeaponGroupAsN` 将默认为 0 以保持原有行为。" -#: ../../Fixed-or-Improved-Logics.md:2014 +#: ../../Fixed-or-Improved-Logics.md:2032 msgid "" "[General]\n" "TypeSelectUseIFVMode=false ; boolean\n" @@ -6921,11 +6993,11 @@ msgstr "" "WeaponGroupAsN= ; string, default to N if [General] -> " "TypeSelectUseIFVMode=true, and 0 if false\n" -#: ../../Fixed-or-Improved-Logics.md:2022 +#: ../../Fixed-or-Improved-Logics.md:2040 msgid "Customizing crushing tilt and slowdown" msgstr "自定义碾压倾斜和减速" -#: ../../Fixed-or-Improved-Logics.md:2024 +#: ../../Fixed-or-Improved-Logics.md:2042 msgid "" "Vehicles with `Crusher=true` and `OmniCrusher=true` / " "`MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles /" @@ -6939,7 +7011,7 @@ msgstr "" "`TiltsWhenCrusher.Vehicles` 和 `TiltsWhenCrusher.Overlays` " "对两种情况分别进行定义,它们都默认为 `TiltsWhenCrushes`。" -#: ../../Fixed-or-Improved-Logics.md:2025 +#: ../../Fixed-or-Improved-Logics.md:2043 msgid "" "`CrushForwardTiltPerFrame` determines how much the forward tilt is " "adjusted per frame when crushing overlays or vehicles. Defaults to -0.02 " @@ -6949,13 +7021,13 @@ msgstr "" "`CrushForwardTiltPerFrame` 决定在碾压覆盖物或载具时每帧前倾的幅度。对于 `Locomotor=Ship` " "的载具碾压覆盖物的时默认为 -0.02,其他情况默认为 -0.050000001。" -#: ../../Fixed-or-Improved-Logics.md:2026 +#: ../../Fixed-or-Improved-Logics.md:2044 msgid "" "`CrushOverlayExtraForwardTilt` is additional forward tilt applied after " "an overlay has been crushed by the vehicle." msgstr "`CrushOverlayExtraForwardTilt` 是载具碾压覆盖物后额外的向前倾斜量" -#: ../../Fixed-or-Improved-Logics.md:2027 +#: ../../Fixed-or-Improved-Logics.md:2045 msgid "" "It is possible to customize the movement speed slowdown when " "`MovementZone=CrusherAll` vehicle crushes walls by setting " @@ -6964,7 +7036,7 @@ msgstr "" "可以通过设置 `CrushSlowdownMultiplier` 来自定义 `MovementZone=CrusherAll` " "的载具碾压围墙时移动速度的减速幅度。" -#: ../../Fixed-or-Improved-Logics.md:2028 +#: ../../Fixed-or-Improved-Logics.md:2046 msgid "" "You can also disable the slowdown completely by using the flag " "`SkipCrushSlowdown`. This is not the same as " @@ -6976,7 +7048,7 @@ msgstr "" "`CrushSlowdownMultiplier=1.0`。它可以避免 `Accelerates=true` 与 " "`MovementZone=CrushAll` 共用时单位有时会减速的 Bug。" -#: ../../Fixed-or-Improved-Logics.md:2031 +#: ../../Fixed-or-Improved-Logics.md:2049 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "TiltsWhenCrushes.Vehicles= ; boolean\n" @@ -6994,11 +7066,11 @@ msgstr "" "CrushSlowdownMultiplier=0.2 ; floating point value\n" "SkipCrushSlowdown=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2041 +#: ../../Fixed-or-Improved-Logics.md:2059 msgid "Destroy animations" msgstr "摧毁动画" -#: ../../Fixed-or-Improved-Logics.md:2043 +#: ../../Fixed-or-Improved-Logics.md:2061 msgid "" "`DestroyAnim` has been extended to work with VehicleTypes, with option to" " pick random animation if `DestroyAnim.Random` is set to true. These " @@ -7009,7 +7081,7 @@ msgstr "" "那么可以随机选取其中一个动画。这些动画存储了所属方和朝向信息以供[生成单位](New-or-Enhanced-Logics.md#anim-to-" "unit)逻辑使用。" -#: ../../Fixed-or-Improved-Logics.md:2046 +#: ../../Fixed-or-Improved-Logics.md:2064 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "DestroyAnim= ; List of AnimationTypes\n" @@ -7019,24 +7091,24 @@ msgstr "" "DestroyAnim= ; List of AnimationTypes\n" "DestroyAnim.Random=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2052 +#: ../../Fixed-or-Improved-Logics.md:2070 msgid "`IsSimpleDeployer` vehicle ammo change on deploy" msgstr "`IsSimpleDeployer` 载具在部署时更改弹药" -#: ../../Fixed-or-Improved-Logics.md:2054 +#: ../../Fixed-or-Improved-Logics.md:2072 msgid "" "`Ammo.AddOnDeploy` determines the number of ammo added or subtracted " "after the vehicle has deployed or undeployed." msgstr "`Ammo.AddOnDeploy` 决定载具部署或反部署后增加或减少的弹药量。" -#: ../../Fixed-or-Improved-Logics.md:2055 +#: ../../Fixed-or-Improved-Logics.md:2073 msgid "" "Ammo count cannot go below 0 or above the maximum ammo for vehicle's type" " (in case the deploy results in type conversion, type is the one after " "the conversion)." msgstr "弹药数不得低于 0 或高于该载具类型的最大弹药量(若部署操作导致单位转换则以转换后的量为准)。" -#: ../../Fixed-or-Improved-Logics.md:2058 +#: ../../Fixed-or-Improved-Logics.md:2076 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "Ammo.AddOnDeploy=0 ; integer\n" @@ -7044,11 +7116,11 @@ msgstr "" "[SOMEVEHICLE] ; VehicleType\n" "Ammo.AddOnDeploy=0 ; integer\n" -#: ../../Fixed-or-Improved-Logics.md:2063 +#: ../../Fixed-or-Improved-Logics.md:2081 msgid "IsSimpleDeployer customizations" msgstr "自定义 IsSimpleDeployer" -#: ../../Fixed-or-Improved-Logics.md:2065 +#: ../../Fixed-or-Improved-Logics.md:2083 msgid "" "It is possible to enable checking if the deployed unit (if type " "conversion is in use, the conversion result will be used for these " @@ -7059,7 +7131,7 @@ msgstr "" "现在可以通过 `IsSimpleDeployer.ConsiderPathfinding=true` " "来开启对将部署的单位(若使用单位转换则检查作为转换目标的单位)是否允许在当前单元格上部署的检查,部署光标也会跟随变化。" -#: ../../Fixed-or-Improved-Logics.md:2066 +#: ../../Fixed-or-Improved-Logics.md:2084 msgid "" "You can explicitly disable deploying on cells of specified land types " "using `IsSimpleDeployer.DisallowedLandTypes`. Defaults to `water,beach` " @@ -7070,7 +7142,7 @@ msgstr "" "`Locomotor=Jumpjet` 或 `Locomotor=Hover` 且拥有 `DeployToLand=true` 的单位默认为 " "`water,beach`;对于其他单位则默认为 `none`。" -#: ../../Fixed-or-Improved-Logics.md:2067 +#: ../../Fixed-or-Improved-Logics.md:2085 msgid "" "In vanilla game only units with `DeployingAnim` were constrained to a " "specific deploy facing and it was not customizable per unit. `DeployDir` " @@ -7082,11 +7154,11 @@ msgstr "" "`DeployDir`(对于拥有 `DeployingAnim` 的单位默认为 `[AudioVisual] -> DeployDir`,否则为 " "-1)来为每个单位单独设定,Phobos 允许使用特殊值 -1 来解除朝向限制。" -#: ../../Fixed-or-Improved-Logics.md:2068 +#: ../../Fixed-or-Improved-Logics.md:2086 msgid "Multiple new options for deploy animations:" msgstr "部署动画相关的多个新增选项:" -#: ../../Fixed-or-Improved-Logics.md:2069 +#: ../../Fixed-or-Improved-Logics.md:2087 msgid "" "`DeployingAnims` can be used instead of `DeployingAnim` (if both are set," " `DeployingAnims` takes precedence) to define a list of direction-" @@ -7099,26 +7171,26 @@ msgstr "" "`DeployingAnim`(当都被设置时优先使用前者)来定义一组与方向对应的部署动画。根据所列动画的最大数量取 2 " "的幂值作为方向数/动画数。若少于 8 个则仅适用列出的第一个动画。" -#: ../../Fixed-or-Improved-Logics.md:2070 +#: ../../Fixed-or-Improved-Logics.md:2088 msgid "" "`DeployingAnim.KeepUnitVisible` determines if the unit is **not** hidden " "while the animation is playing." msgstr "`DeployingAnim.KeepUnitVisible` 决定单位是否在动画播放期间**不**被隐藏。" -#: ../../Fixed-or-Improved-Logics.md:2071 +#: ../../Fixed-or-Improved-Logics.md:2089 msgid "" "`DeployingAnim.ReverseForUndeploy` controls whether or not the animation " "is played in reverse for undeploying." msgstr "`DeployingAnim.ReverseForUndeploy` 控制反部署时是否使动画反向播放。" -#: ../../Fixed-or-Improved-Logics.md:2072 +#: ../../Fixed-or-Improved-Logics.md:2090 msgid "" "`DeployingAnim.UseUnitDrawer` controls whether or not the animation is " "displayed in the unit's palette and team colours or regular animation " "palette, including a potential custom palette." msgstr "`DeployingAnim.UseUnitDrawer` 控制动画使用 unit 色盘以及所属色还是常规动画色盘,包括潜在的自定义色盘。" -#: ../../Fixed-or-Improved-Logics.md:2075 +#: ../../Fixed-or-Improved-Logics.md:2093 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "IsSimpleDeployer.ConsiderPathfinding=false ; boolean\n" @@ -7144,25 +7216,25 @@ msgstr "" "DeployingAnim.ReverseForUndeploy=true ; boolean\n" "DeployingAnim.UseUnitDrawer=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2086 +#: ../../Fixed-or-Improved-Logics.md:2104 msgid "Make harvesters do addtional scan after unload" msgstr "使矿车卸载后重新扫描较近的矿区" -#: ../../Fixed-or-Improved-Logics.md:2088 +#: ../../Fixed-or-Improved-Logics.md:2106 msgid "" "In vanilla, miners will remember their current location when they reach " "full load and move to that location after unloading. This makes miners to" " gradually move deeper into the mine and ignore the closer minerals." msgstr "在原版中矿车在满载时会记录当前位置并在卸载后返回该坐标。这一机制会让矿车逐渐向原矿区深处探索但却容易忽略距离更近的矿区。" -#: ../../Fixed-or-Improved-Logics.md:2089 +#: ../../Fixed-or-Improved-Logics.md:2107 msgid "" "Now you can have the miner search for the nearest mineral again after " "unloading. If a closer mineral is found, the miner will go to that " "location instead of the previously recorded location." msgstr "现在你可以让矿车在卸载后重新搜索最近的矿区。如果发现了更近的矿区那么矿车会优先前往它而不是返回先前记录的坐标。" -#: ../../Fixed-or-Improved-Logics.md:2092 +#: ../../Fixed-or-Improved-Logics.md:2110 msgid "" "[General]\n" "HarvesterScanAfterUnload=false ; boolean\n" @@ -7178,32 +7250,32 @@ msgstr "" "HarvesterScanAfterUnload= ; boolean, default to [General] -> " "HarvesterScanAfterUnload\n" -#: ../../Fixed-or-Improved-Logics.md:2100 +#: ../../Fixed-or-Improved-Logics.md:2118 msgid "Preserve Iron Curtain / Force Shield status on type conversion" msgstr "在单位转换时保留铁幕/力场护盾状态" -#: ../../Fixed-or-Improved-Logics.md:2102 +#: ../../Fixed-or-Improved-Logics.md:2120 msgid "![image](_static/images/preserve-ic.gif) *Bugfix in action*" msgstr "![image](_static/images/preserve-ic.gif) *Bug 修复后的行为*" -#: ../../Fixed-or-Improved-Logics.md:2105 +#: ../../Fixed-or-Improved-Logics.md:2123 msgid "" "Iron Curtain status is now preserved by default when converting between " "TechnoTypes via `DeploysInto` / `UndeploysInto`. Force Shield status " "preservation is turned off by default." msgstr "通过 `DeploysInto`/`UndeploysInto` 在科技类型之间的转换现在默认保留铁幕状态。力场护盾则默认不保留。" -#: ../../Fixed-or-Improved-Logics.md:2106 +#: ../../Fixed-or-Improved-Logics.md:2124 msgid "This behavior can be turned on/off per-TechnoType and on global basis." msgstr "这一行为可以对每个科技类型和全局进行开启/关闭。" -#: ../../Fixed-or-Improved-Logics.md:2107 +#: ../../Fixed-or-Improved-Logics.md:2125 msgid "" "`IronCurtain.Modifier` / `ForceShield.Modifier` (whichever is applicable)" " is re-applied upon type conversion." msgstr "`IronCurtain.Modifier`/`ForceShield.Modifier`(视情况而定)将在单位转换时刷新。" -#: ../../Fixed-or-Improved-Logics.md:2110 +#: ../../Fixed-or-Improved-Logics.md:2128 msgid "" "[CombatDamage]\n" "IronCurtain.KeptOnDeploy=true ; boolean\n" @@ -7227,49 +7299,49 @@ msgstr "" "ForceShield.KeptOnDeploy= ; boolean, default to [CombatDamage] -> " "ForceShield.KeptOnDeploy\n" -#: ../../Fixed-or-Improved-Logics.md:2120 +#: ../../Fixed-or-Improved-Logics.md:2138 msgid "Retain target on movement command" msgstr "在命令移动后保留目标" -#: ../../Fixed-or-Improved-Logics.md:2122 +#: ../../Fixed-or-Improved-Logics.md:2140 msgid "" "It is now possible for vehicles to retain their target when issued " "movement command by setting `KeepTargetOnMove` to true." msgstr "现在可以通过设置 `KeepTargetOnMove` 为 true 来使载具在接收到移动命令时保留其目标。" -#: ../../Fixed-or-Improved-Logics.md:2123 +#: ../../Fixed-or-Improved-Logics.md:2141 msgid "" "Note that no check is done whether or not the vehicle or the weapon can " "actually fire while moving, this is on modder's discretion." msgstr "注意这不会检查载具或武器实际上能否在移动中开火,这由 modder 自行决定。" -#: ../../Fixed-or-Improved-Logics.md:2124 +#: ../../Fixed-or-Improved-Logics.md:2142 msgid "" "The target is automatically reset if the vehicle moves beyond the " "weapon's range from the target." msgstr "如果由于载具移动导致目标超出武器射程那么目标将自动重置。" -#: ../../Fixed-or-Improved-Logics.md:2125 +#: ../../Fixed-or-Improved-Logics.md:2143 msgid "" "`KeepTargetOnMove.Weapon` determines the weapon to be used for range " "check. If set to -1, the game will select the weapon against the target " "by default logic." msgstr "`KeepTargetOnMove.Weapon` 决定用于射程检查的武器。如果设为 -1,游戏将会根据默认武器选用规则针对目标对象选取。" -#: ../../Fixed-or-Improved-Logics.md:2126 +#: ../../Fixed-or-Improved-Logics.md:2144 msgid "" "It's recommended to set it to a specific weapon for better performance, " "unless there's a need to use multiple weapons for different targets." msgstr "建议将其设为特定武器以优化性能,除非需要针对不同目标使用多种武器。" -#: ../../Fixed-or-Improved-Logics.md:2127 +#: ../../Fixed-or-Improved-Logics.md:2145 msgid "" "`KeepTargetOnMove.NoMorePursuit` controls whether the unit will restart " "chasing the target for attack when it stops again, otherwise it will " "clear the target when it moves away." msgstr "`KeepTargetOnMove.NoMorePursuit` 控制单位是否会在再次停止后重新开始追击目标以发起攻击,否则会在移动时清除目标。" -#: ../../Fixed-or-Improved-Logics.md:2128 +#: ../../Fixed-or-Improved-Logics.md:2146 msgid "" "`KeepTargetOnMove.ExtraDistance` can be used to modify the distance " "considered 'out of range' from the target (it is added to weapon range), " @@ -7278,7 +7350,7 @@ msgstr "" "`KeepTargetOnMove.ExtraDistance` 可以用来修改被认为 “超出射程” " "的范围(基于武器射程的修正值),负值会缩短判定距离。" -#: ../../Fixed-or-Improved-Logics.md:2131 +#: ../../Fixed-or-Improved-Logics.md:2149 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "KeepTargetOnMove=false ; boolean\n" @@ -7294,25 +7366,25 @@ msgstr "" "KeepTargetOnMove.ExtraDistance=0 ; floating point value, distance in " "cells\n" -#: ../../Fixed-or-Improved-Logics.md:2139 +#: ../../Fixed-or-Improved-Logics.md:2157 msgid "Sinking behavior dehardcode" msgstr "自定义沉没行为" -#: ../../Fixed-or-Improved-Logics.md:2141 +#: ../../Fixed-or-Improved-Logics.md:2159 msgid "" "In vanilla, whether a ship sinks when it dies on the water is determined " "by multiple settings of hardcoding. The speed of the sinking is hardcoded" " to 5 Leptons per frame." msgstr "原版中一艘舰船在水上死亡是否会沉没由多个硬编码设置决定。沉没速度硬编码为每帧 5 leptons。" -#: ../../Fixed-or-Improved-Logics.md:2142 +#: ../../Fixed-or-Improved-Logics.md:2160 msgid "" "Now you can determine whether a ship sinks with a dedicated flag " "`Sinkable`, and use `SinkSpeed` to customize the speed at which the ship " "sinks." msgstr "现在你可以通过专门的标签 `Sinkable` 来决定一艘舰船是否会沉没,并且可以使用 `SinkSpeed` 来定义舰船的沉没速度。" -#: ../../Fixed-or-Improved-Logics.md:2143 +#: ../../Fixed-or-Improved-Logics.md:2161 msgid "" "`Sinkable.SquidGrab` controls the behavior of a ship when it is killed by" " a squid. Set it to `false` to cause the ship to take a lethal damage " @@ -7322,7 +7394,7 @@ msgstr "" "`Sinkable.SquidGrab` 控制一艘船在被巨型乌贼击杀时的行为。将其设为 false " "会导致舰船受到致命伤害而非在此时直接沉没(从而遵循 `Sinkable` 的设置)。" -#: ../../Fixed-or-Improved-Logics.md:2146 +#: ../../Fixed-or-Improved-Logics.md:2164 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "Sinkable= ; boolean\n" @@ -7334,11 +7406,11 @@ msgstr "" "SinkSpeed=5 ; integer, leptons per frame\n" "Sinkable.SquidGrab=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2153 +#: ../../Fixed-or-Improved-Logics.md:2171 msgid "Stationary vehicles" msgstr "静止的载具" -#: ../../Fixed-or-Improved-Logics.md:2155 +#: ../../Fixed-or-Improved-Logics.md:2173 msgid "" "Setting VehicleType `Speed` to 0 now makes game treat them as stationary," " behaving in very similar manner to deployed vehicles with " @@ -7348,27 +7420,27 @@ msgstr "" "现在载具将在 `Speed` 设置为 0 时使游戏将它们视为静止,其行为方式非常类似于 `IsSimpleDeployer` 设置为 true " "的部署状态载具。不应用于可生产的载具,否则它们将无法退出工厂。" -#: ../../Fixed-or-Improved-Logics.md:2157 +#: ../../Fixed-or-Improved-Logics.md:2175 msgid "Turret recoil" msgstr "炮塔制退" -#: ../../Fixed-or-Improved-Logics.md:2159 +#: ../../Fixed-or-Improved-Logics.md:2177 msgid "" "Now you can use `TurretRecoil` to control units' turret/barrel recoil " "effect when firing." msgstr "现在你可以使用 `TurretRecoil` 来控制单位开火时的炮塔/炮管制退效果。" -#: ../../Fixed-or-Improved-Logics.md:2160 +#: ../../Fixed-or-Improved-Logics.md:2178 msgid "`TurretTravel` and `BarrelTravel` control the maximum recoil distance." msgstr "`TurretTravel` 和 `BarrelTravel` 控制最大制退距离。" -#: ../../Fixed-or-Improved-Logics.md:2161 +#: ../../Fixed-or-Improved-Logics.md:2179 msgid "" "`TurretRecoil.Suppress` can prevent the weapon from producing this effect" " when firing." msgstr "`TurretRecoil.Suppress` 可以在特定武器上阻止其产生此效果。" -#: ../../Fixed-or-Improved-Logics.md:2164 +#: ../../Fixed-or-Improved-Logics.md:2182 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "TurretRecoil=no ; boolean\n" @@ -7398,18 +7470,18 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "TurretRecoil.Suppress=no ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2181 +#: ../../Fixed-or-Improved-Logics.md:2199 msgid "" "The logic above was not reverse-engineered but reimplemented to achieve " "the same effect, hence there might be some differences in behavior " "compared to Tiberian Sun version." msgstr "上面的逻辑并非来自逆向工程复原而是模拟复刻效果,因此与《泰伯利亚之日》中的行为相比可能存在一些差异。" -#: ../../Fixed-or-Improved-Logics.md:2184 +#: ../../Fixed-or-Improved-Logics.md:2202 msgid "Unit Without Turret Always Turn To Target" msgstr "无炮塔单位始终面向目标" -#: ../../Fixed-or-Improved-Logics.md:2186 +#: ../../Fixed-or-Improved-Logics.md:2204 msgid "" "Now vehicles without turret will attempt to turn to the target while the " "weapon is cooling down, rather than after the weapon has cooled down, by " @@ -7418,7 +7490,7 @@ msgstr "" "现在可以通过将 `NoTurret.TrackTarget` 设为 true " "来让没有炮塔的载具在武器冷却期间就尝试更改朝向以面向目标而不是等到武器冷却完成后。" -#: ../../Fixed-or-Improved-Logics.md:2189 +#: ../../Fixed-or-Improved-Logics.md:2207 msgid "" "[General]\n" "NoTurret.TrackTarget=false ; boolean\n" @@ -7434,7 +7506,7 @@ msgstr "" "NoTurret.TrackTarget= ; boolean, defaults to [General] -> " "NoTurret.TrackTarget\n" -#: ../../Fixed-or-Improved-Logics.md:2198 +#: ../../Fixed-or-Improved-Logics.md:2216 msgid "" "Jumpjet can also be affected by this if firing an `OmniFire` weapon with " "`OmniFire.TurnToTarget` set to true." @@ -7442,11 +7514,11 @@ msgstr "" "如果 Jumpjet 在 `OmniFire.TurnToTarget` 设为 true 的情况下发射一个 `OmniFire` " "武器那么也会受到影响。" -#: ../../Fixed-or-Improved-Logics.md:2201 +#: ../../Fixed-or-Improved-Logics.md:2219 msgid "Voxel turret shadow" msgstr "Voxel 炮塔影子" -#: ../../Fixed-or-Improved-Logics.md:2203 +#: ../../Fixed-or-Improved-Logics.md:2221 msgid "" "Vehicle voxel turrets can now draw shadows if `[AudioVisual] -> " "DrawTurretShadow` is set to true. This can be overridden per VehicleType " @@ -7455,7 +7527,7 @@ msgstr "" "如果 `[AudioVisual] -> DrawTurretShadow` 被设为 true 那么载具的 Voxel " "炮塔现在可以绘制影子。这可以在载具的 `artmd.ini` 小节中设置 `TurretShadow` 来覆盖。" -#: ../../Fixed-or-Improved-Logics.md:2206 +#: ../../Fixed-or-Improved-Logics.md:2224 msgid "" "[AudioVisual]\n" "DrawTurretShadow=false ; boolean\n" @@ -7463,7 +7535,7 @@ msgstr "" "[AudioVisual]\n" "DrawTurretShadow=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2212 +#: ../../Fixed-or-Improved-Logics.md:2230 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "TurretShadow= ; boolean\n" @@ -7471,11 +7543,11 @@ msgstr "" "[SOMEVEHICLE] ; VehicleType\n" "TurretShadow= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2217 +#: ../../Fixed-or-Improved-Logics.md:2235 msgid "VoxelAnims" msgstr "Voxel 碎片" -#: ../../Fixed-or-Improved-Logics.md:2221 +#: ../../Fixed-or-Improved-Logics.md:2239 msgid "" "The INI keys and behaviour is mostly identical to the [equivalent " "behaviour available to regular animations](#customizable-debris--meteor-" @@ -7487,17 +7559,17 @@ msgstr "" "detonation-behaviour)基本相同。主要区别是这些标签必须列在 `rulesmd.ini` 中的 Voxel 碎片条目中,而不是 " "`artmd.ini` 中。" -#: ../../Fixed-or-Improved-Logics.md:2223 +#: ../../Fixed-or-Improved-Logics.md:2241 msgid "Customizable debris trailer anim spawn delay" msgstr "自定义 Voxel 碎片尾烟动画生成间隔" -#: ../../Fixed-or-Improved-Logics.md:2225 +#: ../../Fixed-or-Improved-Logics.md:2243 msgid "" "You can now customize the generation interval of VoxelAnim's trailer " "animation." msgstr "现在你可以自定义 Voxel 碎片的尾烟动画生成间隔。" -#: ../../Fixed-or-Improved-Logics.md:2228 +#: ../../Fixed-or-Improved-Logics.md:2246 msgid "" "[SOMEVOXELANIM] ; VoxelAnimType\n" "Trailer.SpawnDelay=2 ; integer, game frames\n" @@ -7505,15 +7577,15 @@ msgstr "" "[SOMEVOXELANIM] ; VoxelAnimType\n" "Trailer.SpawnDelay=2 ; integer, game frames\n" -#: ../../Fixed-or-Improved-Logics.md:2233 +#: ../../Fixed-or-Improved-Logics.md:2251 msgid "Warheads" msgstr "弹头" -#: ../../Fixed-or-Improved-Logics.md:2235 +#: ../../Fixed-or-Improved-Logics.md:2253 msgid "Allowing damage dealt to firer" msgstr "允许杀伤开火者" -#: ../../Fixed-or-Improved-Logics.md:2237 +#: ../../Fixed-or-Improved-Logics.md:2255 msgid "" "You can now allow warhead to deal damage (and apply damage-adjacent " "effects such as `KillDriver` and `DisableWeapons/Sonar/Flash.Duration` " @@ -7523,14 +7595,14 @@ msgstr "" "现在即使对象没有 `DamageSelf=true` 你也可以允许弹头对被视为开火者的对象造成杀伤(并使用诸如 `KillDriver` 和 " "`DisableWeapons/Sonar/Flash.Duration`(*Ares 功能*)这些与杀伤相关的效果。)" -#: ../../Fixed-or-Improved-Logics.md:2238 +#: ../../Fixed-or-Improved-Logics.md:2256 msgid "" "Note that effect of `Psychedelic=true`, despite being tied to damage will" " still fail to apply on the firer as it does not affect any objects " "belonging to same house as the firer, including itself." msgstr "注意尽管 `Psychedelic=true` 的效果与杀伤相关但由于其不会影响任何包括开火者在内所有与开火者同一所属的对象因此仍然无法生效。" -#: ../../Fixed-or-Improved-Logics.md:2241 +#: ../../Fixed-or-Improved-Logics.md:2259 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "AllowDamageOnSelf=false ; boolean\n" @@ -7538,11 +7610,11 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "AllowDamageOnSelf=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2246 +#: ../../Fixed-or-Improved-Logics.md:2264 msgid "Combat light customizations" msgstr "自定义战斗闪光" -#: ../../Fixed-or-Improved-Logics.md:2248 +#: ../../Fixed-or-Improved-Logics.md:2266 msgid "" "You can now set minimum detail level at which combat light effects are " "shown by setting `[AudioVisual] -> CombatLightDetailLevel` or " @@ -7551,20 +7623,20 @@ msgstr "" "现在你可以通过设置 `[AudioVisual] -> CombatLightDetailLevel` 或在弹头上设置 " "`CombatLightDetailLevel` 来限定显示闪光效果的最小画质级别。" -#: ../../Fixed-or-Improved-Logics.md:2249 +#: ../../Fixed-or-Improved-Logics.md:2267 msgid "" "You can now set a percentage chance a combat light effect is shown on " "Warhead impact by setting `CombatLightChance`." msgstr "现在你可以通过设置 `CombatLightChance` 来限定弹头命中时显示战斗闪光效果的概率百分比。" -#: ../../Fixed-or-Improved-Logics.md:2250 +#: ../../Fixed-or-Improved-Logics.md:2268 msgid "" "Setting `CLIsBlack` to true on Warhead will now turn the flash black like" " on hitting an Iron Curtained object, irregardless of other color " "settings." msgstr "现在可以通过在弹头上设置 `CLIsBlack` 为 true 来让闪光就像击中在铁幕保护下的物体一样使用黑色,无视其他颜色设置。" -#: ../../Fixed-or-Improved-Logics.md:2253 +#: ../../Fixed-or-Improved-Logics.md:2271 msgid "" "[AudioVisual]\n" "CombatLightDetailLevel=0 ; integer\n" @@ -7586,11 +7658,11 @@ msgstr "" "(0.0-1.0)\n" "CLIsBlack=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2263 +#: ../../Fixed-or-Improved-Logics.md:2281 msgid "Custom debris animations and additional debris spawn settings" msgstr "自定义碎片动画和额外的碎片生成设置" -#: ../../Fixed-or-Improved-Logics.md:2265 +#: ../../Fixed-or-Improved-Logics.md:2283 msgid "" "You can now use `DebrisAnims` to specify a list of debris animations to " "spawn instead of animations from `[General] -> MetallicDebris` when " @@ -7600,7 +7672,7 @@ msgstr "" "现在可以使用 `DebrisAnims` 指定要生成的碎片动画列表,而不是仅能在引爆拥有 `MaxDebris` > 0 且没有 " "`DebrisTypes`(指定 Voxel 碎片)的弹头时使用 `[General] -> MetallicDebris` 列表中的动画。" -#: ../../Fixed-or-Improved-Logics.md:2266 +#: ../../Fixed-or-Improved-Logics.md:2284 msgid "" "`Debris.Conventional`, if set to true, makes `DebrisTypes` or " "`DebrisAnims` only spawn if Warhead is fired on non-water cell." @@ -7608,7 +7680,7 @@ msgstr "" "`Debris.Conventional` 如果设为 true,那么仅在弹头在非水面单元格上引爆时才会使用 `DebrisTypes` 或 " "`DebrisAnims`。" -#: ../../Fixed-or-Improved-Logics.md:2269 +#: ../../Fixed-or-Improved-Logics.md:2287 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "DebrisAnims= ; List of AnimationTypes\n" @@ -7618,11 +7690,11 @@ msgstr "" "DebrisAnims= ; List of AnimationTypes\n" "Debris.Conventional=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2275 +#: ../../Fixed-or-Improved-Logics.md:2293 msgid "Custom debris voxel animations limitation" msgstr "自定义 Voxel 碎片数量限制" -#: ../../Fixed-or-Improved-Logics.md:2281 +#: ../../Fixed-or-Improved-Logics.md:2299 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "DebrisTypes.Limit= ; boolean\n" @@ -7634,22 +7706,22 @@ msgstr "" "DebrisMaximums= ; List of integers\n" "DebrisMinimums= ; List of integers\n" -#: ../../Fixed-or-Improved-Logics.md:2288 +#: ../../Fixed-or-Improved-Logics.md:2306 msgid "Customizable rocker amplitude" msgstr "自定义掀起幅度" -#: ../../Fixed-or-Improved-Logics.md:2290 +#: ../../Fixed-or-Improved-Logics.md:2308 msgid "" "The rocker amplitude of warheads with `Rocker=yes` used to be determined " "by `Damage` value of the weapon. You can now override it with fixed value" " and add a multiplier to it." msgstr "拥有 `Rocker=yes` 的弹头其气波掀起载具的幅度过去由武器的 `Damage` 值所决定。现在可以通过固定值覆盖它并添加一个倍率。" -#: ../../Fixed-or-Improved-Logics.md:2291 +#: ../../Fixed-or-Improved-Logics.md:2309 msgid "When both multiplier and override values are set - both are used." msgstr "当同时设置了倍率和覆盖值时两者都会被使用。" -#: ../../Fixed-or-Improved-Logics.md:2294 +#: ../../Fixed-or-Improved-Logics.md:2312 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "Rocker.AmplitudeMultiplier=1.0 ; floating point value, multiplier\n" @@ -7659,11 +7731,11 @@ msgstr "" "Rocker.AmplitudeMultiplier=1.0 ; floating point value, multiplier\n" "Rocker.AmplitudeOverride= ; integer\n" -#: ../../Fixed-or-Improved-Logics.md:2300 +#: ../../Fixed-or-Improved-Logics.md:2318 msgid "Customizable Warhead animation behaviour" msgstr "自定义弹头动画行为" -#: ../../Fixed-or-Improved-Logics.md:2302 +#: ../../Fixed-or-Improved-Logics.md:2320 msgid "" "It is possible to make game play random animation from `AnimList` by " "setting `AnimList.PickRandom` to true. The result is similar to what " @@ -7675,7 +7747,7 @@ msgstr "" "`EMEffect=true` 时的效果,但它不会带来副作用(`EMEffect=true` 会影响 `Inviso=true` " "的抛射体锁定目标,导致它们无法击中移动目标)。" -#: ../../Fixed-or-Improved-Logics.md:2303 +#: ../../Fixed-or-Improved-Logics.md:2321 msgid "" "If `AnimList.CreateAll` is set to true, all animations from `AnimList` " "are created, instead of a single anim based on damage or random if " @@ -7685,7 +7757,7 @@ msgstr "" "列表中的动画都将会被创建,而不再是只创建单个基于杀伤值计算或随机选取的动画,前提是 `AnimList.PickRandom` 没有被设为 " "true。" -#: ../../Fixed-or-Improved-Logics.md:2304 +#: ../../Fixed-or-Improved-Logics.md:2322 msgid "" "If `AnimList.CreationInterval` is set to a value higher than 0, there " "will be that number of detonations of the Warhead before animations from " @@ -7700,20 +7772,20 @@ msgstr "" "中的动画前需要爆炸一定数量的该弹头。如果该弹头是由一个单位发射的,那么该单位只会检查它自己所发射该弹头的次数,否则会对全图所有同一弹头的引爆次数进行计数。如果你希望像" " `Airburst` 这种具有大范围扩散的效果其弹头动画可以均匀出现而不是每次引爆都出现的话那么这会非常有用。" -#: ../../Fixed-or-Improved-Logics.md:2305 +#: ../../Fixed-or-Improved-Logics.md:2323 msgid "" "`AnimList.ScatterMin` & `AnimList.ScatterMax` can be used to set a range " "in cells around which any created animations will randomly scatter around" " from the impact point." msgstr "`AnimList.ScatterMin` 和 `AnimList.ScatterMax` 可用于设置从爆炸中心点开始一定范围内的动画随机散布范围。" -#: ../../Fixed-or-Improved-Logics.md:2306 +#: ../../Fixed-or-Improved-Logics.md:2324 msgid "" "`SplashList` can be used to override animations displayed if the Warhead " "has `Conventional=true` and it hits water." msgstr "`SplashList` 可以在拥有 `Conventional=true` 的弹头击中水面时覆盖显示的动画。" -#: ../../Fixed-or-Improved-Logics.md:2307 +#: ../../Fixed-or-Improved-Logics.md:2325 msgid "" "`SplashList.PickRandom`, `SplashList.CreateAll`, " "`SplashList.CreationInterval` and `SplashList.Scatter(Min/Max)` apply to " @@ -7722,7 +7794,7 @@ msgstr "" "`SplashList.PickRandom`、`SplashList.CreateAll`、`SplashList.CreationInterval`" " 和 `SplashList.Scatter(Min/Max)` 与 `AnimList` 同类语句相同。" -#: ../../Fixed-or-Improved-Logics.md:2308 +#: ../../Fixed-or-Improved-Logics.md:2326 msgid "" "`CreateAnimsOnZeroDamage`, if set to true, makes it so that `AnimList` or" " `SplashList` animations are created even if the weapon that fired the " @@ -7731,7 +7803,7 @@ msgstr "" "`CreateAnimsOnZeroDamage` 如果设为 true,即便发射该弹头的武器只会造成 0 点伤害也会正常创建 `AnimList`" " 或 `SplashList` 动画。" -#: ../../Fixed-or-Improved-Logics.md:2309 +#: ../../Fixed-or-Improved-Logics.md:2327 msgid "" "Setting `Conventional.IgnoreUnits` to true on Warhead with " "`Conventional=true` will make the Warhead detonate on non-underwater " @@ -7743,7 +7815,7 @@ msgstr "" "会使弹头命中位于水中的非水下载具类型时视为在水中引爆而不是视为在陆地上引爆。这决定了命中水面舰船时使用 `AnimList` 还是 " "`SplashList`。" -#: ../../Fixed-or-Improved-Logics.md:2312 +#: ../../Fixed-or-Improved-Logics.md:2330 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "AnimList.PickRandom=false ; boolean\n" @@ -7785,11 +7857,11 @@ msgstr "" "CreateAnimsOnZeroDamage=false ; boolean\n" "Conventional.IgnoreUnits=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2329 +#: ../../Fixed-or-Improved-Logics.md:2347 msgid "Customizable Warhead trigger conditions" msgstr "自定义弹头效果触发条件" -#: ../../Fixed-or-Improved-Logics.md:2331 +#: ../../Fixed-or-Improved-Logics.md:2349 msgid "" "`AffectsBelowPercent` and `AffectsAbovePercent` can be used to set the " "health percentage thresholds that target needs to be below/equal and/or " @@ -7799,13 +7871,13 @@ msgstr "" "`AffectsBelowPercent` 和 `AffectsAbovePercent` " "可用于设置目标被弹头作用所需的血量百分比必须高于和/或低于/等于的限制。若目标血量为 0 则跳过该检查。" -#: ../../Fixed-or-Improved-Logics.md:2332 +#: ../../Fixed-or-Improved-Logics.md:2350 msgid "" "If set to `false`, `AffectsNeutral` makes the warhead can't damage or " "affect target that belongs to neutral house." msgstr "若设置 `AffectsNeutral=false` 那么弹头将无法杀伤或作用于所属于中立所属方的目标。" -#: ../../Fixed-or-Improved-Logics.md:2333 +#: ../../Fixed-or-Improved-Logics.md:2351 #, python-format msgid "" "If set to `false`, `EffectsRequireVerses` makes the Phobos-introduced " @@ -7815,7 +7887,7 @@ msgstr "" "若设置 `EffectsRequireVerses=false` 那么即便由于目标当前装甲类型导致弹头无法对其造成杀伤(例如 " "`Verses=0%`)Phobos 所引入的弹头效果也仍会触发。" -#: ../../Fixed-or-Improved-Logics.md:2336 +#: ../../Fixed-or-Improved-Logics.md:2354 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "AffectsBelowPercent=1.0 ; floating point value, percents or absolute\n" @@ -7829,17 +7901,17 @@ msgstr "" "AffectsNeutral=true ; boolean\n" "EffectsRequireVerses=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2344 +#: ../../Fixed-or-Improved-Logics.md:2362 msgid "Customizing decloak on damaging targets" msgstr "自定义被伤害目标解除隐形" -#: ../../Fixed-or-Improved-Logics.md:2346 +#: ../../Fixed-or-Improved-Logics.md:2364 msgid "" "You can now specify whether or not the warhead decloaks objects that are " "damaged by the warhead." msgstr "现在你可以指定被这个弹头杀伤的对象是否解除隐形。" -#: ../../Fixed-or-Improved-Logics.md:2349 +#: ../../Fixed-or-Improved-Logics.md:2367 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "DecloakDamagedTargets=true ; boolean\n" @@ -7847,21 +7919,21 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "DecloakDamagedTargets=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2354 +#: ../../Fixed-or-Improved-Logics.md:2372 msgid "Customizing parasite" msgstr "自定义寄生" -#: ../../Fixed-or-Improved-Logics.md:2356 +#: ../../Fixed-or-Improved-Logics.md:2374 msgid "Now you can specify which targets the parasite will culling them." msgstr "现在你可以指定哪些目标会被寄生所秒杀" -#: ../../Fixed-or-Improved-Logics.md:2357 +#: ../../Fixed-or-Improved-Logics.md:2375 msgid "" "Squid grapple anim is hardcoded to use `SQDG` in vanilla, Now you can " "choose it." msgstr "在原版中乌贼拖拽的动画被硬编码为 `SQDG`,现在选择权归你了。" -#: ../../Fixed-or-Improved-Logics.md:2360 +#: ../../Fixed-or-Improved-Logics.md:2378 msgid "" "[AudioVisual]\n" "Parasite.GrappleAnim= ; animation\n" @@ -7879,23 +7951,23 @@ msgstr "" "(none|aircraft|infantry|units|all)\n" "Parasite.GrappleAnim= ; animation\n" -#: ../../Fixed-or-Improved-Logics.md:2369 +#: ../../Fixed-or-Improved-Logics.md:2387 msgid "Dehardcode the `ZAdjust` of warhead anim" msgstr "弹头动画 `ZAdjust` 去硬编码" -#: ../../Fixed-or-Improved-Logics.md:2371 +#: ../../Fixed-or-Improved-Logics.md:2389 msgid "" "In vanilla, the animations generated by `AnimList` have a hard-coded " "`ZAdjust=-15`. Now you can customize it in the following ways." msgstr "在原版中由 `AnimList` 生成的动画被硬编码为 `ZAdjust=-15`。现在你可以通过下述方式进行自定义。" -#: ../../Fixed-or-Improved-Logics.md:2372 +#: ../../Fixed-or-Improved-Logics.md:2390 msgid "" "If these flags are set to 0, the `ZAdjust` defined by the anim will be " "used." msgstr "若这些语句设为 0 则将会使用动画自身的 `ZAdjust` 值。" -#: ../../Fixed-or-Improved-Logics.md:2375 +#: ../../Fixed-or-Improved-Logics.md:2393 msgid "" "[AudioVisual]\n" "WarheadAnimZAdjust=-15 ; Integer\n" @@ -7911,11 +7983,11 @@ msgstr "" "AnimZAdjust= ; Integer, default to [AudioVisual] -> " "WarheadAnimZAdjust\n" -#: ../../Fixed-or-Improved-Logics.md:2383 +#: ../../Fixed-or-Improved-Logics.md:2401 msgid "Delay automatic attack on the controlled unit" msgstr "攻击被心控单位的延迟" -#: ../../Fixed-or-Improved-Logics.md:2385 +#: ../../Fixed-or-Improved-Logics.md:2403 msgid "" "Now you can make the techno that has just been mind controlled not be " "automatically attacked by its original friendly forces for a period of " @@ -7924,13 +7996,13 @@ msgstr "" "现在你可以让刚被心灵控制的科技类型在一段时间内不会自动遭到来自原所属方友军的攻击,持续时间由心灵控制弹头的 " "`MindControl.ThreatDelay` 参数控制。" -#: ../../Fixed-or-Improved-Logics.md:2386 +#: ../../Fixed-or-Improved-Logics.md:2404 msgid "" "This will not affect the manual selection of attacks and is useless with " "permanent mind control." msgstr "这不会影响手动攻击,并且不(也没必要)作用于永久心控的情况。" -#: ../../Fixed-or-Improved-Logics.md:2389 +#: ../../Fixed-or-Improved-Logics.md:2407 msgid "" "[General]\n" "MindControl.ThreatDelay=0 ; integer, game frames\n" @@ -7946,41 +8018,41 @@ msgstr "" "MindControl.ThreatDelay= ; integer, game frames, default to " "[General] -> MindControl.ThreatDelay\n" -#: ../../Fixed-or-Improved-Logics.md:2397 +#: ../../Fixed-or-Improved-Logics.md:2415 msgid "Nonprovocative Warheads" msgstr "非挑衅弹头" -#: ../../Fixed-or-Improved-Logics.md:2399 +#: ../../Fixed-or-Improved-Logics.md:2417 msgid "" "You can now make Warheads behave in nonprovocative fashion. Warheads with" " `Nonprovocative=true` exhibit following behaviours:" msgstr "现在你可以让弹头以非挑衅的方式表现。设置为 `Nonprovocative=true` 的弹头会表现出以下行为:" -#: ../../Fixed-or-Improved-Logics.md:2400 +#: ../../Fixed-or-Improved-Logics.md:2418 msgid "" "They will not generate any EVA announcements upon hitting targets, be it " "for attacking ore miners, base buildings or ally base buildings." msgstr "当命中目标时无论是是矿车、基地建筑还是盟友的基地建筑都不会播放任何 EVA 通报。" -#: ../../Fixed-or-Improved-Logics.md:2401 +#: ../../Fixed-or-Improved-Logics.md:2419 msgid "" "They will not spring 'attacked' / 'attacked by' events. Note that if the " "Warhead deals actual damage, events that check for that can still be " "sprung." msgstr "它们不会触发 “受到攻击”/“被...攻击” 事件。注意如果弹头造成了实际杀伤那么检查杀伤的事件仍可能被触发。" -#: ../../Fixed-or-Improved-Logics.md:2402 +#: ../../Fixed-or-Improved-Logics.md:2420 msgid "" "They will not evoke defense response from AI players when used to attack " "base buildings, `ToProtect=true` TechnoTypes or members of TeamTypes with" " `Whiner=true`." msgstr "它们不会在攻击基地建筑、`ToProtect=true` 的科技类型或具有 `Whiner=true` 的小队的成员时引发 AI 玩家的防御反应。" -#: ../../Fixed-or-Improved-Logics.md:2403 +#: ../../Fixed-or-Improved-Logics.md:2421 msgid "They will not evoke retaliation from TechnoTypes hit by the Warhead." msgstr "它们不会引发弹头所命中科技类型的反击。" -#: ../../Fixed-or-Improved-Logics.md:2406 +#: ../../Fixed-or-Improved-Logics.md:2424 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "Nonprovocative=false ; boolean\n" @@ -7988,24 +8060,24 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "Nonprovocative=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2412 +#: ../../Fixed-or-Improved-Logics.md:2430 msgid "" "Due to technical constraints, this does not suppress warnings from Ares' " "EMP effect." msgstr "由于技术限制,这不会去除 Ares 的 EMP 效果所产生的警告。" -#: ../../Fixed-or-Improved-Logics.md:2415 +#: ../../Fixed-or-Improved-Logics.md:2433 msgid "Restricting screen shaking to current view" msgstr "限制屏幕抖动于当前视角" -#: ../../Fixed-or-Improved-Logics.md:2417 +#: ../../Fixed-or-Improved-Logics.md:2435 msgid "" "You can now specify whether or not the warhead can only shake screen " "(`ShakeX/Ylo/hi`) if it is detonated while visible on current screen " "view." msgstr "现在你可以指定这个弹头是否只能在可视的当前屏幕可见区域内爆炸时才能抖动(`ShakeX/Ylo/hi`)屏幕" -#: ../../Fixed-or-Improved-Logics.md:2420 +#: ../../Fixed-or-Improved-Logics.md:2438 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "ShakeIsLocal=false ; boolean\n" @@ -8013,15 +8085,15 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "ShakeIsLocal=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2425 +#: ../../Fixed-or-Improved-Logics.md:2443 msgid "Weapons" msgstr "武器" -#: ../../Fixed-or-Improved-Logics.md:2427 +#: ../../Fixed-or-Improved-Logics.md:2445 msgid "AmbientDamage customizations" msgstr "自定义穿透伤害" -#: ../../Fixed-or-Improved-Logics.md:2429 +#: ../../Fixed-or-Improved-Logics.md:2447 msgid "" "You can now specify separate Warhead used for `AmbientDamage` via " "`AmbientDamage.Warhead` or make it never apply to weapon's main target by" @@ -8030,7 +8102,7 @@ msgstr "" "现在你可以通过 `AmbientDamage.Warhead` 指定用于 `AmbientDamage` 的弹头或通过将 " "`AmbientDamage.IgnoreTarget` 设为 true 使其永远不会对武器的直接目标生效。" -#: ../../Fixed-or-Improved-Logics.md:2432 +#: ../../Fixed-or-Improved-Logics.md:2450 msgid "" "[SOMEWEAPON] ; WeaponType\n" "AmbientDamage.Warhead= ; WarheadType\n" @@ -8040,11 +8112,30 @@ msgstr "" "AmbientDamage.Warhead= ; WarheadType\n" "AmbientDamage.IgnoreTarget=false ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2438 +msgid "Can attack allies" +msgstr "武器层面的攻击友军定义" + +msgid "" +"Weapons now support `AttackFriendlies` and `AttackCursorOnFriendlies`. " +"They override the firer's `AttackFriendlies` and " +"`AttackCursorOnFriendlies`." +msgstr "" +"现在支持在武器上使用 `AttackFriendlies` 和 `AttackCursorOnFriendlies`。它们会覆盖开火者自身的这两项生效。" + +msgid "" +"[SOMEWEAPON] ; WeaponType\n" +"AttackFriendlies= ; boolean\n" +"AttackCursorOnFriendlies= ; boolean\n" +msgstr "" +"[SOMEWEAPON] ; WeaponType\n" +"AttackFriendlies= ; boolean\n" +"AttackCursorOnFriendlies= ; boolean\n" + +#: ../../Fixed-or-Improved-Logics.md:2456 msgid "Charge turret delays" msgstr "炮塔充能间隔" -#: ../../Fixed-or-Improved-Logics.md:2440 +#: ../../Fixed-or-Improved-Logics.md:2458 msgid "" "It is now possible to customize the delay of `IsChargeTurret=true` unit " "turret animation per weapon, per `Burst` shot instead of defaulting to " @@ -8058,13 +8149,13 @@ msgstr "" "等)。使用列表中与 `Burst` 一一对应值的间隔,若当前连发的次数高于列表中值的数量那么使用列表中最后一个值。间隔为 0 " "或更小将不会被使用,并且不会重置先前的充能序列(目前仍会重置序列但不会重置充能动画播放时间)。" -#: ../../Fixed-or-Improved-Logics.md:2441 +#: ../../Fixed-or-Improved-Logics.md:2459 msgid "" "Note that unlike the default rearm timer that uses `ROF`, any modifiers " "are not applied to explicitly set charge turret delays." msgstr "注意与使用 `ROF` 的默认重新装填计时器不同,任何倍率都不会对明确指定的充能炮塔间隔生效。" -#: ../../Fixed-or-Improved-Logics.md:2444 +#: ../../Fixed-or-Improved-Logics.md:2462 msgid "" "[SOMEWEAPON] ; WeaponType\n" "ChargeTurret.Delays= ; List of integers - game frames\n" @@ -8072,19 +8163,19 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "ChargeTurret.Delays= ; List of integers - game frames\n" -#: ../../Fixed-or-Improved-Logics.md:2449 +#: ../../Fixed-or-Improved-Logics.md:2467 msgid "Customizable disk laser radius" msgstr "自定义飞碟激光半径" -#: ../../Fixed-or-Improved-Logics.md:2451 +#: ../../Fixed-or-Improved-Logics.md:2469 msgid "![image](_static/images/disklaser-radius-values-01.gif)" msgstr "![image](_static/images/disklaser-radius-values-01.gif)" -#: ../../Fixed-or-Improved-Logics.md:2452 +#: ../../Fixed-or-Improved-Logics.md:2470 msgid "You can now set disk laser animation radius using a new tag." msgstr "现在你可以通过一个新的标签来设置飞碟激光动画效果的半径。" -#: ../../Fixed-or-Improved-Logics.md:2455 +#: ../../Fixed-or-Improved-Logics.md:2473 msgid "" "[SOMEWEAPON] ; WeaponType\n" "DiskLaser.Radius=240 ; integer\n" @@ -8094,18 +8185,18 @@ msgstr "" "DiskLaser.Radius=240 ; integer\n" "; 240 is the default saucer disk radius\n" -#: ../../Fixed-or-Improved-Logics.md:2461 +#: ../../Fixed-or-Improved-Logics.md:2479 msgid "Customizable ROF random delay" msgstr "自定义 ROF 随机延迟" -#: ../../Fixed-or-Improved-Logics.md:2463 +#: ../../Fixed-or-Improved-Logics.md:2481 msgid "" "By default weapon `ROF` has a random delay of 0 to 2 frames added to it. " "This random delay is now customizable, globally and on per-WeaponType " "basis." msgstr "默认情况下武器的 `ROF` 会添加 0 到 2 的随机延迟。现在可以在全局和武器微观层面定义此随机延迟。" -#: ../../Fixed-or-Improved-Logics.md:2466 +#: ../../Fixed-or-Improved-Logics.md:2484 msgid "" "[CombatDamage]\n" "ROF.RandomDelay=0,2 ; integer - single or comma-sep. range (game frames)" @@ -8123,17 +8214,17 @@ msgstr "" "ROF.RandomDelay= ; integer - single or comma-sep. range (game " "frames), default to [CombatDamage] -> ROF.RandomDelay\n" -#: ../../Fixed-or-Improved-Logics.md:2474 +#: ../../Fixed-or-Improved-Logics.md:2492 msgid "Customizing whether passengers are kicked out when an aircraft fires" msgstr "自定义战机开火时是否踢出乘客" -#: ../../Fixed-or-Improved-Logics.md:2476 +#: ../../Fixed-or-Improved-Logics.md:2494 msgid "" "You can now customize whether aircraft will forcefully eject passengers " "(vanilla behavior) or fire its weapon when attempting to fire." msgstr "现在你可以自定义战机在尝试开火时是强行踢出乘客(默认行为)还是发射这个武器。" -#: ../../Fixed-or-Improved-Logics.md:2479 +#: ../../Fixed-or-Improved-Logics.md:2497 msgid "" "[SOMEWEAPON] ; WeaponType\n" "KickOutPassengers=true ; boolean\n" @@ -8141,11 +8232,11 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "KickOutPassengers=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2484 +#: ../../Fixed-or-Improved-Logics.md:2502 msgid "Disable FireOnce resetting infantry sequence" msgstr "禁止 FireOnce 重置步兵序列" -#: ../../Fixed-or-Improved-Logics.md:2486 +#: ../../Fixed-or-Improved-Logics.md:2504 msgid "" "It is now possible to disable `FireOnce=true` weapon resetting infantry " "sequences after firing via `FireOnce.ResetSequence`. Target will be " @@ -8155,7 +8246,7 @@ msgstr "" "现在可以通过 `FireOnce.ResetSequence` 来禁用 `FireOnce=true` " "武器在开火后重置步兵序列的效果。目标将像以前一样被遗忘,如果开火后还有剩余帧,那么开火序列将简单地照常继续播放。" -#: ../../Fixed-or-Improved-Logics.md:2489 +#: ../../Fixed-or-Improved-Logics.md:2507 msgid "" "[SOMEWEAPON] ; WeaponType\n" "FireOnce.ResetSequence=true ; boolean\n" @@ -8163,11 +8254,11 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "FireOnce.ResetSequence=true ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2494 +#: ../../Fixed-or-Improved-Logics.md:2512 msgid "Electric bolt customizations" msgstr "自定义 EBolt" -#: ../../Fixed-or-Improved-Logics.md:2496 +#: ../../Fixed-or-Improved-Logics.md:2514 msgid "" "![image](_static/images/ebolt.gif) *EBolt customization utilized for " "different Tesla bolt weapon usage ([RA2: " @@ -8176,13 +8267,13 @@ msgstr "" "![image](_static/images/ebolt.gif) *[RA2: " "Reboot](https://www.moddb.com/mods/reboot) 中自定义用于不同磁爆电流武器的 EBolt 效果*" -#: ../../Fixed-or-Improved-Logics.md:2499 +#: ../../Fixed-or-Improved-Logics.md:2517 msgid "" "You can now specify individual bolts you want to disable for " "`IsElectricBolt=true` weapons. Note that this is only a visual change." msgstr "现在你可以为 `IsElectricBolt=true` 的武器指定你想要关闭的特定电流。注意这只是视觉变化。" -#: ../../Fixed-or-Improved-Logics.md:2500 +#: ../../Fixed-or-Improved-Logics.md:2518 msgid "" "By default `IsElectricBolt=true` effect draws a bolt with 8 arcs. This " "can now be customized per WeaponType with `Bolt.Arcs`. Value of 0 results" @@ -8191,14 +8282,14 @@ msgstr "" "默认情况下,`IsElectricBolt=true` 效果会绘制带有 8 条电弧的电流。现在可以通过 `Bolt.Arcs` " "为每种武器自定义这一效果。值为 0 将会绘制一条直线。" -#: ../../Fixed-or-Improved-Logics.md:2501 +#: ../../Fixed-or-Improved-Logics.md:2519 msgid "" "`Bolt.Duration` can be specified to explicitly set the overall duration " "of the visual electric bolt effect. Only values in range of 1 to 31 are " "accepted, values outside this range are clamped into it." msgstr "`Bolt.Duration` 可用于明确指定 EBolt 视觉效果的总持续时间,仅支持 1 到 31 范围内的值,超出此范围将会写回该范围内。" -#: ../../Fixed-or-Improved-Logics.md:2502 +#: ../../Fixed-or-Improved-Logics.md:2520 msgid "" "`Bolt.FollowFLH` can be used to override the default behaviour where the " "electric bolt source coordinates change to match the unit's firing coord " @@ -8208,7 +8299,7 @@ msgstr "" "`Bolt.FollowFLH` 可用于覆盖 EBolt 起始坐标跟随单位开火坐标每帧改变(时期跟随单位的移动、旋转等)的默认行为。载具默认为 " "true 其他所有情况默认为 false。" -#: ../../Fixed-or-Improved-Logics.md:2505 +#: ../../Fixed-or-Improved-Logics.md:2523 msgid "" "[SOMEWEAPON] ; WeaponType\n" "Bolt.Disable1=false ; boolean\n" @@ -8226,7 +8317,7 @@ msgstr "" "Bolt.Duration=17 ; integer, game frames\n" "Bolt.FollowFLH= ; boolean\n" -#: ../../Fixed-or-Improved-Logics.md:2516 +#: ../../Fixed-or-Improved-Logics.md:2534 msgid "" "Due to technical constraints, these features do not work with electric " "bolts created from support weapon of [Ares' Prism Forwarding](https" @@ -8237,11 +8328,11 @@ msgstr "" "docs/new/buildings/prismforwarding.html) 或那些 `AirburstWeapon` 所创建的 EBolt " "效果。" -#: ../../Fixed-or-Improved-Logics.md:2519 +#: ../../Fixed-or-Improved-Logics.md:2537 msgid "Single-color lasers" msgstr "单色激光" -#: ../../Fixed-or-Improved-Logics.md:2521 +#: ../../Fixed-or-Improved-Logics.md:2539 msgid "" "![image](_static/images/issinglecolor.gif) *Comparison of " "`IsSingleColor=yes` lasers with higher thickness to regular ones ([RA2: " @@ -8251,7 +8342,7 @@ msgstr "" "Reboot](https://www.moddb.com/mods/reboot) 中宽度更大的 `IsSingleColor=yes` " "激光与常规激光的比较*" -#: ../../Fixed-or-Improved-Logics.md:2524 +#: ../../Fixed-or-Improved-Logics.md:2542 msgid "" "You can now set laser to draw using only `LaserInnerColor` by setting " "`IsSingleColor`, in same manner as `IsHouseColor` lasers do using " @@ -8261,7 +8352,7 @@ msgstr "" "现在你可以通过设置 `IsSingleColor` 使激光仅使用 `LaserInnerColor` 进行绘制,就像 `IsHouseColor`" " 的激光使用玩家所属方的颜色一样。这样的激光同样尊重激光宽度。注意这在光棱塔递光武器上并不可用。" -#: ../../Fixed-or-Improved-Logics.md:2527 +#: ../../Fixed-or-Improved-Logics.md:2545 msgid "" "[SOMEWEAPON] ; WeaponType\n" "IsSingleColor=false ; boolean\n" 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..1d0d229af4 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 @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Phobos \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-26 20:55+0800\n" +"POT-Creation-Date: 2026-01-18 20:10+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -182,12 +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 @@ -408,9 +408,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 "" @@ -687,45 +687,48 @@ msgstr "`AttachEffect.CheckOnFirer` 可设为 true 以将必须存在/禁止 #: ../../New-or-Enhanced-Logics.md:1227 ../../New-or-Enhanced-Logics.md:1247 #: ../../New-or-Enhanced-Logics.md:1264 ../../New-or-Enhanced-Logics.md:1283 #: ../../New-or-Enhanced-Logics.md:1306 ../../New-or-Enhanced-Logics.md:1319 -#: ../../New-or-Enhanced-Logics.md:1340 ../../New-or-Enhanced-Logics.md:1366 -#: ../../New-or-Enhanced-Logics.md:1399 ../../New-or-Enhanced-Logics.md:1427 -#: ../../New-or-Enhanced-Logics.md:1438 ../../New-or-Enhanced-Logics.md:1464 -#: ../../New-or-Enhanced-Logics.md:1482 ../../New-or-Enhanced-Logics.md:1496 -#: ../../New-or-Enhanced-Logics.md:1536 ../../New-or-Enhanced-Logics.md:1554 -#: ../../New-or-Enhanced-Logics.md:1569 ../../New-or-Enhanced-Logics.md:1593 -#: ../../New-or-Enhanced-Logics.md:1610 ../../New-or-Enhanced-Logics.md:1626 -#: ../../New-or-Enhanced-Logics.md:1669 ../../New-or-Enhanced-Logics.md:1702 -#: ../../New-or-Enhanced-Logics.md:1722 ../../New-or-Enhanced-Logics.md:1736 -#: ../../New-or-Enhanced-Logics.md:1768 ../../New-or-Enhanced-Logics.md:1803 -#: ../../New-or-Enhanced-Logics.md:1823 ../../New-or-Enhanced-Logics.md:1837 -#: ../../New-or-Enhanced-Logics.md:1849 ../../New-or-Enhanced-Logics.md:1863 -#: ../../New-or-Enhanced-Logics.md:1882 ../../New-or-Enhanced-Logics.md:1901 -#: ../../New-or-Enhanced-Logics.md:1914 ../../New-or-Enhanced-Logics.md:1944 -#: ../../New-or-Enhanced-Logics.md:1974 ../../New-or-Enhanced-Logics.md:1990 -#: ../../New-or-Enhanced-Logics.md:2006 ../../New-or-Enhanced-Logics.md:2024 -#: ../../New-or-Enhanced-Logics.md:2040 ../../New-or-Enhanced-Logics.md:2053 -#: ../../New-or-Enhanced-Logics.md:2072 ../../New-or-Enhanced-Logics.md:2095 -#: ../../New-or-Enhanced-Logics.md:2111 ../../New-or-Enhanced-Logics.md:2124 -#: ../../New-or-Enhanced-Logics.md:2141 ../../New-or-Enhanced-Logics.md:2156 -#: ../../New-or-Enhanced-Logics.md:2179 ../../New-or-Enhanced-Logics.md:2194 -#: ../../New-or-Enhanced-Logics.md:2229 ../../New-or-Enhanced-Logics.md:2250 -#: ../../New-or-Enhanced-Logics.md:2262 ../../New-or-Enhanced-Logics.md:2292 -#: ../../New-or-Enhanced-Logics.md:2339 ../../New-or-Enhanced-Logics.md:2363 -#: ../../New-or-Enhanced-Logics.md:2374 ../../New-or-Enhanced-Logics.md:2389 -#: ../../New-or-Enhanced-Logics.md:2424 ../../New-or-Enhanced-Logics.md:2442 -#: ../../New-or-Enhanced-Logics.md:2466 ../../New-or-Enhanced-Logics.md:2492 -#: ../../New-or-Enhanced-Logics.md:2507 ../../New-or-Enhanced-Logics.md:2530 -#: ../../New-or-Enhanced-Logics.md:2550 ../../New-or-Enhanced-Logics.md:2560 -#: ../../New-or-Enhanced-Logics.md:2571 ../../New-or-Enhanced-Logics.md:2581 -#: ../../New-or-Enhanced-Logics.md:2598 ../../New-or-Enhanced-Logics.md:2612 -#: ../../New-or-Enhanced-Logics.md:2625 ../../New-or-Enhanced-Logics.md:2636 -#: ../../New-or-Enhanced-Logics.md:2646 ../../New-or-Enhanced-Logics.md:2662 -#: ../../New-or-Enhanced-Logics.md:2683 ../../New-or-Enhanced-Logics.md:2699 -#: ../../New-or-Enhanced-Logics.md:2710 ../../New-or-Enhanced-Logics.md:2733 -#: ../../New-or-Enhanced-Logics.md:2761 ../../New-or-Enhanced-Logics.md:2778 -#: ../../New-or-Enhanced-Logics.md:2796 ../../New-or-Enhanced-Logics.md:2810 -#: ../../New-or-Enhanced-Logics.md:2834 ../../New-or-Enhanced-Logics.md:2849 -#: ../../New-or-Enhanced-Logics.md:2871 +#: ../../New-or-Enhanced-Logics.md:1330 ../../New-or-Enhanced-Logics.md:1352 +#: ../../New-or-Enhanced-Logics.md:1378 ../../New-or-Enhanced-Logics.md:1411 +#: ../../New-or-Enhanced-Logics.md:1439 ../../New-or-Enhanced-Logics.md:1450 +#: ../../New-or-Enhanced-Logics.md:1476 ../../New-or-Enhanced-Logics.md:1494 +#: ../../New-or-Enhanced-Logics.md:1508 ../../New-or-Enhanced-Logics.md:1548 +#: ../../New-or-Enhanced-Logics.md:1566 ../../New-or-Enhanced-Logics.md:1581 +#: ../../New-or-Enhanced-Logics.md:1605 ../../New-or-Enhanced-Logics.md:1622 +#: ../../New-or-Enhanced-Logics.md:1635 ../../New-or-Enhanced-Logics.md:1648 +#: ../../New-or-Enhanced-Logics.md:1691 ../../New-or-Enhanced-Logics.md:1724 +#: ../../New-or-Enhanced-Logics.md:1744 ../../New-or-Enhanced-Logics.md:1758 +#: ../../New-or-Enhanced-Logics.md:1790 ../../New-or-Enhanced-Logics.md:1826 +#: ../../New-or-Enhanced-Logics.md:1848 ../../New-or-Enhanced-Logics.md:1862 +#: ../../New-or-Enhanced-Logics.md:1874 ../../New-or-Enhanced-Logics.md:1888 +#: ../../New-or-Enhanced-Logics.md:1907 ../../New-or-Enhanced-Logics.md:1926 +#: ../../New-or-Enhanced-Logics.md:1939 ../../New-or-Enhanced-Logics.md:1969 +#: ../../New-or-Enhanced-Logics.md:1999 ../../New-or-Enhanced-Logics.md:2015 +#: ../../New-or-Enhanced-Logics.md:2031 ../../New-or-Enhanced-Logics.md:2049 +#: ../../New-or-Enhanced-Logics.md:2065 ../../New-or-Enhanced-Logics.md:2078 +#: ../../New-or-Enhanced-Logics.md:2097 ../../New-or-Enhanced-Logics.md:2120 +#: ../../New-or-Enhanced-Logics.md:2136 ../../New-or-Enhanced-Logics.md:2149 +#: ../../New-or-Enhanced-Logics.md:2166 ../../New-or-Enhanced-Logics.md:2181 +#: ../../New-or-Enhanced-Logics.md:2204 ../../New-or-Enhanced-Logics.md:2219 +#: ../../New-or-Enhanced-Logics.md:2254 ../../New-or-Enhanced-Logics.md:2275 +#: ../../New-or-Enhanced-Logics.md:2287 ../../New-or-Enhanced-Logics.md:2317 +#: ../../New-or-Enhanced-Logics.md:2364 ../../New-or-Enhanced-Logics.md:2388 +#: ../../New-or-Enhanced-Logics.md:2399 ../../New-or-Enhanced-Logics.md:2414 +#: ../../New-or-Enhanced-Logics.md:2449 ../../New-or-Enhanced-Logics.md:2467 +#: ../../New-or-Enhanced-Logics.md:2491 ../../New-or-Enhanced-Logics.md:2517 +#: ../../New-or-Enhanced-Logics.md:2532 ../../New-or-Enhanced-Logics.md:2555 +#: ../../New-or-Enhanced-Logics.md:2575 ../../New-or-Enhanced-Logics.md:2585 +#: ../../New-or-Enhanced-Logics.md:2596 ../../New-or-Enhanced-Logics.md:2606 +#: ../../New-or-Enhanced-Logics.md:2623 ../../New-or-Enhanced-Logics.md:2637 +#: ../../New-or-Enhanced-Logics.md:2650 ../../New-or-Enhanced-Logics.md:2674 +#: ../../New-or-Enhanced-Logics.md:2692 ../../New-or-Enhanced-Logics.md:2702 +#: ../../New-or-Enhanced-Logics.md:2718 ../../New-or-Enhanced-Logics.md:2739 +#: ../../New-or-Enhanced-Logics.md:2749 ../../New-or-Enhanced-Logics.md:2765 +#: ../../New-or-Enhanced-Logics.md:2776 ../../New-or-Enhanced-Logics.md:2791 +#: ../../New-or-Enhanced-Logics.md:2810 ../../New-or-Enhanced-Logics.md:2844 +#: ../../New-or-Enhanced-Logics.md:2874 ../../New-or-Enhanced-Logics.md:2891 +#: ../../New-or-Enhanced-Logics.md:2909 ../../New-or-Enhanced-Logics.md:2923 +#: ../../New-or-Enhanced-Logics.md:2947 ../../New-or-Enhanced-Logics.md:2962 +#: ../../New-or-Enhanced-Logics.md:2984 msgid "In `rulesmd.ini`:" msgstr "在 `rulesmd.ini`:" @@ -751,7 +754,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 +809,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 +817,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 +913,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 +968,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 +976,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" @@ -1060,14 +1063,14 @@ msgstr "![image](_static/images/radtype-01.png) *混合起来的多种辐射类 #: ../../New-or-Enhanced-Logics.md:192 ../../New-or-Enhanced-Logics.md:300 #: ../../New-or-Enhanced-Logics.md:512 ../../New-or-Enhanced-Logics.md:637 #: ../../New-or-Enhanced-Logics.md:791 ../../New-or-Enhanced-Logics.md:1216 -#: ../../New-or-Enhanced-Logics.md:1327 ../../New-or-Enhanced-Logics.md:1648 -#: ../../New-or-Enhanced-Logics.md:1651 ../../New-or-Enhanced-Logics.md:1730 -#: ../../New-or-Enhanced-Logics.md:1794 ../../New-or-Enhanced-Logics.md:1813 -#: ../../New-or-Enhanced-Logics.md:1896 ../../New-or-Enhanced-Logics.md:2171 -#: ../../New-or-Enhanced-Logics.md:2202 ../../New-or-Enhanced-Logics.md:2245 -#: ../../New-or-Enhanced-Logics.md:2322 ../../New-or-Enhanced-Logics.md:2371 -#: ../../New-or-Enhanced-Logics.md:2483 ../../New-or-Enhanced-Logics.md:2772 -#: ../../New-or-Enhanced-Logics.md:2822 ../../New-or-Enhanced-Logics.md:2865 +#: ../../New-or-Enhanced-Logics.md:1339 ../../New-or-Enhanced-Logics.md:1670 +#: ../../New-or-Enhanced-Logics.md:1673 ../../New-or-Enhanced-Logics.md:1752 +#: ../../New-or-Enhanced-Logics.md:1816 ../../New-or-Enhanced-Logics.md:1838 +#: ../../New-or-Enhanced-Logics.md:1921 ../../New-or-Enhanced-Logics.md:2196 +#: ../../New-or-Enhanced-Logics.md:2227 ../../New-or-Enhanced-Logics.md:2270 +#: ../../New-or-Enhanced-Logics.md:2347 ../../New-or-Enhanced-Logics.md:2396 +#: ../../New-or-Enhanced-Logics.md:2508 ../../New-or-Enhanced-Logics.md:2885 +#: ../../New-or-Enhanced-Logics.md:2935 ../../New-or-Enhanced-Logics.md:2978 msgid "image" msgstr "图像" @@ -1250,8 +1253,8 @@ msgstr "激光尾焰现在同样可以使用 EBolt 或 辐射波 特效。" #: ../../New-or-Enhanced-Logics.md:246 ../../New-or-Enhanced-Logics.md:528 #: ../../New-or-Enhanced-Logics.md:557 ../../New-or-Enhanced-Logics.md:571 #: ../../New-or-Enhanced-Logics.md:584 ../../New-or-Enhanced-Logics.md:688 -#: ../../New-or-Enhanced-Logics.md:748 ../../New-or-Enhanced-Logics.md:1640 -#: ../../New-or-Enhanced-Logics.md:2208 +#: ../../New-or-Enhanced-Logics.md:748 ../../New-or-Enhanced-Logics.md:1662 +#: ../../New-or-Enhanced-Logics.md:2233 msgid "In `artmd.ini`:" msgstr "在 `artmd.ini`:" @@ -1988,13 +1991,13 @@ msgstr "" "通过设置 `Tint.Color` 和 `Tint Intensity` 可以为拥有护盾的科技类型使用类似于铁幕/力场护盾或 " "`Psychedelic=true` 弹头的染色效果。" -#: ../../New-or-Enhanced-Logics.md:456 ../../New-or-Enhanced-Logics.md:1492 +#: ../../New-or-Enhanced-Logics.md:456 ../../New-or-Enhanced-Logics.md:1504 msgid "" "`Tint.Intensity` is additive lighting increase/decrease - 1.0 is the " "default object lighting." msgstr "`Tint.Intensity` 是增加/减少的光照,1.0 是默认的对象光照。" -#: ../../New-or-Enhanced-Logics.md:457 ../../New-or-Enhanced-Logics.md:1493 +#: ../../New-or-Enhanced-Logics.md:457 ../../New-or-Enhanced-Logics.md:1505 msgid "" "`Tint.VisibleToHouses` can be used to customize which houses can see the " "tint effect." @@ -3168,12 +3171,12 @@ msgstr "`Interceptor.Weapon` 决定用于拦截抛射体的武器(0 = `Primary #: ../../New-or-Enhanced-Logics.md:796 msgid "" -"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." +"The interceptor weapon may need `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 high-flying " +"projectiles respectively." msgstr "" -"拦截武器可能需要在其抛射体上将 `AG` 和 `AA` 设为 true " +"拦截武器可能需要在其抛射体上将 `AA` 设为 true " "以使其能够根据抛射体相对地面的高度来瞄准。如果你不设置这些那么武器将无法分别瞄准低空或高空飞行的抛射体。" #: ../../New-or-Enhanced-Logics.md:797 @@ -4478,14 +4481,14 @@ msgstr "" msgid "Convert TechnoType" msgstr "单位转换超武" -#: ../../New-or-Enhanced-Logics.md:1079 ../../New-or-Enhanced-Logics.md:2325 +#: ../../New-or-Enhanced-Logics.md:1079 ../../New-or-Enhanced-Logics.md:2350 msgid "" "Warheads can now change TechnoTypes of affected units to other Types in " "the same category (infantry to infantry, vehicles to vehicles, aircraft " "to aircraft)." msgstr "现在弹头可以将受影响单位的科技类型更改为同大类的其他科技类型(步兵到步兵,车辆到车辆,战机到战机)。" -#: ../../New-or-Enhanced-Logics.md:1080 ../../New-or-Enhanced-Logics.md:2326 +#: ../../New-or-Enhanced-Logics.md:1080 ../../New-or-Enhanced-Logics.md:2351 msgid "" "`ConvertN.From` (where N is 0, 1, 2...) specifies which TechnoTypes are " "valid for conversion. This entry can have many types listed, meanging " @@ -4495,22 +4498,22 @@ msgstr "" "`ConvertN.From`(此处 N 为 0, 1, " "2...)指定哪些科技类型可用于转换。此条目可以列出许多类型以一次全部转换。当没有包含任何类型时将影响所有有效目标。" -#: ../../New-or-Enhanced-Logics.md:1081 ../../New-or-Enhanced-Logics.md:2327 +#: ../../New-or-Enhanced-Logics.md:1081 ../../New-or-Enhanced-Logics.md:2352 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` 指定哪些所属方的单位可以被转换。" +#: ../../New-or-Enhanced-Logics.md:1082 ../../New-or-Enhanced-Logics.md:2353 +msgid "`ConvertN.AffectsHouse` specifies whose units can be converted." +msgstr "`ConvertN.AffectsHouse` 指定哪些所属方的单位可以被转换。" -#: ../../New-or-Enhanced-Logics.md:1083 ../../New-or-Enhanced-Logics.md:2329 +#: ../../New-or-Enhanced-Logics.md:1083 ../../New-or-Enhanced-Logics.md:2354 msgid "" -"`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." +"`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." 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,41 +4535,41 @@ 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 -#: ../../New-or-Enhanced-Logics.md:2353 +#: ../../New-or-Enhanced-Logics.md:1108 ../../New-or-Enhanced-Logics.md:1387 +#: ../../New-or-Enhanced-Logics.md:2378 msgid "" "This feature has the same limitations as [Ares' Type Conversion](https" "://ares-developers.github.io/Ares-docs/new/typeconversion.html). This " @@ -4575,8 +4578,8 @@ msgstr "" "此功能与 [Ares 的单位转换](https://ares-developers.github.io/Ares-" "docs/new/typeconversion.html) 存在同样的限制。此功能不支持建筑类型。" -#: ../../New-or-Enhanced-Logics.md:1112 ../../New-or-Enhanced-Logics.md:1379 -#: ../../New-or-Enhanced-Logics.md:2357 +#: ../../New-or-Enhanced-Logics.md:1112 ../../New-or-Enhanced-Logics.md:1391 +#: ../../New-or-Enhanced-Logics.md:2382 msgid "" "This feature requires Ares 3.0 or higher to function! When Ares 3.0+ is " "not detected, not all properties of a unit may be updated." @@ -4697,8 +4700,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 +4791,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 +4801,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" @@ -5265,10 +5268,38 @@ msgstr "" "AttackMove.IgnoreWeaponCheck=false ; boolean\n" #: ../../New-or-Enhanced-Logics.md:1325 +msgid "Attack non-threatening structures (Techno)" +msgstr "攻击无威胁建筑(单位定义)" + +#: ../../New-or-Enhanced-Logics.md:1327 +msgid "" +"You can now freely configure whether units can automatically target non-" +"threatening structures." +msgstr "" +"现在你可以自由地设置单位能否自动瞄准无威胁的建筑物。" + +#: ../../New-or-Enhanced-Logics.md:1328 +msgid "" +"`AutoTarget.NoThreatBuildings` affects player-controlled units, " +"`AutoTargetAI.NoThreatBuildings` affects other units." +msgstr "" +"`AutoTarget.NoThreatBuildings` 控制玩家操作的单位,`AutoTargetAI.NoThreatBuildings` 控制其他(由 AI 操作的)单位。" + +#: ../../New-or-Enhanced-Logics.md:1331 +msgid "" +"[General]\n" +"AutoTarget.NoThreatBuildings=false ; boolean\n" +"AutoTargetAI.NoThreatBuildings=true ; boolean\n" +msgstr "" +"[General]\n" +"AutoTarget.NoThreatBuildings=false ; boolean\n" +"AutoTargetAI.NoThreatBuildings=true ; boolean\n" + +#: ../../New-or-Enhanced-Logics.md:1337 msgid "Aircraft spawner customizations" msgstr "自定义子机发射器" -#: ../../New-or-Enhanced-Logics.md:1327 +#: ../../New-or-Enhanced-Logics.md:1339 msgid "" "![image](_static/images/spawnrange-01.gif) *Limited pursue range for " "spawns in [Fantasy ADVENTURE](https://www.moddb.com/mods/fantasy-" @@ -5277,65 +5308,65 @@ msgstr "" "![image](_static/images/spawnrange-01.gif) " "*[幻想奇遇](https://www.moddb.com/mods/fantasy-adventure) 中的有限追击范围子机*" -#: ../../New-or-Enhanced-Logics.md:1330 +#: ../../New-or-Enhanced-Logics.md:1342 msgid "" "If `Spawner.LimitRange` is set, the spawned units will abort their " "pursuit if the enemy is out of the range of the largest weapon `Range` of" " a `Spawner=true` weapon of the spawner." msgstr "如果设置 `Spawner.LimitRange` 则子机将在敌人超出子机发射器武器 `Range` 设定的最大值范围后停止追击。" -#: ../../New-or-Enhanced-Logics.md:1331 +#: ../../New-or-Enhanced-Logics.md:1343 msgid "" "`Spawner.ExtraLimitRange` adds extra pursuit range on top of the weapon " "range." msgstr "`Spawner.ExtraLimitRange` 是追击范围相对于武器射程进行调整的参量。" -#: ../../New-or-Enhanced-Logics.md:1332 +#: ../../New-or-Enhanced-Logics.md:1344 msgid "" "`Spawner.DelayFrames` can be used to set the minimum number of game " "frames in between each spawn ejecting from the spawner. By default this " "is 9 frames for missiles and 20 for everything else." msgstr "`Spawner.DelayFrames` 可用于设置每次从子机发射器中生成单位的最小游戏帧数。对于导弹默认是 9 帧,其他默认是 20 帧。" -#: ../../New-or-Enhanced-Logics.md:1333 +#: ../../New-or-Enhanced-Logics.md:1345 msgid "" "If `Spawner.AttackImmediately` is set to true, spawned aircraft will " "assume attack mission immediately after being spawned instead of waiting " "for the remaining aircraft to spawn first." msgstr "如果 `Spawner.AttackImmediately` 设为 true,战机子机将在生成后立即执行攻击任务而不是先等待其余战机生成和集结。" -#: ../../New-or-Enhanced-Logics.md:1334 +#: ../../New-or-Enhanced-Logics.md:1346 msgid "" "`Spawner.UseTurretFacing`, if set, makes spawned aircraft face the same " "way as turret does upon being created if the spawner has a turret." msgstr "若启用 `Spawner.UseTurretFacing` 则子机发射器单位拥有炮塔时子机生成时的初始方向使用炮塔方向而非车体方向。" -#: ../../New-or-Enhanced-Logics.md:1335 +#: ../../New-or-Enhanced-Logics.md:1347 msgid "" "`Spawner.RecycleRange` defines the range (in cell) that the spawned is " "considered close enough to the spawner to be recycled." msgstr "`Spawner.RecycleRange` 决定子机在距离母舰多少格以内可以被进行回收。" -#: ../../New-or-Enhanced-Logics.md:1336 +#: ../../New-or-Enhanced-Logics.md:1348 msgid "" "`Spawner.RecycleAnim` can be used to play an anim on the spawned location" " when it is recycled. If more than one animation is listed, a random one " "is selected." msgstr "`Spawner.RecycleAnim` 用于设置回收时在子机位置播放的动画。如果列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:1337 +#: ../../New-or-Enhanced-Logics.md:1349 msgid "" "`Spawner.RecycleCoord` defines the relative position to the carrier that " "the spawned aircraft will head to." msgstr "`Spawner.RecycleCoord` 定义了子机将要前往母舰的哪个位置。" -#: ../../New-or-Enhanced-Logics.md:1338 +#: ../../New-or-Enhanced-Logics.md:1350 msgid "" "`Spawner.RecycleOnTurret` defines if the FLH is relative to the turret " "rather than the body." msgstr "`Spawner.RecycleOnTurret` 定义这个位置是否相对于炮塔而非车体。" -#: ../../New-or-Enhanced-Logics.md:1341 +#: ../../New-or-Enhanced-Logics.md:1353 msgid "" "[SOMETECHNO] ; TechnoType\n" "Spawner.LimitRange=false ; boolean\n" @@ -5359,46 +5390,46 @@ msgstr "" "Spawner.RecycleCoord=0,0,0 ; integer - Forward,Lateral,Height\n" "Spawner.RecycleOnTurret=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1355 +#: ../../New-or-Enhanced-Logics.md:1367 msgid "" "If you set recycle FLH, it is best to set a recycle range of at least " "`0.5` at the same time. Otherwise, the spawner may not recycle correctly." msgstr "如果你设置了回收的 FLH,那么最好一并设置一个至少为 `0.5` 格的回收范围。否则子机发射器可能无法正确回收子机。" -#: ../../New-or-Enhanced-Logics.md:1358 +#: ../../New-or-Enhanced-Logics.md:1370 msgid "Automatic conversion based on ammo" msgstr "基于弹药量的自动变形" -#: ../../New-or-Enhanced-Logics.md:1360 +#: ../../New-or-Enhanced-Logics.md:1372 msgid "Units can now be converted into another unit by ammo count." msgstr "单位现在可以根据弹药量转换成另一种单位" -#: ../../New-or-Enhanced-Logics.md:1361 +#: ../../New-or-Enhanced-Logics.md:1373 msgid "" "`Ammo.AutoConvertMinimumAmount` determines the minimal number of ammo at " "which a unit converts automatically after the ammo update." msgstr "`Ammo.AutoConvertMinimumAmount` 决定触发自动变形的最小弹药量。" -#: ../../New-or-Enhanced-Logics.md:1362 +#: ../../New-or-Enhanced-Logics.md:1374 msgid "" "`Ammo.AutoConvertMaximumAmount` determines the maximum number of ammo at " "which a unit converts automatically after the ammo update." msgstr "`Ammo.AutoConvertMaximumAmount` 决定触发自动变形的最大弹药量。" -#: ../../New-or-Enhanced-Logics.md:1363 +#: ../../New-or-Enhanced-Logics.md:1375 msgid "" "`Ammo.AutoConvertType` specify the new techno after the conversion. This " "unit must be of the same type of the original (infantry -> infantry, " "vehicle -> vehicle or aircraft -> aircraft)." msgstr "`Ammo.AutoConvertType` 指定变形成哪个新单位。该单位必须与原单位同属一类(载具变载具,步兵变步兵,战机变战机)。" -#: ../../New-or-Enhanced-Logics.md:1364 +#: ../../New-or-Enhanced-Logics.md:1376 msgid "" "Setting a negative number will disable the ammo count check, and when " "both checks are disabled, conversion will not occur." msgstr "设为负数将会禁用弹药数量检查,当两个检查都被禁用时将不会触发变形。" -#: ../../New-or-Enhanced-Logics.md:1367 +#: ../../New-or-Enhanced-Logics.md:1379 msgid "" "[SOMETECHNO] ; TechnoType, before conversion\n" "Ammo.AutoConvertMinimumAmount=-1 ; integer\n" @@ -5410,29 +5441,29 @@ msgstr "" "Ammo.AutoConvertMaximumAmount=-1 ; integer\n" "Ammo.AutoConvertType= ; TechnoType, after conversion\n" -#: ../../New-or-Enhanced-Logics.md:1382 +#: ../../New-or-Enhanced-Logics.md:1394 msgid "Automatic passenger deletion" msgstr "自动删除乘客" -#: ../../New-or-Enhanced-Logics.md:1384 +#: ../../New-or-Enhanced-Logics.md:1396 msgid "" "Transports can erase passengers over time. Passengers are deleted in " "order of entering the transport, from first to last." msgstr "运输工具可以随时间删除乘客。乘客将按照进入运输工具顺序的先后被删除。" -#: ../../New-or-Enhanced-Logics.md:1385 +#: ../../New-or-Enhanced-Logics.md:1397 msgid "" "`PassengerDeletion.Rate` determines the interval in game frames that it " "takes to erase a single passenger." msgstr "`PassengerDeletion.Rate` 决定删除单个乘客所需的游戏帧数。" -#: ../../New-or-Enhanced-Logics.md:1386 +#: ../../New-or-Enhanced-Logics.md:1398 msgid "" "If `PassengerDeletion.Rate.SizeMultiply` is set to true, this time " "interval is multiplied by the passenger's `Size`." msgstr "如果 `PassengerDeletion.Rate.SizeMultiply` 设为 true 则此时间间隔将乘算乘客的 `Size`。" -#: ../../New-or-Enhanced-Logics.md:1387 +#: ../../New-or-Enhanced-Logics.md:1399 msgid "" "`PassengerDeletion.UseCostAsRate`, if set to true, changes the time " "interval for erasing a passenger to be based on the passenger's `Cost`. " @@ -5441,25 +5472,25 @@ msgstr "" "如果 `PassengerDeletion.UseCostAsRate` 设为 true 则删除乘客的间隔将基于乘客的 `Cost` " "计算。这不考虑 `FactoryPlant` 等修正。" -#: ../../New-or-Enhanced-Logics.md:1388 +#: ../../New-or-Enhanced-Logics.md:1400 msgid "" "`PassengerDeletion.CostMultiplier` can be used to modify the cost-based " "time interval." msgstr "`PassengerDeletion.CostMultiplier` 可用于设置基于成本的时间间隔倍率。" -#: ../../New-or-Enhanced-Logics.md:1389 +#: ../../New-or-Enhanced-Logics.md:1401 msgid "" "`PassengerDeletion.CostRateCap` can be used to set a cap to the cost-" "based time interval." msgstr "`PassengerDeletion.CostRateCap` 可用于设置基于成本计算的时间间隔上限。" -#: ../../New-or-Enhanced-Logics.md:1390 +#: ../../New-or-Enhanced-Logics.md:1402 msgid "" "`PassengerDeletion.AllowedHouses` determines which houses passengers can " "belong to be eligible for deletion." msgstr "`PassengerDeletion.AllowedHouses` 决定了哪些所属方的乘客会被删除。" -#: ../../New-or-Enhanced-Logics.md:1391 +#: ../../New-or-Enhanced-Logics.md:1403 msgid "" "`PassengerDeletion.DontScore`, if set to true, makes it so that the " "deleted passengers are not counted as having been killed by the transport" @@ -5468,7 +5499,7 @@ msgstr "" "如果 `PassengerDeletion.DontScore` 设为 true " "则删除的乘客不会被视为被运输工具击杀(没有经验,不会计入所属方击杀数等)。" -#: ../../New-or-Enhanced-Logics.md:1392 +#: ../../New-or-Enhanced-Logics.md:1404 msgid "" "If `PassengerDeletion.Soylent` is set to true, an amount of credits is " "refunded to the owner of the transport. The exact amount refunded is " @@ -5478,19 +5509,19 @@ msgstr "" "如果 `PassengerDeletion.Soylent` 设为 true 则会向运输工具的所有者返还一定数量的资金。具体金额由乘客的 " "`Soylent` 决定,若为设置则由 `Cost` 决定(这里可受到 `FactoryPlant` 等修正的影响)。" -#: ../../New-or-Enhanced-Logics.md:1393 +#: ../../New-or-Enhanced-Logics.md:1405 msgid "" "`PassengerDeletion.SoylentMultiplier` is a direct multiplier applied to " "the refunded amount of credits." msgstr "`PassengerDeletion.SoylentMultiplier` 是直接应用于返还资金的倍率。" -#: ../../New-or-Enhanced-Logics.md:1394 +#: ../../New-or-Enhanced-Logics.md:1406 msgid "" "`PassengerDeletion.SoylentAllowedHouses` determines which houses " "passengers can belong to be eligible for refunding." msgstr "`PassengerDeletion.SoylentAllowedHouses` 决定了哪些所属方的乘客会造成资金返还。" -#: ../../New-or-Enhanced-Logics.md:1395 +#: ../../New-or-Enhanced-Logics.md:1407 msgid "" "`PassengerDeletion.DisplaySoylent` can be set to true to display the " "amount of credits refunded on the transport. " @@ -5502,7 +5533,7 @@ msgstr "" "以在运输工具上显示返还的资金金额。`PassengerDeletion.DisplaySoylentToHouses` " "决定了哪些所属方可以看到此消息,`PassengerDeletion.DisplaySoylentOffset` 可用于调整显示坐标偏移。" -#: ../../New-or-Enhanced-Logics.md:1396 +#: ../../New-or-Enhanced-Logics.md:1408 msgid "" "`PassengerDeletion.ReportSound` and `PassengerDeletion.Anim` can be used " "to specify a sound and animation to play when a passenger is erased, " @@ -5512,13 +5543,13 @@ msgstr "" "`PassengerDeletion.ReportSound` 和 `PassengerDeletion.Anim` " "可用于分别指定在删除乘客时播放的声音和动画。如果列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:1397 +#: ../../New-or-Enhanced-Logics.md:1409 msgid "" "If `PassengerDeletion.UnderEMP` is set to true, the deletion will be " "processed when the transport is under EMP or deactivated." msgstr "如果 `PassengerDeletion.UnderEMP` 设为 true 则在运输工具受 EMP 影响或瘫痪时继续执行删除操作。" -#: ../../New-or-Enhanced-Logics.md:1400 +#: ../../New-or-Enhanced-Logics.md:1412 msgid "" "[SOMETECHNO] ; TechnoType\n" "PassengerDeletion.Rate=0 ; integer, game frames\n" @@ -5568,11 +5599,11 @@ msgstr "" "PassengerDeletion.Anim= ; List of AnimationTypes\n" "PassengerDeletion.UnderEMP=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1420 +#: ../../New-or-Enhanced-Logics.md:1432 msgid "Automatic passenger owner change to match transport owner" msgstr "自动同步载员所属方" -#: ../../New-or-Enhanced-Logics.md:1422 +#: ../../New-or-Enhanced-Logics.md:1434 msgid "" "Transports with `Passengers.SyncOwner` set to true will have the owner of" " their passengers changed to match the transport if transport's owner " @@ -5581,14 +5612,14 @@ msgstr "" "如果运输工具的 `Passengers.SyncOwner` 设为 true " "则当运输工具的所有者发生改变那么其载员的所有者也将会更改以与运输工具同步。" -#: ../../New-or-Enhanced-Logics.md:1423 +#: ../../New-or-Enhanced-Logics.md:1435 msgid "" "On `OpenTopped=true` transports this will also disable checks that " "prevent target acquisition by passengers when the transport is " "temporarily mind controlled." msgstr "对于 `OpenTopped=true` 的运输工具这还将禁用在运输工具暂时被心灵控制时阻止载员对目标进行攻击的检查。" -#: ../../New-or-Enhanced-Logics.md:1424 +#: ../../New-or-Enhanced-Logics.md:1436 msgid "" "`Passengers.SyncOwner.RevertOnExit`, if set to true (which is the " "default), changes the passengers' owner back to whatever it was " @@ -5597,13 +5628,13 @@ msgstr "" "如果 `Passengers.SyncOwner.RevertOnExit` 设为 " "true(默认行为),当载员被弹出时,其所属方将恢复为载员进入时所属方。" -#: ../../New-or-Enhanced-Logics.md:1425 +#: ../../New-or-Enhanced-Logics.md:1437 msgid "" "Does not work on passengers acquired through use of `Abductor=true` " "weapon *(Ares feature)*." msgstr "不适用于通过 `Abductor=true` 武器(*Ares 功能*)获取的载员。" -#: ../../New-or-Enhanced-Logics.md:1428 +#: ../../New-or-Enhanced-Logics.md:1440 msgid "" "[SOMETECHNO] ; TechnoType\n" "Passengers.SyncOwner=false ; boolean\n" @@ -5613,48 +5644,48 @@ msgstr "" "Passengers.SyncOwner=false ; boolean\n" "Passengers.SyncOwner.RevertOnExit=true ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1434 +#: ../../New-or-Enhanced-Logics.md:1446 msgid "Automatically firing weapons" msgstr "自动发射武器" -#: ../../New-or-Enhanced-Logics.md:1436 +#: ../../New-or-Enhanced-Logics.md:1448 msgid "" "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." +"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." msgstr "" -"现在你可以设置 `AutoFire` 使科技类型根据 `AutoFire.TargetSelf` " +"现在你可以设置 `AutoTargetOwnPosition` 使科技类型根据 `AutoTargetOwnPosition.Self` " "选择当前单元格或开火者自身自动发射其武器而无需检索一个合适的目标。" -#: ../../New-or-Enhanced-Logics.md:1439 +#: ../../New-or-Enhanced-Logics.md:1451 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 +#: ../../New-or-Enhanced-Logics.md:1458 msgid "" "To make this logic work properly, you need to ensure that there is no " "flag like `CanPassiveAquire=false` set on units that prevents target " "scanning." msgstr "为了让该逻辑正常工作,你需要确保单位上没有设置 `CanPassiveAquire=false` 等阻止索敌的语句。" -#: ../../New-or-Enhanced-Logics.md:1449 +#: ../../New-or-Enhanced-Logics.md:1461 msgid "Build limit group" msgstr "建造限制组" -#: ../../New-or-Enhanced-Logics.md:1451 +#: ../../New-or-Enhanced-Logics.md:1463 msgid "You can now make different technos share build limit in a group." msgstr "现在你可以使不同的科技类型在一个组内共享建造限制。" -#: ../../New-or-Enhanced-Logics.md:1452 +#: ../../New-or-Enhanced-Logics.md:1464 msgid "" "`BuildLimitGroup.Types` determines the technos that'll be used for build " "limit conditions of the selected techno. Note that the limit won't be " @@ -5664,7 +5695,7 @@ msgstr "" "`BuildLimitGroup.Types` " "决定了将用于所选科技类型建造条件的其他科技类型。注意该语句并不提供任何限制效果。要实现这点你需要手动位每个科技类型设置建造限制。" -#: ../../New-or-Enhanced-Logics.md:1453 +#: ../../New-or-Enhanced-Logics.md:1465 msgid "" "`BuildLimitGroup.Nums` determines the amount of technos that would reach " "the build limit. If using a single integer, it'll use the sum of all " @@ -5677,7 +5708,7 @@ msgstr "" " `BuildLimitGroup.Types` 数量相同的整数列表,则会为每个科技类型计算建造限制,其值的位置与 " "`BuildLimitGroup.Types` 中的位置对应。" -#: ../../New-or-Enhanced-Logics.md:1454 +#: ../../New-or-Enhanced-Logics.md:1466 msgid "" "`BuildLimitGroup.Factor` determines each of this techno instance will " "count as what value when calculating build limit." @@ -5685,13 +5716,13 @@ msgstr "" "`BuildLimitGroup.Factor` 决定了每个此类科技类型在计算建造限制时将被视为多少来进行计算(类似一个用于 " "`BuildLimit` 的 `Size`)。" -#: ../../New-or-Enhanced-Logics.md:1455 +#: ../../New-or-Enhanced-Logics.md:1467 msgid "" "This is only used by BuildLimitGroup. No other place will use it when " "counting owned objects, including `BuildLimitGroup.ExtraLimit`." msgstr "这仅由 BuildLimitGroup 使用。其他地方不会使用它来计算,包括 `BuildLimitGroup.ExtraLimit`。" -#: ../../New-or-Enhanced-Logics.md:1456 +#: ../../New-or-Enhanced-Logics.md:1468 msgid "" "`BuildLimitGroup.ContentIfAnyMatch` determines the rule of calculating " "build limit per techno. If set to true, build limit will be content if " @@ -5703,7 +5734,7 @@ msgstr "" "true,则当组内任意科技类型的数量达到其 `BuildLimitGroup.Nums` 值时视为全组达到建造限制。如果设置为 " "false,则只有当组内所有科技类型的数量达到时建造限制才有效。" -#: ../../New-or-Enhanced-Logics.md:1457 +#: ../../New-or-Enhanced-Logics.md:1469 msgid "" "`BuildLimitGroup.NotBuildableIfQueueMatch` determines the moment to stop " "the techno's production. If set to true, its production will be stopped " @@ -5714,19 +5745,19 @@ msgstr "" "`BuildLimitGroup.NotBuildableIfQueueMatch` 决定了禁用科技类型生产的时刻,如果设为 true " "则已存在的科技类型与处于生产序列中的科技类型只和满足条件就会停止生产。如果设为 false 则只有地图上实际存在的科技类型满足条件才会停止生产。" -#: ../../New-or-Enhanced-Logics.md:1458 +#: ../../New-or-Enhanced-Logics.md:1470 msgid "" "You can also add an extra value into `BuildLimitGroup.Nums`, determined " "by the amount of specific technos owned by its house." msgstr "你还可以根据其所属方拥有的特定科技类型数量向 `BuildLimitGroup.Nums` 添加一个额外调整值。" -#: ../../New-or-Enhanced-Logics.md:1459 +#: ../../New-or-Enhanced-Logics.md:1471 msgid "" "`BuildLimitGroup.ExtraLimit.Types` determines the technos that'll be used" " for extra value calculation." msgstr "`BuildLimitGroup.ExtraLimit.Types` 决定了将用于额外值计算的科技类型。" -#: ../../New-or-Enhanced-Logics.md:1460 +#: ../../New-or-Enhanced-Logics.md:1472 msgid "" "`BuildLimitGroup.ExtraLimit.Nums` determines the actual value of " "increment. Value matching the position in " @@ -5738,7 +5769,7 @@ msgstr "" "`BuildLimitGroup.ExtraLimit.Types` " "中对应位置的科技类型一一对应。每个列表中的科技类型会使建造限制增加其场上存在的数量 * 该列表中对应值。" -#: ../../New-or-Enhanced-Logics.md:1461 +#: ../../New-or-Enhanced-Logics.md:1473 msgid "" "`BuildLimitGroup.ExtraLimit.MaxCount` determines the maximum amount of " "technos being counted into the extra value calculation. Value matching " @@ -5750,7 +5781,7 @@ msgstr "" "`BuildLimitGroup.ExtraLimit.Types` 中对应位置的科技类型一一对应。如果未设置或设为小于 1 " "的值,则视为无最大数量限制。" -#: ../../New-or-Enhanced-Logics.md:1462 +#: ../../New-or-Enhanced-Logics.md:1474 msgid "" "`BuildLimitGroup.ExtraLimit.MaxNum` determines the maximum of values in " "`BuildLimitGroup.Nums` after extra limit calculation. If not set or set " @@ -5759,7 +5790,7 @@ msgstr "" "`BuildLimitGroup.ExtraLimit.MaxNum` 决定了在计算额外值后 `BuildLimitGroup.Nums` " "的最大值。如果未设置或设为小于 1 的值,则视为无最大值。" -#: ../../New-or-Enhanced-Logics.md:1465 +#: ../../New-or-Enhanced-Logics.md:1477 msgid "" "[SOMETECHNO] ; TechnoType\n" "BuildLimitGroup.Types= ; List of TechnoTypes\n" @@ -5785,17 +5816,17 @@ msgstr "" "BuildLimitGroup.ExtraLimit.MaxCount= ; List of integers\n" "BuildLimitGroup.ExtraLimit.MaxNum=0 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:1478 +#: ../../New-or-Enhanced-Logics.md:1490 msgid "Convert TechnoType on owner house change" msgstr "根据操作者变形" -#: ../../New-or-Enhanced-Logics.md:1480 +#: ../../New-or-Enhanced-Logics.md:1492 msgid "" "You can now change a unit's type when changing ownership from human to " "computer or from computer to human." msgstr "现在你可以在操作者从人类改为 AI 玩家或从 AI 玩家改为人类玩家时执行单位转换。" -#: ../../New-or-Enhanced-Logics.md:1483 +#: ../../New-or-Enhanced-Logics.md:1495 msgid "" "[SOMETECHNO] ; TechnoType\n" "Convert.HumanToComputer= ; TechnoType\n" @@ -5805,11 +5836,11 @@ msgstr "" "Convert.HumanToComputer= ; TechnoType\n" "Convert.ComputerToHuman= ; TechnoType\n" -#: ../../New-or-Enhanced-Logics.md:1489 +#: ../../New-or-Enhanced-Logics.md:1501 msgid "Custom tint on TechnoTypes" msgstr "染色" -#: ../../New-or-Enhanced-Logics.md:1491 +#: ../../New-or-Enhanced-Logics.md:1503 msgid "" "A tint effect similar to that used by Iron Curtain / Force Shield or " "`Psychedelic=true` Warheads can be applied to TechnoTypes naturally by " @@ -5818,13 +5849,13 @@ msgstr "" "通过设置 `Tint.Color` 和 `Tint.Intensity` 可以为拥有护盾的科技类型使用类似于铁幕/力场护盾或 " "`Psychedelic=true` 弹头的染色效果。" -#: ../../New-or-Enhanced-Logics.md:1494 +#: ../../New-or-Enhanced-Logics.md:1506 msgid "" "Tint effects can also be applied by [attached effects](#attached-effects)" " and on [shields](#shields)." msgstr "染色效果也可以通过 [Attach Effect](#attached-effects) 和 [护盾](#shields) 应用。" -#: ../../New-or-Enhanced-Logics.md:1497 +#: ../../New-or-Enhanced-Logics.md:1509 msgid "" "[SOMETECHNO] ; TechnoType\n" "Tint.Color= ; integer - R,G,B\n" @@ -5838,17 +5869,17 @@ msgstr "" "Tint.VisibleToHouses=all ; List of Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" -#: ../../New-or-Enhanced-Logics.md:1504 +#: ../../New-or-Enhanced-Logics.md:1516 msgid "Customizable OpenTopped properties" msgstr "自定义 `OpenTopped` 属性" -#: ../../New-or-Enhanced-Logics.md:1506 +#: ../../New-or-Enhanced-Logics.md:1518 msgid "" "You can now override global `OpenTopped` transport properties per " "TechnoType." msgstr "现在你可以为每个科技类型微观设定全局 `OpenTopped` 运输工具的属性。" -#: ../../New-or-Enhanced-Logics.md:1507 +#: ../../New-or-Enhanced-Logics.md:1519 msgid "" "`OpenTopped.IgnoreRangefinding` can be used to disable `OpenTopped` " "transport rangefinding behaviour where smallest weapon range between " @@ -5858,7 +5889,7 @@ msgstr "" "`OpenTopped.IgnoreRangefinding` 可用于禁用 `OpenTopped` " "运输工具在接近超出射程的目标和扫描潜在目标时使用运输工具与所有载员之间的 `Range` 最小武器的射程这一测距行为。" -#: ../../New-or-Enhanced-Logics.md:1508 +#: ../../New-or-Enhanced-Logics.md:1520 msgid "" "`OpenTopped.AllowFiringIfDeactivated` can be used to customize whether or" " not passengers can fire out when the transport is deactivated (EMP, " @@ -5867,13 +5898,13 @@ msgstr "" "`OpenTopped.AllowFiringIfDeactivated` 可用于自定义当运输工具被瘫痪(EMP、`PoweredUnit` " "等)时载员是否可以开火。" -#: ../../New-or-Enhanced-Logics.md:1509 +#: ../../New-or-Enhanced-Logics.md:1521 msgid "" "`OpenTopped.ShareTransportTarget` controls whether or not the current " "target of the transport itself is passed to the passengers as well." msgstr "`OpenTopped.ShareTransportTarget` 控制运输工具的当前目标是否传递给乘客。" -#: ../../New-or-Enhanced-Logics.md:1510 +#: ../../New-or-Enhanced-Logics.md:1522 msgid "" "You can also customize range bonus and damage multiplier for passenger " "inside the transport with `OpenTransport.RangeBonus/DamageMultiplier`, " @@ -5884,7 +5915,7 @@ msgstr "" "为运输工具内的乘客单独定义射程加成与伤害倍率,该设置独立于运输工具的 " "`OpenTopped.RangeBonus/DamageMultiplier` 生效。" -#: ../../New-or-Enhanced-Logics.md:1512 +#: ../../New-or-Enhanced-Logics.md:1524 msgid "" "[SOMETECHNO] ; TechnoType, transport with " "OpenTopped=yes\n" @@ -5918,36 +5949,36 @@ msgstr "" "OpenTransport.RangeBonus=0 ; integer\n" "OpenTransport.DamageMultiplier=1.0 ; floating point value\n" -#: ../../New-or-Enhanced-Logics.md:1527 +#: ../../New-or-Enhanced-Logics.md:1539 msgid "" "Range of passive acquiring of passengers in an OpenTopped transport won't" " be affected by these RangeBonus values." msgstr "乘客在 OpenTopped 载具中的主动寻敌范围不受这些射程加成值的影响。" -#: ../../New-or-Enhanced-Logics.md:1530 +#: ../../New-or-Enhanced-Logics.md:1542 msgid "Customizable spawns queue" msgstr "自定义子机序列" -#: ../../New-or-Enhanced-Logics.md:1531 +#: ../../New-or-Enhanced-Logics.md:1543 msgid "" "It is now possible to spawn multiple types of spawnees from a spawner " "with `Spawns.Queue`. The order of spawnees in this queue is the order of " "their respawn." msgstr "现在可以通过 `Spawns.Queue` 从子机发射器生成多种子机。该序列中的子机顺序即为其重新生成顺序。" -#: ../../New-or-Enhanced-Logics.md:1532 +#: ../../New-or-Enhanced-Logics.md:1544 msgid "" "`Spawns` still needs to be set to enable the spawner logic and act as a " "default spawnee." msgstr "仍需设置 `Spawns` 以启用子机逻辑并作为默认子机。" -#: ../../New-or-Enhanced-Logics.md:1533 +#: ../../New-or-Enhanced-Logics.md:1545 msgid "" "`SpawnsNumber` still needs to be set to determine the amount of spawnee " "slots." msgstr "仍需设置 `SpawnsNumber` 以决定子机数量。" -#: ../../New-or-Enhanced-Logics.md:1534 +#: ../../New-or-Enhanced-Logics.md:1546 msgid "" "If the length of the queue is longer than the spawner's `SpawnsNumber`, " "spawnee after this length will be omitted. If the length is shorter " @@ -5957,7 +5988,7 @@ msgstr "" "如果队列长度超过子机发射器的 `SpawnsNumber`,超出部分的子机将被忽略。如果队列长度过短则剩余部分由 `Spawns` " "定义的子机填补。因此建议将它们设为等长。" -#: ../../New-or-Enhanced-Logics.md:1537 +#: ../../New-or-Enhanced-Logics.md:1549 msgid "" "[SOMETECHNO] ; TechnoType\n" "Spawns.Queue= ; List of AircraftTypes, in order\n" @@ -5965,33 +5996,33 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "Spawns.Queue= ; List of AircraftTypes, in order\n" -#: ../../New-or-Enhanced-Logics.md:1543 +#: ../../New-or-Enhanced-Logics.md:1555 msgid "" "Note that all spawnees in a queue should have `MissileSpawn` set to the " "same value (all to true or false). Mixing them will make missile spawnees" " can't hit their targets." msgstr "注意队列中的所有子机应当拥有相同的 `MissileSpawn` 值(均为 true 或均为 false)。混合使用会导致导弹类子机无法命中目标。" -#: ../../New-or-Enhanced-Logics.md:1546 +#: ../../New-or-Enhanced-Logics.md:1558 msgid "Customize Ares's radar jam logic" msgstr "自定义 Ares 的雷达干扰逻辑" -#: ../../New-or-Enhanced-Logics.md:1548 +#: ../../New-or-Enhanced-Logics.md:1560 msgid "It is now possible to customize some properties of Ares's radar jam logic." msgstr "现在可以自定义 Ares 雷达干扰逻辑的部分属性。" -#: ../../New-or-Enhanced-Logics.md:1549 +#: ../../New-or-Enhanced-Logics.md:1561 msgid "`RadarJamHouses` determines which houses will be affected by the jam." msgstr "`RadarJamHouses` 决定哪些所属方会受到雷达干扰效果影响。" -#: ../../New-or-Enhanced-Logics.md:1550 +#: ../../New-or-Enhanced-Logics.md:1562 msgid "" "`RadarJamDelay` determines the interval of the jam, default to 30 frames " "like Ares did. Shorter interval means the jam will be applied more " "timely, but worse for performance." msgstr "`RadarJamDelay` 决定干扰间隔,默认同 Ares 为 30。较短的间隔会使干扰生效更及时但会降低性能。" -#: ../../New-or-Enhanced-Logics.md:1551 +#: ../../New-or-Enhanced-Logics.md:1563 msgid "" "`RadarJamAffect` determines a list of buildings with `Radar=yes` or " "`SpySat=yes` that could be affected by the jam. If it's empty, all radar " @@ -6000,13 +6031,13 @@ msgstr "" "`RadarJamAffect` 决定哪些拥有 `Radar=yes` 或 `SpySat=yes` " "的建筑会受到干扰。如果为空则所有雷达建筑都会受到干扰。" -#: ../../New-or-Enhanced-Logics.md:1552 +#: ../../New-or-Enhanced-Logics.md:1564 msgid "" "`RadarJamIgnore` determines a list of buildings with `Radar=yes` or " "`SpySat=yes` that couldn't be affected by the jam." msgstr "`RadarJamIgnore` 决定哪些拥有 `Radar=yes` 或 `SpySat=yes` 的建筑不受到干扰。" -#: ../../New-or-Enhanced-Logics.md:1555 +#: ../../New-or-Enhanced-Logics.md:1567 msgid "" "[SOMETECHNO] ; TechnoType, with RadarJamRadius=\n" "RadarJamHouses=enemies ; List of Affected House Enumeration " @@ -6022,25 +6053,25 @@ msgstr "" "RadarJamAffect= ; List of BuildingTypes\n" "RadarJamIgnore= ; List of BuildingTypes\n" -#: ../../New-or-Enhanced-Logics.md:1563 +#: ../../New-or-Enhanced-Logics.md:1575 msgid "Customize EVA voice and `SellSound` when selling units" msgstr "单位出售音效" -#: ../../New-or-Enhanced-Logics.md:1565 +#: ../../New-or-Enhanced-Logics.md:1577 msgid "" "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." msgstr "当建筑或单位被出售时将向所有者播放出售音效和 EVA 语音。这些设置以允许微观定义。" -#: ../../New-or-Enhanced-Logics.md:1566 +#: ../../New-or-Enhanced-Logics.md:1578 msgid "`EVA.Sold` is used to customize the EVA voice when selling." msgstr "`EVA.Sold` 用于自定义出售时的 EVA 语音。" -#: ../../New-or-Enhanced-Logics.md:1567 +#: ../../New-or-Enhanced-Logics.md:1579 msgid "`SellSound` is used to customize the report sound when selling." msgstr "`SellSound` 用于自定义出售时的音效。" -#: ../../New-or-Enhanced-Logics.md:1570 +#: ../../New-or-Enhanced-Logics.md:1582 msgid "" "[SOMETECHNO] ; BuildingType or VehicleType\n" "EVA.Sold= ; EVA entry, default to EVA_StructureSold for buildings " @@ -6052,17 +6083,17 @@ msgstr "" "and EVA_UnitSold for vehicles\n" "SellSound= ; Sound entry, default to [AudioVisual] -> SellSound\n" -#: ../../New-or-Enhanced-Logics.md:1577 +#: ../../New-or-Enhanced-Logics.md:1589 msgid "" "Vanilla game played vehicles' `SellSound` globally. This has been changed" " in consistency with buildings' `SellSound`." msgstr "原版游戏中出售载具的 `SellSound` 是全局的。这已改为与建筑出售的 `SellSound` 保持一致。" -#: ../../New-or-Enhanced-Logics.md:1580 +#: ../../New-or-Enhanced-Logics.md:1592 msgid "Disabling fallback to (Elite)Secondary weapon" msgstr "禁用副武器自动推算" -#: ../../New-or-Enhanced-Logics.md:1582 +#: ../../New-or-Enhanced-Logics.md:1594 msgid "" "It is now possible to disable the fallback to `(Elite)Secondary` weapon " "from `(Elite)Primary` weapon if it cannot fire at the chosen target by " @@ -6078,35 +6109,35 @@ msgstr "" "武器。`NoSecondaryWeaponFallback.AllowAA` 控制对抛射体拥有 `AA` 且应对空中目标的情况。这不适用于总是选择" " `(Elite)Secondary` 武器的特殊情况,包括但不限于以下几种:" -#: ../../New-or-Enhanced-Logics.md:1583 +#: ../../New-or-Enhanced-Logics.md:1595 msgid "" "`OpenTransportWeapon=1` on an unit firing from inside `OpenTopped=true` " "transport." msgstr "`OpenTransportWeapon=1` 的单位在一个 `OpenTopped=true` 的运输工具内开火。" -#: ../../New-or-Enhanced-Logics.md:1584 +#: ../../New-or-Enhanced-Logics.md:1596 msgid "" "`NoAmmoWeapon=1` on an unit with `Ammo` value higher than 0 and current " "ammo count lower or equal to `NoAmmoAmount`." msgstr "`NoAmmoWeapon=1` 的单位在 `Ammo` 大于 0 且当前弹药数量小于等于 `NoAmmoAmount`。" -#: ../../New-or-Enhanced-Logics.md:1585 +#: ../../New-or-Enhanced-Logics.md:1597 msgid "" "Deployed `IsSimpleDeployer=true` units with `DeployFireWeapon=1` set or " "omitted." msgstr "拥有 `DeployFireWeapon=1` 的 `IsSimpleDeployer=true` 单位处于部署状态。" -#: ../../New-or-Enhanced-Logics.md:1586 +#: ../../New-or-Enhanced-Logics.md:1598 msgid "`DrainWeapon=true` weapons against enemy `Drainable=yes` buildings." msgstr "`DrainWeapon=true` 的武器应对敌方 `Drainable=yes` 的建筑。" -#: ../../New-or-Enhanced-Logics.md:1587 +#: ../../New-or-Enhanced-Logics.md:1599 msgid "" "Units with `IsLocomotor=true` set on `Warhead` of `(Elite)Primary` weapon" " against buildings." msgstr "单位使用一个 `Warhead` 拥有 `IsLocomotor=true` 设置的 `(Elite)Primary` 应对建筑。" -#: ../../New-or-Enhanced-Logics.md:1588 +#: ../../New-or-Enhanced-Logics.md:1600 msgid "" "Weapons with `ElectricAssault=true` set on `Warhead` against " "`Overpowerable=true` buildings belonging to owner or allies." @@ -6114,17 +6145,17 @@ msgstr "" "对所有者或盟友的 `Overpowerable=true` 建筑使用 `Warhead` 拥有 `ElectricAssault=true` " "设置的武器。" -#: ../../New-or-Enhanced-Logics.md:1589 +#: ../../New-or-Enhanced-Logics.md:1601 msgid "`Overpowerable=true` buildings that are currently overpowered." msgstr "`Overpowerable=true` 的建筑当前处于过载状态。" -#: ../../New-or-Enhanced-Logics.md:1590 +#: ../../New-or-Enhanced-Logics.md:1602 msgid "" "Any system using `(Elite)WeaponX`, f.ex `Gunner=true` or " "`IsGattling=true` is also wholly exempt." msgstr "任何使用 `(Elite)WeaponX` 的系统也完全不受影响,例如 `Gunner=true` 或 `IsGattling=true`。" -#: ../../New-or-Enhanced-Logics.md:1591 +#: ../../New-or-Enhanced-Logics.md:1603 msgid "" "If `[CombatDamage] -> AllowWeaponSelectAgainstWalls` is set to true, " "`Secondary` will now be used against walls if `Primary` weapon Warhead " @@ -6134,10 +6165,10 @@ msgid "" msgstr "" "现在如果 `[CombatDamage] -> AllowWeaponSelectAgainstWalls` 设置为 true,假设 " "`Primary` 武器的弹头拥有 `Wall=false`,而 `Secondary` 武器拥有 `Wall=true` 且开火者没有将 " -"`NoSecondaryWeaponFallback` 设为 true 那么 `Secondary` 将在应对墙时被使用。" -"这可以在单位上微观定义以覆盖全局值。" +"`NoSecondaryWeaponFallback` 设为 true 那么 `Secondary` " +"将在应对墙时被使用。这可以在单位上微观定义以覆盖全局值。" -#: ../../New-or-Enhanced-Logics.md:1594 +#: ../../New-or-Enhanced-Logics.md:1606 msgid "" "[CombatDamage]\n" "AllowWeaponSelectAgainstWalls=false ; boolean\n" @@ -6157,13 +6188,13 @@ msgstr "" "AllowWeaponSelectAgainstWalls= ; boolean, default to " "[CombatDamage] -> AllowWeaponSelectAgainstWalls\n" -#: ../../New-or-Enhanced-Logics.md:1604 +#: ../../New-or-Enhanced-Logics.md:1616 msgid "" "Disguise logic additions (disguise-based movement speed, disguise " "blinking visibility)" msgstr "伪装逻辑增强" -#: ../../New-or-Enhanced-Logics.md:1606 +#: ../../New-or-Enhanced-Logics.md:1618 msgid "" "`DisguiseBlinkingVisibility` can be used to customize which players can " "see disguises blinking on units. This does not affect targeting but does " @@ -6173,7 +6204,7 @@ msgstr "" "`DisguiseBlinkingVisibility` " "可用于自定义哪些玩家可以看到单位的伪装闪烁。这不影响目标选择,但会影响军衔的可见性——闪烁的伪装意味着始终可见原单位的军衔而不是伪装单位的。" -#: ../../New-or-Enhanced-Logics.md:1607 +#: ../../New-or-Enhanced-Logics.md:1619 msgid "" "Another thing to note is that in singleplayer missions, for purposes of " "the disguise blinking, disguised objects owned by any player-controlled " @@ -6185,7 +6216,7 @@ msgstr "" "另一个需要注意的是:在单人任务中,就伪装闪烁而言,任何被玩家所控制的所属方所拥有的伪装单位即便与玩家所属方不是盟友也视为当前玩家所拥有,这意味着玩家始终可以看到它们的伪装闪烁,除非" " `DisguiseBlinkingVisibility` 设置为 `none` 或 `enemies`。" -#: ../../New-or-Enhanced-Logics.md:1608 +#: ../../New-or-Enhanced-Logics.md:1620 msgid "" "`UseDisguiseMovementSpeed`, if set, makes disguised unit adjust its " "movement speed to match that of the disguise, if applicable. Note that " @@ -6195,7 +6226,7 @@ msgstr "" "`UseDisguiseMovementSpeed` " "如果设置则在可行的情况下伪装单位将调整其移动速度以匹配伪装目标的速度。注意即使伪装被识破只要未被解除此设置就依旧生效。" -#: ../../New-or-Enhanced-Logics.md:1611 +#: ../../New-or-Enhanced-Logics.md:1623 msgid "" "[General]\n" "DisguiseBlinkingVisibility=owner ; List of Affected House Enumeration " @@ -6211,27 +6242,50 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "UseDisguiseMovementSpeed=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1619 +#: ../../New-or-Enhanced-Logics.md:1631 +msgid "Exclusion from base center calculations" +msgstr "不参与基地中心计算" + +#: ../../New-or-Enhanced-Logics.md:1633 +msgid "" +"It is possible to exclude TechnoType from base center calculations (used " +"for number of things such as certain AI scripts and AI superweapon " +"targeting modes etc). Normally only buildings are factored in, but the " +"initial base center does count house's starting technos which this does " +"affect." +msgstr "" +"这可用于将科技类型从基地中心计算中排除(用于特定 AI 脚本和 AI 超武瞄准模式等)" +"通常仅有建筑参与计算,但初始基地中心的确会计入所属方的初始单位,该设置对此也可生效。" + +#: ../../New-or-Enhanced-Logics.md:1636 +msgid "" +"[SOMETECHNO] ; TechnoType\n" +"IgnoreForBaseCenter=false ; boolean\n" +msgstr "" +"[SOMETECHNO] ; TechnoType\n" +"IgnoreForBaseCenter=false ; boolean\n" + +#: ../../New-or-Enhanced-Logics.md:1641 msgid "Extended gattling rate down logic" msgstr "拓展的盖特掉档逻辑" -#: ../../New-or-Enhanced-Logics.md:1621 +#: ../../New-or-Enhanced-Logics.md:1643 msgid "Now you can customize some effects of `RateDown`." msgstr "现在你可以自定义 `RateDown` 的一些效果。" -#: ../../New-or-Enhanced-Logics.md:1622 +#: ../../New-or-Enhanced-Logics.md:1644 msgid "" "`RateDown.Delay` controls the delay before using `RateDown` to reduce the" " gattling value." msgstr "`RateDown.Delay` 控制停火多少帧后才开始使用 `RateDown` 减少盖特计时器。" -#: ../../New-or-Enhanced-Logics.md:1623 +#: ../../New-or-Enhanced-Logics.md:1645 msgid "" "`RateDown.Reset` controls whether to reset the gattling value directly " "when the techno has no target or changes targets." msgstr "`RateDown.Reset` 控制当科技类型失去目标或更换目标时是否立即清空盖特计时器。" -#: ../../New-or-Enhanced-Logics.md:1624 +#: ../../New-or-Enhanced-Logics.md:1646 msgid "" "`RateDown.Cover.Value` replaces the original `RateDown` when techno's " "ammo is lower than `RateDown.Cover.AmmoBelow`." @@ -6239,7 +6293,7 @@ msgstr "" "`RateDown.Cover.Value` 用于在科技类型的弹药低于 `RateDown.Cover.AmmoBelow` 时替代 " "`RateDown` 使用。" -#: ../../New-or-Enhanced-Logics.md:1627 +#: ../../New-or-Enhanced-Logics.md:1649 msgid "" "[SOMETECHNO] ; TechnoType, with IsGattling=yes\n" "RateDown.Delay=0 ; integer, game frames\n" @@ -6253,11 +6307,11 @@ msgstr "" "RateDown.Cover.Value=0 ; integer\n" "RateDown.Cover.AmmoBelow=-2 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:1635 +#: ../../New-or-Enhanced-Logics.md:1657 msgid "Firing offsets for specific Burst shots" msgstr "Burst 开火坐标" -#: ../../New-or-Enhanced-Logics.md:1637 +#: ../../New-or-Enhanced-Logics.md:1659 msgid "" "You can now specify separate firing offsets for each of the shots fired " "by weapon with `Burst` via using " @@ -6275,14 +6329,14 @@ msgstr "" "开始的连发索引,这些值将按顺序解析,直到没有常规或精英武器的值为止,如果精英武器缺少值则默认使用常规武器的 " "FLH。如果特定连发索引缺少值,则使用基础标签(例如 `PrimaryFireFLH`)的值。" -#: ../../New-or-Enhanced-Logics.md:1638 +#: ../../New-or-Enhanced-Logics.md:1660 msgid "" "Burst-index specific firing offsets are absolute firing offsets and the " "lateral shifting based on burst index that occurs with the base firing " "offsets is not applied." msgstr "特定连发索引使用的是不会根据连发索引而将 L 值镜像的绝对坐标。" -#: ../../New-or-Enhanced-Logics.md:1641 +#: ../../New-or-Enhanced-Logics.md:1663 msgid "" "[SOMETECHNO] ; TechnoType Image\n" "FLHKEY.BurstN= ; integer - Forward,Lateral,Height. FLHKey refers to " @@ -6292,11 +6346,11 @@ msgstr "" "FLHKEY.BurstN= ; integer - Forward,Lateral,Height. FLHKey refers to " "weapon-specific FLH key name and N is zero-based burst shot index.\n" -#: ../../New-or-Enhanced-Logics.md:1646 +#: ../../New-or-Enhanced-Logics.md:1668 msgid "Forcing specific weapon against certain targets" msgstr "对特定目标使用特定武器" -#: ../../New-or-Enhanced-Logics.md:1648 +#: ../../New-or-Enhanced-Logics.md:1670 msgid "" "![image](_static/images/underwater-new-attack-tag.gif) *Naval underwater " "target behavior with `ForceWeapon.Naval.Decloaked` in [C&C: " @@ -6306,7 +6360,7 @@ msgstr "" "Reloaded](https://www.moddb.com/mods/cncreloaded) 中使用 " "`ForceWeapon.Naval.Decloaked` 的海军对水下目标行为*" -#: ../../New-or-Enhanced-Logics.md:1651 +#: ../../New-or-Enhanced-Logics.md:1673 msgid "" "![image](_static/images/forceweapon_emp.gif) *Enemy behavior against EMP " "targets with `ForceWeapon.UnderEMP` in [C&C: " @@ -6316,7 +6370,7 @@ msgstr "" "Reloaded](https://www.moddb.com/mods/cncreloaded) 中敌人使用 " "`ForceWeapon.UnderEMP` 攻击 EMP 状态目标的行为*" -#: ../../New-or-Enhanced-Logics.md:1654 +#: ../../New-or-Enhanced-Logics.md:1676 msgid "" "Can be used to override normal weapon selection logic to force specific " "weapons to use against certain targets. If multiple are set and target " @@ -6324,7 +6378,7 @@ msgid "" "effect." msgstr "可用于覆盖正常的武器选择逻辑,以强制对特定目标使用特定武器。目标满足条件则按所列出规则的顺序使用第一个满足条件的规则。" -#: ../../New-or-Enhanced-Logics.md:1655 +#: ../../New-or-Enhanced-Logics.md:1677 msgid "" "`ForceWeapon.Naval.Decloaked` forces specified weapon to be used against " "uncloaked `Naval=yes` targets. Useful if your naval unit has one weapon " @@ -6333,25 +6387,25 @@ msgstr "" "`ForceWeapon.Naval.Decloaked` 强制指定对未隐形(下潜)状态 `Naval=yes` " "的目标使用的武器。如果你的海军单位有一个武器仅用于水下目标另一个武器用于水面目标那么这个规则会很有用。" -#: ../../New-or-Enhanced-Logics.md:1656 +#: ../../New-or-Enhanced-Logics.md:1678 msgid "" "`ForceWeapon.Cloaked` forces specified weapon to be used against any " "cloaked targets." msgstr "`ForceWeapon.Cloaked` 强制指定对隐形(下潜)状态目标使用的武器。" -#: ../../New-or-Enhanced-Logics.md:1657 +#: ../../New-or-Enhanced-Logics.md:1679 msgid "" "`ForceWeapon.Disguised` forces specified weapon to be used against any " "disguised targets." msgstr "`ForceWeapon.Disguised` 强制指定针对伪装目标所使用的武器。" -#: ../../New-or-Enhanced-Logics.md:1658 +#: ../../New-or-Enhanced-Logics.md:1680 msgid "" "`ForceWeapon.UnderEMP` forces specified weapon to be used if the target " "is under EMP effect." msgstr "`ForceWeapon.UnderEMP` 强制指定对与被 EMP 瘫痪了的目标所使用的武器。" -#: ../../New-or-Enhanced-Logics.md:1659 +#: ../../New-or-Enhanced-Logics.md:1681 msgid "" "`ForceWeapon.InRange` forces specified a list of weapons to be used once " "the target is within their `Range`. If `ForceWeapon.InRange.TechnoOnly` " @@ -6366,7 +6420,7 @@ msgstr "" "则仅在目标为单位时才能像其他强制武器效果那样生效,否则在攻击空地时也会生效。该单位会按列表顺序选取首个符合条件的武器。在未设置 " "`ForceAAWeapon.InRange` 的情况下这同时用于地面和空中目标。" -#: ../../New-or-Enhanced-Logics.md:1660 +#: ../../New-or-Enhanced-Logics.md:1682 msgid "" "`ForceAAWeapon.InRange` does the same thing but only for air target. " "Taking priority to `ForceWeapon.InRange`, which means that it can only be" @@ -6375,7 +6429,7 @@ msgstr "" "`ForceAAWeapon.InRange` 是 `ForceWeapon.InRange` 的对空版本。当两个参数同时存在时 " "`ForceWeapon.InRange` 仅用于对地。" -#: ../../New-or-Enhanced-Logics.md:1661 +#: ../../New-or-Enhanced-Logics.md:1683 msgid "" "`Force(AA)Weapon.InRange.Overrides` overrides the range when decides " "which weapon to use. Value from position matching the position from " @@ -6386,7 +6440,7 @@ msgstr "" "`Force(AA)Weapon.InRange` 中的武器序号一一对应,如果一个武器的对应的值小于 0 或不存在那么使用武器自身的 " "`Range`。" -#: ../../New-or-Enhanced-Logics.md:1662 +#: ../../New-or-Enhanced-Logics.md:1684 msgid "" "If `Force(AA)Weapon.InRange.ApplyRangeModifiers` is set to true, any " "applicable weapon range modifiers from the firer are applied to the " @@ -6395,11 +6449,11 @@ msgstr "" "如果 `Force(AA)Weapon.InRange.ApplyRangeModifiers` 设为 true " "则任何来自开火者的武器射程加成也将参与射程判定。" -#: ../../New-or-Enhanced-Logics.md:1663 +#: ../../New-or-Enhanced-Logics.md:1685 msgid "A series of tags can force specified weapons based on the target's type." msgstr "一系列根据目标类型强制使用特定武器的标签:" -#: ../../New-or-Enhanced-Logics.md:1664 +#: ../../New-or-Enhanced-Logics.md:1686 msgid "" "`ForceWeapon.Naval.Units` forces specified weapon to be used against " "`Naval=yes` units. Taking priority to `ForceWeapon.Units`." @@ -6407,7 +6461,7 @@ msgstr "" "`ForceWeapon.Naval.Units` 强制指定对 `Naval=yes` 的单位所使用的武器。优先级高于 " "`ForceWeapon.Units`。" -#: ../../New-or-Enhanced-Logics.md:1665 +#: ../../New-or-Enhanced-Logics.md:1687 msgid "" "If `ForceWeapon.Defenses` is enabled, it'll be used if the target is a " "building with `BuildCat=Combat`. Otherwise it'll follow " @@ -6416,7 +6470,7 @@ msgstr "" "`ForceWeapon.Defenses` 是 `ForceWeapon.Buildings` 针对 `BuildCat=Combat` " "类建筑目标的分离设置,不启用即沿用后者。" -#: ../../New-or-Enhanced-Logics.md:1666 +#: ../../New-or-Enhanced-Logics.md:1688 msgid "" "`ForceWeapon.Infantry/Units/Aircraft` can be applied to both ground and " "air target if `ForceAAWeapon.Infantry/Units/Aircraft` is not set." @@ -6424,7 +6478,7 @@ msgstr "" "`ForceWeapon.Infantry/Units/Aircraft` 在未设置 " "`ForceAAWeapon.Infantry/Units/Aircraft` 时同时控制对空对地。" -#: ../../New-or-Enhanced-Logics.md:1667 +#: ../../New-or-Enhanced-Logics.md:1689 msgid "" "`ForceAAWeapon.Infantry/Units/Aircraft` do the same things but only for " "air target. Taking priority to " @@ -6434,7 +6488,7 @@ msgstr "" "`ForceAAWeapon.Infantry/Units/Aircraft` 是 " "`ForceWeapon.Infantry/Units/Aircraft` 的对空版本。当两个参数同时存在时后者仅用于对地。" -#: ../../New-or-Enhanced-Logics.md:1670 +#: ../../New-or-Enhanced-Logics.md:1692 msgid "" "[SOMETECHNO] ; TechnoType\n" "ForceWeapon.Naval.Decloaked=-1 ; integer, -1 to disable\n" @@ -6484,7 +6538,7 @@ msgstr "" "ForceAAWeapon.Units=-1 ; integer, -1 to disable\n" "ForceAAWeapon.Aircraft=-1 ; integer, -1 to disable\n" -#: ../../New-or-Enhanced-Logics.md:1695 +#: ../../New-or-Enhanced-Logics.md:1717 msgid "" "Specifically, if a position has `Force(AA)Weapon.InRange` set to -1 and " "`Force(AA)Weapon.InRange.Overrides` set to a positive value, it'll use " @@ -6493,17 +6547,17 @@ msgstr "" "特别说明,如果某个位置的 `Force(AA)Weapon.InRange` 设为 -1 而 " "`Force(AA)Weapon.InRange.Overrides` 为正值,那么在满足条件时使用默认的武器选取规则。" -#: ../../New-or-Enhanced-Logics.md:1698 +#: ../../New-or-Enhanced-Logics.md:1720 msgid "Fast access vehicle/structure" msgstr "快速进入载具/建筑" -#: ../../New-or-Enhanced-Logics.md:1700 +#: ../../New-or-Enhanced-Logics.md:1722 msgid "" "Now you can let infantry or vehicle passengers quickly enter or leave the" " transport vehicles/structures without queuing." msgstr "现在你可以让步兵或载具类载员无需排队地快速进入或离开运输载具/建筑。" -#: ../../New-or-Enhanced-Logics.md:1703 +#: ../../New-or-Enhanced-Logics.md:1725 msgid "" "[General]\n" "NoQueueUpToEnter=false ; boolean\n" @@ -6529,7 +6583,7 @@ msgstr "" "NoQueueUpToUnload= ; boolean, default to [General] -> " "NoQueueUpToUnload(.Buildings)\n" -#: ../../New-or-Enhanced-Logics.md:1716 +#: ../../New-or-Enhanced-Logics.md:1738 msgid "" "Note that this logic is used for " "[Passenger](https://modenc.renegadeprojects.com/Passengers) logic, which " @@ -6539,18 +6593,18 @@ msgstr "" "注意该逻辑用于 [乘客](https://modenc.renegadeprojects.com/Passengers) 逻辑,这与 " "[驻军](https://modenc.renegadeprojects.com/Occupier) 是两个不同的东西。" -#: ../../New-or-Enhanced-Logics.md:1719 +#: ../../New-or-Enhanced-Logics.md:1741 msgid "Initial spawns number" msgstr "初始子机数量" -#: ../../New-or-Enhanced-Logics.md:1720 +#: ../../New-or-Enhanced-Logics.md:1742 msgid "" "It is now possible to set the initial amount of spawnees for a spawner, " "instead of always being filled. Won't work if it's larger than " "`SpawnsNumber`." msgstr "现在可以设置子机发射器的初始子机数量,而不再总是初始满载。如果初始数量大于 `SpawnsNumber` 则无效。" -#: ../../New-or-Enhanced-Logics.md:1723 +#: ../../New-or-Enhanced-Logics.md:1745 msgid "" "[SOMETECHNO] ; TechnoType\n" "InitialSpawnsNumber= ; integer\n" @@ -6558,11 +6612,11 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "InitialSpawnsNumber= ; integer\n" -#: ../../New-or-Enhanced-Logics.md:1728 +#: ../../New-or-Enhanced-Logics.md:1750 msgid "Initial strength for TechnoTypes and cloned infantry" msgstr "科技类型与克隆步兵的初始血量" -#: ../../New-or-Enhanced-Logics.md:1730 +#: ../../New-or-Enhanced-Logics.md:1752 msgid "" "![image](_static/images/initialstrength.cloning-01.png) *Initial strength" " for cloned infantry example in [C&C: " @@ -6571,13 +6625,13 @@ msgstr "" "![image](_static/images/initialstrength.cloning-01.png) *[C&C: " "Reloaded](https://www.moddb.com/mods/cncreloaded) 中克隆步兵的初始血量示例*" -#: ../../New-or-Enhanced-Logics.md:1733 +#: ../../New-or-Enhanced-Logics.md:1755 msgid "" "`InitialStrength` can be used to set how many hitpoints a TechnoType " "starts with." msgstr "`InitialStrength` 可用于设置科技类型的初始血量。" -#: ../../New-or-Enhanced-Logics.md:1734 +#: ../../New-or-Enhanced-Logics.md:1756 msgid "" "`InitialStrength.Cloning` can be used to specify a percentage of " "hitpoints (single value or a range from which a random value is picked) " @@ -6586,7 +6640,7 @@ msgstr "" "`InitialStrength.Cloning` 可以用于指定克隆步兵由 `Cloning=true` " "建筑创建时的初始血量百分比(单个值或从其中随机选取的一对值)。" -#: ../../New-or-Enhanced-Logics.md:1737 +#: ../../New-or-Enhanced-Logics.md:1759 msgid "" "[SOMETECHNO] ; TechnoType\n" "InitialStrength= ; integer\n" @@ -6602,7 +6656,7 @@ msgstr "" "InitialStrength.Cloning= ; floating point value - single or comma-sep. " "range (percentages)\n" -#: ../../New-or-Enhanced-Logics.md:1746 +#: ../../New-or-Enhanced-Logics.md:1768 msgid "" "Both `InitialStrength` and `InitialStrength.Cloning` never surpass the " "type's `Strength`, even if your values are bigger than it." @@ -6610,25 +6664,25 @@ msgstr "" "`InitialStrength` 和 `InitialStrength.Cloning` 都不会超过单位的 " "`Strength`,即使你设置了一个比它更大的值。" -#: ../../New-or-Enhanced-Logics.md:1749 +#: ../../New-or-Enhanced-Logics.md:1771 msgid "Kill Object Automatically" msgstr "自毁" -#: ../../New-or-Enhanced-Logics.md:1751 +#: ../../New-or-Enhanced-Logics.md:1773 msgid "" "Objects can be destroyed automatically if *any* of these conditions is " "met:" msgstr "如果满足以下 **任何** 条件对象将会自毁:" -#: ../../New-or-Enhanced-Logics.md:1752 +#: ../../New-or-Enhanced-Logics.md:1774 msgid "`OnAmmoDepletion`: The object will die if the remaining ammo reaches 0." msgstr "`OnAmmoDepletion`:如果剩余弹药达到 0 则对象死亡。" -#: ../../New-or-Enhanced-Logics.md:1753 +#: ../../New-or-Enhanced-Logics.md:1775 msgid "`OnOwnerChange`: The object's ownership has been changed." msgstr "`OnOwnerChange`:该对象所属方发生变更。" -#: ../../New-or-Enhanced-Logics.md:1754 +#: ../../New-or-Enhanced-Logics.md:1776 msgid "" "`OnOwnerChange.HumanToComputer/ComputerToHuman`: The object's ownership " "has been changed from human to computer or from computer to human. " @@ -6637,53 +6691,53 @@ msgstr "" "`OnOwnerChange.HumanToComputer/ComputerToHuman`:该对象的所属方从人类玩家转为 AI 玩家或从 AI" " 玩家转为人类玩家。若未设置则默认同 `OnOwnerChange`。" -#: ../../New-or-Enhanced-Logics.md:1755 +#: ../../New-or-Enhanced-Logics.md:1777 msgid "`AfterDelay`: The object will die if the countdown (in frames) reaches 0." msgstr "`AfterDelay`:如果倒计时(以帧为单位)达到 0 则对象死亡。" -#: ../../New-or-Enhanced-Logics.md:1756 +#: ../../New-or-Enhanced-Logics.md:1778 msgid "" "`TechnosExist` / `TechnosDontExist`: The object will die if TechnoTypes " "exist or do not exist, respectively." msgstr "`TechnosExist`/`TechnosDontExist`:如果科技类型分别存在或不存在则对象死亡。" -#: ../../New-or-Enhanced-Logics.md:1757 +#: ../../New-or-Enhanced-Logics.md:1779 msgid "" "`Technos(Dont)Exist.Any` controls whether or not a single listed " "TechnoType is enough to satisfy the requirement or if all are required." msgstr "`Technos(Dont)Exist.Any` 控制需要列出的单个科技类型还是所有科技类型来满足条件。" -#: ../../New-or-Enhanced-Logics.md:1758 +#: ../../New-or-Enhanced-Logics.md:1780 msgid "" "`Technos(Dont)Exist.AllowLimboed` controls whether or not limboed " "TechnoTypes (f.ex those in transports) are counted." msgstr "`Technos(Dont)Exist.AllowLimboed` 控制是否计入虚拟的科技类型(例如在运输工具中的那些)。" -#: ../../New-or-Enhanced-Logics.md:1759 +#: ../../New-or-Enhanced-Logics.md:1781 msgid "`Technos(Dont)Exist.Houses` controls which houses are checked." msgstr "`Technos(Dont)Exist.Houses` 控制检查哪些所属方。" -#: ../../New-or-Enhanced-Logics.md:1761 +#: ../../New-or-Enhanced-Logics.md:1783 msgid "The auto-death behavior can be chosen from the following:" msgstr "自毁行为有以下选择:" -#: ../../New-or-Enhanced-Logics.md:1762 +#: ../../New-or-Enhanced-Logics.md:1784 msgid "`kill`: The object will be destroyed normally." msgstr "`kill`:对象将正常摧毁。" -#: ../../New-or-Enhanced-Logics.md:1763 +#: ../../New-or-Enhanced-Logics.md:1785 msgid "" "`vanish`: The object will be directly removed from the game peacefully " "instead of actually getting killed." msgstr "`vanish`:对象将被直接从游戏中静默移除而不是真正击杀。" -#: ../../New-or-Enhanced-Logics.md:1764 +#: ../../New-or-Enhanced-Logics.md:1786 msgid "" "`sell`: If the object is a **building** with buildup, it will be sold " "instead of destroyed." msgstr "`sell`:如果对象是拥有建造动画的 **建筑**,它将被出售而不是被摧毁。" -#: ../../New-or-Enhanced-Logics.md:1765 +#: ../../New-or-Enhanced-Logics.md:1787 msgid "" "If this option is not set, the self-destruction logic will not be " "enabled. `AutoDeath.VanishAnimation` can be set to animation to play at " @@ -6693,7 +6747,7 @@ msgstr "" "如果未设置此项那么自毁逻辑将不会启用。如果选择 `vanish` 行为,那么可以使用 `AutoDeath.VanishAnimation` " "设置自毁时播放的动画。如果列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:1766 +#: ../../New-or-Enhanced-Logics.md:1788 msgid "" "This logic also supports buildings delivered by " "[LimboDelivery](#limbodelivery). However in this case, all " @@ -6703,7 +6757,7 @@ msgstr "" "此逻辑还支持通过 [虚拟投放](#limbodelivery) 提供的建筑。不过这种情况下所有 `AutoDeath.Behavior` " "值都将只是使建筑简单地移除。" -#: ../../New-or-Enhanced-Logics.md:1769 +#: ../../New-or-Enhanced-Logics.md:1791 msgid "" "[SOMETECHNO] ; TechnoType\n" "AutoDeath.Behavior= ; enumeration (kill | " @@ -6749,18 +6803,18 @@ msgstr "" "AutoDeath.TechnosExist.Houses=owner ; Affected House " "Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)\n" -#: ../../New-or-Enhanced-Logics.md:1789 +#: ../../New-or-Enhanced-Logics.md:1811 msgid "" "Please notice that if the object is a unit which carries passengers, they" " will not be released even with the `kill` option **if you are not using " "Ares 3.0+**." msgstr "请注意 **如果你没有使用 Ares 3.0+** 那么对于携带载员的单位即使使用 `kill` 行为载员也不会被释放。" -#: ../../New-or-Enhanced-Logics.md:1792 +#: ../../New-or-Enhanced-Logics.md:1814 msgid "Mind Control enhancement" msgstr "心灵控制增强" -#: ../../New-or-Enhanced-Logics.md:1794 +#: ../../New-or-Enhanced-Logics.md:1816 msgid "" "![image](_static/images/mindcontrol-max-range-01.gif) *Mind Control Range" " Limit used in [Fantasy ADVENTURE](https://www.moddb.com/mods/fantasy-" @@ -6773,44 +6827,55 @@ msgstr "" "![image](_static/images/mindcontrol-multiple-01.gif) " "*[幻想奇遇](https://www.moddb.com/mods/fantasy-adventure) 中的多重心控单位自动释放第一个受害者*" -#: ../../New-or-Enhanced-Logics.md:1799 +#: ../../New-or-Enhanced-Logics.md:1821 msgid "" "Mind controllers now can have the upper limit of the control distance. " "Tag values greater than 0 will activate this feature." msgstr "心灵控制者现在可以设置控制距离的上限。标签值大于 0 将激活此功能。" -#: ../../New-or-Enhanced-Logics.md:1800 +#: ../../New-or-Enhanced-Logics.md:1822 +msgid "" +"Mind controlled targets can have size of control, like passengers in " +"transport." +msgstr "" +"被心灵控制的目标可以拥有心控单位,就像乘客相对运输工具的那种。" + +#: ../../New-or-Enhanced-Logics.md:1823 msgid "" "Mind controllers now can decide which house can see the link drawn " "between itself and the controlled units." msgstr "心灵控制者现在可以设置哪些所属方可以看到它与被心灵控制单位之间的连线。" -#: ../../New-or-Enhanced-Logics.md:1801 +#: ../../New-or-Enhanced-Logics.md:1824 msgid "" "Mind controllers with multiple controlling slots can now release the " "first controlled unit when they have reached the control limit and are " "ordered to control a new target." msgstr "多重心控单位现在可以达到控制上限而又要控制一个新目标时释放第一个被控制的单位。" -#: ../../New-or-Enhanced-Logics.md:1804 +#: ../../New-or-Enhanced-Logics.md:1827 msgid "" "[SOMETECHNO] ; TechnoType\n" "MindControlRangeLimit=-1.0 ; floating point value\n" +"MindControl.IgnoreSize=true ; boolean\n" +"MindControlSize=1 ; integer\n" "MindControlLink.VisibleToHouse=all ; Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "MultiMindControl.ReleaseVictim=false ; boolean\n" msgstr "" "[SOMETECHNO] ; TechnoType\n" "MindControlRangeLimit=-1.0 ; floating point value\n" +"MindControl.IgnoreSize=true ; boolean\n" +"MindControlSize=1 ; integer\n" "MindControlLink.VisibleToHouse=all ; Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "MultiMindControl.ReleaseVictim=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1811 +#: ../../New-or-Enhanced-Logics.md:1836 msgid "Multi Weapon" msgstr "多武器" -#: ../../New-or-Enhanced-Logics.md:1813 +#: ../../New-or-Enhanced-Logics.md:1838 msgid "" "![image](_static/images/multiweapons.gif) *Multi Weapon used to release " "different weapons against different targets in **Zero Boundary** by " @@ -6820,7 +6885,7 @@ msgstr "" "*@[暴风硫](https://space.bilibili.com/11638715/lists/5358986) 在 **零点界限** " "中使用多武器逻辑来实现对不同目标使用不同武器*" -#: ../../New-or-Enhanced-Logics.md:1816 +#: ../../New-or-Enhanced-Logics.md:1841 msgid "" "You can now use `WeaponX` to enable more than 2 weapons for a TechnoType " "without hardcoded `Gunner=yes`, `IsGattling=yes` or `IsChargeTurret=yes` " @@ -6829,13 +6894,13 @@ msgstr "" "现在你可以使用 `WeaponX` 来为一个单位启用 2 种以上的武器而无需原先硬编码的 " "`Gunner=yes`、`IsGattling=yes` 或 `IsChargeTurret=yes` 这些启用语句。" -#: ../../New-or-Enhanced-Logics.md:1817 +#: ../../New-or-Enhanced-Logics.md:1842 msgid "" "Set `MultiWeapon=yes` to enable this feature, be careful not to forget " "`WeaponCount`." msgstr "设置 `MultiWeapon=yes` 来启用此功能,注意别忘了设置 `WeaponCount`。" -#: ../../New-or-Enhanced-Logics.md:1818 +#: ../../New-or-Enhanced-Logics.md:1843 msgid "" "`MultiWeapon.IsSecondary` specifies which weapons will be considered as " "`Secondary` when selecting weapons or triggering infantry's " @@ -6845,20 +6910,20 @@ msgstr "" "`MultiWeapon.IsSecondary` 指定在选择武器或触发步兵 `SecondaryFire` 时哪些武器被视为 " "`Secondary`,若不设置则使用 `Weapon1`。" -#: ../../New-or-Enhanced-Logics.md:1819 +#: ../../New-or-Enhanced-Logics.md:1844 msgid "" "`MultiWeapon.SelectCount` determines the number of weapons that can be " "selected by default weapon selection logic. Notice that higher number is " "bad for performance." msgstr "`MultiWeapon.SelectCount` 决定默认武器选用逻辑下可以被考虑使用的武器数量。设置过高会导致性能问题。" -#: ../../New-or-Enhanced-Logics.md:1820 +#: ../../New-or-Enhanced-Logics.md:1845 msgid "" "If the number is smaller than the total amount of weapons, the ones with " "smaller indices will be picked." msgstr "如果该值小于武器数量那么将会优先选择索引序号更小的武器。" -#: ../../New-or-Enhanced-Logics.md:1821 +#: ../../New-or-Enhanced-Logics.md:1846 msgid "" "Other weapons can still be used for logic that specify a weapon index, " "such as [ForceWeapon](#forcing-specific-weapon-against-certain-targets)." @@ -6866,7 +6931,7 @@ msgstr "" "其他武器仍可通过 [对特定目标使用特定武器](#forcing-specific-weapon-against-certain-targets) " "等指定武器索引序号的逻辑来使用。" -#: ../../New-or-Enhanced-Logics.md:1824 +#: ../../New-or-Enhanced-Logics.md:1849 msgid "" "[SOMETECHNO] ; TechnoType\n" "MultiWeapon=false ; boolean\n" @@ -6878,21 +6943,21 @@ msgstr "" "MultiWeapon.IsSecondary= ; List of integers\n" "MultiWeapon.SelectCount=2 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:1831 +#: ../../New-or-Enhanced-Logics.md:1856 msgid "Multi VoiceAttack" msgstr "多武器的攻击指令音效" -#: ../../New-or-Enhanced-Logics.md:1833 +#: ../../New-or-Enhanced-Logics.md:1858 msgid "Units can customize the attack voice that plays when using more weapons." msgstr "单位可以在使用更多武器时自定义各武器下达攻击指令时的音效。" -#: ../../New-or-Enhanced-Logics.md:1834 +#: ../../New-or-Enhanced-Logics.md:1859 msgid "" "If you need to assign an attack-voice to `Weapon1`, simply set " "`VoiceWeapon1Attack`. The same applies to other weapons." msgstr "如果你需要为 `Weapon1` 分配攻击音效那么直接设置 `VoiceWeapon1Attack` 即可。其他武器同理。" -#: ../../New-or-Enhanced-Logics.md:1835 +#: ../../New-or-Enhanced-Logics.md:1860 msgid "" "`VoiceEliteWeaponNAttack` can also be used to specify attack voices for " "`EliteWeaponN`. The default is `VoiceWeaponNAttack`." @@ -6900,7 +6965,7 @@ msgstr "" "也可使用 `VoiceEliteWeaponNAttack` 指定用于 `EliteWeaponN` 的音效。默认使用 " "`VoiceWeaponNAttack`。" -#: ../../New-or-Enhanced-Logics.md:1838 +#: ../../New-or-Enhanced-Logics.md:1863 msgid "" "[SOMETECHNO] ; TechnoType\n" "VoiceWeaponNAttack= ; Sound entry\n" @@ -6910,23 +6975,23 @@ msgstr "" "VoiceWeaponNAttack= ; Sound entry\n" "VoiceEliteWeaponNAttack= ; Sound entry\n" -#: ../../New-or-Enhanced-Logics.md:1844 +#: ../../New-or-Enhanced-Logics.md:1869 msgid "No Manual Move" msgstr "禁止手动移动" -#: ../../New-or-Enhanced-Logics.md:1846 +#: ../../New-or-Enhanced-Logics.md:1871 msgid "" "You can now specify whether a TechnoType is unable to receive move " "command." msgstr "现在你可以指定一个科技类型是否无法接收移动指令。" -#: ../../New-or-Enhanced-Logics.md:1847 +#: ../../New-or-Enhanced-Logics.md:1872 msgid "" "Set this to `true` on a building with `UndeploysInto` set could prevent " "it from undeploying when setting the rally point." msgstr "在一个拥有 `UndeploysInto` 的建筑上将此设为 true 可以阻止其在设置集结点时反部署。" -#: ../../New-or-Enhanced-Logics.md:1850 +#: ../../New-or-Enhanced-Logics.md:1875 msgid "" "[SOMETECHNO] ; TechnoType\n" "NoManualMove=false ; boolean\n" @@ -6934,18 +6999,18 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "NoManualMove=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1856 +#: ../../New-or-Enhanced-Logics.md:1881 msgid "" "Note that you can still undeploy the building by using a " "`BuildingUndeploy=true` warhead or by setting a rally point and selling " "it." msgstr "注意你仍可使用一个 `BuildingUndeploy=true` 的弹头或设置集结点后出售建筑来解除部署。" -#: ../../New-or-Enhanced-Logics.md:1859 +#: ../../New-or-Enhanced-Logics.md:1884 msgid "No rearm and reload in EMP or temporal" msgstr "EMP 或超时空停止 CD" -#: ../../New-or-Enhanced-Logics.md:1861 +#: ../../New-or-Enhanced-Logics.md:1886 msgid "" "Now you can make technos unable to rearm and reload when they are in EMP " "or locked by a temporal weapon. Defaults to values in `[General]`. This " @@ -6954,7 +7019,7 @@ msgstr "" "现在你可以让科技类型在 EMP 或被超时空武器冻结时武器 ROF 与弹药 Reload 也同步停止。默认值取自 " "`[General]`。这对机场战机的重新装填无效。" -#: ../../New-or-Enhanced-Logics.md:1864 +#: ../../New-or-Enhanced-Logics.md:1889 msgid "" "[General]\n" "NoRearm.UnderEMP=false ; boolean\n" @@ -6980,17 +7045,17 @@ msgstr "" "NoReload.UnderEMP= ; boolean\n" "NoReload.Temporal= ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1878 +#: ../../New-or-Enhanced-Logics.md:1903 msgid "Overload characteristic dehardcoded" msgstr "自定义脑车过载" -#: ../../New-or-Enhanced-Logics.md:1880 +#: ../../New-or-Enhanced-Logics.md:1905 msgid "" "It is now possible to customize `Overload` behaviors for a TechnoType " "with `InfiniteMindControl=yes` weapon." msgstr "现在可以为一个使用 `InfiniteMindControl=yes` 武器的单位自定义其过载相关特性。" -#: ../../New-or-Enhanced-Logics.md:1883 +#: ../../New-or-Enhanced-Logics.md:1908 msgid "" "\n" "[SOMETECHNO] ; TechnoType\n" @@ -7020,11 +7085,11 @@ msgstr "" "[CombatDamage] -> DefaultSparkSystem\n" "Overload.ParticleSysCount=5 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:1894 +#: ../../New-or-Enhanced-Logics.md:1919 msgid "Promoted Spawns" msgstr "子机升级" -#: ../../New-or-Enhanced-Logics.md:1896 +#: ../../New-or-Enhanced-Logics.md:1921 msgid "" "![image](_static/images/promotedspawns-01.gif) *Promoted Spawns in " "[Fantasy ADVENTURE](https://www.moddb.com/mods/fantasy-adventure)*" @@ -7032,11 +7097,11 @@ msgstr "" "![image](_static/images/promotedspawns-01.gif) " "*[幻想奇遇](https://www.moddb.com/mods/fantasy-adventure) 中的子机同步升级*" -#: ../../New-or-Enhanced-Logics.md:1899 +#: ../../New-or-Enhanced-Logics.md:1924 msgid "The spawned units will promote as their owner's veterancy." msgstr "生成的单位可以根据其所有者的等级进行同步升级。" -#: ../../New-or-Enhanced-Logics.md:1902 +#: ../../New-or-Enhanced-Logics.md:1927 msgid "" "[SOMETECHNO] ; TechnoType\n" "Promote.IncludeSpawns=false ; boolean\n" @@ -7044,15 +7109,15 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "Promote.IncludeSpawns=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1907 +#: ../../New-or-Enhanced-Logics.md:1932 msgid "Promotion animation" msgstr "升级动画" -#: ../../New-or-Enhanced-Logics.md:1909 +#: ../../New-or-Enhanced-Logics.md:1934 msgid "You can now specify an animation on the unit or structure promotion." msgstr "现在你可以在单位或建筑升级时播放指定动画。" -#: ../../New-or-Enhanced-Logics.md:1910 +#: ../../New-or-Enhanced-Logics.md:1935 msgid "" "`Promote.VeteranAnimation` is used when unit or structure is promoted to " "veteran. If this is set for a TechnoType, it'll override the global " @@ -7062,7 +7127,7 @@ msgstr "" "`Promote.VeteranAnimation` 用于单位或建筑升级为老兵时。若为单位设置本句则覆盖全局 `[AudioVisual]` " "中的设置。如果列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:1911 +#: ../../New-or-Enhanced-Logics.md:1936 msgid "" "`Promote.EliteAnimation` is used when unit or structure is promoted to " "elite. If this is set for a TechnoType, it'll override the global setting" @@ -7072,13 +7137,13 @@ msgstr "" "`Promote.EliteAnimation` 用于单位或建筑升级为精英时。若为单位设置本句则覆盖全局 `[AudioVisual]` " "中的设置。如果列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:1912 +#: ../../New-or-Enhanced-Logics.md:1937 msgid "" "If `Promote.EliteAnimation` is not defined, `Promote.VeteranAnimation` " "will play instead when unit or structure is promoted to elite." msgstr "如果未定义 `Promote.EliteAnimation` 则使用 `Promote.VeteranAnimation`。" -#: ../../New-or-Enhanced-Logics.md:1915 +#: ../../New-or-Enhanced-Logics.md:1940 msgid "" "[AudioVisual]\n" "Promote.VeteranAnimation= ; List of AnimationTypes\n" @@ -7100,11 +7165,11 @@ msgstr "" "Promote.EliteAnimation= ; List of AnimationTypes, default to " "Promote.EliteAnimation in [AudioVisual]\n" -#: ../../New-or-Enhanced-Logics.md:1925 +#: ../../New-or-Enhanced-Logics.md:1950 msgid "Raise alert when technos are taking damage" msgstr "单位受伤警报" -#: ../../New-or-Enhanced-Logics.md:1927 +#: ../../New-or-Enhanced-Logics.md:1952 msgid "" "In Vanilla, non-building technos will not generate radar events or EVAs " "when attacked, so players can hardly notice them until they are " @@ -7115,17 +7180,17 @@ msgstr "" "在原版,非建筑科技类型在收到攻击时不会生成雷达事件或 EVA " "播报,因此它们很难在被摧毁前被玩家注意到。现在当你的单位受到攻击时可以收到雷达事件(以及可选的声音效果),以便及时应战。" -#: ../../New-or-Enhanced-Logics.md:1928 +#: ../../New-or-Enhanced-Logics.md:1953 msgid "" "`[AudioVisual] -> CombatAlert` is a global switch, set it to `true` to " "enable the entire logic." msgstr "`[AudioVisual] -> CombatAlert` 是一个全局开关,将其设置为 `true` 以启用整个逻辑。" -#: ../../New-or-Enhanced-Logics.md:1929 +#: ../../New-or-Enhanced-Logics.md:1954 msgid "These flags controlls when to trigger a combat alert." msgstr "这些标签控制什么时候触发战斗警报。" -#: ../../New-or-Enhanced-Logics.md:1930 +#: ../../New-or-Enhanced-Logics.md:1955 msgid "" "You can disable this logic on specific techno by setting `[TechnoType] ->" " CombatAlert` to `false`, which default to `[AudioVisual] -> " @@ -7136,7 +7201,7 @@ msgstr "" "`[AudioVisual] -> CombatAlert.Default`。如果 `CombatAlert.Default` 也为空,则默认为对" " `Insignificant=yes` 或 `Spawned=yes` 的科技类型禁用。" -#: ../../New-or-Enhanced-Logics.md:1931 +#: ../../New-or-Enhanced-Logics.md:1956 msgid "" "`[AudioVisual] -> CombatAlert.IgnoreBuilding` will turn the logic off on " "buildings. You can override it for specific building by setting " @@ -7147,13 +7212,13 @@ msgstr "" "`[TechnoType] -> CombatAlert.NotBuilding` 为 `true` " "来为特定建筑覆盖设置。你可能希望将其用于载具性质的建筑。" -#: ../../New-or-Enhanced-Logics.md:1932 +#: ../../New-or-Enhanced-Logics.md:1957 msgid "" "`[AudioVisual] -> CombatAlert.SuppressIfInScreen` decides whether to " "disable the logic for the units in the current screen." msgstr "`[AudioVisual] -> CombatAlert.SuppressIfInScreen` 决定是否为当前屏幕中的单位禁用此逻辑。" -#: ../../New-or-Enhanced-Logics.md:1933 +#: ../../New-or-Enhanced-Logics.md:1958 msgid "" "`[AudioVisual] -> CombatAlert.Interval` decides the time interval (in " "frames) between alerts, to prevent the alert from being anonying. It is " @@ -7162,13 +7227,13 @@ msgstr "" "`[AudioVisual] -> CombatAlert.Interval` 决定警报之间的间隔(以帧为单位),以防止警报过于频繁。默认为 " "150 帧。" -#: ../../New-or-Enhanced-Logics.md:1934 +#: ../../New-or-Enhanced-Logics.md:1959 msgid "" "`[AudioVisual] -> CombatAlert.SuppressIfAllyDamage` decides whether to " "disable the logic for the damage from allys." msgstr "`[AudioVisual] -> CombatAlert.SuppressIfAllyDamage` 决定是否为盟友造成的伤害禁用此逻辑。" -#: ../../New-or-Enhanced-Logics.md:1935 +#: ../../New-or-Enhanced-Logics.md:1960 msgid "" "Technos hitted by a warhead with `[WarheadType] -> CombatAlert.Suppress` " "setted to `true` will not raise a radar event or EVA. This flag is " @@ -7179,11 +7244,11 @@ msgstr "" "的弹头击中将不会触发雷达事件或 EVA。此标签默认为 Ares 标签 `[WarheadType] -> Malicious` 的相反值和 " "`[WarheadType] -> Nonprovocative` 的值。" -#: ../../New-or-Enhanced-Logics.md:1936 +#: ../../New-or-Enhanced-Logics.md:1961 msgid "And the following flags controlls the effect of a combat alert." msgstr "以下标签控制战斗警报的效果。" -#: ../../New-or-Enhanced-Logics.md:1937 +#: ../../New-or-Enhanced-Logics.md:1962 msgid "" "`[AudioVisual] -> CombatAlert.MakeAVoice` decides whether to play some " "sound effect with the combat alert. Set it to `true` will enable the " @@ -7192,7 +7257,7 @@ msgstr "" "`[AudioVisual] -> CombatAlert.MakeAVoice` 决定是否与战斗警报一起播放一些音效。将其设为 true " "以启用以下标签,否则它们将被忽略。" -#: ../../New-or-Enhanced-Logics.md:1938 +#: ../../New-or-Enhanced-Logics.md:1963 msgid "" "`[TechnoType] -> CombatAlert.UseFeedbackVoice` decides whether to use the" " sound defined by `VoiceFeedback`. Default to `[AudioVisual] -> " @@ -7201,7 +7266,7 @@ msgstr "" "`[TechnoType] -> CombatAlert.UseFeedbackVoice` 决定是否使用 `VoiceFeedback` " "定义的声音。默认为 `[AudioVisual] -> CombatAlert.UseFeedbackVoice`。" -#: ../../New-or-Enhanced-Logics.md:1939 +#: ../../New-or-Enhanced-Logics.md:1964 msgid "" "`[TechnoType] -> CombatAlert.UseAttackVoice` decides whether to use the " "sound defined by `VoiceAttack`. Default to `[AudioVisual] -> " @@ -7210,7 +7275,7 @@ msgstr "" "`[TechnoType] -> CombatAlert.UseAttackVoice` 决定是否使用 `VoiceAttack` " "定义的声音。默认为 `[AudioVisual] -> CombatAlert.UseAttackVoice`。" -#: ../../New-or-Enhanced-Logics.md:1940 +#: ../../New-or-Enhanced-Logics.md:1965 msgid "" "`[TechnoType] -> CombatAlert.UseEVA` decides whether to play an EVA. " "Default to `[AudioVisual] -> CombatAlert.UseEVA`. The EVA to play is " @@ -7221,7 +7286,7 @@ msgstr "" "CombatAlert.UseEVA`。所用的 EVA 默认为 `EVA_UnitsInCombat`,可以通过 `[TechnoType] ->" " CombatAlert.EVA` 指定。" -#: ../../New-or-Enhanced-Logics.md:1941 +#: ../../New-or-Enhanced-Logics.md:1966 msgid "" "The sound effect is taken **at order**, feedback first, attack then, eva " "finally. The flags in `[AudioVisual]` controlls whether to check it " @@ -7230,7 +7295,7 @@ msgstr "" "声音效果 **依次** 被使用,首先是反馈,然后是攻击,最后是 EVA。在 `[AudioVisual]` " "中的标签控制是否全局检查,可以为每个科技类型单独指定。" -#: ../../New-or-Enhanced-Logics.md:1942 +#: ../../New-or-Enhanced-Logics.md:1967 msgid "" "An example: You set `CombatAlert.UseFeedbackVoice` and " "`CombatAlert.UseEVA` to `true` and `CombatAlert.UseAttackVoice` to " @@ -7243,7 +7308,7 @@ msgstr "" "`VoiceFeedback`、`VoiceAttack` 和 `CombatAlert.EVA` 的单位将播放 " "`VoiceFeedback`。拥有 `VoiceAttack` 的单位将播放 `EVA_UnitsInCombat`。" -#: ../../New-or-Enhanced-Logics.md:1945 +#: ../../New-or-Enhanced-Logics.md:1970 msgid "" "[AudioVisual]\n" "CombatAlert=false ; boolean\n" @@ -7291,11 +7356,11 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "CombatAlert.Suppress= ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1970 +#: ../../New-or-Enhanced-Logics.md:1995 msgid "Recount burst index" msgstr "重置连发索引" -#: ../../New-or-Enhanced-Logics.md:1972 +#: ../../New-or-Enhanced-Logics.md:1997 msgid "" "You can now make technos recount their current burst index when they have" " changed the firing weapon or have maintained for a period of time " @@ -7303,7 +7368,7 @@ msgid "" "and 30 frames)." msgstr "现在你可以让单位在更换了开火武器或一段时间(取上一次发射武器的 `ROF` 与 30 帧之间的较大值)内没有目标的情况下重置当前的连发索引。" -#: ../../New-or-Enhanced-Logics.md:1975 +#: ../../New-or-Enhanced-Logics.md:2000 msgid "" "[General]\n" "RecountBurst=false ; boolean\n" @@ -7317,15 +7382,15 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "RecountBurst= ; boolean, default to [General] -> RecountBurst\n" -#: ../../New-or-Enhanced-Logics.md:1983 +#: ../../New-or-Enhanced-Logics.md:2008 msgid "Reset MindControl after transformation" msgstr "变形后重置心控效果" -#: ../../New-or-Enhanced-Logics.md:1985 +#: ../../New-or-Enhanced-Logics.md:2010 msgid "After the unit conversion is completed, its mind control can be reset." msgstr "单位变形完毕后其心控效果可被重置。" -#: ../../New-or-Enhanced-Logics.md:1986 +#: ../../New-or-Enhanced-Logics.md:2011 msgid "" "If all warheads don't have `MindControl=yes`, then " "`Convert.ResetMindControl=yes` will release all controlled units." @@ -7333,7 +7398,7 @@ msgstr "" "如果变形后的单位所有弹头都没有 `MindControl=yes`,那么 `Convert.ResetMindControl=yes` " "将释放所有被心控的单位。" -#: ../../New-or-Enhanced-Logics.md:1987 +#: ../../New-or-Enhanced-Logics.md:2012 msgid "" "If any warhead has `MindControl=yes`, then `Convert.ResetMindControl=yes`" " resets its maximum number of controls." @@ -7341,7 +7406,7 @@ msgstr "" "如果变形后的单位任意弹头拥有 `MindControl=yes`,那么 `Convert.ResetMindControl=yes` " "将重置最大控制数量上限。" -#: ../../New-or-Enhanced-Logics.md:1988 +#: ../../New-or-Enhanced-Logics.md:2013 msgid "" "If all weapons don't have `InfiniteMindControl=yes`, then " "`Convert.ResetMindControl=yes` release controlled units that exceed the " @@ -7350,7 +7415,7 @@ msgstr "" "如果变形后的单位所有武器都没有 `InfiniteMindControl=yes`,那么 " "`Convert.ResetMindControl=yes` 将释放超出上限的被心控单位。" -#: ../../New-or-Enhanced-Logics.md:1991 +#: ../../New-or-Enhanced-Logics.md:2016 msgid "" "[SOMETECHNO] ; TechnoType, before conversion\n" "Convert.ResetMindControl=false ; boolean\n" @@ -7358,11 +7423,11 @@ msgstr "" "[SOMETECHNO] ; TechnoType, before conversion\n" "Convert.ResetMindControl=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:1996 +#: ../../New-or-Enhanced-Logics.md:2021 msgid "Revenge weapon" msgstr "复仇武器" -#: ../../New-or-Enhanced-Logics.md:1998 +#: ../../New-or-Enhanced-Logics.md:2023 msgid "" "![Revenge Weapon](_static/images/revengeweapon.gif) *Revenge Weapon usage" " in [RA2: Reboot](https://www.moddb.com/mods/reboot)*" @@ -7370,11 +7435,11 @@ msgstr "" "![image](_static/images/revengeweapon.gif) *[RA2: " "Reboot](https://www.moddb.com/mods/reboot) 中的复仇武器*" -#: ../../New-or-Enhanced-Logics.md:1998 +#: ../../New-or-Enhanced-Logics.md:2023 msgid "Revenge Weapon" msgstr "复仇武器" -#: ../../New-or-Enhanced-Logics.md:2001 +#: ../../New-or-Enhanced-Logics.md:2026 msgid "" "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 " @@ -7386,20 +7451,20 @@ msgstr "" "`DeathWeapon`,它在科技类型被击杀后发射,但不同的是它将发射给造成伤害并杀死科技类型的人。如果科技类型不是由于其他科技类型造成的直接伤害而死亡,那么" " `RevengeWeapon` 将不会被发射。" -#: ../../New-or-Enhanced-Logics.md:2002 +#: ../../New-or-Enhanced-Logics.md:2027 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 +#: ../../New-or-Enhanced-Logics.md:2028 msgid "" "It is possible to grant revenge weapons through [attached effects" "](#attached-effects) as well." msgstr "也可以通过 [Attach Effect](#attached-effects) 来授予复仇武器。" -#: ../../New-or-Enhanced-Logics.md:2004 +#: ../../New-or-Enhanced-Logics.md:2029 msgid "" "If a Warhead has `SuppressRevengeWeapons` set to true, it will not " "trigger revenge weapons. `SuppressRevengeWeapons.Types` can be used to " @@ -7410,11 +7475,11 @@ msgstr "" "则不会触发复仇武器。`SuppressRevengeWeapons.Types` " "可用于列出受影响的武器类型,如果没有列出,则所有武器类型都受影响。" -#: ../../New-or-Enhanced-Logics.md:2007 +#: ../../New-or-Enhanced-Logics.md:2032 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,18 +7488,18 @@ 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" "SuppressRevengeWeapons=false ; boolean\n" "SuppressRevengeWeapons.Types= ; List of WeaponTypes\n" -#: ../../New-or-Enhanced-Logics.md:2017 +#: ../../New-or-Enhanced-Logics.md:2042 msgid "Shared Ammo" msgstr "共享弹药" -#: ../../New-or-Enhanced-Logics.md:2019 +#: ../../New-or-Enhanced-Logics.md:2044 msgid "" "Transports with `OpenTopped=yes` and `Ammo.Shared=yes` will transfer ammo" " to passengers that have `Ammo.Shared=yes`. In addition, a transport can " @@ -7446,17 +7511,17 @@ msgstr "" "的载员共享弹药。此外如果载员拥有与运输工具相同的 `Ammo.Shared.Group=` " "值则运输工具可以筛选谁将接收弹药而忽略不拥有同组值的其他载员。" -#: ../../New-or-Enhanced-Logics.md:2021 +#: ../../New-or-Enhanced-Logics.md:2046 msgid "" "Transports with `Ammo.Shared.Group=-1` will transfer ammo to any " "passenger with `Ammo.Shared=yes` ignoring the group." msgstr "拥有 `Ammo.Shared.Group=-1` 的运输工具将像任何拥有 `Ammo.Shared=yes` 的载员共享弹药。" -#: ../../New-or-Enhanced-Logics.md:2022 +#: ../../New-or-Enhanced-Logics.md:2047 msgid "Transports must have ammo and should be able to reload ammo." msgstr "运输工具必须拥有弹药并应当能够自行重装弹药。" -#: ../../New-or-Enhanced-Logics.md:2025 +#: ../../New-or-Enhanced-Logics.md:2050 msgid "" "[SOMETECHNO1] ; TechnoType, transport with OpenTopped=yes\n" "Ammo.Shared=no ; boolean\n" @@ -7474,17 +7539,17 @@ msgstr "" "Ammo.Shared=no ; boolean\n" "Ammo.Shared.Group=-1 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:2035 +#: ../../New-or-Enhanced-Logics.md:2060 msgid "Sound entry on unit's creation" msgstr "单位创建时音效" -#: ../../New-or-Enhanced-Logics.md:2037 +#: ../../New-or-Enhanced-Logics.md:2062 msgid "" "When a unit is created, sound specified in `VoiceCreated` will be played " "for the unit owner." msgstr "当一个单位被创建时将为单位所有者播放 `VoiceCreated` 指定的音效。" -#: ../../New-or-Enhanced-Logics.md:2038 +#: ../../New-or-Enhanced-Logics.md:2063 msgid "" "If `IsVoiceCreatedGlobal` is set to true, `VoiceCreated` will be played " "globally instead of `EVA_UnitReady`." @@ -7492,7 +7557,7 @@ msgstr "" "如果 `IsVoiceCreatedGlobal` 设为 true 则将全局播放 `VoiceCreated` 而不是 " "`EVA_UnitReady`。" -#: ../../New-or-Enhanced-Logics.md:2041 +#: ../../New-or-Enhanced-Logics.md:2066 msgid "" "[AudioVisual]\n" "IsVoiceCreatedGlobal=false ; boolean\n" @@ -7506,15 +7571,15 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "VoiceCreated= ; Sound entry\n" -#: ../../New-or-Enhanced-Logics.md:2049 +#: ../../New-or-Enhanced-Logics.md:2074 msgid "Targeting limitation for berzerk technos" msgstr "狂暴单位索敌限制" -#: ../../New-or-Enhanced-Logics.md:2051 +#: ../../New-or-Enhanced-Logics.md:2076 msgid "Now you can specify which houses berzerk's technos can target and fire." msgstr "现在你可以设定狂暴单位可以对哪些所属方的目标索敌和开火。" -#: ../../New-or-Enhanced-Logics.md:2054 +#: ../../New-or-Enhanced-Logics.md:2079 msgid "" "[General]\n" "BerzerkTargeting=all ; Affected House Enumeration " @@ -7524,24 +7589,24 @@ msgstr "" "BerzerkTargeting=all ; Affected House Enumeration " "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" -#: ../../New-or-Enhanced-Logics.md:2059 +#: ../../New-or-Enhanced-Logics.md:2084 msgid "Tiberium eater" msgstr "马夫逻辑" -#: ../../New-or-Enhanced-Logics.md:2061 +#: ../../New-or-Enhanced-Logics.md:2086 msgid "" "TechnoTypes can convert the ores underneath them into credits in real " "time, like GDI's MARV in Command & Conquer 3 Kane's Wrath." msgstr "可以让单位实时将自身脚下的矿石直接转化为资金,就像《凯恩之怒》中 GDI 的 MARV 那样。" -#: ../../New-or-Enhanced-Logics.md:2062 +#: ../../New-or-Enhanced-Logics.md:2087 msgid "" "`TiberiumEater.TransDelay` specifies the interval frames between two " "eating processes, 0 means eat in every frame. When it's below 0, the " "logic will be turned off for this TechnoType." msgstr "`TiberiumEater.TransDelay` 指定了两次吃矿之间间隔的帧数,0 代表逐帧。负值禁用。" -#: ../../New-or-Enhanced-Logics.md:2063 +#: ../../New-or-Enhanced-Logics.md:2088 msgid "" "`TiberiumEater.CellN` set a list of cells that'll process tiberium " "eating, where `N` is 0-based and the values are offset related to the " @@ -7551,31 +7616,31 @@ msgstr "" "`TiberiumEater.CellN` 用于设定吃矿位置以单元格为单位的偏移列表,`N` 为 0 " "始序号,数值表示相对于单位所在单元格的偏移坐标。如果不设置则只吃脚下的。" -#: ../../New-or-Enhanced-Logics.md:2064 +#: ../../New-or-Enhanced-Logics.md:2089 msgid "" "`TiberiumEater.AmountPerCell` controls the amount of ores that can be " "eaten at each cell at once. No limit when it's below 0." msgstr "`TiberiumEater.AmountPerCell` 控制单次吃矿对与每个单元格而言可吃进去的矿石量上限。负值喂不饱。" -#: ../../New-or-Enhanced-Logics.md:2065 +#: ../../New-or-Enhanced-Logics.md:2090 msgid "" "By default, ores mined in this way worth the same as regular harvesting. " "This can be adjusted by `TiberiumEater.CashMultiplier`." msgstr "默认通过此方式采集的矿石价值与常规采矿相同。这可以通过 `TiberiumEater.CashMultiplier` 加以调整。" -#: ../../New-or-Enhanced-Logics.md:2066 +#: ../../New-or-Enhanced-Logics.md:2091 msgid "" "`TiberiumEater.Display`, if set to true, will create a flying text to " "display the total credits received in each eating process." msgstr "若 `TiberiumEater.Display` 设为 true 则每次吃矿时都会飘起一个代表所得总资金量的数字。" -#: ../../New-or-Enhanced-Logics.md:2067 +#: ../../New-or-Enhanced-Logics.md:2092 msgid "" "`TiberiumEater.Display.Houses` determines which houses can see the " "credits display." msgstr "`TiberiumEater.Display.Houses` 决定了哪些所属方能看见。" -#: ../../New-or-Enhanced-Logics.md:2068 +#: ../../New-or-Enhanced-Logics.md:2093 msgid "" "An animation will be played at each mined cell in an eating process. If " "`TiberiumEater.Anims` contains 8 entries, entry from position matching " @@ -7583,7 +7648,7 @@ msgid "" "be chosen randomly." msgstr "每次吃矿时都会在被吃的单元格播放动画。若 `TiberiumEater.Anims` 包含 8 个条目则根据单位当前朝向选择动画,否则随机选取。" -#: ../../New-or-Enhanced-Logics.md:2069 +#: ../../New-or-Enhanced-Logics.md:2094 msgid "" "`TiberiumEater.Anims.TiberiumN`, if set, will override " "`TiberiumEater.Anims` when eating corresponding tiberium type." @@ -7591,13 +7656,13 @@ msgstr "" "若设置了 `TiberiumEater.Anims.TiberiumN` 则在吃进去对应类型(`N` = `[0,3]`)的矿石时使用对应序列的 " "`TiberiumEater.Anims`。" -#: ../../New-or-Enhanced-Logics.md:2070 +#: ../../New-or-Enhanced-Logics.md:2095 msgid "" "If `TiberiumEater.AnimMove` set to true, the animations will move with " "the TechnoType." msgstr "若 `TiberiumEater.AnimMove` 设为 true 则动画会跟随单位移动。" -#: ../../New-or-Enhanced-Logics.md:2073 +#: ../../New-or-Enhanced-Logics.md:2098 msgid "" "[SOMETECHNO] ; InfantryType, VehicleType or " "AircraftType\n" @@ -7631,18 +7696,18 @@ msgstr "" "TiberiumEater.Anims.Tiberium3= ; List of AnimationTypes\n" "TiberiumEater.AnimMove=true ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2089 +#: ../../New-or-Enhanced-Logics.md:2114 msgid "Weapons fired on warping in / out" msgstr "武器在传送时开火" -#: ../../New-or-Enhanced-Logics.md:2091 +#: ../../New-or-Enhanced-Logics.md:2116 msgid "" "It is now possible to add weapons that are fired on a teleporting " "TechnoType when it warps in or out. They are at the same time as the " "appropriate animations (`WarpIn` / `WarpOut`) are displayed." msgstr "现在可以在科技类型传送来/去时发射武器。它们会与相应的 (`WarpIn`/`WarpOut`) 动画一起显示。" -#: ../../New-or-Enhanced-Logics.md:2092 +#: ../../New-or-Enhanced-Logics.md:2117 msgid "" "`WarpInMinRangeWeapon` is used instead of `WarpInWeapon` if the distance " "traveled (in leptons) was less than `ChronoRangeMinimum`. This works " @@ -7653,7 +7718,7 @@ msgstr "" "时使用,无论是否设置了 `ChronoTrigger`。如果未设置 `WarpInMinRangeWeapon`,则默认为 " "`WarpInWeapon`。" -#: ../../New-or-Enhanced-Logics.md:2093 +#: ../../New-or-Enhanced-Logics.md:2118 msgid "" "If `WarpInWeapon.UseDistanceAsDamage` is set, `Damage` of " "`WarpIn(MinRange)Weapon` is overriden by the number of whole cells " @@ -7662,7 +7727,7 @@ msgstr "" "如果设置了 `WarpInWeapon.UseDistanceAsDamage` 则 `WarpIn(MinRange)Weapon` 的 " "`Damage` 将被覆盖为传送所跨越的完整单元格数。" -#: ../../New-or-Enhanced-Logics.md:2096 +#: ../../New-or-Enhanced-Logics.md:2121 msgid "" "[SOMETECHNO] ; TechnoType\n" "WarpInWeapon= ; WeaponType\n" @@ -7676,27 +7741,27 @@ msgstr "" "WarpInWeapon.UseDistanceAsDamage=false ; boolean\n" "WarpOutWeapon= ; WeaponType\n" -#: ../../New-or-Enhanced-Logics.md:2104 +#: ../../New-or-Enhanced-Logics.md:2129 msgid "Terrain" msgstr "地形对象" -#: ../../New-or-Enhanced-Logics.md:2106 +#: ../../New-or-Enhanced-Logics.md:2131 msgid "Destroy animation & sound" msgstr "摧毁动画与音效" -#: ../../New-or-Enhanced-Logics.md:2108 +#: ../../New-or-Enhanced-Logics.md:2133 msgid "" "You can now specify a destroy animation and sound for a TerrainType that " "are played when it is destroyed." msgstr "现在你可以指定当地形对象被摧毁时播放播放的摧毁动画与音效。如果列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:2109 +#: ../../New-or-Enhanced-Logics.md:2134 msgid "" "If more than one animation is listed in `DestroyAnim`, a random one is " "selected." msgstr "如果 `DestroyAnim` 中列出了多个动画,则将随机选择一个。" -#: ../../New-or-Enhanced-Logics.md:2112 +#: ../../New-or-Enhanced-Logics.md:2137 msgid "" "[SOMETERRAINTYPE] ; TerrainType\n" "DestroyAnim= ; List of AnimationTypes\n" @@ -7706,21 +7771,21 @@ msgstr "" "DestroyAnim= ; List of AnimationTypes\n" "DestroySound= ; Sound entry\n" -#: ../../New-or-Enhanced-Logics.md:2118 +#: ../../New-or-Enhanced-Logics.md:2143 msgid "Vehicles" msgstr "载具类型" -#: ../../New-or-Enhanced-Logics.md:2120 +#: ../../New-or-Enhanced-Logics.md:2145 msgid "Amphibious access vehicle" msgstr "两栖载具装载拓展" -#: ../../New-or-Enhanced-Logics.md:2122 +#: ../../New-or-Enhanced-Logics.md:2147 msgid "" "Now you can let amphibious infantry or vehicle passengers enter or leave " "amphibious transport vehicles on water surface." msgstr "现在两栖步兵或载具可以在水中进入或离开两栖运输工具。" -#: ../../New-or-Enhanced-Logics.md:2125 +#: ../../New-or-Enhanced-Logics.md:2150 msgid "" "[General]\n" "AmphibiousEnter=false ; boolean\n" @@ -7742,11 +7807,11 @@ msgstr "" "AmphibiousUnload= ; boolean, default to [General] -> " "AmphibiousUnload\n" -#: ../../New-or-Enhanced-Logics.md:2135 +#: ../../New-or-Enhanced-Logics.md:2160 msgid "Automatic deploy and blocking deploying based on ammo" msgstr "基于弹药量的自动部署与禁用部署" -#: ../../New-or-Enhanced-Logics.md:2137 +#: ../../New-or-Enhanced-Logics.md:2162 msgid "" "It is now possible for deployable vehicles (`DeploysInto`, `DeployFire`, " "`IsSimpleDeployer` and those that have passengers) to automatically " @@ -7755,7 +7820,7 @@ msgstr "" "现可为可部署(`DeploysInto`、`DeployFire`、`IsSimpleDeployer` " "以及那些有乘客的)载具设定根据当前弹药量自动部署或禁用部署" -#: ../../New-or-Enhanced-Logics.md:2138 +#: ../../New-or-Enhanced-Logics.md:2163 msgid "" "`Ammo.AutoDeployMinimumAmount` & `Ammo.AutoDeployMaximumAmount` determine" " minimum and maximum ammo the vehicle should have for it to automatically" @@ -7764,7 +7829,7 @@ msgstr "" "`Ammo.AutoDeployMinimumAmount` & `Ammo.AutoDeployMaximumAmount` " "分别设定载具自动部署所需的最低与最高弹药量阈值,负值表示禁用检查。" -#: ../../New-or-Enhanced-Logics.md:2139 +#: ../../New-or-Enhanced-Logics.md:2164 msgid "" "`Ammo.DeployUnlockMinimumAmount` & `Ammo.DeployUnlockMaximumAmount` " "determine minimum and maximum ammo the vehicle should have for deploying " @@ -7773,7 +7838,7 @@ msgstr "" "`Ammo.DeployUnlockMinimumAmount` & `Ammo.DeployUnlockMaximumAmount` " "分别设定载具启用部署功能所需的最低与最高弹药量阈值,负值表示禁用检查。" -#: ../../New-or-Enhanced-Logics.md:2142 +#: ../../New-or-Enhanced-Logics.md:2167 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "Ammo.AutoDeployMinimumAmount=-1 ; integer\n" @@ -7787,11 +7852,11 @@ msgstr "" "Ammo.DeployUnlockMinimumAmount=-1 ; integer\n" "Ammo.DeployUnlockMaximumAmount=-1 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:2150 +#: ../../New-or-Enhanced-Logics.md:2175 msgid "Damaged unit image changes" msgstr "载具伤残更换图像" -#: ../../New-or-Enhanced-Logics.md:2152 +#: ../../New-or-Enhanced-Logics.md:2177 msgid "" "When a unit is damaged (health points percentage is lower than " "`[AudioVisual] -> ConditionYellow` percentage), it now may use different " @@ -7800,7 +7865,7 @@ msgstr "" "现在当载具伤残(生命值低于 `[AudioVisual] -> ConditionYellow` 的百分比)时可以通过 " "`Image.ConditionYellow` 为载具设置不同的图像。" -#: ../../New-or-Enhanced-Logics.md:2153 +#: ../../New-or-Enhanced-Logics.md:2178 msgid "" "Similar, `Image.ConditionRed` is used as image if unit health points " "percentage is lower than `[AudioVisual] -> ConditionRed` percentage." @@ -7808,7 +7873,7 @@ msgstr "" "同样的如果载具生命值低于 `[AudioVisual] -> ConditionRed` 的百分比那么将会使用 " "`Image.ConditionRed` 作为图像。" -#: ../../New-or-Enhanced-Logics.md:2154 +#: ../../New-or-Enhanced-Logics.md:2179 msgid "" "It is also works on water by setting `WaterImage.ConditionYellow` and " "`WaterImage.ConditionRed` VehicleType, similar to Ares' `WaterImage`." @@ -7816,7 +7881,7 @@ msgstr "" "类似于 Ares 的 `WaterImage`,可以通过设置 `WaterImage.ConditionYellow` 和 " "`WaterImage.ConditionRed` 的载具类型来在水上应用这一效果。" -#: ../../New-or-Enhanced-Logics.md:2157 +#: ../../New-or-Enhanced-Logics.md:2182 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "Image.ConditionYellow= ; VehicleType entry\n" @@ -7830,17 +7895,17 @@ msgstr "" "WaterImage.ConditionYellow= ; VehicleType entry\n" "WaterImage.ConditionRed= ; VehicleType entry\n" -#: ../../New-or-Enhanced-Logics.md:2166 +#: ../../New-or-Enhanced-Logics.md:2191 msgid "" "Note that the VehicleTypes had to be defined under [VehicleTypes] and use" " same image type (SHP/VXL) for vanilla/damaged states." msgstr "注意这些被使用的载具必须在 `[VehicleTypes]` 下注册并且在常规/伤残状态下使用相同的图像类型(Shape/Voxel)。" -#: ../../New-or-Enhanced-Logics.md:2169 +#: ../../New-or-Enhanced-Logics.md:2194 msgid "Jumpjet Tilts While Moving" msgstr "Jumpjet 在移动时倾斜" -#: ../../New-or-Enhanced-Logics.md:2171 +#: ../../New-or-Enhanced-Logics.md:2196 msgid "" "![image](_static/images/jumpjet-tilt.gif) *Jumpjet Tilts in [Project Rush" " - Conquer](https://www.moddb.com/mods/project-rush-conquer)*" @@ -7849,31 +7914,31 @@ msgstr "" "*[冲击计划:征服](https://www.moddb.com/mods/project-rush-conquer) 中的 Jumpjet " "前倾*" -#: ../../New-or-Enhanced-Logics.md:2174 +#: ../../New-or-Enhanced-Logics.md:2199 msgid "" "Now you can make jumpjets tilt forward when moving forward and sideways " "when turning by setting `JumpjetTilt` to true." msgstr "现在你可以通过将 `JumpjetTilt` 设为 true 来使 Jumpjet 单位在向前移动时前倾以及在转向时侧倾。" -#: ../../New-or-Enhanced-Logics.md:2175 +#: ../../New-or-Enhanced-Logics.md:2200 msgid "The maximum tilt angle will not exceed 90 degrees." msgstr "最大倾斜角度不会超过 90 度。" -#: ../../New-or-Enhanced-Logics.md:2176 +#: ../../New-or-Enhanced-Logics.md:2201 msgid "" "The magnitude of the forward tilt is related to the current speed and " "acceleration. They are additive and have two coefficients that can be " "adjusted for details." msgstr "向前倾斜的幅度与当前速度和加速度相关。它们会相加,这里给出两个用于细节调整的系数。" -#: ../../New-or-Enhanced-Logics.md:2177 +#: ../../New-or-Enhanced-Logics.md:2202 msgid "" "The magnitude of the sideways tilt is related to the current speed and " "rotation angle. They are multiplied and also have two coefficients that " "can be adjusted for details." msgstr "侧向倾斜的幅度与当前速度和旋转角度相关。它们会相乘,同样给出两个用于细节调整的系数。" -#: ../../New-or-Enhanced-Logics.md:2180 +#: ../../New-or-Enhanced-Logics.md:2205 msgid "" "[SOMEVEHICLE] ; VehicleType, with " "Locomotor=Jumpjet\n" @@ -7891,24 +7956,24 @@ msgstr "" "JumpjetTilt.SidewaysRotationFactor=1.0 ; floating point value\n" "JumpjetTilt.SidewaysSpeedFactor=1.0 ; floating point value\n" -#: ../../New-or-Enhanced-Logics.md:2189 +#: ../../New-or-Enhanced-Logics.md:2214 msgid "Turret Response" msgstr "炮塔响应" -#: ../../New-or-Enhanced-Logics.md:2191 +#: ../../New-or-Enhanced-Logics.md:2216 msgid "" "When the vehicle loses its target, you can customize whether to align the" " turret direction with the vehicle body." msgstr "你可以自定义当载具丢失目标时炮塔方向是否回正(与车身对齐)" -#: ../../New-or-Enhanced-Logics.md:2192 +#: ../../New-or-Enhanced-Logics.md:2217 msgid "" "When `Speed=0` or TechnoTypes cells cannot move due to " "`MovementRestrictedTo`, the default value is no; in other cases, it is " "yes." msgstr "若 `Speed=0` 或单位由于 `MovementRestrictedTo` 导致无法移动,则默认 no;否则默认 yes。" -#: ../../New-or-Enhanced-Logics.md:2195 +#: ../../New-or-Enhanced-Logics.md:2220 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "TurretResponse= ; boolean\n" @@ -7916,11 +7981,11 @@ msgstr "" "[SOMEVEHICLE] ; VehicleType\n" "TurretResponse= ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2200 +#: ../../New-or-Enhanced-Logics.md:2225 msgid "Turretless Shape Vehicle FireUp" msgstr "无炮塔 Shape 载具开火前摇" -#: ../../New-or-Enhanced-Logics.md:2202 +#: ../../New-or-Enhanced-Logics.md:2227 msgid "" "![image](_static/images/vehiclefireup.gif) *Use the pre-firing animation " "effect for Shape vehicle-type mecha units in **Zero Boundary** by " @@ -7930,18 +7995,18 @@ msgstr "" "*@[暴风硫](https://space.bilibili.com/11638715/lists/5358986) 在 **零点界限** 中为 " "Shape 载具类型的机甲单位使用开火前摇效果*" -#: ../../New-or-Enhanced-Logics.md:2205 +#: ../../New-or-Enhanced-Logics.md:2230 msgid "`Voxel=no` turretless vehicles now support the use of `FireUp`." msgstr "现在 `Voxel=no` 的无炮塔载具已经支持 `FireUp`。" -#: ../../New-or-Enhanced-Logics.md:2206 +#: ../../New-or-Enhanced-Logics.md:2231 msgid "" "`FireUp.ResetInRetarget` determines whether a vehicle's FireUp count is " "reset when its target changes. Forced to be `yes` when there is no " "target." msgstr "`FireUp.ResetInRetarget` 决定当前载具目标改变时其前摇是否重置。失去目标强制重置。" -#: ../../New-or-Enhanced-Logics.md:2209 +#: ../../New-or-Enhanced-Logics.md:2234 msgid "" "[SOMEVEHICLE] ; VehicleType\n" "FireUp= ; integer\n" @@ -7951,41 +8016,41 @@ msgstr "" "FireUp= ; integer\n" "FireUp.ResetInRetarget=true ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2215 +#: ../../New-or-Enhanced-Logics.md:2240 msgid "Warheads" msgstr "弹头" -#: ../../New-or-Enhanced-Logics.md:2218 +#: ../../New-or-Enhanced-Logics.md:2243 msgid "All new Warhead effects" msgstr "所有新增的弹头效果" -#: ../../New-or-Enhanced-Logics.md:2219 +#: ../../New-or-Enhanced-Logics.md:2244 msgid "" "Can be used with `CellSpread` and Ares' GenericWarhead superweapon where " "applicable." msgstr "可在适用的情况下与 `CellSpread` 和 Ares 的通用弹头超级武器一起使用。" -#: ../../New-or-Enhanced-Logics.md:2220 +#: ../../New-or-Enhanced-Logics.md:2245 msgid "Cannot be used with `MindControl.Permanent=yes` of Ares." msgstr "不能与 Ares 的 `MindControl.Permanent=yes` 共同使用。" -#: ../../New-or-Enhanced-Logics.md:2221 +#: ../../New-or-Enhanced-Logics.md:2246 msgid "" "Respect `Verses` where applicable unless `EffectsRequireVerses` is set to" " `false`." msgstr "在适用的情况下除非 `EffectsRequireVerses` 设为 `false` 否则尊重 `Verses`。" -#: ../../New-or-Enhanced-Logics.md:2222 +#: ../../New-or-Enhanced-Logics.md:2247 msgid "" "If target has an active [shield](#shields), its armor type is used " "instead unless warhead can penetrate the shield." msgstr "如果目标拥有一个激活的 [护盾](#shields),那么它的护甲类型将被使用,除非弹头可以穿透护盾。" -#: ../../New-or-Enhanced-Logics.md:2225 +#: ../../New-or-Enhanced-Logics.md:2250 msgid "Allow merging AOE damage to buildings into one" msgstr "允许将建筑所受的 AOE 伤害合而为一" -#: ../../New-or-Enhanced-Logics.md:2227 +#: ../../New-or-Enhanced-Logics.md:2252 msgid "" "Warheads are now able to damage building only once by merging the AOE " "damage when setting `MergeBuildingDamage` to true, which default to " @@ -7994,7 +8059,7 @@ msgstr "" "弹头现在可以在 `MergeBuildingDamage` 设为 true 时通过合并 AOE 伤害来仅对建筑造成单次杀伤,其默认同 " "`[CombatDamage] -> MergeBuildingDamage`。" -#: ../../New-or-Enhanced-Logics.md:2230 +#: ../../New-or-Enhanced-Logics.md:2255 msgid "" "[CombatDamage]\n" "MergeBuildingDamage=false ; boolean\n" @@ -8008,19 +8073,19 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "MergeBuildingDamage= ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2239 +#: ../../New-or-Enhanced-Logics.md:2264 msgid "This is different from `CellSpread.MaxAffect`." msgstr "这是与 `CellSpread.MaxAffect` 不同的机制。" -#: ../../New-or-Enhanced-Logics.md:2240 +#: ../../New-or-Enhanced-Logics.md:2265 msgid "Due to the rounding of damage, there may be a slight increase in damage." msgstr "由于原本的部分杀伤被取整消去,开启本功能后所造成的杀伤可能略有增大。" -#: ../../New-or-Enhanced-Logics.md:2243 +#: ../../New-or-Enhanced-Logics.md:2268 msgid "Break Mind Control on impact" msgstr "解除心控" -#: ../../New-or-Enhanced-Logics.md:2245 +#: ../../New-or-Enhanced-Logics.md:2270 msgid "" "![image](_static/images/remove-mc.gif) *Mind control break warhead being " "utilized in [RA2: Reboot](https://www.moddb.com/mods/reboot)*" @@ -8028,13 +8093,13 @@ msgstr "" "![image](_static/images/remove-mc.gif) *[RA2: " "Reboot](https://www.moddb.com/mods/reboot) 中的心控解除弹头*" -#: ../../New-or-Enhanced-Logics.md:2248 +#: ../../New-or-Enhanced-Logics.md:2273 msgid "" "Warheads can now break mind control (doesn't apply to perma-MC-ed " "objects)." msgstr "弹头现在可以解除心灵控制(不适用于永久心控的对象)。" -#: ../../New-or-Enhanced-Logics.md:2251 +#: ../../New-or-Enhanced-Logics.md:2276 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "RemoveMindControl=false ; boolean\n" @@ -8042,11 +8107,11 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "RemoveMindControl=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2256 +#: ../../New-or-Enhanced-Logics.md:2281 msgid "CellSpread enhancement" msgstr "弹头范围增强" -#: ../../New-or-Enhanced-Logics.md:2258 +#: ../../New-or-Enhanced-Logics.md:2283 msgid "" "In vanilla, the damage area of an AOE warhead is spherical. In some case," " e.g. you want to make a warhead superweapon buff all units in an area, " @@ -8057,19 +8122,19 @@ msgstr "" "在原版中,范围伤害的杀伤区域是一个球形。某些例如你希望制作一个给目标区域上 Buff " "的弹头超武的时候空中单位的受益范围总是比地面单位更小。现在你可以使用新语句 `CellSpread.Cylinder` 来解决这一问题。" -#: ../../New-or-Enhanced-Logics.md:2259 +#: ../../New-or-Enhanced-Logics.md:2284 msgid "" "`AffectsAir` allow you to make a warhead only damage the units with " "height more than 208." msgstr "`AffectsAir` 允许你制作一个仅可杀伤 208 高度以上单位的弹头。" -#: ../../New-or-Enhanced-Logics.md:2260 +#: ../../New-or-Enhanced-Logics.md:2285 msgid "" "`AffectsGround` allow you to make a warhead only damage the units with " "height less than 208." msgstr "`AffectsGround` 允许你制作一个仅可杀伤 208 高度以下单位的弹头。" -#: ../../New-or-Enhanced-Logics.md:2263 +#: ../../New-or-Enhanced-Logics.md:2288 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "CellSpread.Cylinder=false ; boolean\n" @@ -8081,7 +8146,7 @@ msgstr "" "AffectsAir=true ; boolean\n" "AffectsGround=true ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2271 +#: ../../New-or-Enhanced-Logics.md:2296 msgid "" "These features do not override the effects of the ares flag " "`DamageAirThreshold`: A warhead with `CellSpread.Cylinder` detonating on " @@ -8092,18 +8157,18 @@ msgstr "" "`DamageAirThreshold=-1`,否则一个在地面引爆的弹头即使拥有 `CellSpread.Cylinder` " "也无法作用于空中单位。" -#: ../../New-or-Enhanced-Logics.md:2272 +#: ../../New-or-Enhanced-Logics.md:2297 msgid "" "These will also affect application of Phobos' Warhead effects where " "relevant. Due to technical constraints Ares' Warhead effects such as EMP " "and Iron Curtain are excluded." msgstr "这些功能同样作用于相关的 Phobos 弹头效果。由于技术限制,这不包括 EMP 和 铁幕等 Ares 弹头效果" -#: ../../New-or-Enhanced-Logics.md:2275 +#: ../../New-or-Enhanced-Logics.md:2300 msgid "Chance-based extra damage or Warhead detonation / 'critical hits'" msgstr "暴击" -#: ../../New-or-Enhanced-Logics.md:2277 +#: ../../New-or-Enhanced-Logics.md:2302 msgid "" "Warheads can now apply additional chance-based damage or Warhead " "detonation ('critical hits') with the ability to customize chance, " @@ -8111,7 +8176,7 @@ msgid "" "critical hit." msgstr "现在弹头可以基于概率额外造成暴击伤害或弹头爆炸,可以自定义暴击的概率、伤害、影响目标、受影响目标生命值阈值和暴击动画。" -#: ../../New-or-Enhanced-Logics.md:2278 +#: ../../New-or-Enhanced-Logics.md:2303 msgid "" "`Crit.Chance` determines chance for a critical hit to occur. By default " "this is checked once when the Warhead is detonated and every target that " @@ -8122,7 +8187,7 @@ msgstr "" "`Crit.Chance` 决定暴击发生的概率。默认情况下这在弹头爆炸时检查一次,每个受影响的目标都可能受到暴击。如果设置了 " "`Crit.ApplyChancePerTarget`,那么每个目标是否成功进行暴击的概率将单独计算。" -#: ../../New-or-Enhanced-Logics.md:2279 +#: ../../New-or-Enhanced-Logics.md:2304 msgid "" "`Crit.ExtraDamage` determines the damage dealt by the critical hit. If " "`Crit.Warhead` is set, the damage is used to detonate the specified " @@ -8132,20 +8197,20 @@ msgstr "" "`Crit.ExtraDamage` 决定暴击造成的额外伤害,如果设置了 " "`Crit.Warhead`,那么伤害将用于在每个受影响的目标上引爆指定的弹头,否则伤害将基于当前弹头的 `Verses` 设置直接造成伤害。" -#: ../../New-or-Enhanced-Logics.md:2280 +#: ../../New-or-Enhanced-Logics.md:2305 msgid "" "`Crit.ExtraDamage.ApplyFirepowerMult` determines whether or not the " "critical hit damage should multiply the TechnoType's firepower " "multipliers." msgstr "`Crit.ExtraDamage.ApplyFirepowerMult` 决定暴击造成的额外伤害是否受益于科技类型所拥有的火力加成。" -#: ../../New-or-Enhanced-Logics.md:2281 +#: ../../New-or-Enhanced-Logics.md:2306 msgid "" "`Crit.Warhead` can be used to set a Warhead to detonate instead of using " "current Warhead." msgstr "`Crit.Warhead` 可用于设置一个替代当前弹头引爆的弹头。" -#: ../../New-or-Enhanced-Logics.md:2282 +#: ../../New-or-Enhanced-Logics.md:2307 msgid "" "`Crit.Warhead.FullDetonation` controls whether or not the Warhead is " "detonated fully on the targets (as part of a dummy weapon) or simply " @@ -8154,30 +8219,30 @@ msgstr "" "`Crit.Warhead.FullDetonation` 控制弹头是否在目标上完全引爆(作为虚拟武器的一部分)或者只能对所在区域造成杀伤并应用 " "Phobos 的弹头效果。" -#: ../../New-or-Enhanced-Logics.md:2283 +#: ../../New-or-Enhanced-Logics.md:2308 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 +#: ../../New-or-Enhanced-Logics.md:2309 msgid "" -"`Crit.AffectsHouses` can be used to customize houses that this Warhead " -"can deal critical hits against." -msgstr "`Crit.AffectsHouses` 可用于自定义此弹头可暴击的目标所属。" +"`Crit.AffectsHouse` can be used to customize houses that this Warhead can" +" deal critical hits against." +msgstr "`Crit.AffectsHouse` 可用于自定义此弹头可暴击的目标所属。" -#: ../../New-or-Enhanced-Logics.md:2285 +#: ../../New-or-Enhanced-Logics.md:2310 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 +#: ../../New-or-Enhanced-Logics.md:2311 msgid "" "`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. " @@ -8190,7 +8255,7 @@ msgstr "" "`Crit.AnimList.PickRandom`(默认为 `AnimList.PickRandom`),则从列表中随机选择一个动画。如果设置了" " `Crit.AnimList.CreateAll`(默认为 `AnimList.CreateAll`),则创建列表中的所有动画。" -#: ../../New-or-Enhanced-Logics.md:2287 +#: ../../New-or-Enhanced-Logics.md:2312 msgid "" "`Crit.AnimOnAffectedTargets`, if set, makes the animation(s) from " "`Crit.AnimList` play on each affected target *in addition* to animation " @@ -8205,7 +8270,7 @@ msgstr "" "独立所以,`Crit.AnimList.PickRandom` 和 `Crit.AnimList.CreateAll` 将不会默认为 " "`AnimList` 对应项的值,需要手动设置。" -#: ../../New-or-Enhanced-Logics.md:2288 +#: ../../New-or-Enhanced-Logics.md:2313 msgid "" "`Crit.ActiveChanceAnims` can be used to set animation to be always " "displayed at the Warhead's detonation coordinates if the current Warhead " @@ -8213,7 +8278,7 @@ msgid "" "random one is selected." msgstr "`Crit.ActiveChanceAnims` 可用于设置当前弹头有几率造成暴击时始终显示在弹头爆炸坐标处的动画。列出多个动画则随机选择其一。" -#: ../../New-or-Enhanced-Logics.md:2289 +#: ../../New-or-Enhanced-Logics.md:2314 msgid "" "`Crit.SuppressWhenIntercepted`, if set, prevents critical hits from " "occuring at all if the warhead was detonated from a [projectile that was " @@ -8222,13 +8287,13 @@ msgstr "" "`Crit.SuppressWhenIntercepted` 如果设置则禁用弹头在被[抛射体拦截](#projectile-" "interception-logic)而引爆时造成暴击。" -#: ../../New-or-Enhanced-Logics.md:2290 +#: ../../New-or-Enhanced-Logics.md:2315 msgid "" "`ImmuneToCrit` can be set on TechnoTypes and ShieldTypes to make them " "immune to critical hits." msgstr "`ImmuneToCrit` 可以设置在科技类型和护盾类型上以使它们免疫暴击。" -#: ../../New-or-Enhanced-Logics.md:2293 +#: ../../New-or-Enhanced-Logics.md:2318 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "Crit.Chance=0.0 ; floating point value, " @@ -8238,13 +8303,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 +8329,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" @@ -8282,7 +8347,7 @@ msgstr "" "[SOMETECHNO] ; TechnoType\n" "ImmuneToCrit=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2317 +#: ../../New-or-Enhanced-Logics.md:2342 msgid "" "If you set `Crit.Warhead` to the same Warhead it is defined on, or create" " a chain of Warheads with it that loops back to the first one there is a " @@ -8290,11 +8355,11 @@ msgid "" "afterwards." msgstr "如果你将 `Crit.Warhead` 设为定义暴击的弹头或者创建一个最终回到第一个弹头的循环那么游戏可能会陷入循环并随后卡死或崩溃。" -#: ../../New-or-Enhanced-Logics.md:2320 +#: ../../New-or-Enhanced-Logics.md:2345 msgid "Convert TechnoType on impact" msgstr "单位转换弹头" -#: ../../New-or-Enhanced-Logics.md:2322 +#: ../../New-or-Enhanced-Logics.md:2347 msgid "" "![image](_static/images/convertwh.gif) *Vehicle version of Genetic " "Converter in " @@ -8304,59 +8369,59 @@ msgstr "" "*[NanodaSupercalifragilisticexpialidocious](https://www.bilibili.com/opus/896077937747427433)" " 中的载具版基因突变*" -#: ../../New-or-Enhanced-Logics.md:2331 +#: ../../New-or-Enhanced-Logics.md:2356 msgid "" "In example, this warhead would convert all affected owned and friendly " "`SOLDIERA` and `SOLDIERB` to `NEWSOLDIER`:" msgstr "例如这个弹头可以将所有被影响的己方和友方 `SOLDIERA` 和 `SOLDIERB` 转换为 `NEWSOLDIER`:" -#: ../../New-or-Enhanced-Logics.md:2332 +#: ../../New-or-Enhanced-Logics.md:2357 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 +#: ../../New-or-Enhanced-Logics.md:2365 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 +#: ../../New-or-Enhanced-Logics.md:2385 msgid "Custom Mind Control Animation" msgstr "自定义心灵控制动画" -#: ../../New-or-Enhanced-Logics.md:2361 +#: ../../New-or-Enhanced-Logics.md:2386 msgid "Allows Warheads to play custom `MindControl.Anim`." msgstr "允许弹头播放自定义的 `MindControl.Anim`。" -#: ../../New-or-Enhanced-Logics.md:2364 +#: ../../New-or-Enhanced-Logics.md:2389 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "MindControl.Anim= ; Animation, defaults to " @@ -8366,15 +8431,15 @@ msgstr "" "MindControl.Anim= ; Animation, defaults to " "[CombatDamage] -> ControlledAnimationType\n" -#: ../../New-or-Enhanced-Logics.md:2369 +#: ../../New-or-Enhanced-Logics.md:2394 msgid "Custom 'SplashList' on Warheads" msgstr "自定义弹头水花" -#: ../../New-or-Enhanced-Logics.md:2371 +#: ../../New-or-Enhanced-Logics.md:2396 msgid "![image](_static/images/splashlist-01.gif)" msgstr "![image](_static/images/splashlist-01.gif)" -#: ../../New-or-Enhanced-Logics.md:2372 +#: ../../New-or-Enhanced-Logics.md:2397 msgid "" "Allows Warheads to play custom water splash animations. See vanilla's " "[Conventional](https://www.modenc.renegadeprojects.com/Conventional) " @@ -8385,7 +8450,7 @@ msgstr "" "[Conventional](https://www.modenc.renegadeprojects.com/Conventional) " "系统。`SplashList.PickRandom` 可设置为 `true` 以从列表中随机选择一个动画。" -#: ../../New-or-Enhanced-Logics.md:2375 +#: ../../New-or-Enhanced-Logics.md:2400 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "SplashList= ; List of AnimationTypes, default to " @@ -8397,17 +8462,17 @@ msgstr "" "[CombatDamage] -> SplashList\n" "SplashList.PickRandom=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2381 +#: ../../New-or-Enhanced-Logics.md:2406 msgid "Damage multipliers" msgstr "伤害修正比" -#: ../../New-or-Enhanced-Logics.md:2383 +#: ../../New-or-Enhanced-Logics.md:2408 msgid "" "Warheads are now able to define the extra damage multiplier for owner " "house, ally houses and enemy houses." msgstr "现在弹头可以定义对己方所属、友方所属、敌方所属的额外伤害倍率。" -#: ../../New-or-Enhanced-Logics.md:2384 +#: ../../New-or-Enhanced-Logics.md:2409 msgid "" "`DamageOwnerMultiplier.NotAffectsEnemies` and " "`DamageAlliesMultiplier.NotAffectsEnemies` is used as the default value " @@ -8417,7 +8482,7 @@ msgstr "" "`DamageAlliesMultiplier.NotAffectsEnemies` 用于设定弹头 `AffectsEnemies=false` " "时的默认值。" -#: ../../New-or-Enhanced-Logics.md:2385 +#: ../../New-or-Enhanced-Logics.md:2410 msgid "" "`DamageOwnerMultiplier.Berzerk` , `DamageAlliesMultiplier.Berzerk` and " "`DamageEnemiesMultiplier.Berzerk` is used when the techno is in berzerk." @@ -8425,7 +8490,7 @@ msgstr "" "`DamageOwnerMultiplier.Berzerk`、`DamageAlliesMultiplier.Berzerk` 和 " "`DamageEnemiesMultiplier.Berzerk` 在单位处于狂暴状态时被使用。" -#: ../../New-or-Enhanced-Logics.md:2386 +#: ../../New-or-Enhanced-Logics.md:2411 msgid "" "An extra damage multiplier based on the firer or target's health " "percentage will be added to the total multiplier. To be elaborate: the " @@ -8437,13 +8502,13 @@ msgstr "" "DamageSourceHealthMultiplier)`,再增加 `(目标剩余血量比 * " "DamageTargetHealthMultiplier)`。" -#: ../../New-or-Enhanced-Logics.md:2387 +#: ../../New-or-Enhanced-Logics.md:2412 msgid "" "These multipliers will not affect damage with ignore defenses like " "`Suicide`.etc ." msgstr "这些修正不会影响无视防御的伤害,例如 `Suicide` 等。" -#: ../../New-or-Enhanced-Logics.md:2390 +#: ../../New-or-Enhanced-Logics.md:2415 msgid "" "[CombatDamage]\n" "DamageOwnerMultiplier=1.0 ; floating " @@ -8529,39 +8594,39 @@ msgstr "" "DamageTargetHealthMultiplier=0.0 ; floating " "point value\n" -#: ../../New-or-Enhanced-Logics.md:2413 +#: ../../New-or-Enhanced-Logics.md:2438 msgid "" "`DamageAlliesMultiplier` won't affect your own units like `AffectsAllies`" " did." msgstr "`DamageAlliesMultiplier` 不会像旧有的 `AffectsAllies` 那样作用于友方单位的同时还带上己方单位。" -#: ../../New-or-Enhanced-Logics.md:2416 +#: ../../New-or-Enhanced-Logics.md:2441 msgid "Damage technos underground" msgstr "杀伤地下单位" -#: ../../New-or-Enhanced-Logics.md:2418 +#: ../../New-or-Enhanced-Logics.md:2443 msgid "Now you can make the warhead damage technos underground!" msgstr "现在你可以让弹头对处于地下的单位造成伤害!" -#: ../../New-or-Enhanced-Logics.md:2419 +#: ../../New-or-Enhanced-Logics.md:2444 msgid "" "To allow weapons to target underground technos, you need [AU](#attack-" "technos-underground)." msgstr "若需允许武器瞄准地下单位,你需要在抛射体上将 [AU](#attack-technos-underground) 设为 `yes`。" -#: ../../New-or-Enhanced-Logics.md:2420 +#: ../../New-or-Enhanced-Logics.md:2445 msgid "" "Notice that if the projectile detonates underground, its animation effect" " may look strange." msgstr "注意如果弹头在地下引爆其动画效果可能显示异常。" -#: ../../New-or-Enhanced-Logics.md:2421 +#: ../../New-or-Enhanced-Logics.md:2446 msgid "" "You can use `[WarheadType] -> PlayAnimUnderground=false` to prevent the " "warhead animation from playing when the projectile detonates underground." msgstr "你可以使用 `[WarheadType] -> PlayAnimUnderground=false` 来阻止弹头在地下引爆时播放动画。" -#: ../../New-or-Enhanced-Logics.md:2422 +#: ../../New-or-Enhanced-Logics.md:2447 msgid "" "You can also use `[WarheadType] -> PlayAnimAboveSurface=true` to make the" " warhead animation play on the ground directly above when the projectile " @@ -8570,7 +8635,7 @@ msgstr "" "你也可以使用 `[WarheadType] -> PlayAnimAboveSurface=true` " "来使弹头在地下引爆时在其正上方地表处播放弹头动画。" -#: ../../New-or-Enhanced-Logics.md:2425 +#: ../../New-or-Enhanced-Logics.md:2450 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "AffectsUnderground=false ; boolean\n" @@ -8582,11 +8647,11 @@ msgstr "" "PlayAnimUnderground=true ; boolean\n" "PlayAnimAboveSurface=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2432 +#: ../../New-or-Enhanced-Logics.md:2457 msgid "Detonate Warhead on all objects on map" msgstr "全图弹头" -#: ../../New-or-Enhanced-Logics.md:2434 +#: ../../New-or-Enhanced-Logics.md:2459 msgid "" "Setting `DetonateOnAllMapObjects` to true allows a Warhead that is " "detonated by a projectile (for an example, this excludes things like " @@ -8604,7 +8669,7 @@ msgstr "" "`AirburstWeapon/ShrapnelWeapon`,无论其实际目标如何,都可以对当前地图上所有存在且没死的对象进行引爆,并可以对目标进行筛选。注意,这是在弹头引爆之前的瞬间完成的,因此" " `PreImpactAnim`(Ares 功能)可以显示。" -#: ../../New-or-Enhanced-Logics.md:2435 +#: ../../New-or-Enhanced-Logics.md:2460 msgid "" "`DetonateOnAllMapObjects.Full` customizes whether or not the Warhead is " "detonated fully on the targets (as part of a dummy weapon) or simply " @@ -8613,50 +8678,50 @@ msgstr "" "`DetonateOnAllMapObjects.Full` " "自定义弹头是否在目标上完全引爆(作为虚拟武器的一部分)或者只能对所在区域造成杀伤并应用 Phobos 的弹头效果。" -#: ../../New-or-Enhanced-Logics.md:2436 +#: ../../New-or-Enhanced-Logics.md:2461 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 +#: ../../New-or-Enhanced-Logics.md:2462 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 +#: ../../New-or-Enhanced-Logics.md:2463 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 +#: ../../New-or-Enhanced-Logics.md:2464 msgid "" "`DetonateOnAllMapObjects.IgnoreTypes` can be used to list specific " "TechnoTypes to be never considered as valid targets." msgstr "`DetonateOnAllMapObjects.IgnoreTypes` 可用于列出特定的科技类型不得作为目标。" -#: ../../New-or-Enhanced-Logics.md:2440 +#: ../../New-or-Enhanced-Logics.md:2465 msgid "" "`DetonateOnAllMapObjects.RequireVerses`, if set to true, only considers " "targets whose armor type the warhead has non-zero `Verses` value against " @@ -8668,14 +8733,14 @@ msgstr "" "`Verses` 值的目标为有效。对于具有激活状态护盾的目标除非弹头拥有 " "`Shield.Penetrate=true`,否则使用护盾的护甲类型。在所有上述筛选之后进行检查。" -#: ../../New-or-Enhanced-Logics.md:2443 +#: ../../New-or-Enhanced-Logics.md:2468 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,36 +8749,36 @@ 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" "DetonateOnAllMapObjects.RequireVerses=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2455 +#: ../../New-or-Enhanced-Logics.md:2480 msgid "" "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." +"(`AffectsTarget/House/Types` etc.) is advised." msgstr "" "虽然此功能比巨大的 `CellSpread` 值性能上好得多但它仍然可能减慢游戏速度。特别是与动画、AlphaImage 等共同使用时。建议 " "modder 谨慎使用并通过筛选语句进行限制。" -#: ../../New-or-Enhanced-Logics.md:2458 +#: ../../New-or-Enhanced-Logics.md:2483 msgid "Fire weapon when Warhead kills something" msgstr "击杀武器" -#: ../../New-or-Enhanced-Logics.md:2460 +#: ../../New-or-Enhanced-Logics.md:2485 msgid "" "`KillWeapon` will be fired at the target TechnoType's location once it's " "killed by this Warhead." msgstr "被此弹头击杀时目标单位会爆出 `KillWeapon` 指定的武器。" -#: ../../New-or-Enhanced-Logics.md:2461 +#: ../../New-or-Enhanced-Logics.md:2486 msgid "" "`KillWeapon.OnFirer` will be fired at the attacker's location once the " "target TechnoType is killed by this Warhead. If the source of this " @@ -8721,24 +8786,25 @@ msgid "" "fired." msgstr "如果可以追溯到弹头来自哪个单位,那么 `KillWeapon.OnFirer` 可以让武器发射在开火者的位置。如果追溯不到来源那么将不会发射。" -#: ../../New-or-Enhanced-Logics.md:2462 +#: ../../New-or-Enhanced-Logics.md:2487 msgid "" -"`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.AffectsTarget` / `KillWeapon.OnFirer.AffectsTarget` 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.AffectsTarget`/`KillWeapon.OnFirer.AffectsTarget` " "分别用于筛选哪些所属方和哪些类型的目标可以触发 `KillWeapon` 与 `KillWeapon.OnFirer`。" -#: ../../New-or-Enhanced-Logics.md:2463 +#: ../../New-or-Enhanced-Logics.md:2488 msgid "" "If the source of this Warhead is not another TechnoType, `KillWeapon` " "will be fired regardless of the target's house or type." msgstr "如果这个弹头的来源不是另一个单位,发射 `KillWeapon` 将不受目标所属方或类型的限制。" -#: ../../New-or-Enhanced-Logics.md:2464 +#: ../../New-or-Enhanced-Logics.md:2489 msgid "" "If a TechnoType has `SuppressKillWeapons` set to true, it will not " "trigger `KillWeapon` or `KillWeapon.OnFirer` upon being killed. " @@ -8749,18 +8815,18 @@ msgstr "" "`KillWeapon.OnFirer`。`SuppressKillWeapons.Types` " "可用于列出受影响的武器类型,如果没有列出,则所有武器类型都受影响。" -#: ../../New-or-Enhanced-Logics.md:2467 +#: ../../New-or-Enhanced-Logics.md:2492 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 " +"KillWeapon.AffectsTarget=all ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" -"KillWeapon.OnFirer.Affects=all ; List of Affected Target " +"KillWeapon.OnFirer.AffectsTarget=all ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" "\n" "[SOMETECHNO] ; TechnoType\n" @@ -8770,24 +8836,24 @@ 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 " +"KillWeapon.AffectsTarget=all ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" -"KillWeapon.OnFirer.Affects=all ; List of Affected Target " +"KillWeapon.OnFirer.AffectsTarget=all ; List of Affected Target " "Enumeration (none|aircraft|buildings|infantry|units|all)\n" "\n" "[SOMETECHNO] ; TechnoType\n" "SuppressKillWeapons=false ; boolean\n" "SuppressKillWeapons.Types= ; List of WeaponTypes\n" -#: ../../New-or-Enhanced-Logics.md:2481 +#: ../../New-or-Enhanced-Logics.md:2506 msgid "Generate credits on impact" msgstr "撒币枪(弹)" -#: ../../New-or-Enhanced-Logics.md:2483 +#: ../../New-or-Enhanced-Logics.md:2508 msgid "" "![image](_static/images/hackerfinallyworks-01.gif) *`TransactMoney` used " "in [Rise of the East](https://www.moddb.com/mods/riseoftheeast)*" @@ -8795,18 +8861,18 @@ msgstr "" "![image](_static/images/hackerfinallyworks-01.gif) " "*[东方崛起](https://www.moddb.com/mods/riseoftheeast) 中的 `TransactMoney` 应用*" -#: ../../New-or-Enhanced-Logics.md:2486 +#: ../../New-or-Enhanced-Logics.md:2511 msgid "Warheads can now give credits to its owner at impact." msgstr "现在弹头可以在爆炸时向其所有者撒币。" -#: ../../New-or-Enhanced-Logics.md:2487 +#: ../../New-or-Enhanced-Logics.md:2512 msgid "" "`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." msgstr "`TransactMoney.Display` 可以设置是否显示给予或扣除的资金金额。给予时数字显示为绿色,扣除时显示为红色,并在出现后向上飘起。" -#: ../../New-or-Enhanced-Logics.md:2488 +#: ../../New-or-Enhanced-Logics.md:2513 msgid "" "`TransactMoney.Display.AtFirer` if set, makes the credits display appear " "on firer instead of target. If set and firer is not known, it will " @@ -8815,19 +8881,19 @@ msgstr "" "`TransactMoney.Display.AtFirer` " "如果设置则使资金出现在开火者处而非目标处。如果设置但开火者未知则无论如何都显示在目标处。" -#: ../../New-or-Enhanced-Logics.md:2489 +#: ../../New-or-Enhanced-Logics.md:2514 msgid "" "`TransactMoney.Display.Houses` determines which houses can see the " "credits display." msgstr "`TransactMoney.Display.Houses` 决定哪些所属方可以看到资金显示。" -#: ../../New-or-Enhanced-Logics.md:2490 +#: ../../New-or-Enhanced-Logics.md:2515 msgid "" "`TransactMoney.Display.Offset` is additional pixel offset for the center " "of the credits display, by default `0,0` at target's/firer's center." msgstr "`TransactMoney.Display.Offset` 是资金显示中心的额外像素偏移量,默认为 `0,0` 即目标/开火者的中心。" -#: ../../New-or-Enhanced-Logics.md:2493 +#: ../../New-or-Enhanced-Logics.md:2518 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "TransactMoney=0 ; integer - credits added or " @@ -8847,11 +8913,11 @@ msgstr "" "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "TransactMoney.Display.Offset=0,0 ; X,Y, pixels relative to default\n" -#: ../../New-or-Enhanced-Logics.md:2502 +#: ../../New-or-Enhanced-Logics.md:2527 msgid "Iron Curtain & Force Shield damage penetration" msgstr "铁幕与力场护盾的伤害穿透" -#: ../../New-or-Enhanced-Logics.md:2504 +#: ../../New-or-Enhanced-Logics.md:2529 msgid "" "It is now possible to have Warhead be able to deal damage to Iron " "Curtained and/or Force Shielded objects. `PenetratesForceShield` defaults" @@ -8860,7 +8926,7 @@ msgstr "" "现在可以让弹头对被铁幕和力场护盾保护的对象造成伤害。`PenetratesForceShield` 默认为 " "`PenetratesIronCurtain` 的值。" -#: ../../New-or-Enhanced-Logics.md:2505 +#: ../../New-or-Enhanced-Logics.md:2530 msgid "" "Note that this does not affect any Warhead effects other than those " "adjacent to damage (e.g `Psychedelic`) and things like debris generation " @@ -8870,7 +8936,7 @@ msgstr "" "注意这不会影响关联伤害类效果(例如 `Psychedelic`)之外的弹头功能以及类似碎片生成和 `AirburstWeapon` " "的引爆这类通常在攻击被抵消时**本就**不发生的效果。" -#: ../../New-or-Enhanced-Logics.md:2508 +#: ../../New-or-Enhanced-Logics.md:2533 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "PenetratesIronCurtain=false ; boolean\n" @@ -8880,29 +8946,29 @@ msgstr "" "PenetratesIronCurtain=false ; boolean\n" "PenetratesForceShield= ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2514 +#: ../../New-or-Enhanced-Logics.md:2539 msgid "Launch superweapons on impact" msgstr "发射超武" -#: ../../New-or-Enhanced-Logics.md:2516 +#: ../../New-or-Enhanced-Logics.md:2541 msgid "Superweapons can now be launched when a warhead is detonated." msgstr "现在弹头可以在引爆时发射超级武器" -#: ../../New-or-Enhanced-Logics.md:2517 +#: ../../New-or-Enhanced-Logics.md:2542 msgid "" "`LaunchSW` specifies the superweapons to launch when the warhead is " "detonated. If superweapon has negative `Money.Amount`, the firing house " "must have enough credits in order for it to be fired." msgstr "`LaunchSW` 指定当弹头引爆时要发射的超级武器。如果超级武器的 `Money.Amount` 为负则发射的所属方还需要拥有足够的资金。" -#: ../../New-or-Enhanced-Logics.md:2518 +#: ../../New-or-Enhanced-Logics.md:2543 msgid "" "`LaunchSW.RealLaunch` controls whether the owner who fired the warhead " "must own all listed superweapons. Otherwise they will be launched out of " "nowhere." msgstr "`LaunchSW.RealLaunch` 控制弹头的所有者是否需要拥有所有列出的超级武器。否则它们将无从发射。" -#: ../../New-or-Enhanced-Logics.md:2519 +#: ../../New-or-Enhanced-Logics.md:2544 msgid "" "`LaunchSW.IgnoreInhibitors` ignores `SW.Inhibitors`/`SW.AnyInhibitor` of " "each superweapon, otherwise only non-inhibited superweapons are launched." @@ -8910,7 +8976,7 @@ msgstr "" "`LaunchSW.IgnoreInhibitors` 设置是否忽略每个超级武器的 " "`SW.Inhibitors`/`SW.AnyInhibitor`,否则只有未被抑制的超级武器会被发射。" -#: ../../New-or-Enhanced-Logics.md:2520 +#: ../../New-or-Enhanced-Logics.md:2545 msgid "" "`LaunchSW.IgnoreDesignators` ignores `SW.Designators` / " "`SW.AnyDesignator` respectively." @@ -8918,7 +8984,7 @@ msgstr "" "`LaunchSW.IgnoreDesignators` 设置是否忽略每个超级武器的 " "`SW.Designators`/`SW.AnyDesignator`。" -#: ../../New-or-Enhanced-Logics.md:2521 +#: ../../New-or-Enhanced-Logics.md:2546 msgid "" "`LaunchSW.DisplayMoney` can be set to display the amount of credits given" " or deducted by the launched superweapon by `Money.Amount`. The number is" @@ -8928,31 +8994,31 @@ msgstr "" "`LaunchSW.DisplayMoney` 可以设置是否显示所发射超武 `Money.Amount` " "而给予或扣除的资金金额。给予时数字显示为绿色,扣除时显示为红色,并在出现后向上飘起。" -#: ../../New-or-Enhanced-Logics.md:2522 +#: ../../New-or-Enhanced-Logics.md:2547 msgid "" "`LaunchSW.DisplayMoney.Houses` determines which houses can see the " "credits display." msgstr "`LaunchSW.DisplayMoney.Houses` 决定哪些所属方可以看到资金显示。" -#: ../../New-or-Enhanced-Logics.md:2523 +#: ../../New-or-Enhanced-Logics.md:2548 msgid "" "`LaunchSW.DisplayMoney.Offset` is additional pixel offset for the center " "of the credits display, by default `0,0` at superweapon's target cell." msgstr "`LaunchSW.DisplayMoney.Offset` 是资金显示中心的额外像素偏移量,默认为 `0,0` 即超级武器目标单元格处。" -#: ../../New-or-Enhanced-Logics.md:2526 +#: ../../New-or-Enhanced-Logics.md:2551 msgid "" "For animation warheads/weapons to take effect, `Damage.DealtByInvoker` " "must be set." msgstr "为使动画弹头/武器上的此逻辑生效必须设置 `Damage.DealtByInvoker`。" -#: ../../New-or-Enhanced-Logics.md:2527 +#: ../../New-or-Enhanced-Logics.md:2552 msgid "" "The superweapons are launched on the *cell* where the warhead is " "detonated, instead of being click-fired." msgstr "超级武器在弹头引爆的 **单元格** 上发射而不是通过点击发射。" -#: ../../New-or-Enhanced-Logics.md:2531 +#: ../../New-or-Enhanced-Logics.md:2556 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "LaunchSW= ; List of SuperWeaponTypes\n" @@ -8974,17 +9040,17 @@ msgstr "" "(none|owner/self|allies/ally|team|enemies/enemy|all)\n" "LaunchSW.DisplayMoney.Offset=0,0 ; X,Y, pixels relative to default\n" -#: ../../New-or-Enhanced-Logics.md:2543 +#: ../../New-or-Enhanced-Logics.md:2568 msgid "" "Due to the nature of some superweapon types, not all superweapons are " "suitable for launch. **Please use with caution!**" msgstr "由于某些超级武器类型的特性并非所有超级武器都适合发射。**请慎用!**" -#: ../../New-or-Enhanced-Logics.md:2546 +#: ../../New-or-Enhanced-Logics.md:2571 msgid "Parasite removal" msgstr "移除寄生" -#: ../../New-or-Enhanced-Logics.md:2548 +#: ../../New-or-Enhanced-Logics.md:2573 msgid "" "By default if unit takes negative damage from a Warhead (before `Verses` " "are calculated), any parasites infecting it are removed and deleted. This" @@ -8994,7 +9060,7 @@ msgstr "" "默认情况下如果单位从弹头收到负伤害(在 `Verses` " "前计算)任何寄生单位都会被移除和删除。现在可以自定义此行为以禁用负伤害的移除效果或为任意弹头启用它。" -#: ../../New-or-Enhanced-Logics.md:2551 +#: ../../New-or-Enhanced-Logics.md:2576 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "RemoveParasite= ; boolean\n" @@ -9002,18 +9068,18 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "RemoveParasite= ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2556 +#: ../../New-or-Enhanced-Logics.md:2581 msgid "Remove disguise on impact" -msgstr "移除伪装" +msgstr "移除伪装弹头" -#: ../../New-or-Enhanced-Logics.md:2558 +#: ../../New-or-Enhanced-Logics.md:2583 msgid "" "Warheads can now remove disguise from disguised spies or mirage tanks. " "This will work even if the disguised was acquired by default through " "`PermaDisguise`." msgstr "弹头现在可以移除间谍或幻影坦克的伪装。即使伪装是通过 `PermaDisguise` 默认获得来的。" -#: ../../New-or-Enhanced-Logics.md:2561 +#: ../../New-or-Enhanced-Logics.md:2586 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "RemoveDisguise=false ; boolean\n" @@ -9021,19 +9087,19 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "RemoveDisguise=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2566 +#: ../../New-or-Enhanced-Logics.md:2591 msgid "Reveal map for owner on impact" msgstr "揭示弹" -#: ../../New-or-Enhanced-Logics.md:2568 +#: ../../New-or-Enhanced-Logics.md:2593 msgid "Warheads can now reveal an area or the entire map on impact." msgstr "现在弹头可以在引爆时揭示部分区域或整个地图的黑幕。" -#: ../../New-or-Enhanced-Logics.md:2569 +#: ../../New-or-Enhanced-Logics.md:2594 msgid "Reveal only applies to the owner of the warhead." msgstr "仅适用于弹头所有者。" -#: ../../New-or-Enhanced-Logics.md:2572 +#: ../../New-or-Enhanced-Logics.md:2597 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "Reveal=0 ; integer - cell radius, negative values mean reveal the " @@ -9043,17 +9109,17 @@ msgstr "" "Reveal=0 ; integer - cell radius, negative values mean reveal the " "entire map\n" -#: ../../New-or-Enhanced-Logics.md:2577 +#: ../../New-or-Enhanced-Logics.md:2602 msgid "Reverse engineer warhead" msgstr "逆向工程弹头" -#: ../../New-or-Enhanced-Logics.md:2579 +#: ../../New-or-Enhanced-Logics.md:2604 msgid "" "Warheads can now uses the reverse-engineering logic *(Ares feature)* , " "the technology of the victim will be reversed." msgstr "现在弹头可以使用逆向工程逻辑(*Ares 功能*),被命中的单位将会被逆向工程。" -#: ../../New-or-Enhanced-Logics.md:2582 +#: ../../New-or-Enhanced-Logics.md:2607 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "ReverseEngineer=false ; boolean\n" @@ -9061,33 +9127,33 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "ReverseEngineer=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2588 +#: ../../New-or-Enhanced-Logics.md:2613 msgid "This feature requires Ares 3.0 or higher to function!" msgstr "此功能需要 3.0 及以上版本的 Ares 才能运作!" -#: ../../New-or-Enhanced-Logics.md:2591 +#: ../../New-or-Enhanced-Logics.md:2616 msgid "Sell or undeploy building on impact" msgstr "将建筑出售或反部署" -#: ../../New-or-Enhanced-Logics.md:2593 +#: ../../New-or-Enhanced-Logics.md:2618 msgid "" "Warheads with `BuildingSell` can now sell buildings with build up image. " "It has a higher priority than `BuildingUndeploy`." msgstr "现在拥有 `BuildingSell` 的弹头可以出售拥有拔起动画的建筑。它的优先级高于 `BuildingUndeploy`。" -#: ../../New-or-Enhanced-Logics.md:2594 +#: ../../New-or-Enhanced-Logics.md:2619 msgid "" "`BuildingSell.IgnoreUnsellable` controls whether to ignore all possible " "situations where sales may be disabled except for build up image." msgstr "`BuildingSell.IgnoreUnsellable` 控制是否忽略除了缺失拔起动画之外所有可能禁止建筑出售的情况。" -#: ../../New-or-Enhanced-Logics.md:2595 +#: ../../New-or-Enhanced-Logics.md:2620 msgid "" "Warheads with `BuildingUndeploy` can now undeploy buildings with " "`UndeploysInto`." msgstr "现在拥有 `BuildingUndeploy` 的弹头可以令目标建筑反部署为 `UndeploysInto` 的对象。" -#: ../../New-or-Enhanced-Logics.md:2596 +#: ../../New-or-Enhanced-Logics.md:2621 msgid "" "`BuildingUndeploy.Leave` controls whether need to let them move to low " "threat locations nearby. The threat degree here is calculated using the " @@ -9097,7 +9163,7 @@ msgstr "" "`BuildingUndeploy.Leave` " "控制是否需要让它们移动到附近较低威胁的位置。这里的威胁程度使用科技类型的价格计算。如果附近的科技类型没有主武器或属于友方所属,那么不被计入。" -#: ../../New-or-Enhanced-Logics.md:2599 +#: ../../New-or-Enhanced-Logics.md:2624 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "BuildingSell=false ; boolean\n" @@ -9111,19 +9177,19 @@ msgstr "" "BuildingUndeploy=false ; boolean\n" "BuildingUndeploy.Leave=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2607 +#: ../../New-or-Enhanced-Logics.md:2632 msgid "Shroud map for enemies on impact" msgstr "黑幕弹" -#: ../../New-or-Enhanced-Logics.md:2609 +#: ../../New-or-Enhanced-Logics.md:2634 msgid "Warheads can now shroud an area or the entire map on impact." msgstr "现在弹头可以在引爆时填充部分区域或整个地图的黑幕" -#: ../../New-or-Enhanced-Logics.md:2610 +#: ../../New-or-Enhanced-Logics.md:2635 msgid "Shroud only applies to enemies of the warhead owner." msgstr "仅适用于敌对所属方。" -#: ../../New-or-Enhanced-Logics.md:2613 +#: ../../New-or-Enhanced-Logics.md:2638 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "CreateGap=0 ; integer - cell radius, negative values mean shroud the " @@ -9133,11 +9199,11 @@ msgstr "" "CreateGap=0 ; integer - cell radius, negative values mean shroud the " "entire map\n" -#: ../../New-or-Enhanced-Logics.md:2618 +#: ../../New-or-Enhanced-Logics.md:2643 msgid "Spawn powerup crate" msgstr "生成工具箱" -#: ../../New-or-Enhanced-Logics.md:2620 +#: ../../New-or-Enhanced-Logics.md:2645 msgid "" "Warheads can now spawn powerup crates of specified type(s) on their " "impact cells (if free, or nearby cells if occupied something other than a" @@ -9146,13 +9212,13 @@ msgstr "" "现在弹头可以在其引爆的单元格上创建指定类型的升级工具箱(如果空置,若被非工具箱的对象占据则生成到附近的单元格)类似于地图触发动作 `108 " "创建工具箱...`。" -#: ../../New-or-Enhanced-Logics.md:2621 +#: ../../New-or-Enhanced-Logics.md:2646 msgid "" "`SpawnsCrateN` where N is a number starting from 0, parsed until no key " "is found can be used to define the type of crate spawned." msgstr "`SpawnsCrateN` 中的 N 是从 0 开始的数字,游戏会解析到最后一个为止。用于定义每个生成的升级工具箱类型。" -#: ../../New-or-Enhanced-Logics.md:2622 +#: ../../New-or-Enhanced-Logics.md:2647 msgid "" "`SpawnsCrateN.Weight` is a number that determines relative weighting of " "spawning corresponding crate type vs. other listed ones (0 is no chance, " @@ -9161,13 +9227,13 @@ msgstr "" "`SpawnsCrateN.Weight` 是一个用于确定生成对应升级工具箱类型与其他列出的类型相比的相对权重(0 " "表示没门,越高代表概率越高)如果未定义则默认为 1。" -#: ../../New-or-Enhanced-Logics.md:2623 +#: ../../New-or-Enhanced-Logics.md:2648 msgid "" "`SpawnsCrate.Type/Weight` is an alias for `SpawnsCrate0.Type/Weight` if " "latter is not set." msgstr "如果未设置 `SpawnsCrate0.Type/Weight` 则 `SpawnsCrate.Type/Weight` 是其别名。" -#: ../../New-or-Enhanced-Logics.md:2626 +#: ../../New-or-Enhanced-Logics.md:2651 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "SpawnsCrate(N).Type= ; Powerup crate type enum " @@ -9181,18 +9247,132 @@ msgstr "" "\n" "SpawnsCrate(N).Weight=1 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:2632 +#: ../../New-or-Enhanced-Logics.md:2657 +msgid "Toggle per-target warhead effects apply timing" +msgstr "设置按目标生效的弹头效果应用时机" + +#: ../../New-or-Enhanced-Logics.md:2659 +msgid "" +"Now you can set the following flag to `false` to apply the **Phobos** " +"warhead effects that take effect on each target when taking damage, " +"rather than when the projectiles detonate." +msgstr "现在你可以通过将下列语句设为 `false` 来使 **Phobos** 弹头效果在每个目标受伤时而不只是在抛射体引爆时生效。" + +#: ../../New-or-Enhanced-Logics.md:2660 +msgid "" +"This will allow such effects to be applied through damage without " +"projectiles, including but not limited to damage from particles, vanilla " +"radiation, and Ares' `GenericWarhead` superweapon." +msgstr "这将允许此类效果通过包括但不限于来自粒子、原版辐射以及 Ares 的 `Type=GenericWarhead` 类超武造成的无抛射体杀伤效果生效。" + +#: ../../New-or-Enhanced-Logics.md:2661 +msgid "" +"This will also cause all effects that can completely prevent damage to " +"also prevent these warhead effects, including but not limited to " +"`DamageSelf`, `DamageAirThreshold`, `AffectsAllies`, `AffectsAir`." +msgstr "" +"这也将导致这些弹头效果同样会被包括但不限于 " +"`DamageSelf`、`DamageAirThreshold`、`AffectsAllies`、`AffectsAir` 的杀伤阻断效果阻断。" + +#: ../../New-or-Enhanced-Logics.md:2662 +msgid "" +"If you use a warhead with `CellSpread` to damage a building multiple " +"times, then these effects will be applied multiple times. If you don't " +"want this to happen, use [`MergeBuildingDamage`](#allow-merging-aoe-" +"damage-to-buildings-into-one)." +msgstr "" +"如果你使用带有 `CellSpread` 的弹头对一个建筑造成多次杀伤,那么这些效果将被多次应用。若不希望如此则可使用 " +"[`MergeBuildingDamage`](#allow-merging-aoe-damage-to-buildings-into-one) " +"来避免。" + +#: ../../New-or-Enhanced-Logics.md:2663 +msgid "The affected effects include:" +msgstr "适用的效果包括:" + +#: ../../New-or-Enhanced-Logics.md:2664 +msgid "[Remove mind-control](#break-mind-control-on-impact)" +msgstr "[解除心控](#break-mind-control-on-impact)" + +#: ../../New-or-Enhanced-Logics.md:2665 +msgid "[Type conversion](#convert-technotype-on-impact)" +msgstr "[单位转换弹头](#convert-technotype-on-impact)" + +#: ../../New-or-Enhanced-Logics.md:2666 +msgid "" +"[`BuildingSell` & `BuildingUndeploy`](#sell-or-undeploy-building-on-" +"impact)" +msgstr "[将建筑出售或反部署](#sell-or-undeploy-building-on-impact)" + +#: ../../New-or-Enhanced-Logics.md:2667 +msgid "[`RemoveDisguise`](#remove-disguise-on-impact)" +msgstr "[移除伪装弹头](#remove-disguise-on-impact)" + +#: ../../New-or-Enhanced-Logics.md:2668 +msgid "[`ReverseEngineer`](#reverse-engineer-warhead)" +msgstr "[逆向工程弹头](#reverse-engineer-warhead)" + +#: ../../New-or-Enhanced-Logics.md:2669 +msgid "[Modify shield](#shields)" +msgstr "[护盾修改](#shields)" + +#: ../../New-or-Enhanced-Logics.md:2670 +msgid "[Modify attach-effects](#attached-effects)" +msgstr "[AE 修改](#attached-effects)" + +#: ../../New-or-Enhanced-Logics.md:2671 +msgid "" +"[Critical hits](#chance-based-extra-damage-or-warhead-detonation" +"--critical-hits)" +msgstr "[暴击](#chance-based-extra-damage-or-warhead-detonation--critical-hits)" + +#: ../../New-or-Enhanced-Logics.md:2672 +msgid "" +"Due to technical reasons, `Crit.SuppressWhenIntercepted=false` and " +"`Crit.ApplyChancePerTarget=true` will forced to be used." +msgstr "" +"由于技术原因,强制 `Crit.SuppressWhenIntercepted=false` 且 " +"`Crit.ApplyChancePerTarget=true`。" + +#: ../../New-or-Enhanced-Logics.md:2675 +msgid "" +"[CombatDamage] ; WarheadType\n" +"ApplyPerTargetEffectsOnDetonate=true ; boolean\n" +"\n" +"[SOMEWARHEAD] ; WarheadType\n" +"ApplyPerTargetEffectsOnDetonate= ; boolean, default to " +"[CombatDamage] -> ApplyPerTargetEffectsOnDetonate\n" +msgstr "" +"[CombatDamage] ; WarheadType\n" +"ApplyPerTargetEffectsOnDetonate=true ; boolean\n" +"\n" +"[SOMEWARHEAD] ; WarheadType\n" +"ApplyPerTargetEffectsOnDetonate= ; boolean, default to " +"[CombatDamage] -> ApplyPerTargetEffectsOnDetonate\n" + +#: ../../New-or-Enhanced-Logics.md:2684 +msgid "" +"Ares' warhead effects, such as EMP or IronCurtain warhead, will not be " +"affected." +msgstr "Ares 弹头效果例如 EMP 或铁幕弹头将不受影响。" + +#: ../../New-or-Enhanced-Logics.md:2685 +msgid "" +"Ares' warhead effect controllers, such as `EffectsRequireDamage`, only " +"affect Ares' effects. So they have nothing to do with this." +msgstr "Ares 弹头效果控制器例如 `EffectsRequireDamage` 仅影响 Ares 效果。所以它们与此功能无关。" + +#: ../../New-or-Enhanced-Logics.md:2688 msgid "Trigger specific NotHuman infantry Death anim sequence" msgstr "指定非人步兵死亡序列" -#: ../../New-or-Enhanced-Logics.md:2634 +#: ../../New-or-Enhanced-Logics.md:2690 msgid "" "Warheads are now able to trigger specific `NotHuman=yes` infantry `Death`" " anim sequence using the corresponding tag. It's value represents " "sequences from `Die1` to `Die5`." msgstr "现在弹头可以使用相应的标签触发特定的 `NotHuman=yes` 步兵 `Death` 动画序列。其值代表从 `Die1` 到 `Die5`。" -#: ../../New-or-Enhanced-Logics.md:2637 +#: ../../New-or-Enhanced-Logics.md:2693 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "NotHuman.DeathSequence= ; integer (1 to 5)\n" @@ -9200,17 +9380,17 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "NotHuman.DeathSequence= ; integer (1 to 5)\n" -#: ../../New-or-Enhanced-Logics.md:2642 +#: ../../New-or-Enhanced-Logics.md:2698 msgid "Warhead that can not kill" msgstr "弹头击杀限制" -#: ../../New-or-Enhanced-Logics.md:2644 +#: ../../New-or-Enhanced-Logics.md:2700 msgid "" "Warheads can now damage the enemy without killing them (minimum health " "will be 1)." msgstr "现在可以让一个弹头可以杀伤敌人但无法击杀它们(至少保留 1 滴血)。" -#: ../../New-or-Enhanced-Logics.md:2647 +#: ../../New-or-Enhanced-Logics.md:2703 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "CanKill=true ; boolean\n" @@ -9218,11 +9398,11 @@ msgstr "" "[SOMEWARHEAD] ; WarheadType\n" "CanKill=true ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2652 +#: ../../New-or-Enhanced-Logics.md:2708 msgid "Unlimbo detonate warhead" msgstr "去虚拟化弹头" -#: ../../New-or-Enhanced-Logics.md:2654 +#: ../../New-or-Enhanced-Logics.md:2710 msgid "" "![Unlimbo Detonate](_static/images/unlimbodetonate.gif) *Unlimbo Detonate" " used in **The Call of the Panic Spear** by @[Octagonal " @@ -9231,36 +9411,36 @@ msgstr "" "![去虚拟化弹头](_static/images/unlimbodetonate.gif) " "*@[八棱彩](https://space.bilibili.com/360577336) 在 **恐慌之矛的召唤** 中使用的去虚拟化弹头*" -#: ../../New-or-Enhanced-Logics.md:2654 +#: ../../New-or-Enhanced-Logics.md:2710 msgid "Unlimbo Detonate" msgstr "去虚拟化弹头" -#: ../../New-or-Enhanced-Logics.md:2657 +#: ../../New-or-Enhanced-Logics.md:2713 msgid "" "`UnlimboDetonate` allows units that have fired weapons with " "`LimboLaunch=yes` to reappear." msgstr "`UnlimboDetonate` 允许发射了拥有 `LimboLaunch=yes` 的武器的单位在弹头引爆后重新刷出(退出 Limbo 状态)。" -#: ../../New-or-Enhanced-Logics.md:2658 +#: ../../New-or-Enhanced-Logics.md:2714 msgid "" "`UnlimboDetonate.ForceLocation` allows units to forcefully appear at the " "projectile explosion location, otherwise they will search for other " "available cells." msgstr "`UnlimboDetonate.ForceLocation` 允许单位强制出现在抛射体爆炸的位置,否则它们会检索其他可用的单元格。" -#: ../../New-or-Enhanced-Logics.md:2659 +#: ../../New-or-Enhanced-Logics.md:2715 msgid "" "`UnlimboDetonate.KeepTarget` allows units to retain their original attack" " target when they reappear." msgstr "`UnlimboDetonate.KeepTarget` 允许单位进出 Limbo 状态前后保留原先的目标。" -#: ../../New-or-Enhanced-Logics.md:2660 +#: ../../New-or-Enhanced-Logics.md:2716 msgid "" "`UnlimboDetonate.KeepSelected` allows units to retain their original " "selected state when they appear." msgstr "`UnlimboDetonate.KeepSelected` 允许单位进出 Limbo 状态前保留原先选中状态。" -#: ../../New-or-Enhanced-Logics.md:2663 +#: ../../New-or-Enhanced-Logics.md:2719 msgid "" "[SOMEWARHEAD] ; WarheadType\n" "UnlimboDetonate=false ; boolean\n" @@ -9274,19 +9454,19 @@ msgstr "" "UnlimboDetonate.KeepTarget=false ; boolean\n" "UnlimboDetonate.KeepSelected=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2672 +#: ../../New-or-Enhanced-Logics.md:2728 msgid "`UnlimboDetonate` cannot be used in conjunction with `Parasite`." msgstr "`UnlimboDetonate` 不能与 `Parasite` 共用。" -#: ../../New-or-Enhanced-Logics.md:2675 +#: ../../New-or-Enhanced-Logics.md:2731 msgid "Weapons" msgstr "武器" -#: ../../New-or-Enhanced-Logics.md:2677 +#: ../../New-or-Enhanced-Logics.md:2733 msgid "AreaFire target customization" msgstr "自定义 `AreaFire` 目标" -#: ../../New-or-Enhanced-Logics.md:2679 +#: ../../New-or-Enhanced-Logics.md:2735 msgid "" "You can now specify how AreaFire weapon picks its target. By default it " "targets the base cell the firer is currently on, but this can now be " @@ -9297,13 +9477,13 @@ msgstr "" "现在你可以指定 AreaFire 武器如何选择目标。默认情况下它会瞄准开火者当前所处的单元格,现在可以通过将 `AreaFire.Target` " "设为 `self` 或 `random` 分别改为瞄准发开火者自身或武器 `Range` 范围内的随机单元格。" -#: ../../New-or-Enhanced-Logics.md:2680 +#: ../../New-or-Enhanced-Logics.md:2736 msgid "" "`AreaFire.Target=self` respects normal targeting rules (Warhead `Verses` " "etc.) against the firer itself." msgstr "`AreaFire.Target=self` 遵守对开火者自身的正常目标筛选规则(弹头 `Verses` 等)。" -#: ../../New-or-Enhanced-Logics.md:2681 +#: ../../New-or-Enhanced-Logics.md:2737 msgid "" "`AreaFire.Target=random` ignores cells that are ineligible or contain " "ineligible objects based on listed values in weapon's `CanTarget` & " @@ -9312,7 +9492,7 @@ msgstr "" "`AreaFire.Target=random` 会忽略由武器 `CanTarget` 和 `CanTargetHouses` " "值设为不可作为目标的单元格或存在不可作为目标的对象的单元格。" -#: ../../New-or-Enhanced-Logics.md:2684 +#: ../../New-or-Enhanced-Logics.md:2740 msgid "" "[SOMEWEAPON] ; WeaponType\n" "AreaFire.Target=base ; AreaFire Target Enumeration (base|self|random)\n" @@ -9320,11 +9500,30 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "AreaFire.Target=base ; AreaFire Target Enumeration (base|self|random)\n" -#: ../../New-or-Enhanced-Logics.md:2689 +#: ../../New-or-Enhanced-Logics.md:2745 +msgid "Attack non-threatening structures (Weapon)" +msgstr "攻击无威胁建筑(武器定义)" + +#: ../../New-or-Enhanced-Logics.md:2747 +msgid "" +"`AttackNoThreatBuildings` permits shooters to attack non-threatening " +"structures. This setting overrides other configurations." +msgstr "" +"`AttackNoThreatBuildings` 允许单位(主动)攻击无威胁建筑。这会覆盖其他设置。" + +#: ../../New-or-Enhanced-Logics.md:2750 +msgid "" +"[SOMEWEAPON] ; WeaponType\n" +"AttackNoThreatBuildings= ; boolean\n" +msgstr "" +"[SOMEWEAPON] ; WeaponType\n" +"AttackNoThreatBuildings= ; boolean\n" + +#: ../../New-or-Enhanced-Logics.md:2755 msgid "Burst delay customizations" msgstr "自定义 BurstDelay" -#: ../../New-or-Enhanced-Logics.md:2691 +#: ../../New-or-Enhanced-Logics.md:2757 msgid "" "`Burst.Delays` allows specifying weapon-specific burst shot delays. Takes" " precedence over the old `BurstDelayX` logic available on VehicleTypes, " @@ -9337,7 +9536,7 @@ msgstr "" "逻辑,且适用于步兵和建筑类型的武器(由于战机类型武器的发射系统完全不同因此暂不支持),并允许独立设置每一发 `Burst` 之间的间隔而不仅限于第" " 1 发到第 4 发。" -#: ../../New-or-Enhanced-Logics.md:2692 +#: ../../New-or-Enhanced-Logics.md:2758 msgid "" "If no delay is defined for a shot, it falls back to last delay value " "defined (f.ex `Burst=3` and `Burst.Delays=10` would use 10 as delay for " @@ -9346,14 +9545,14 @@ msgstr "" "如果未未某一发设定间隔那么它会使用上一发所定义的间隔(例如 `Burst=3` 和 `Burst.Delays=10` 将使用 10 " "作为所有连发的间隔)。" -#: ../../New-or-Enhanced-Logics.md:2693 +#: ../../New-or-Enhanced-Logics.md:2759 msgid "" "Using `-1` as delay reverts back to old logic (`BurstDelay0-3` for " "VehicleTypes if available or random value between 3-5 otherwise) for that" " shot." msgstr "使用 `-1` 作为间隔会使该发使用旧逻辑(如果有则使用载具类型的 `BurstDelay0-3` 否则使用 3-5 之间的随机值)。" -#: ../../New-or-Enhanced-Logics.md:2694 +#: ../../New-or-Enhanced-Logics.md:2760 msgid "" "`Burst.FireWithinSequence` is only used if the weapon is fired by " "InfantryType or `Voxel=no` turretless VehicleType, and setting it to true" @@ -9363,13 +9562,13 @@ msgstr "" "`Burst.FireWithinSequence` 仅在步兵或 `Voxel=no` 的无炮塔载具发射武器时使用,将其设为 true " "以允许步兵/载具在同一射击序列内射出多发 `Burst`。" -#: ../../New-or-Enhanced-Logics.md:2695 +#: ../../New-or-Enhanced-Logics.md:2761 msgid "" "First shot is always fired at sequence frame determined by firing frame " "controls on InfantryType image (`FireUp` et al)." msgstr "第一发始终在由步兵类型图像的射击帧(如 `FireUp` 等)确定的帧序列决定。" -#: ../../New-or-Enhanced-Logics.md:2696 +#: ../../New-or-Enhanced-Logics.md:2762 msgid "" "Following shots come at intervals determined by `Burst.Delays` (with " "minimum delay of 1 frame) or random delay between 3 to 5 frames if not " @@ -9380,7 +9579,7 @@ msgstr "" "后续的连发发射间隔由 `Burst.Delays` 决定(最小间隔为 1 帧)或未定义情况下使用随机 3 到 5 " "帧。注意如果下一发的发射帧超出了射击序列长度则连发计数器将被重置且武器会重新开始装填。" -#: ../../New-or-Enhanced-Logics.md:2697 +#: ../../New-or-Enhanced-Logics.md:2763 msgid "" "Burst shot counter is not immediately reset if firing is ceased mid-" "sequence after at least one shot, but the frame at which each burst shot " @@ -9390,7 +9589,7 @@ msgid "" "burst shot should be fired is hit)." msgstr "如果在至少一发后停止射击则连发计数器不会立即重置,但每个连发的发射帧不会受此影响(换而言之,如果之后重新开始射击而武器没有重新装填,那么射击序列会重新开始,但不会发射任何直到下一发应该被发射的帧)。" -#: ../../New-or-Enhanced-Logics.md:2700 +#: ../../New-or-Enhanced-Logics.md:2766 msgid "" "[SOMEWEAPON] ; WeaponType\n" "Burst.Delays=-1 ; integer - burst delays (comma-" @@ -9402,11 +9601,11 @@ msgstr "" "separated) for shots in order from first to last.\n" "Burst.FireWithinSequence=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2706 +#: ../../New-or-Enhanced-Logics.md:2772 msgid "Burst without delay" msgstr "无间隔连发" -#: ../../New-or-Enhanced-Logics.md:2708 +#: ../../New-or-Enhanced-Logics.md:2774 msgid "" "In vanilla, vehicles and infantry will only fire once in one frame, even " "if their `ROF` or `BurstDelay` is set to 0. Now you can force units to " @@ -9415,7 +9614,7 @@ msgstr "" "原版中即便武器的 `ROF` 或载具的 `BurstDelay` 设为 0 也最快每帧发射一次。现在可以通过将 `Burst.NoDelay` " "设为 true 强制单位在一帧内全部发射。" -#: ../../New-or-Enhanced-Logics.md:2711 +#: ../../New-or-Enhanced-Logics.md:2777 msgid "" "[SOMEWEAPON] ; WeaponType\n" "Burst.NoDelay=false ; boolean\n" @@ -9423,32 +9622,32 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "Burst.NoDelay=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2717 +#: ../../New-or-Enhanced-Logics.md:2783 msgid "This is useless for buildings and aircraft." msgstr "此功能对建筑和战机无效。" -#: ../../New-or-Enhanced-Logics.md:2718 +#: ../../New-or-Enhanced-Logics.md:2784 msgid "This will ignore `Burst.Delays` setting." msgstr "这会无视 `Burst.Delays` 设置。" -#: ../../New-or-Enhanced-Logics.md:2721 +#: ../../New-or-Enhanced-Logics.md:2798 msgid "Delayed firing" msgstr "延迟开火" -#: ../../New-or-Enhanced-Logics.md:2723 +#: ../../New-or-Enhanced-Logics.md:2800 msgid "" "It is possible to have any weapon fire with a delay by setting " "`DelayedFire.Duration` on a WeaponType - it supports a single integer or " "two comma-separated ones for a random range to pick value from." msgstr "通过为武器设置 `DelayedFire.Duration` 可使其延迟开火 - 它支持单个整数或用逗号隔开的两个整数作为随机取值区间。" -#: ../../New-or-Enhanced-Logics.md:2724 +#: ../../New-or-Enhanced-Logics.md:2801 msgid "" "If `DelayedFire.SkipInTransport` is set to true and firer is in a " "transport, no delay is applied to firing." msgstr "若 `DelayedFire.SkipInTransport` 设为 true 且开火者在运输工具中则这种情况下跳过延迟。" -#: ../../New-or-Enhanced-Logics.md:2725 +#: ../../New-or-Enhanced-Logics.md:2802 msgid "" "`DelayedFire.Animation` can be used to define animation to create when " "the delay timer starts. `DelayedFire.OpenToppedAnimation` is used instead" @@ -9457,7 +9656,7 @@ msgstr "" "`DelayedFire.Animation` 可用于定义延时计时器启动时创建的动画。可用 " "`DelayedFire.OpenToppedAnimation` 单独定义开火者在运输工具中开火时创建的。" -#: ../../New-or-Enhanced-Logics.md:2726 +#: ../../New-or-Enhanced-Logics.md:2803 msgid "" "If `DelayedFire.AnimIsAttached` is set to true, the animation is attached" " to the firing TechnoType. If `DelayedFire.RemoveAnimOnNoDelay` is also " @@ -9468,26 +9667,26 @@ msgstr "" "`DelayedFire.RemoveAnimOnNoDelay` 也设为 " "true,则在持续时间结束或开火被中断时无论是否播放完毕都立即移除动画。" -#: ../../New-or-Enhanced-Logics.md:2727 +#: ../../New-or-Enhanced-Logics.md:2804 msgid "" "`DelayedFire.AnimOffset` can be used to override the weapon's firing " "coordinates / FLH for the animation's position." msgstr "`DelayedFire.AnimOffset` 可用于覆盖开火坐标来设置动画的位置。" -#: ../../New-or-Enhanced-Logics.md:2728 +#: ../../New-or-Enhanced-Logics.md:2805 msgid "" "`DelayedFire.AnimOnTurret` determines whether or not the animation's " "position is calculated relative to firer's body or turret (only if it has" " one)." msgstr "`DelayedFire.AnimOnTurret` 决定在单位有炮塔的情况下该动画的位置是相对于开火单位的本体还是炮塔。" -#: ../../New-or-Enhanced-Logics.md:2729 +#: ../../New-or-Enhanced-Logics.md:2806 msgid "" "If `DelayedFire.CenterAnimOnFirer` is set the animation is created at the" " firer's center rather than at the firing coordinates." msgstr "若设置了 `DelayedFire.CenterAnimOnFirer` 则动画会创建于开火单位的中心而非开火坐标处。" -#: ../../New-or-Enhanced-Logics.md:2730 +#: ../../New-or-Enhanced-Logics.md:2807 msgid "" "If the weapon was fired by InfantryType and " "`DelayedFire.PauseFiringSequence` is set to true, the infantry's firing " @@ -9499,7 +9698,7 @@ msgstr "" "`artmd.ini` 中由 `FireUp/Prone` 或 `SecondaryFire/Prone` " "定义的开火帧时其开火序列动画将会暂停直至延时计时器结束。" -#: ../../New-or-Enhanced-Logics.md:2731 +#: ../../New-or-Enhanced-Logics.md:2808 msgid "" "If the weapon has `Burst` > 1 and `DelayedFire.OnlyOnInitialBurst` set to" " true, the delay occurs only before the initial burst shot. Note that if " @@ -9511,7 +9710,7 @@ msgstr "" "则延迟仅在首次发射前生效。注意若使用了 Ares 则开火被中断或开火者失去目标时 `Burst` " "索引不会重置,这意味着它可以无需等待延迟时间即可开火。" -#: ../../New-or-Enhanced-Logics.md:2734 +#: ../../New-or-Enhanced-Logics.md:2811 msgid "" "[SOMEWEAPON] ; WeaponType\n" "DelayedFire.Duration= ; integer - single or comma-sep. " @@ -9543,18 +9742,138 @@ msgstr "" "DelayedFire.PauseFiringSequence=false ; boolean\n" "DelayedFire.OnlyOnInitialBurst=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2750 +#: ../../New-or-Enhanced-Logics.md:2827 msgid "" "AircraftTypes, due to their different attack patterns, will not wait for " "the delay to expire before attempting to fire and will instead continue " "without firing if the delay is too long." msgstr "战机类单位由于其独特的攻击模式并不会等待延迟结束后才尝试开火而是延迟过长时会不开火直接继续飞。" -#: ../../New-or-Enhanced-Logics.md:2753 +#: ../../New-or-Enhanced-Logics.md:2830 +msgid "Extra range" +msgstr "额外射程" + +#: ../../New-or-Enhanced-Logics.md:2832 +msgid "" +"Now you can adjust weapon's range when the firer or target are under " +"specific conditions. Only work during the attack process and cannot " +"affect other behaviors such as path finding." +msgstr "现在你可以在开火者或目标处于特定状态时调整武器的射程。此功能仅在攻击过程中有效且不影响例如寻路等其他行为。" + +#: ../../New-or-Enhanced-Logics.md:2833 +msgid "" +"`ExtraRange.TargetMoving` grants the weapon extra range when the target " +"is in a moving state." +msgstr "`ExtraRange.TargetMoving` 当 **目标** 正在移动时提供的额外射程。" + +#: ../../New-or-Enhanced-Logics.md:2834 +msgid "" +"`ExtraRange.TargetMoving.CloseRangeOnly` is used to restrict whether the " +"global default value only applies to units with `CloseRange=yes`." +msgstr "" +"`ExtraRange.TargetMoving.CloseRangeOnly` 用于全局默认值是否适用于拥有 `CloseRange=yes` " +"的单位。" + +#: ../../New-or-Enhanced-Logics.md:2835 +msgid "" +"`ExtraRange.FirerMoving` grants the weapon extra range when the firer is " +"in a moving state." +msgstr "`ExtraRange.FirerMoving` 当 **开火者** 正在移动时提供的额外射程。" + +#: ../../New-or-Enhanced-Logics.md:2836 +msgid "" +"`ExtraRange.Prefiring` grants the weapon extra range when the firer is in" +" a pre-firing state, including:" +msgstr "`ExtraRange.Prefiring` 当开火者处于预开火状态时提供的额外射程,该状态包括:" + +#: ../../New-or-Enhanced-Logics.md:2837 +#, python-format +msgid "Vehicles with tags such as `FiringSyncFrame%d`." +msgstr "拥有 `FiringSyncFrame%d` 等标签的载具。" + +#: ../../New-or-Enhanced-Logics.md:2838 +msgid "Aircraft that are firing." +msgstr "正在开火的飞行器。" + +#: ../../New-or-Enhanced-Logics.md:2839 +msgid "Buildings with tags such as `IsAnimDelayedFire`." +msgstr "拥有 `IsAnimDelayedFire` 等标签的建筑。" + +#: ../../New-or-Enhanced-Logics.md:2840 +msgid "Infantry with tags such as `FireUp`." +msgstr "拥有 `FireUp` 等标签的步兵。" + +#: ../../New-or-Enhanced-Logics.md:2841 +msgid "Any unit with [`DelayedFire`](#delayed-firing)." +msgstr "任何拥有 [`DelayedFire`](#delayed-firing) 的单位。" + +#: ../../New-or-Enhanced-Logics.md:2842 +msgid "" +"`ExtraRange.Prefiring.IncludeBurst` is used to decide whether the " +"execution of burst is considered as being in a pre-firing state." +msgstr "`ExtraRange.Prefiring.IncludeBurst` 用于决定连发过程是否被视为预开火状态。" + +#: ../../New-or-Enhanced-Logics.md:2845 +msgid "" +"[General]\n" +"ExtraRange.TargetMoving=0.0 ; float, range in cells\n" +"ExtraRange.TargetMoving.CloseRangeOnly=false ; boolean\n" +"ExtraRange.FirerMoving=0.0 ; float, range in cells\n" +"ExtraRange.Prefiring=0.0 ; float, range in cells\n" +"ExtraRange.Prefiring.IncludeBurst=true ; boolean\n" +"\n" +"[SOMEWEAPON] ; WeaponType\n" +"ExtraRange.TargetMoving= ; float, range in cells, " +"the default values refer to the descriptions above\n" +"ExtraRange.FirerMoving= ; float, range in cells, " +"default to [General] -> ExtraRange.FirerMoving\n" +"ExtraRange.Prefiring= ; float, range in cells, " +"default to [General] -> ExtraRange.Prefiring\n" +"ExtraRange.Prefiring.IncludeBurst= ; boolean, default to " +"[General] -> ExtraRange.Prefiring.IncludeBurst\n" +msgstr "" +"[General]\n" +"ExtraRange.TargetMoving=0.0 ; float, range in cells\n" +"ExtraRange.TargetMoving.CloseRangeOnly=false ; boolean\n" +"ExtraRange.FirerMoving=0.0 ; float, range in cells\n" +"ExtraRange.Prefiring=0.0 ; float, range in cells\n" +"ExtraRange.Prefiring.IncludeBurst=true ; boolean\n" +"\n" +"[SOMEWEAPON] ; WeaponType\n" +"ExtraRange.TargetMoving= ; float, range in cells, " +"the default values refer to the descriptions above\n" +"ExtraRange.FirerMoving= ; float, range in cells, " +"default to [General] -> ExtraRange.FirerMoving\n" +"ExtraRange.Prefiring= ; float, range in cells, " +"default to [General] -> ExtraRange.Prefiring\n" +"ExtraRange.Prefiring.IncludeBurst= ; boolean, default to " +"[General] -> ExtraRange.Prefiring.IncludeBurst\n" + +#: ../../New-or-Enhanced-Logics.md:2861 +msgid "" +"In vanilla, melee units have difficulty attacking enemies that are moving" +" away, even if they have a slightly higher speed than their targets. This" +" is because the game's pathfinding algorithm searches for a firing " +"position in units of cells, which creates an unacceptable error for melee" +" units, causing the targets to move out of range before they can get " +"close." +msgstr "在原版中,近战单位即便追得上正在逃离的敌人也难以对其发起攻击。这是因为游戏的寻路算法以单元格为单位寻找开火位置,这会对进展单位产生不可接受的误差,导致目标总是在其足够靠近前移动出攻击范围。" + +#: ../../New-or-Enhanced-Logics.md:2862 +msgid "" +"Units with various forms of pre-firing behavior have similar problems. " +"The target may move out of range before they fire." +msgstr "具有各类预开火行为的单位也存在类似的问题。目标可能在单位开火前移出射程。" + +#: ../../New-or-Enhanced-Logics.md:2863 +msgid "This feature can solve the above issues." +msgstr "此功能可解决上述问题。" + +#: ../../New-or-Enhanced-Logics.md:2866 msgid "Extra warhead detonations" msgstr "额外弹头" -#: ../../New-or-Enhanced-Logics.md:2755 +#: ../../New-or-Enhanced-Logics.md:2868 msgid "" "It is now possible to have same weapon detonate multiple Warheads on " "impact by listing `ExtraWarheads`. The warheads are detonated at same " @@ -9567,7 +9886,7 @@ msgstr "" "来让同一武器在命中时引爆多个弹头。这些弹头会在主弹头爆炸后按列出的顺序在同一位置引爆。这仅适用于由武器发射且引爆时仍保留其信息的抛射体(由于目前存在的技术限制,这不包括" " `AirburstWeapon`)。" -#: ../../New-or-Enhanced-Logics.md:2756 +#: ../../New-or-Enhanced-Logics.md:2869 msgid "" "`ExtraWarheads.DamageOverrides` can be used to override the weapon's " "`Damage` for the extra Warhead detonations. Value from position matching " @@ -9577,7 +9896,7 @@ msgstr "" "`ExtraWarheads.DamageOverrides` 可用于额外弹头引爆时覆盖武器的 `Damage` 属性。如果找到 " "`ExtraWarheads` 中与之对应的值则使用,否则使用最后列出的值。如果列表为空则使用武器的 `Damage` 属性。" -#: ../../New-or-Enhanced-Logics.md:2757 +#: ../../New-or-Enhanced-Logics.md:2870 msgid "" "`ExtraWarheads.DetonationChances` can be used to customize the chance of " "each extra Warhead detonation occuring. Value from position matching the " @@ -9588,7 +9907,7 @@ msgstr "" "`ExtraWarheads.DetonationChances` 可用于自定义每个额外弹头爆炸的概率。如果找到 `ExtraWarheads` " "中与之对应的值则使用,否则使用最后列出的值。如果列表为空则每个额外弹头都必然引爆。" -#: ../../New-or-Enhanced-Logics.md:2758 +#: ../../New-or-Enhanced-Logics.md:2871 msgid "" "`ExtraWarheads.FullDetonation` can be used to customize whether or not " "each individual Warhead is detonated fully (as part of a dummy weapon) or" @@ -9600,13 +9919,13 @@ msgstr "" "可用于设置每个额外弹头是否在目标上完全引爆(作为虚拟武器的一部分)或者只能对所在区域造成杀伤并应用 Phobos 的弹头效果。如果找到 " "`ExtraWarheads` 中与之对应的值则使用,否则使用最后列出的值。如果列表为空则默认为 true。" -#: ../../New-or-Enhanced-Logics.md:2759 +#: ../../New-or-Enhanced-Logics.md:2872 msgid "" "Note that the listed Warheads must be listed in `[Warheads]` for them to " "work." msgstr "注意列出的弹头必须在 `[Warheads]` 中列出才能生效。" -#: ../../New-or-Enhanced-Logics.md:2762 +#: ../../New-or-Enhanced-Logics.md:2875 msgid "" "[SOMEWEAPON] ; WeaponType\n" "ExtraWarheads= ; List of WarheadTypes\n" @@ -9622,11 +9941,11 @@ msgstr "" "(percentage or absolute)\n" "ExtraWarheads.FullDetonation= ; List of booleans\n" -#: ../../New-or-Enhanced-Logics.md:2770 +#: ../../New-or-Enhanced-Logics.md:2883 msgid "Feedback weapon" msgstr "反馈武器" -#: ../../New-or-Enhanced-Logics.md:2772 +#: ../../New-or-Enhanced-Logics.md:2885 msgid "" "![image](_static/images/feedbackweapon.gif) *`FeedbackWeapon` used to " "apply healing aura upon firing a weapon in [Project " @@ -9636,13 +9955,13 @@ msgstr "" "*[幽灵计划](https://www.moddb.com/mods/project-phantom) " "中使用反馈武器在发射武器时对目标施加治疗光环*" -#: ../../New-or-Enhanced-Logics.md:2775 +#: ../../New-or-Enhanced-Logics.md:2888 msgid "" "You can now specify an auxiliary weapon to be fired on the firer itself " "when a weapon is fired." msgstr "现在你可以指定一个辅助武器在发射武器时对开火者自身发射。" -#: ../../New-or-Enhanced-Logics.md:2776 +#: ../../New-or-Enhanced-Logics.md:2889 msgid "" "`FireInTransport` setting of the feedback weapon is respected to " "determine if it can be fired when the original weapon is fired from " @@ -9653,7 +9972,7 @@ msgstr "" "当原始武器于运输工具内的载员使用时反馈武器会根据自身的 `FireInTransport` " "决定能否发射。如果反馈武器被发射那么它将命中运输工具。注:`OpenToppedDamageMultiplier` 不适用于反馈武器。" -#: ../../New-or-Enhanced-Logics.md:2779 +#: ../../New-or-Enhanced-Logics.md:2892 msgid "" "[SOMEWEAPON] ; WeaponType\n" "FeedbackWeapon= ; WeaponType\n" @@ -9661,17 +9980,17 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "FeedbackWeapon= ; WeaponType\n" -#: ../../New-or-Enhanced-Logics.md:2784 +#: ../../New-or-Enhanced-Logics.md:2897 msgid "Keep Range After Firing" msgstr "开火后保持距离" -#: ../../New-or-Enhanced-Logics.md:2786 +#: ../../New-or-Enhanced-Logics.md:2899 msgid "" "Technos can maintain a suitable distance after firing if `KeepRange` is " "not set to 0." msgstr "如果 `KeepRange` 没有设为 0 那么科技类型可以在开火后与目标保持适当的距离。" -#: ../../New-or-Enhanced-Logics.md:2787 +#: ../../New-or-Enhanced-Logics.md:2900 msgid "" "`KeepRange` controls how long the distance to maintain when the techno's " "ROF timer is ticking. What is actually read is its absolute value. If it " @@ -9686,31 +10005,31 @@ msgstr "" "`MinimumRange`。对于负值则科技类型会尽可能保持在该距离附近,就像它有一个开火后的特殊 " "`Range`。此外如果有效射程区间太小单位将被视为无法开火。最好有一个 1.0 长度的有效射程,对步兵而言为 2.0。" -#: ../../New-or-Enhanced-Logics.md:2788 +#: ../../New-or-Enhanced-Logics.md:2901 msgid "" "`KeepRange.AllowAI` controls whether this function is effective for " "computer." msgstr "`KeepRange.AllowAI` 控制此功能是否对 AI 玩家生效。" -#: ../../New-or-Enhanced-Logics.md:2789 +#: ../../New-or-Enhanced-Logics.md:2902 msgid "" "`KeepRange.AllowPlayer` controls whether this function is effective for " "human." msgstr "`KeepRange.AllowPlayer` 控制此功能是否对人类玩家生效。" -#: ../../New-or-Enhanced-Logics.md:2790 +#: ../../New-or-Enhanced-Logics.md:2903 msgid "" "The function won't take effect if the techno's rearm time left is shorter" " than `KeepRange.EarlyStopFrame`." msgstr "如果单位开火剩余 CD 短于 `KeepRange.EarlyStopFrame` 的时间则该功能不会生效。" -#: ../../New-or-Enhanced-Logics.md:2793 +#: ../../New-or-Enhanced-Logics.md:2906 msgid "" "That is to say, the total duration of executing KeepRange equals the " "value of weapon `ROF` minus the value of `KeepRange.EarlyStopFrame`." msgstr "也就是说执行 KeepRange 效果的总时长 = 武器 `ROF` 的值 - `KeepRange.EarlyStopFrame` 的值。" -#: ../../New-or-Enhanced-Logics.md:2797 +#: ../../New-or-Enhanced-Logics.md:2910 msgid "" "[SOMEWEAPON] ; WeaponType\n" "KeepRange=0 ; floating point value\n" @@ -9724,23 +10043,23 @@ msgstr "" "KeepRange.AllowPlayer=false ; boolean\n" "KeepRange.EarlyStopFrame=0 ; integer\n" -#: ../../New-or-Enhanced-Logics.md:2805 +#: ../../New-or-Enhanced-Logics.md:2918 msgid "Make units try turning to target when firing with `OmniFire=yes`" msgstr "`OmniFire=yes` 下转向" -#: ../../New-or-Enhanced-Logics.md:2807 +#: ../../New-or-Enhanced-Logics.md:2920 msgid "" "The unit will try to turn the body to target even firing with " "`OmniFire=yes`." msgstr "即便使用 `OmniFire=yes` 的武器开火单位也会尝试将车体转向目标。" -#: ../../New-or-Enhanced-Logics.md:2808 +#: ../../New-or-Enhanced-Logics.md:2921 msgid "" "Jumpjets are recommended to have the same value of body `ROT` and " "`JumpjetTurnRate`." msgstr "建议 Jumpjet 的 `ROT` 和 `JumpjetTurnRate` 相同。" -#: ../../New-or-Enhanced-Logics.md:2811 +#: ../../New-or-Enhanced-Logics.md:2924 msgid "" "[SOMEWEAPON] ; WeaponType, with OmniFire=yes\n" "OmniFire.TurnToTarget=no ; boolean\n" @@ -9748,11 +10067,11 @@ msgstr "" "[SOMEWEAPON] ; WeaponType, with OmniFire=yes\n" "OmniFire.TurnToTarget=no ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2816 +#: ../../New-or-Enhanced-Logics.md:2929 msgid "Radiation enhancements" msgstr "辐射增强" -#: ../../New-or-Enhanced-Logics.md:2818 +#: ../../New-or-Enhanced-Logics.md:2931 msgid "" "In addition to allowing custom radiation types, several enhancements are " "also available to the default radiation type defined in `[Radiation]`, " @@ -9762,11 +10081,11 @@ msgstr "" "除了允许自定义辐射类型外还有对于默认辐射类型 `[Radiation]` 的增强,例如可以设置所有者与开火者或对建筑造成伤害。详见[自定义辐射类型" "](#custom-radiation-types)。" -#: ../../New-or-Enhanced-Logics.md:2820 +#: ../../New-or-Enhanced-Logics.md:2933 msgid "Strafing aircraft weapon customization" msgstr "自定义战机扫射" -#: ../../New-or-Enhanced-Logics.md:2822 +#: ../../New-or-Enhanced-Logics.md:2935 msgid "" "![image](_static/images/strafing-01.gif) *Strafing aircraft weapon " "customization in [Project Phantom](https://www.moddb.com/mods/project-" @@ -9775,11 +10094,11 @@ msgstr "" "![image](_static/images/strafing-01.gif) " "*[幽灵计划](https://www.moddb.com/mods/project-phantom) 中的自定义战机扫射武器*" -#: ../../New-or-Enhanced-Logics.md:2825 +#: ../../New-or-Enhanced-Logics.md:2938 msgid "Some of the behavior of strafing aircraft weapons can now be customized." msgstr "现在可以自定义战机扫射武器的一些行为。" -#: ../../New-or-Enhanced-Logics.md:2826 +#: ../../New-or-Enhanced-Logics.md:2939 msgid "" "`Strafing` controls if the aircraft can strafe when firing at the target." " Default to `true` if the projectile's `ROT` < 2 and `Inviso=false` " @@ -9788,7 +10107,7 @@ msgstr "" "`Strafing` 控制战机在目标射击时是否可以扫射。如果抛射体 `ROT` < 2 且 `Inviso=false` 并且没有 " "`Trajectory` 则默认为 `true` 其他情况为 `false`。" -#: ../../New-or-Enhanced-Logics.md:2827 +#: ../../New-or-Enhanced-Logics.md:2940 msgid "" "`Strafing.Shots` controls the number of times the weapon is fired during " "a single strafe run, defaults to 5 if not set. `Ammo` is only deducted at" @@ -9797,7 +10116,7 @@ msgstr "" "`Strafing.Shots` 控制在单次扫射过程中武器发射的次数,如果未设置则默认为 5。`Ammo` " "只会在扫射结束后扣除一次,无论实际多少次。" -#: ../../New-or-Enhanced-Logics.md:2828 +#: ../../New-or-Enhanced-Logics.md:2941 msgid "" "`Strafing.SimulateBurst` controls whether or not the shots fired during " "strafing simulate behavior of `Burst`, allowing for alternating firing " @@ -9806,14 +10125,14 @@ msgstr "" "`Strafing.SimulateBurst` 控制在扫射过程中发射的武器是否模拟 `Burst` 的行为,即允许交替开火坐标。仅当武器 " "`Burst` 设置为 1 或未定义时才有效。" -#: ../../New-or-Enhanced-Logics.md:2829 +#: ../../New-or-Enhanced-Logics.md:2942 msgid "" "`Strafing.UseAmmoPerShot`, if set to `true` overrides the usual behaviour" " of only deducting ammo after a strafing run and instead doing it after " "each individual shot." msgstr "`Strafing.UseAmmoPerShot` 如果设为 `true` 将在每次开火后都扣除弹药而不是通常的仅在扫射结束后才扣除弹药。" -#: ../../New-or-Enhanced-Logics.md:2830 +#: ../../New-or-Enhanced-Logics.md:2943 msgid "" "`Strafing.TargetCell` controls whether the aircraft will change the " "target of this round to the ground after firing the first shot, to ensure" @@ -9823,7 +10142,7 @@ msgstr "" "`Strafing.TargetCell` 控制战机是否会在第一发后将目标切换为地板以确保与 `Strafing.Shots` " "设定的次数一致。也就是扫射不再会由于目标被摧毁而中断。" -#: ../../New-or-Enhanced-Logics.md:2831 +#: ../../New-or-Enhanced-Logics.md:2944 msgid "" "`Strafing.EndDelay` can be used to override the delay after firing last " "shot in strafing run before aircraft resumes another strafing run or " @@ -9838,7 +10157,7 @@ msgstr "" "Speed`。注意对于弹药量足够进行多次扫射的战机而言过短的间隔可能导致并不理想的行为例如四处游走或朝向怪异的方向,具体取决于 " "`[WeaponType] -> ROF` 和 `[AircraftType] -> Speed` 等其他因素。" -#: ../../New-or-Enhanced-Logics.md:2832 +#: ../../New-or-Enhanced-Logics.md:2945 msgid "" "There is a special case for aircraft spawned by `Type=SpyPlane` " "superweapons on `SpyPlane Approach` or `SpyPlane Overfly` mission where " @@ -9849,7 +10168,7 @@ msgstr "" "对于 `Type=SpyPlane` 超级武器生成的战机在 `SpyPlane Approach` 或 `SpyPlane Overfly` " "任务中的情况 `Strafing.Shots` 只有在其主武器上手动设置才会生效并决定地图揭示效果的最大次数而无视其他因素。" -#: ../../New-or-Enhanced-Logics.md:2835 +#: ../../New-or-Enhanced-Logics.md:2948 msgid "" "[SOMEWEAPON] ; WeaponType\n" "Strafing= ; boolean\n" @@ -9867,11 +10186,11 @@ msgstr "" "Strafing.TargetCell=false ; boolean\n" "Strafing.EndDelay= ; integer, game frames\n" -#: ../../New-or-Enhanced-Logics.md:2845 +#: ../../New-or-Enhanced-Logics.md:2958 msgid "Visual effect scatter" msgstr "视觉效果散布" -#: ../../New-or-Enhanced-Logics.md:2847 +#: ../../New-or-Enhanced-Logics.md:2960 msgid "" "You can now add a random offset to visual effect's (`IsLaser=true`, " "`IsElectricBolt=true` or `IsRadBeam=true`) target location if set " @@ -9880,7 +10199,7 @@ msgstr "" "现在你可以在 `VisualScatter` 设为 true " "时为视觉效果(`IsLaser=true`、`IsElectricBolt=true` 或 `IsRadBeam=true`)添加一个随机偏移。" -#: ../../New-or-Enhanced-Logics.md:2850 +#: ../../New-or-Enhanced-Logics.md:2963 msgid "" "[AudioVisual]\n" "VisualScatter.Min=0.03 ; floating point value, distance in cells\n" @@ -9896,7 +10215,7 @@ msgstr "" "[SOMEWEAPON] ; WeaponType\n" "VisualScatter=false ; boolean\n" -#: ../../New-or-Enhanced-Logics.md:2860 +#: ../../New-or-Enhanced-Logics.md:2973 msgid "" "This function is only used as an additional scattering visual display, " "which is different from `BallisticScatter.(Min/Max)` and can be used " @@ -9906,11 +10225,11 @@ msgstr "" "此功能仅叠加到**视觉效果**原本的散布上,也就是说它独立于 `BallisticScatter.(Min/Max)` " "且可共同使用,不会影响抛射体实际爆点的散布。" -#: ../../New-or-Enhanced-Logics.md:2863 +#: ../../New-or-Enhanced-Logics.md:2976 msgid "Weapon targeting filter" msgstr "武器瞄准筛选" -#: ../../New-or-Enhanced-Logics.md:2865 +#: ../../New-or-Enhanced-Logics.md:2978 msgid "" "![image](_static/images/weaponfilter.gif) *`Weapon target filter - " "different weapon used against enemies & allies as well as units & " @@ -9921,14 +10240,14 @@ msgstr "" "*[幽灵计划](https://www.moddb.com/mods/project-phantom) 中的武器瞄准筛选 - " "就像分别对单位和建筑使用那样对敌军和友军使用不同武器*" -#: ../../New-or-Enhanced-Logics.md:2868 +#: ../../New-or-Enhanced-Logics.md:2981 msgid "" "You can now specify which targets or houses a weapon can fire at. This " "also affects weapon selection, other than certain special cases where the" " selection is fixed." msgstr "现在你可以指定武器可以开火的目标或所属方。这还会影响武器选择,除了某些特殊情况下的固定选择。" -#: ../../New-or-Enhanced-Logics.md:2869 +#: ../../New-or-Enhanced-Logics.md:2982 msgid "" "`CanTarget.MaxHealth` and `CanTarget.MinHealth` set health percentage " "thresholds for allowed targets (TechnoTypes only) that the target's " @@ -9938,7 +10257,7 @@ msgstr "" "`CanTarget.MaxHealth` 和 `CanTarget.MinHealth` " "用于设置可被攻击的(仅单位)目标所需的血量阈值,分别要求目标血量必须高于和/或低于/等于的限制。若目标血量为 0 则跳过检查。" -#: ../../New-or-Enhanced-Logics.md:2872 +#: ../../New-or-Enhanced-Logics.md:2985 msgid "" "[SOMEWEAPON] ; WeaponType\n" "CanTarget=all ; List of Affected Target Enumeration " @@ -9956,7 +10275,7 @@ msgstr "" "CanTarget.MaxHealth=1.0 ; floating point value, percents or absolute\n" "CanTarget.MinHealth=0.0 ; floating point value, percents or absolute\n" -#: ../../New-or-Enhanced-Logics.md:2881 +#: ../../New-or-Enhanced-Logics.md:2994 msgid "" "`CanTarget` explicitly requires either `all` or `empty` to be listed for " "the weapon to be able to fire at cells containing no TechnoTypes." diff --git a/docs/locale/zh_CN/LC_MESSAGES/User-Interface.po b/docs/locale/zh_CN/LC_MESSAGES/User-Interface.po index 24773dd622..7cb022f5e2 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/User-Interface.po +++ b/docs/locale/zh_CN/LC_MESSAGES/User-Interface.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Phobos \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-16 13:44+0800\n" +"POT-Creation-Date: 2026-01-18 20:10+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -88,6 +88,12 @@ msgid "" "units when the production is on hold." msgstr "修复了若生产暂停那么添加或移除单位时侧边栏并不更新队列单位数量的问题。" +#: ../../User-Interface.md:14 +msgid "" +"Increased cursor update frequency by setting interval to 1ms instead of 16ms." +msgstr "" +"通过将间隔从 16 毫秒更改为 1 毫秒来提高光标更新频率。" + #: ../../User-Interface.md:16 msgid "" "You can use the improved vanilla font which can be found on [Phobos " @@ -144,7 +150,7 @@ msgid "" "developers/PhobosSupplementaries).*" msgstr "" "![image](_static/images/digital_display_shapes.png) *使用来自 [Phobos " -"补充仓库](https://github.com/Phobos-developers/PhobosSupplementaries) 示例 " +"补充资源库](https://github.com/Phobos-developers/PhobosSupplementaries) 中示例 " "Shape 文件的默认配置。*" #: ../../User-Interface.md:34 ../../User-Interface.md:146 @@ -527,7 +533,7 @@ msgid "" "An example shape file for digits can be found on [Phobos supplementaries " "repo](https://github.com/Phobos-developers/PhobosSupplementaries)." msgstr "" -"可以在 [Phobos 补充仓库](https://github.com/Phobos-" +"可以在 [Phobos 补充资源库](https://github.com/Phobos-" "developers/PhobosSupplementaries) 找到数字化显示的示例 Shape 文件。" #: ../../User-Interface.md:141 @@ -1661,7 +1667,7 @@ msgid "" "You can now disable hardcoded black dots that YR engine shows over empty " "spawn locations, which allows to use prettier and more correctly placed " "markers that are produced by Map Renderer instead." -msgstr "现在你可以禁用 YR 引擎在空置出生点显示的黑点,这允许使用由地图渲染器生成的更没关且位置正确的标记。" +msgstr "现在你可以禁用 YR 引擎在空置出生点显示的黑点,这允许使用由地图渲染器生成的更美观且位置正确的标记。" #: ../../User-Interface.md:521 ../../User-Interface.md:579 #: ../../User-Interface.md:608 ../../User-Interface.md:654 @@ -1758,16 +1764,14 @@ msgid "" "You can also use `Name` of TechnoType/SuperWeaponType to sort the cameo. " "They'll be compared after all the other rules but before comparing the " "CSF text of `UIName`." -msgstr "" -"你也可以使用单位/超级武器的 `Name` 来排列图标。它们将在所有其他规则之后、`UIName` 的 CSF 文本前被比较。" +msgstr "你也可以使用单位/超级武器的 `Name` 来排列图标。它们将在所有其他规则之后、`UIName` 的 CSF 文本前被比较。" #: ../../User-Interface.md:564 msgid "" "This is to prevent cameo order being disrupted by CSF change " "accidentally, like when you're using a translation pack of different " "language." -msgstr "" -"这用于避免图标顺序因 CSF 变更而被意外打乱,例如当你使用不同语言的翻译包时。" +msgstr "这用于避免图标顺序因 CSF 变更而被意外打乱,例如当你使用不同语言的翻译包时。" #: ../../User-Interface.md:567 msgid "" @@ -1935,7 +1939,7 @@ msgid "" "example." msgstr "" "如果你的 mod 使用原版字体文件,你可以使用改进的字体文件(v4 或更高版本;可以在 [Phobos " -"补充仓库](https://github.com/Phobos-developers/PhobosSupplementaries) " +"补充资源库](https://github.com/Phobos-developers/PhobosSupplementaries) " "中找到)其中包含所有提到的图标。否则你需要自己编辑字库文件,例如使用 [WWFontEditor](http://nyerguds" ".arsaneus-design.com/project_stuff/2016/WWFontEditor/release/?C=M;O=D) " "绘制它们。" @@ -2124,9 +2128,9 @@ msgid "" "vanilla-like assets for from [Phobos supplementaries](https://github.com" "/Phobos-developers/PhobosSupplementaries)*" msgstr "" -"![image](_static/images/sw_sidebar.png) *使用来自 [Phobos " -"补充仓库](https://github.com/Phobos-developers/PhobosSupplementaries) 中类原版 UI" -" 资产的超武侧边栏*" +"![image](_static/images/sw_sidebar.png) *使用 [Phobos " +"补充资源库](https://github.com/Phobos-developers/PhobosSupplementaries) 中类原版 " +"UI 资产的超武侧边栏*" #: ../../User-Interface.md:718 msgid "" @@ -2349,7 +2353,7 @@ msgid "" "example assets to use with vanilla graphics on [Phobos supplementaries " "repo](https://github.com/Phobos-developers/PhobosSupplementaries)." msgstr "" -"虽然该功能可以在没有任何额外图像的情况下使用,但你可以在 [Phobos 补充仓库](https://github.com/Phobos-" +"虽然该功能可以在没有任何额外图像的情况下使用,但你可以在 [Phobos 补充资源库](https://github.com/Phobos-" "developers/PhobosSupplementaries) 找到数与原版界面 UI 图像搭配使用的示例资产。" #: ../../User-Interface.md:787 diff --git a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po index 9b5282944e..ad1c82372f 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po +++ b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Phobos \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-12-26 20:55+0800\n" +"POT-Creation-Date: 2026-01-18 20:10+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -154,7 +154,7 @@ msgstr "" msgid "From older Phobos versions" msgstr "由旧版本 Phobos" -#: ../../Whats-New.md:26 +#: ../../Whats-New.md:26 ../../Whats-New.md:101 msgid "From 0.4" msgstr "由 0.4" @@ -596,10 +596,168 @@ msgstr "" "`DeployToFire` 部署者丢失目标的 Bug 修复现在始终开启。" #: ../../Whats-New.md:92 +msgid "" +"Changed tags" +msgstr "" +"被更改过的标签" + +#: ../../Whats-New.md:94 +msgid "" +"To standardize tag names for similar functions, prevent typos, or avoid " +"misunderstandings, replace them with new tag names." +msgstr "" +"出于相似功能标签名标准化、防止习惯性拼写导致错误以及避免语义误解目的,它们被替换为新的标签名。" + +#: ../../Whats-New.md:96 +msgid "From pre-0.5 devbuilds" +msgstr "由 pre-0.5 开发版" + +#: ../../Whats-New.md:98 ../../Whats-New.md:103 +msgid "The following tags were renamed:" +msgstr "以下标签被重命名:" + +#: ../../Whats-New.md:99 +msgid "" +"`[WarheadType] -> Crit.AffectAbovePercent` -> `[WarheadType] -> " +"Crit.AffectsAbovePercent`." +msgstr "" +"`[WarheadType] -> Crit.AffectAbovePercent` -> `[WarheadType] -> " +"Crit.AffectsAbovePercent`." + +#: ../../Whats-New.md:104 +msgid "" +"`[AttachEffectType] -> AffectTargets` -> `[AttachEffectType] -> " +"AffectsTarget`" +msgstr "" +"`[AttachEffectType] -> AffectTargets` -> `[AttachEffectType] -> " +"AffectsTarget`" + +#: ../../Whats-New.md:105 +msgid "" +"`[AttachEffectType] -> ReflectDamage.AffectsHouses` -> " +"`[AttachEffectType] -> ReflectDamage.AffectsHouse`" +msgstr "" +"`[AttachEffectType] -> ReflectDamage.AffectsHouses` -> " +"`[AttachEffectType] -> ReflectDamage.AffectsHouse`" + +#: ../../Whats-New.md:106 +msgid "" +"`[AttachEffectType/TechnoType] -> RevengeWeapon.AffectsHouses` -> " +"`[AttachEffectType/TechnoType] -> RevengeWeapon.AffectsHouse`" +msgstr "" +"`[AttachEffectType/TechnoType] -> RevengeWeapon.AffectsHouses` -> " +"`[AttachEffectType/TechnoType] -> RevengeWeapon.AffectsHouse`" + +#: ../../Whats-New.md:107 +msgid "`[TechnoType] -> AutoFire` -> `[TechnoType] -> AutoTargetOwnPosition`" +msgstr "`[TechnoType] -> AutoFire` -> `[TechnoType] -> AutoTargetOwnPosition`" + +#: ../../Whats-New.md:108 +msgid "" +"`[TechnoType] -> AutoFire.TargetSelf` -> `[TechnoType] -> " +"AutoTargetOwnPosition.Self`" +msgstr "" +"`[TechnoType] -> AutoFire.TargetSelf` -> `[TechnoType] -> " +"AutoTargetOwnPosition.Self`" + +#: ../../Whats-New.md:109 +msgid "" +"`[WarheadType] -> DetonateOnAllMapObjects.AffectHouses` -> `[WarheadType]" +" -> DetonateOnAllMapObjects.AffectsHouse`" +msgstr "" +"`[WarheadType] -> DetonateOnAllMapObjects.AffectHouses` -> `[WarheadType]" +" -> DetonateOnAllMapObjects.AffectsHouse`" + +#: ../../Whats-New.md:110 +msgid "" +"`[WarheadType] -> DetonateOnAllMapObjects.AffectTargets` -> " +"`[WarheadType] -> DetonateOnAllMapObjects.AffectsTarget`" +msgstr "" +"`[WarheadType] -> DetonateOnAllMapObjects.AffectTargets` -> " +"`[WarheadType] -> DetonateOnAllMapObjects.AffectsTarget`" + +#: ../../Whats-New.md:111 +msgid "" +"`[WarheadType] -> Crit.AffectBelowPercent` -> `[WarheadType] -> " +"Crit.AffectsBelowPercent`." +msgstr "" +"`[WarheadType] -> Crit.AffectBelowPercent` -> `[WarheadType] -> " +"Crit.AffectsBelowPercent`." + +#: ../../Whats-New.md:112 +msgid "`[WarheadType] -> Crit.Affects` -> `[WarheadType] -> Crit.AffectsTarget`" +msgstr "`[WarheadType] -> Crit.Affects` -> `[WarheadType] -> Crit.AffectsTarget`" + +#: ../../Whats-New.md:113 +msgid "" +"`[WarheadType] -> Crit.AffectsHouses` -> `[WarheadType] -> " +"Crit.AffectsHouse`" +msgstr "" +"`[WarheadType] -> Crit.AffectsHouses` -> `[WarheadType] -> " +"Crit.AffectsHouse`" + +msgid "" +"`[WarheadType] -> KillWeapon.Affects` -> `[WarheadType] -> " +"KillWeapon.AffectsTarget`" +msgstr "" +"`[WarheadType] -> KillWeapon.Affects` -> `[WarheadType] -> " +"KillWeapon.AffectsTarget`" + +#: ../../Whats-New.md:114 +msgid "" +"`[WarheadType] -> KillWeapon.AffectsHouses` -> `[WarheadType] -> " +"KillWeapon.AffectsHouse`" +msgstr "" +"`[WarheadType] -> KillWeapon.AffectsHouses` -> `[WarheadType] -> " +"KillWeapon.AffectsHouse`" + +msgid "" +"`[WarheadType] -> KillWeapon.OnFirer.Affects` -> `[WarheadType] -> " +"KillWeapon.OnFirer.AffectsTarget`" +msgstr "" +"`[WarheadType] -> KillWeapon.OnFirer.Affects` -> `[WarheadType] -> " +"KillWeapon.OnFirer.AffectsTarget`" + +#: ../../Whats-New.md:115 +msgid "" +"`[WarheadType] -> KillWeapon.OnFirer.AffectsHouses` -> `[WarheadType] -> " +"KillWeapon.OnFirer.AffectsHouse`" +msgstr "" +"`[WarheadType] -> KillWeapon.OnFirer.AffectsHouses` -> `[WarheadType] -> " +"KillWeapon.OnFirer.AffectsHouse`" + +#: ../../Whats-New.md:116 +msgid "" +"`[WarheadType/SuperWeaponType] -> Convert(N).AffectedHouses` -> " +"`[WarheadType/SuperWeaponType] -> Convert(N).AffectsHouse`" +msgstr "" +"`[WarheadType/SuperWeaponType] -> Convert(N).AffectedHouses` -> " +"`[WarheadType/SuperWeaponType] -> Convert(N).AffectsHouse`" + +#: ../../Whats-New.md:117 +msgid "" +"`[SuperWeaponType] -> LimboKill.Affected` -> `[SuperWeaponType] -> " +"LimboKill.AffectsHouse`" +msgstr "" +"`[SuperWeaponType] -> LimboKill.Affected` -> `[SuperWeaponType] -> " +"LimboKill.AffectsHouse`" + +#: ../../Whats-New.md:120 +msgid "" +"You can use the [*MigrationUtility*](https://github.com/Phobos-" +"developers/PhobosSupplementaries/tree/develop/MigrationUtility) in the " +"PhobosSupplementaries repository to conveniently complete these " +"migrations." +msgstr "" +"你可以使用 Phobos 补充资源库 中的 [*迁移工具*](https://github.com/Phobos-" +"developers/PhobosSupplementaries/tree/develop/MigrationUtility) 轻松完成这些迁移。" + +#: ../../Whats-New.md:123 msgid "New user settings in RA2MD.INI" msgstr "RA2MD.INI 中新增的用户设置项" -#: ../../Whats-New.md:94 +#: ../../Whats-New.md:125 msgid "" "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 " @@ -609,7 +767,7 @@ msgstr "" "这些是由 Phobos 各种功能所新添加的用户设置标签。大多可以在 [用户界面特性](User-Interface.md) 或 " "[杂项内容](Miscellanous.md) 部分找到。你可以用搜索功能快速查找。" -#: ../../Whats-New.md:95 +#: ../../Whats-New.md:126 msgid "" "[Phobos]\n" "CampaignDefaultGameSpeed=4 ; integer\n" @@ -649,7 +807,7 @@ msgstr "" "HideLaserTrailEffects=false ; boolean\n" "HideShakeEffects=false ; boolean\n" -#: ../../Whats-New.md:116 +#: ../../Whats-New.md:147 msgid "For Map Editor (Final Alert 2)" msgstr "对地图编辑器(Final Alert 2)的更改" @@ -657,11 +815,11 @@ msgstr "对地图编辑器(Final Alert 2)的更改" msgid "Click to show" msgstr "点击展开" -#: ../../Whats-New.md:120 +#: ../../Whats-New.md:151 msgid "In `FAData.ini`:" msgstr "在 `FAData.ini`:" -#: ../../Whats-New.md:121 +#: ../../Whats-New.md:152 msgid "" "[ParamTypes]\n" "47=Structures,28\n" @@ -683,115 +841,128 @@ msgid "" "104=Banner ID,0\n" "\n" "[EventsRA2]\n" -"500=Local variable is greater than,48,6,0,0,[LONG DESC],0,1,500,1\n" -"501=Local variable is less than,48,6,0,0,[LONG DESC],0,1,501,1\n" -"502=Local variable equals to,48,6,0,0,[LONG DESC],0,1,502,1\n" -"503=Local variable is greater than or equals to,48,6,0,0,[LONG " +"500=Local variable is greater than...,48,6,0,0,[LONG DESC],0,1,500,1\n" +"501=Local variable is less than...,48,6,0,0,[LONG DESC],0,1,501,1\n" +"502=Local variable equals to...,48,6,0,0,[LONG DESC],0,1,502,1\n" +"503=Local variable is greater than or equals to...,48,6,0,0,[LONG " "DESC],0,1,503,1\n" -"504=Local variable is less than or equals,48,6,0,0,[LONG DESC],0,1,504,1\n" -"505=Local variable and X is true,48,6,0,0,[LONG DESC],0,1,505,1\n" -"506=Global variable is greater than,48,6,0,0,[LONG DESC],0,1,506,1\n" -"507=Global variable is less than,48,6,0,0,[LONG DESC],0,1,507,1\n" -"508=Global variable equals to,48,6,0,0,[LONG DESC],0,1,508,1\n" -"509=Global variable is greater than or queals to,48,6,0,0,[LONG " +"504=Local variable is less than or equals...,48,6,0,0,[LONG " +"DESC],0,1,504,1\n" +"505=Local variable and X is true...,48,6,0,0,[LONG DESC],0,1,505,1\n" +"506=Global variable is greater than...,48,6,0,0,[LONG DESC],0,1,506,1\n" +"507=Global variable is less than...,48,6,0,0,[LONG DESC],0,1,507,1\n" +"508=Global variable equals to...,48,6,0,0,[LONG DESC],0,1,508,1\n" +"509=Global variable is greater than or queals to...,48,6,0,0,[LONG " "DESC],0,1,509,1\n" -"510=Global variable is less than or equals to,48,6,0,0,[LONG " +"510=Global variable is less than or equals to...,48,6,0,0,[LONG " "DESC],0,1,510,1\n" -"511=Global variable and X is true,48,6,0,0,[LONG DESC],0,1,511,1\n" -"512=Local variable is greater than local variable,48,3,0,0,[LONG " +"511=Global variable and X is true...,48,6,0,0,[LONG DESC],0,1,511,1\n" +"512=Local variable is greater than local variable...,48,3,0,0,[LONG " "DESC],0,1,500,1\n" -"513=Local variable is less than local variable,48,3,0,0,[LONG " +"513=Local variable is less than local variable...,48,3,0,0,[LONG " "DESC],0,1,501,1\n" -"514=Local variable equals to local variable,48,3,0,0,[LONG " +"514=Local variable equals to local variable...,48,3,0,0,[LONG " "DESC],0,1,502,1\n" "515=Local variable is greater than or equals to local " -"variable,48,3,0,0,[LONG DESC],0,1,503,1\n" -"516=Local variable is less than or equals local variable,48,3,0,0,[LONG " -"DESC],0,1,504,1\n" -"517=Local variable and local variable is true,48,3,0,0,[LONG " +"variable...,48,3,0,0,[LONG DESC],0,1,503,1\n" +"516=Local variable is less than or equals local " +"variable...,48,3,0,0,[LONG DESC],0,1,504,1\n" +"517=Local variable and local variable is true...,48,3,0,0,[LONG " "DESC],0,1,505,1\n" -"518=Global variable is greater than local variable,48,3,0,0,[LONG " +"518=Global variable is greater than local variable...,48,3,0,0,[LONG " "DESC],0,1,506,1\n" -"519=Global variable is less than local variable,48,3,0,0,[LONG " +"519=Global variable is less than local variable...,48,3,0,0,[LONG " "DESC],0,1,507,1\n" -"520=Global variable equals to local variable,48,3,0,0,[LONG " +"520=Global variable equals to local variable...,48,3,0,0,[LONG " "DESC],0,1,508,1\n" "521=Global variable is greater than or queals to local " -"variable,48,3,0,0,[LONG DESC],0,1,509,1\n" +"variable...,48,3,0,0,[LONG DESC],0,1,509,1\n" "522=Global variable is less than or equals to local " -"variable,48,3,0,0,[LONG DESC],0,1,510,1\n" -"523=Global variable and local variable is true,48,3,0,0,[LONG " +"variable...,48,3,0,0,[LONG DESC],0,1,510,1\n" +"523=Global variable and local variable is true...,48,3,0,0,[LONG " "DESC],0,1,511,1\n" -"524=Local variable is greater than global variable,48,35,0,0,[LONG " +"524=Local variable is greater than global variable...,48,35,0,0,[LONG " "DESC],0,1,500,1\n" -"525=Local variable is less than global variable,48,35,0,0,[LONG " +"525=Local variable is less than global variable...,48,35,0,0,[LONG " "DESC],0,1,501,1\n" -"526=Local variable equals to global variable,48,35,0,0,[LONG " +"526=Local variable equals to global variable...,48,35,0,0,[LONG " "DESC],0,1,502,1\n" "527=Local variable is greater than or equals to global " -"variable,48,35,0,0,[LONG DESC],0,1,503,1\n" -"528=Local variable is less than or equals global variable,48,35,0,0,[LONG" -" DESC],0,1,504,1\n" -"529=Local variable and global variable is true,48,35,0,0,[LONG " +"variable...,48,35,0,0,[LONG DESC],0,1,503,1\n" +"528=Local variable is less than or equals global " +"variable...,48,35,0,0,[LONG DESC],0,1,504,1\n" +"529=Local variable and global variable is true...,48,35,0,0,[LONG " "DESC],0,1,505,1\n" -"530=Global variable is greater than global variable,48,35,0,0,[LONG " +"530=Global variable is greater than global variable...,48,35,0,0,[LONG " "DESC],0,1,506,1\n" -"531=Global variable is less than global variable,48,35,0,0,[LONG " +"531=Global variable is less than global variable...,48,35,0,0,[LONG " "DESC],0,1,507,1\n" -"532=Global variable equals to global variable,48,35,0,0,[LONG " +"532=Global variable equals to global variable...,48,35,0,0,[LONG " "DESC],0,1,508,1\n" "533=Global variable is greater than or queals to global " -"variable,48,35,0,0,[LONG DESC],0,1,509,1\n" +"variable...,48,35,0,0,[LONG DESC],0,1,509,1\n" "534=Global variable is less than or equals to global " -"variable,48,35,0,0,[LONG DESC],0,1,510,1\n" -"535=Global variable and global variable is true,48,35,0,0,[LONG " +"variable...,48,35,0,0,[LONG DESC],0,1,510,1\n" +"535=Global variable and global variable is true...,48,35,0,0,[LONG " "DESC],0,1,511,1\n" "600=Shield of the attached object is broken,0,0,0,0,[LONG DESC],0,1,600,1" "\n" -"601=House owns Techno Type,68,46,0,0,[LONG DESC],0,1,601,1\n" -"602=House doesn't own Techno Type,68,46,0,0,[LONG DESC],0,1,602,1\n" -"604=Techno Type Entered Cell,68,46,0,0,[LONG DESC],0,1,604,1\n" -"605=AI Target Type Entered Cell,68,70,0,0,[LONG DESC],0,1,605,1\n" -"606=AttachEffect is attaching to a Techno,-2,71,0,0,[LONG DESC],0,1,606,1" -"\n" +"601=House owns Techno Type...,68,46,0,0,[LONG DESC],0,1,601,1\n" +"602=House doesn't own Techno Type...,68,46,0,0,[LONG DESC],0,1,602,1\n" +"604=Techno Type Entered Cell...,68,46,0,0,[LONG DESC],0,1,604,1\n" +"605=AI Target Type Entered Cell...,68,70,0,0,[LONG DESC],0,1,605,1\n" +"606=AttachEffect is attaching to a Techno...,-2,71,0,0,[LONG " +"DESC],0,1,606,1\n" "\n" "[ActionsRA2]\n" "41=Play animation at a waypoint...,0,25,69,0,0,0,1,0,0,[LONG " "DESC].,0,1,41\n" "125=Build at...,-10,47,0,65,0,0,1,0,0,[LONG DESC],0,1,125\n" -"500=Save game,-4,13,0,0,0,0,0,0,0,[LONG DESC],0,1,500,1\n" -"501=Edit variable,0,56,55,6,54,0,0,0,0,[LONG DESC],0,1,501,1\n" -"502=Generate random number,0,56,57,58,54,0,0,0,0,[LONG DESC],0,1,502,1\n" -"503=Print variable value,0,56,54,0,0,0,0,0,0,[LONG DESC],0,1,503,0\n" -"504=Binary operation,0,56,55,60,54,59,0,0,0,[LONG DESC],0,1,504,1\n" -"505=Fire Super Weapon at specified location " +"500=Save game... (Phobos),-4,13,0,0,0,0,0,0,0,[LONG DESC],0,1,500,1\n" +"501=Edit variable... (Phobos),0,56,55,6,54,0,0,0,0,[LONG DESC],0,1,501,1\n" +"502=Generate random number... (Phobos),0,56,57,58,54,0,0,0,0,[LONG " +"DESC],0,1,502,1\n" +"503=Print variable value... (Phobos),0,56,54,0,0,0,0,0,0,[LONG " +"DESC],0,1,503,0\n" +"504=Binary operation... (Phobos),0,56,55,60,54,59,0,0,0,[LONG " +"DESC],0,1,504,1\n" +"505=Fire Super Weapon at specified location... " "(Phobos),0,0,20,2,21,22,0,0,0,Launch a Super Weapon from " "[SuperWeaponTypes] list at a specified location. House=-1 means random " "target that isn't neutral. House=-2 means the first neutral house. " "House=-3 means random human target. Coordinate X=-1 means random. " "Coordinate Y=-1 means random,0,1,505\n" -"506=Fire Super Weapon at specified waypoint " +"506=Fire Super Weapon at specified waypoint... " "(Phobos),0,0,20,2,30,0,0,0,0,Launch a Super Weapon from " "[SuperWeaponTypes] list at a specified waypoint. House=-1 means random " "target that isn't neutral. House=-2 means the first neutral house. " "House=-3 means random human target. Coordinate X=-1 means random. " "Coordinate Y=-1 means random,0,1,506\n" -"510=Toggle MCV Redeployablility (Phobos),0,0,15,0,0,0,0,0,0, Set " +"510=Toggle MCV Redeployablility... (Phobos),0,0,15,0,0,0,0,0,0, Set " "MCVRedeploys to the given value,0,1,510\n" -"606=Edit hate-value (Phobos),0,2,55,6,0,0,0,0,0, Edit the hate-value that" -" trigger houses to other houses. -1 works for all houses.,0,1,606\n" -"607=Clear hate-value (Phobos),0,2,0,0,0,0,0,0,0, Clear the hate-value " +"511=Building Type undeploy at... (Phobos),-10,47,2,0,0,0,1,0,0,Recycle " +"the building type into a vehicle and move it to the specified waypoint. " +"If the type is ``, recycle all buildings.,0,1,511\n" +"606=Edit hate-value... (Phobos),0,2,55,6,0,0,0,0,0, Edit the hate-value " +"that trigger houses to other houses. -1 works for all houses.,0,1,606\n" +"607=Clear hate-value... (Phobos),0,2,0,0,0,0,0,0,0, Clear the hate-value " "that trigger houses to other houses. -1 works for all houses.,0,1,607\n" -"608=Set force enemy (Phobos),0,0,2,0,0,0,0,0,0, Force an enemy, it will " -"not change with the change of hate-value. -1 will remove the forced " +"608=Set force enemy... (Phobos),0,0,2,0,0,0,0,0,0, Force an enemy, it " +"will not change with the change of hate-value. -1 will remove the forced " "enemy, -2 will never have any enemies.,0,1,608\n" -"800=Display banner and local variable " +"609=Set radar mode... (Phobos),0,0,15,0,0,0,0,0,0, Trigger's house can " +"modify the current radar mode. 0 for requires full-power and building, 1 " +"for free radar, 2 for forced enable, 3 for forced disable.,0,1,609\n" +"610=Set team delay... (Phobos),0,0,6,0,0,0,0,0,0, Trigger's house can " +"customize TeamDelay. When the value is less than 0 in " +"`[General]>TeamDelays`.,0,1,610\n" +"800=Display banner and local variable... " "(Phobos),-4,101,104,102,103,3,0,0,0,Draw banner on screen and replace " "banner with same ID,0,1,800\n" -"801=Display banner and global variable " +"801=Display banner and global variable... " "(Phobos),-4,101,104,102,103,35,0,0,0,Draw banner on screen and replace " "banner with same ID,0,1,801\n" -"802=Delete banner (Phobos),0,104,0,0,0,0,0,0,0,Delete banner with " +"802=Delete banner... (Phobos),0,104,0,0,0,0,0,0,0,Delete banner with " "ID,0,1,802\n" "\n" "; FOLLOWING ENTRIES REQUIRE FA2SP.DLL (by secsome)\n" @@ -946,115 +1117,128 @@ msgstr "" "104=Banner ID,0\n" "\n" "[EventsRA2]\n" -"500=Local variable is greater than,48,6,0,0,[LONG DESC],0,1,500,1\n" -"501=Local variable is less than,48,6,0,0,[LONG DESC],0,1,501,1\n" -"502=Local variable equals to,48,6,0,0,[LONG DESC],0,1,502,1\n" -"503=Local variable is greater than or equals to,48,6,0,0,[LONG " +"500=Local variable is greater than...,48,6,0,0,[LONG DESC],0,1,500,1\n" +"501=Local variable is less than...,48,6,0,0,[LONG DESC],0,1,501,1\n" +"502=Local variable equals to...,48,6,0,0,[LONG DESC],0,1,502,1\n" +"503=Local variable is greater than or equals to...,48,6,0,0,[LONG " "DESC],0,1,503,1\n" -"504=Local variable is less than or equals,48,6,0,0,[LONG DESC],0,1,504,1\n" -"505=Local variable and X is true,48,6,0,0,[LONG DESC],0,1,505,1\n" -"506=Global variable is greater than,48,6,0,0,[LONG DESC],0,1,506,1\n" -"507=Global variable is less than,48,6,0,0,[LONG DESC],0,1,507,1\n" -"508=Global variable equals to,48,6,0,0,[LONG DESC],0,1,508,1\n" -"509=Global variable is greater than or queals to,48,6,0,0,[LONG " +"504=Local variable is less than or equals...,48,6,0,0,[LONG " +"DESC],0,1,504,1\n" +"505=Local variable and X is true...,48,6,0,0,[LONG DESC],0,1,505,1\n" +"506=Global variable is greater than...,48,6,0,0,[LONG DESC],0,1,506,1\n" +"507=Global variable is less than...,48,6,0,0,[LONG DESC],0,1,507,1\n" +"508=Global variable equals to...,48,6,0,0,[LONG DESC],0,1,508,1\n" +"509=Global variable is greater than or queals to...,48,6,0,0,[LONG " "DESC],0,1,509,1\n" -"510=Global variable is less than or equals to,48,6,0,0,[LONG " +"510=Global variable is less than or equals to...,48,6,0,0,[LONG " "DESC],0,1,510,1\n" -"511=Global variable and X is true,48,6,0,0,[LONG DESC],0,1,511,1\n" -"512=Local variable is greater than local variable,48,3,0,0,[LONG " +"511=Global variable and X is true...,48,6,0,0,[LONG DESC],0,1,511,1\n" +"512=Local variable is greater than local variable...,48,3,0,0,[LONG " "DESC],0,1,500,1\n" -"513=Local variable is less than local variable,48,3,0,0,[LONG " +"513=Local variable is less than local variable...,48,3,0,0,[LONG " "DESC],0,1,501,1\n" -"514=Local variable equals to local variable,48,3,0,0,[LONG " +"514=Local variable equals to local variable...,48,3,0,0,[LONG " "DESC],0,1,502,1\n" "515=Local variable is greater than or equals to local " -"variable,48,3,0,0,[LONG DESC],0,1,503,1\n" -"516=Local variable is less than or equals local variable,48,3,0,0,[LONG " -"DESC],0,1,504,1\n" -"517=Local variable and local variable is true,48,3,0,0,[LONG " +"variable...,48,3,0,0,[LONG DESC],0,1,503,1\n" +"516=Local variable is less than or equals local " +"variable...,48,3,0,0,[LONG DESC],0,1,504,1\n" +"517=Local variable and local variable is true...,48,3,0,0,[LONG " "DESC],0,1,505,1\n" -"518=Global variable is greater than local variable,48,3,0,0,[LONG " +"518=Global variable is greater than local variable...,48,3,0,0,[LONG " "DESC],0,1,506,1\n" -"519=Global variable is less than local variable,48,3,0,0,[LONG " +"519=Global variable is less than local variable...,48,3,0,0,[LONG " "DESC],0,1,507,1\n" -"520=Global variable equals to local variable,48,3,0,0,[LONG " +"520=Global variable equals to local variable...,48,3,0,0,[LONG " "DESC],0,1,508,1\n" "521=Global variable is greater than or queals to local " -"variable,48,3,0,0,[LONG DESC],0,1,509,1\n" +"variable...,48,3,0,0,[LONG DESC],0,1,509,1\n" "522=Global variable is less than or equals to local " -"variable,48,3,0,0,[LONG DESC],0,1,510,1\n" -"523=Global variable and local variable is true,48,3,0,0,[LONG " +"variable...,48,3,0,0,[LONG DESC],0,1,510,1\n" +"523=Global variable and local variable is true...,48,3,0,0,[LONG " "DESC],0,1,511,1\n" -"524=Local variable is greater than global variable,48,35,0,0,[LONG " +"524=Local variable is greater than global variable...,48,35,0,0,[LONG " "DESC],0,1,500,1\n" -"525=Local variable is less than global variable,48,35,0,0,[LONG " +"525=Local variable is less than global variable...,48,35,0,0,[LONG " "DESC],0,1,501,1\n" -"526=Local variable equals to global variable,48,35,0,0,[LONG " +"526=Local variable equals to global variable...,48,35,0,0,[LONG " "DESC],0,1,502,1\n" "527=Local variable is greater than or equals to global " -"variable,48,35,0,0,[LONG DESC],0,1,503,1\n" -"528=Local variable is less than or equals global variable,48,35,0,0,[LONG" -" DESC],0,1,504,1\n" -"529=Local variable and global variable is true,48,35,0,0,[LONG " +"variable...,48,35,0,0,[LONG DESC],0,1,503,1\n" +"528=Local variable is less than or equals global " +"variable...,48,35,0,0,[LONG DESC],0,1,504,1\n" +"529=Local variable and global variable is true...,48,35,0,0,[LONG " "DESC],0,1,505,1\n" -"530=Global variable is greater than global variable,48,35,0,0,[LONG " +"530=Global variable is greater than global variable...,48,35,0,0,[LONG " "DESC],0,1,506,1\n" -"531=Global variable is less than global variable,48,35,0,0,[LONG " +"531=Global variable is less than global variable...,48,35,0,0,[LONG " "DESC],0,1,507,1\n" -"532=Global variable equals to global variable,48,35,0,0,[LONG " +"532=Global variable equals to global variable...,48,35,0,0,[LONG " "DESC],0,1,508,1\n" "533=Global variable is greater than or queals to global " -"variable,48,35,0,0,[LONG DESC],0,1,509,1\n" +"variable...,48,35,0,0,[LONG DESC],0,1,509,1\n" "534=Global variable is less than or equals to global " -"variable,48,35,0,0,[LONG DESC],0,1,510,1\n" -"535=Global variable and global variable is true,48,35,0,0,[LONG " +"variable...,48,35,0,0,[LONG DESC],0,1,510,1\n" +"535=Global variable and global variable is true...,48,35,0,0,[LONG " "DESC],0,1,511,1\n" "600=Shield of the attached object is broken,0,0,0,0,[LONG DESC],0,1,600,1" "\n" -"601=House owns Techno Type,68,46,0,0,[LONG DESC],0,1,601,1\n" -"602=House doesn't own Techno Type,68,46,0,0,[LONG DESC],0,1,602,1\n" -"604=Techno Type Entered Cell,68,46,0,0,[LONG DESC],0,1,604,1\n" -"605=AI Target Type Entered Cell,68,70,0,0,[LONG DESC],0,1,605,1\n" -"606=AttachEffect is attaching to a Techno,-2,71,0,0,[LONG DESC],0,1,606,1" -"\n" +"601=House owns Techno Type...,68,46,0,0,[LONG DESC],0,1,601,1\n" +"602=House doesn't own Techno Type...,68,46,0,0,[LONG DESC],0,1,602,1\n" +"604=Techno Type Entered Cell...,68,46,0,0,[LONG DESC],0,1,604,1\n" +"605=AI Target Type Entered Cell...,68,70,0,0,[LONG DESC],0,1,605,1\n" +"606=AttachEffect is attaching to a Techno...,-2,71,0,0,[LONG " +"DESC],0,1,606,1\n" "\n" "[ActionsRA2]\n" "41=Play animation at a waypoint...,0,25,69,0,0,0,1,0,0,[LONG " "DESC].,0,1,41\n" "125=Build at...,-10,47,0,65,0,0,1,0,0,[LONG DESC],0,1,125\n" -"500=Save game,-4,13,0,0,0,0,0,0,0,[LONG DESC],0,1,500,1\n" -"501=Edit variable,0,56,55,6,54,0,0,0,0,[LONG DESC],0,1,501,1\n" -"502=Generate random number,0,56,57,58,54,0,0,0,0,[LONG DESC],0,1,502,1\n" -"503=Print variable value,0,56,54,0,0,0,0,0,0,[LONG DESC],0,1,503,0\n" -"504=Binary operation,0,56,55,60,54,59,0,0,0,[LONG DESC],0,1,504,1\n" -"505=Fire Super Weapon at specified location " +"500=Save game... (Phobos),-4,13,0,0,0,0,0,0,0,[LONG DESC],0,1,500,1\n" +"501=Edit variable... (Phobos),0,56,55,6,54,0,0,0,0,[LONG DESC],0,1,501,1\n" +"502=Generate random number... (Phobos),0,56,57,58,54,0,0,0,0,[LONG " +"DESC],0,1,502,1\n" +"503=Print variable value... (Phobos),0,56,54,0,0,0,0,0,0,[LONG " +"DESC],0,1,503,0\n" +"504=Binary operation... (Phobos),0,56,55,60,54,59,0,0,0,[LONG " +"DESC],0,1,504,1\n" +"505=Fire Super Weapon at specified location... " "(Phobos),0,0,20,2,21,22,0,0,0,Launch a Super Weapon from " "[SuperWeaponTypes] list at a specified location. House=-1 means random " "target that isn't neutral. House=-2 means the first neutral house. " "House=-3 means random human target. Coordinate X=-1 means random. " "Coordinate Y=-1 means random,0,1,505\n" -"506=Fire Super Weapon at specified waypoint " +"506=Fire Super Weapon at specified waypoint... " "(Phobos),0,0,20,2,30,0,0,0,0,Launch a Super Weapon from " "[SuperWeaponTypes] list at a specified waypoint. House=-1 means random " "target that isn't neutral. House=-2 means the first neutral house. " "House=-3 means random human target. Coordinate X=-1 means random. " "Coordinate Y=-1 means random,0,1,506\n" -"510=Toggle MCV Redeployablility (Phobos),0,0,15,0,0,0,0,0,0, Set " +"510=Toggle MCV Redeployablility... (Phobos),0,0,15,0,0,0,0,0,0, Set " "MCVRedeploys to the given value,0,1,510\n" -"606=Edit hate-value (Phobos),0,2,55,6,0,0,0,0,0, Edit the hate-value that" -" trigger houses to other houses. -1 works for all houses.,0,1,606\n" -"607=Clear hate-value (Phobos),0,2,0,0,0,0,0,0,0, Clear the hate-value " +"511=Building Type undeploy at... (Phobos),-10,47,2,0,0,0,1,0,0,Recycle " +"the building type into a vehicle and move it to the specified waypoint. " +"If the type is ``, recycle all buildings.,0,1,511\n" +"606=Edit hate-value... (Phobos),0,2,55,6,0,0,0,0,0, Edit the hate-value " +"that trigger houses to other houses. -1 works for all houses.,0,1,606\n" +"607=Clear hate-value... (Phobos),0,2,0,0,0,0,0,0,0, Clear the hate-value " "that trigger houses to other houses. -1 works for all houses.,0,1,607\n" -"608=Set force enemy (Phobos),0,0,2,0,0,0,0,0,0, Force an enemy, it will " -"not change with the change of hate-value. -1 will remove the forced " +"608=Set force enemy... (Phobos),0,0,2,0,0,0,0,0,0, Force an enemy, it " +"will not change with the change of hate-value. -1 will remove the forced " "enemy, -2 will never have any enemies.,0,1,608\n" -"800=Display banner and local variable " +"609=Set radar mode... (Phobos),0,0,15,0,0,0,0,0,0, Trigger's house can " +"modify the current radar mode. 0 for requires full-power and building, 1 " +"for free radar, 2 for forced enable, 3 for forced disable.,0,1,609\n" +"610=Set team delay... (Phobos),0,0,6,0,0,0,0,0,0, Trigger's house can " +"customize TeamDelay. When the value is less than 0 in " +"`[General]>TeamDelays`.,0,1,610\n" +"800=Display banner and local variable... " "(Phobos),-4,101,104,102,103,3,0,0,0,Draw banner on screen and replace " "banner with same ID,0,1,800\n" -"801=Display banner and global variable " +"801=Display banner and global variable... " "(Phobos),-4,101,104,102,103,35,0,0,0,Draw banner on screen and replace " "banner with same ID,0,1,801\n" -"802=Delete banner (Phobos),0,104,0,0,0,0,0,0,0,Delete banner with " +"802=Delete banner... (Phobos),0,104,0,0,0,0,0,0,0,Delete banner with " "ID,0,1,802\n" "\n" "; FOLLOWING ENTRIES REQUIRE FA2SP.DLL (by secsome)\n" @@ -1189,21 +1373,21 @@ msgstr "" "26=Global variables,-5\n" "27=Global variables,-6\n" -#: ../../Whats-New.md:336 +#: ../../Whats-New.md:370 msgid "Changelog" msgstr "更新日志" -#: ../../Whats-New.md:338 +#: ../../Whats-New.md:372 msgid "Version TBD (develop branch nightly builds)" msgstr "待定版本(开发分支自动构建版本)" -#: ../../Whats-New.md:343 ../../Whats-New.md:574 ../../Whats-New.md:969 -#: ../../Whats-New.md:1000 ../../Whats-New.md:1203 ../../Whats-New.md:1231 -#: ../../Whats-New.md:1248 ../../Whats-New.md:1306 +#: ../../Whats-New.md:377 ../../Whats-New.md:627 ../../Whats-New.md:1022 +#: ../../Whats-New.md:1053 ../../Whats-New.md:1256 ../../Whats-New.md:1284 +#: ../../Whats-New.md:1301 ../../Whats-New.md:1359 msgid "New:" msgstr "新增内容:" -#: ../../Whats-New.md:344 +#: ../../Whats-New.md:378 msgid "" "[Allow using waypoints, area guard and attack move with aircraft](Fixed-" "or-Improved-Logics.md#extended-aircraft-missions) (by CrimRecya)" @@ -1211,19 +1395,19 @@ msgstr "" "[允许战机使用路径点、区域警戒和移动攻击](Fixed-or-Improved-Logics.md#extended-aircraft-" "missions)(by CrimRecya)" -#: ../../Whats-New.md:345 +#: ../../Whats-New.md:379 msgid "" "[Enhanced Straight trajectory](New-or-Enhanced-Logics.md#straight-" "trajectory) (by CrimRecya)" msgstr "[增强的直线弹道](New-or-Enhanced-Logics.md#straight-trajectory)(by CrimRecya)" -#: ../../Whats-New.md:346 +#: ../../Whats-New.md:380 msgid "" "[Enable building production queue](User-Interface.md#building-production-" "queue) (by CrimRecya)" msgstr "[启用建筑生产队列](User-Interface.md#building-production-queue)(by CrimRecya)" -#: ../../Whats-New.md:347 +#: ../../Whats-New.md:381 msgid "" "[Custom exit cell for infantry factory](Fixed-or-Improved-Logics.md" "#custom-exit-cell-for-infantry-factory) (by Starkku)" @@ -1231,7 +1415,7 @@ msgstr "" "[自定义兵营退出单元格](Fixed-or-Improved-Logics.md#custom-exit-cell-for-infantry-" "factory)(by Starkku)" -#: ../../Whats-New.md:348 +#: ../../Whats-New.md:382 msgid "" "[Option for vehicles to keep target when issued move command](Fixed-or-" "Improved-Logics.md#retain-target-on-movement-command) (by Starkku)" @@ -1239,7 +1423,7 @@ msgstr "" "[设置载具在发出移动命令时是否保持目标](Fixed-or-Improved-Logics.md#retain-target-on-" "movement-command)(by Starkku)" -#: ../../Whats-New.md:349 +#: ../../Whats-New.md:383 msgid "" "[Skip anim delay for burst fire](Fixed-or-Improved-Logics.md#skip-anim-" "delay-for-burst-fire) (by TaranDahl)" @@ -1247,7 +1431,7 @@ msgstr "" "[为有 `Burst` 的武器跳过建筑开火前摇动画](Fixed-or-Improved-Logics.md#skip-anim-delay-" "for-burst-fire)(by TaranDahl)" -#: ../../Whats-New.md:350 +#: ../../Whats-New.md:384 msgid "" "[Extending `Power` to all TechnoTypes](Fixed-or-Improved-Logics.md#power-" "drain-for-units) (by Morton)" @@ -1255,13 +1439,13 @@ msgstr "" "[将 `Power` 拓展到所有科技类型](Fixed-or-Improved-Logics.md#power-drain-for-" "units)(by Morton)" -#: ../../Whats-New.md:351 +#: ../../Whats-New.md:385 msgid "" "[New Parabola trajectory](New-or-Enhanced-Logics.md#parabola-trajectory) " "(by CrimRecya)" msgstr "[新的抛物线弹道](New-or-Enhanced-Logics.md#parabola-trajectory)(by CrimRecya)" -#: ../../Whats-New.md:352 +#: ../../Whats-New.md:386 msgid "" "[Type select for buildings](User-Interface.md#type-select-for-buildings) " "(code by TaranDahl, doc by Ollerus)" @@ -1269,7 +1453,7 @@ msgstr "" "[建筑的类型选择](User-Interface.md#type-select-for-buildings)(代码 By TaranDahl,文档" " by Ollerus)" -#: ../../Whats-New.md:353 +#: ../../Whats-New.md:387 msgid "" "[Raise alert when technos are taking damage](New-or-Enhanced-Logics.md" "#raise-alert-when-technos-are-taking-damage) (by TaranDahl)" @@ -1277,7 +1461,7 @@ msgstr "" "[当科技类型受到伤害时发出警报](New-or-Enhanced-Logics.md#raise-alert-when-technos-are-" "taking-damage)(by TaranDahl)" -#: ../../Whats-New.md:354 +#: ../../Whats-New.md:388 msgid "" "[Enhanced Bombard trajectory](New-or-Enhanced-Logics.md#bombard-" "trajectory) (by CrimRecya & Ollerus, based on knowledge of NaotoYuuki)" @@ -1285,7 +1469,7 @@ msgstr "" "[增强的轰击弹道](New-or-Enhanced-Logics.md#bombard-trajectory)(by CrimRecya 与 " "Ollerus,基于 NaotoYuuki 的知识)" -#: ../../Whats-New.md:355 +#: ../../Whats-New.md:389 msgid "" "[Toggle waypoint for building](Fixed-or-Improved-Logics.md#waypoints-for-" "buildings) (by TaranDahl)" @@ -1293,7 +1477,7 @@ msgstr "" "[建筑路径点开关](Fixed-or-Improved-Logics.md#waypoints-for-buildings)(by " "TaranDahl)" -#: ../../Whats-New.md:356 +#: ../../Whats-New.md:390 msgid "" "[Bunkerable checks dehardcode](Fixed-or-Improved-Logics.md#bunker-" "entering-check-dehardcode) (by TaranDahl)" @@ -1301,7 +1485,7 @@ msgstr "" "[坦克碉堡准入检查的去硬编码化](Fixed-or-Improved-Logics.md#bunker-entering-check-" "dehardcode)(by TaranDahl)" -#: ../../Whats-New.md:357 +#: ../../Whats-New.md:391 msgid "" "[No turret unit turn to the target](Fixed-or-Improved-Logics.md#unit-" "without-turret-always-turn-to-target) (by CrimRecya & TaranDahl)" @@ -1309,7 +1493,7 @@ msgstr "" "[无炮塔单位转向目标](Fixed-or-Improved-Logics.md#unit-without-turret-always-turn-" "to-target)(by CrimRecya 与 TaranDahl)" -#: ../../Whats-New.md:358 +#: ../../Whats-New.md:392 msgid "" "[Damage multipliers](New-or-Enhanced-Logics.md#damage-multipliers) (by " "CrimRecya & Ollerus)" @@ -1317,15 +1501,15 @@ msgstr "" "[伤害修正比](New-or-Enhanced-Logics.md#damage-multipliers)(by CrimRecya & " "Ollerus)" -#: ../../Whats-New.md:359 +#: ../../Whats-New.md:393 msgid "Customizable duration for electric bolts (by Starkku)" msgstr "自定义 EBolt 电弧持续时间(by Starkku)" -#: ../../Whats-New.md:360 +#: ../../Whats-New.md:394 msgid "Customizable FLH tracking for electric bolts (by Starkku)" msgstr "自定义 EBolt 跟随 FLH(by Starkku)" -#: ../../Whats-New.md:361 +#: ../../Whats-New.md:395 msgid "" "[Extended gattling rate down logic](New-or-Enhanced-Logics.md#extended-" "gattling-rate-down-logic) (by CrimRecya)" @@ -1333,7 +1517,7 @@ msgstr "" "[拓展的盖特掉档逻辑](New-or-Enhanced-Logics.md#extended-gattling-rate-down-" "logic)(by CrimRecya)" -#: ../../Whats-New.md:362 +#: ../../Whats-New.md:396 msgid "" "[Sell or undeploy building on impact](New-or-Enhanced-Logics.md#sell-or-" "undeploy-building-on-impact) (by CrimRecya)" @@ -1341,7 +1525,7 @@ msgstr "" "[弹头将建筑出售或反部署](New-or-Enhanced-Logics.md#sell-or-undeploy-building-on-" "impact)(by CrimRecya)" -#: ../../Whats-New.md:363 +#: ../../Whats-New.md:397 msgid "" "[No rearm and reload in EMP or temporal](New-or-Enhanced-Logics.md#no-" "rearm-and-reload-in-emp-or-temporal) (by CrimRecya)" @@ -1349,7 +1533,7 @@ msgstr "" "[EMP 或超时空停止 CD](New-or-Enhanced-Logics.md#no-rearm-and-reload-in-emp-or-" "temporal)(by CrimRecya)" -#: ../../Whats-New.md:364 +#: ../../Whats-New.md:398 msgid "" "[Technos recount current burst index when change the firing weapon](New-" "or-Enhanced-Logics.md#recount-burst-index) (by CrimRecya)" @@ -1357,11 +1541,11 @@ msgstr "" "[科技类型在更换开火武器时重置当前连发索引](New-or-Enhanced-Logics.md#recount-burst-index)(by " "CrimRecya)" -#: ../../Whats-New.md:365 +#: ../../Whats-New.md:399 msgid "Shield armor inheritance customization (by Ollerus)" msgstr "自定义护盾继承单位护甲(by Ollerus)" -#: ../../Whats-New.md:366 +#: ../../Whats-New.md:400 msgid "" "[Damaged unit image changes](New-or-Enhanced-Logics.md#damaged-unit-" "image-changes) (by Fryone)" @@ -1369,7 +1553,7 @@ msgstr "" "[载具伤残更换图像](New-or-Enhanced-Logics.md#damaged-unit-image-changes)(by " "Fryone)" -#: ../../Whats-New.md:367 +#: ../../Whats-New.md:401 msgid "" "[Customizable spawns queue](New-or-Enhanced-Logics.md#customizable-" "spawns-queue) (by TwinkleStar)" @@ -1377,13 +1561,13 @@ msgstr "" "[自定义子机序列](New-or-Enhanced-Logics.md#customizable-spawns-queue)(by " "TwinkleStar)" -#: ../../Whats-New.md:368 +#: ../../Whats-New.md:402 msgid "" "[Initial spawns number](New-or-Enhanced-Logics.md#initial-spawns-number) " "(by TwinkleStar)" msgstr "[初始子机数量](New-or-Enhanced-Logics.md#initial-spawns-number)(by TwinkleStar)" -#: ../../Whats-New.md:369 +#: ../../Whats-New.md:403 msgid "" "[Override target under EMP attack behavior](New-or-Enhanced-Logics.md" "#forcing-specific-weapon-against-certain-targets) (By FS-21)" @@ -1391,7 +1575,7 @@ msgstr "" "[覆盖对被 EMP 瘫痪的目标的攻击行为](New-or-Enhanced-Logics.md#forcing-specific-weapon-" "against-certain-targets)(by FS-21)" -#: ../../Whats-New.md:370 +#: ../../Whats-New.md:404 msgid "" "[Aircraft spawner recycling improvements (custom offset, animation etc" ".)](New-or-Enhanced-Logics.md#aircraft-spawner-customizations) (by " @@ -1400,7 +1584,7 @@ msgstr "" "[子机回收增强(自定义坐标、动画等)](New-or-Enhanced-Logics.md#aircraft-spawner-" "customizations)(by TaranDahl)" -#: ../../Whats-New.md:371 +#: ../../Whats-New.md:405 msgid "" "[Technos can maintain a suitable distance after firing](New-or-Enhanced-" "Logics.md#keep-range-after-firing) (by CrimRecya)" @@ -1408,7 +1592,7 @@ msgstr "" "[单位在开火后与目标保持适当的距离](New-or-Enhanced-Logics.md#keep-range-after-firing)(by " "CrimRecya)" -#: ../../Whats-New.md:372 +#: ../../Whats-New.md:406 msgid "" "[Projectile subject to ground check before firing](New-or-Enhanced-" "Logics.md#projectiles-blocked-by-land-or-water) (by CrimRecya)" @@ -1416,7 +1600,7 @@ msgstr "" "[开火前检查抛射体是否抢地](New-or-Enhanced-Logics.md#projectiles-blocked-by-land-or-" "water)(by CrimRecya)" -#: ../../Whats-New.md:373 +#: ../../Whats-New.md:407 msgid "" "[Delay automatic attack on the controlled unit](Fixed-or-Improved-" "Logics.md#delay-automatic-attack-on-the-controlled-unit) (by CrimRecya)" @@ -1424,11 +1608,11 @@ msgstr "" "[攻击被心控单位的延迟](Fixed-or-Improved-Logics.md#delay-automatic-attack-on-the-" "controlled-unit)(by CrimRecya)" -#: ../../Whats-New.md:374 +#: ../../Whats-New.md:408 msgid "[Parabombs](New-or-Enhanced-Logics.md#parabombs) (by Starkku & TaranDahl)" msgstr "[伞降炸弹](New-or-Enhanced-Logics.md#parabombs)(by Starkku & TaranDahl)" -#: ../../Whats-New.md:375 +#: ../../Whats-New.md:409 msgid "" "[Sinkablity and sinking speed customization](Fixed-or-Improved-Logics.md" "#sinking-behavior-dehardcode) (by TaranDahl)" @@ -1436,23 +1620,23 @@ msgstr "" "[自定义能否沉没以及沉没速度](Fixed-or-Improved-Logics.md#sinking-behavior-" "dehardcode)(by TaranDahl)" -#: ../../Whats-New.md:376 +#: ../../Whats-New.md:410 msgid "" "[Fast access vehicle](New-or-Enhanced-Logics.md#fast-access-vehicle) (by " "CrimRecya)" msgstr "[快速上车](New-or-Enhanced-Logics.md#fast-access-vehicle)(by CrimRecya)" -#: ../../Whats-New.md:377 +#: ../../Whats-New.md:411 msgid "Laser, electric bolt and rad beam scatter (by CrimRecya)" msgstr "激光、EBolt 和辐射波的散布(by CrimRecya)" -#: ../../Whats-New.md:378 +#: ../../Whats-New.md:412 msgid "" "[Airburst weapon firing/source coordinate customizations](Fixed-or-" "Improved-Logics.md#airburst--splits) (by Starkku)" msgstr "[自定义空爆武器中心坐标](Fixed-or-Improved-Logics.md#airburst--splits)(by Starkku)" -#: ../../Whats-New.md:379 +#: ../../Whats-New.md:413 msgid "" "[AlternateFLH on-turret toggle](Fixed-or-Improved-Logics.md#alternate-" "flh-customizations) (by Starkku)" @@ -1460,7 +1644,7 @@ msgstr "" "[AlternateFLH 跟随炮塔开关](Fixed-or-Improved-Logics.md#alternate-flh-" "customizations)(by Starkku)" -#: ../../Whats-New.md:380 +#: ../../Whats-New.md:414 msgid "" "[Fire weapon when Warhead kills something](New-or-Enhanced-Logics.md" "#fire-weapon-when-warhead-kills-something) (by Ollerus)" @@ -1468,7 +1652,7 @@ msgstr "" "[击杀武器](New-or-Enhanced-Logics.md#fire-weapon-when-warhead-kills-" "something)(by Ollerus)" -#: ../../Whats-New.md:381 +#: ../../Whats-New.md:415 msgid "" "[Prone speed customization](Fixed-or-Improved-Logics.md#prone-speed-" "customization) (by TaranDahl)" @@ -1476,7 +1660,7 @@ msgstr "" "[自定义匍匐速度](Fixed-or-Improved-Logics.md#prone-speed-customization)(by " "TaranDahl)" -#: ../../Whats-New.md:382 +#: ../../Whats-New.md:416 msgid "" "[Customize damaged speed ratio of drive/ship loco](Fixed-or-Improved-" "Logics.md#damaged-speed-customization) (by NetsuNegi)" @@ -1484,7 +1668,7 @@ msgstr "" "[自定义单位 `Locomotor=(Drive/Ship)` 且处于伤残状态时的速度比率](Fixed-or-Improved-" "Logics.md#damaged-speed-customization)(by NetsuNegi)" -#: ../../Whats-New.md:383 +#: ../../Whats-New.md:417 msgid "" "[Customize overpower logic](Fixed-or-Improved-Logics.md#customize-" "overpower-logic) (by NetsuNegi)" @@ -1492,13 +1676,13 @@ msgstr "" "[自定义磁暴线圈充能](Fixed-or-Improved-Logics.md#customize-overpower-logic)(by " "NetsuNegi)" -#: ../../Whats-New.md:384 +#: ../../Whats-New.md:418 msgid "" "[Promotion animation deglobalization](New-or-Enhanced-Logics.md" "#promotion-animation) (by Ollerus)" msgstr "[自定义升级动画](New-or-Enhanced-Logics.md#promotion-animation)(by Ollerus)" -#: ../../Whats-New.md:385 +#: ../../Whats-New.md:419 msgid "" "Enhanced [reveal](New-or-Enhanced-Logics.md#reveal-map-for-owner-on-" "impact) & [gap](New-or-Enhanced-Logics.md#shroud-map-for-enemies-on-" @@ -1508,7 +1692,7 @@ msgstr "" "impact\">揭示弹与[黑幕弹](New-or-Enhanced-Logics.md#shroud-map-for-enemies-" "on-impact)(by NetsuNegi)" -#: ../../Whats-New.md:386 +#: ../../Whats-New.md:420 msgid "" "[Forcing specific weapon by range and target type](New-or-Enhanced-" "Logics.md#forcing-specific-weapon-against-certain-targets) (by Ollerus)" @@ -1516,7 +1700,7 @@ msgstr "" "[根据射程和目标类型选取武器](New-or-Enhanced-Logics.md#forcing-specific-weapon-" "against-certain-targets)(by Ollerus)" -#: ../../Whats-New.md:387 +#: ../../Whats-New.md:421 msgid "" "[Jumpjet Tilts While Moving](New-or-Enhanced-Logics.md#jumpjet-tilts-" "while-moving) (by CrimRecya)" @@ -1524,7 +1708,7 @@ msgstr "" "[Jumpjet 在移动时倾斜](New-or-Enhanced-Logics.md#jumpjet-tilts-while-moving)(by" " CrimRecya)" -#: ../../Whats-New.md:388 +#: ../../Whats-New.md:422 msgid "" "[Spawned aircraft facing to match turret toggle](New-or-Enhanced-" "Logics.md#aircraft-spawner-customizations) (by Starkku)" @@ -1532,19 +1716,19 @@ msgstr "" "[子机生成时对齐炮塔方向的开关](New-or-Enhanced-Logics.md#aircraft-spawner-" "customizations)(by Starkku)" -#: ../../Whats-New.md:389 +#: ../../Whats-New.md:423 msgid "" "[Removed dependency on `blowfish.dll`](Miscellanous.md#blowfish-" "dependency) (by ZivDero)" msgstr "[移除 `blowfish.dll` 依赖](Miscellanous.md#blowfish-dependency)(by ZivDero)" -#: ../../Whats-New.md:390 +#: ../../Whats-New.md:424 msgid "" "[Warhead that can not kill](New-or-Enhanced-Logics.md#warhead-that-can-" "not-kill) (by FS-21)" msgstr "[弹头击杀限制](New-or-Enhanced-Logics.md#warhead-that-can-not-kill)(by FS-21)" -#: ../../Whats-New.md:391 +#: ../../Whats-New.md:425 msgid "" "[Customize parasite culling targets](Fixed-or-Improved-Logics.md" "#customizing-parasite-culling-targets) (by NetsuNegi)" @@ -1552,7 +1736,7 @@ msgstr "" "[自定义寄生秒杀目标](Fixed-or-Improved-Logics.md#customizing-parasite-culling-" "targets)(by NetsuNegi)" -#: ../../Whats-New.md:392 +#: ../../Whats-New.md:426 msgid "" "[Overload characteristic dehardcoded](New-or-Enhanced-Logics.md#overload-" "characteristic-dehardcoded) (by Otamaa)" @@ -1560,7 +1744,7 @@ msgstr "" "[自定义脑车过载](New-or-Enhanced-Logics.md#overload-characteristic-" "dehardcoded)(by Otamaa)" -#: ../../Whats-New.md:393 +#: ../../Whats-New.md:427 msgid "" "[RadarInvisible for non-enemy house](Fixed-or-Improved-Logics.md" "#radarinvisible-for-non-enemy-house) (By TaranDahl)" @@ -1568,13 +1752,13 @@ msgstr "" "[不仅限于敌方的 `RadarInvisible`](Fixed-or-Improved-Logics.md#radarinvisible-" "for-non-enemy-house)(By TaranDahl)" -#: ../../Whats-New.md:394 +#: ../../Whats-New.md:428 msgid "" "New `Pips.HideIfNoStrength` and `SelfHealing.EnabledBy` additions for " "shields (by FS-21)" msgstr "护盾新增功能 `Pips.HideIfNoStrength` 与 `SelfHealing.EnabledBy`(by FS-21)" -#: ../../Whats-New.md:395 +#: ../../Whats-New.md:429 msgid "" "[Customize harvester dump amount](Fixed-or-Improved-Logics.md#customize-" "harvester-dump-amount) (by NetsuNegi)" @@ -1582,11 +1766,11 @@ msgstr "" "[自定义矿车单次倒矿量](Fixed-or-Improved-Logics.md#customize-harvester-dump-" "amount)(by NetsuNegi)" -#: ../../Whats-New.md:396 +#: ../../Whats-New.md:430 msgid "[Select box logic](User-Interface.md#select-box) (by NetsuNegi)" msgstr "[选择框逻辑](User-Interface.md#select-box)(by NetsuNegi)" -#: ../../Whats-New.md:397 +#: ../../Whats-New.md:431 msgid "" "[Customize airstrike targets](Fixed-or-Improved-Logics.md#airstrike-" "target-eligibility) (by NetsuNegi)" @@ -1594,7 +1778,7 @@ msgstr "" "[自定义空袭目标](Fixed-or-Improved-Logics.md#airstrike-target-eligibility)(by " "NetsuNegi)" -#: ../../Whats-New.md:398 +#: ../../Whats-New.md:432 msgid "" "[Aggressive attack move mission](New-or-Enhanced-Logics.md#aggressive-" "attack-move-mission) (by CrimRecya)" @@ -1602,7 +1786,7 @@ msgstr "" "[侵略性移动攻击命令](New-or-Enhanced-Logics.md#aggressive-attack-move-mission)(by " "CrimRecya)" -#: ../../Whats-New.md:399 +#: ../../Whats-New.md:433 msgid "" "[Amphibious access vehicle](New-or-Enhanced-Logics.md#amphibious-access-" "vehicle) (by CrimRecya)" @@ -1610,7 +1794,7 @@ msgstr "" "[两栖载具装载拓展](New-or-Enhanced-Logics.md#amphibious-access-vehicle)(by " "CrimRecya)" -#: ../../Whats-New.md:400 +#: ../../Whats-New.md:434 msgid "" "[Allow miners do area guard](Fixed-or-Improved-Logics.md#allow-miners-do-" "area-guard) (by TaranDahl)" @@ -1618,7 +1802,7 @@ msgstr "" "[允许矿车区域警戒](Fixed-or-Improved-Logics.md#allow-miners-do-area-guard)(by " "TaranDahl)" -#: ../../Whats-New.md:401 +#: ../../Whats-New.md:435 msgid "" "[Make harvesters do addtional scan after unload](Fixed-or-Improved-" "Logics.md#make-harvesters-do-addtional-scan-after-unload) (by TaranDahl)" @@ -1626,7 +1810,7 @@ msgstr "" "[使矿车卸载后重新扫描较近的矿区](Fixed-or-Improved-Logics.md#make-harvesters-do-" "addtional-scan-after-unload)(by TaranDahl)" -#: ../../Whats-New.md:402 +#: ../../Whats-New.md:436 msgid "" "[Passenger-based insignias](Fixed-or-Improved-Logics.md#customizable-" "veterancy-insignias) (by Ollerus)" @@ -1634,19 +1818,19 @@ msgstr "" "[根据乘客切换军衔](Fixed-or-Improved-Logics.md#customizable-veterancy-" "insignias)(by Ollerus)" -#: ../../Whats-New.md:403 +#: ../../Whats-New.md:437 msgid "" "[Use `InsigniaType` to set the properties of insignia in a " "batch](Miscellanous.md#insignia-type) (by Ollerus)" msgstr "[使用 `InsigniaType` 批量设置军衔属性](Miscellanous.md#insignia-type)(by Ollerus)" -#: ../../Whats-New.md:404 +#: ../../Whats-New.md:438 msgid "" "[Tiberium eater logic](New-or-Enhanced-Logics.md#tiberium-eater) (by " "NetsuNegi)" msgstr "[马夫逻辑](New-or-Enhanced-Logics.md#tiberium-eater)(by NetsuNegi)" -#: ../../Whats-New.md:405 +#: ../../Whats-New.md:439 msgid "" "[Customize the damage taken when falling from a bridge](Fixed-or-" "Improved-Logics.md#customize-bridge-falling-down-damage) (by FlyStar)" @@ -1654,11 +1838,11 @@ msgstr "" "[自定义桥上坠落伤害](Fixed-or-Improved-Logics.md#customize-bridge-falling-down-" "damage)(by FlyStar)" -#: ../../Whats-New.md:406 +#: ../../Whats-New.md:440 msgid "Dehardcoded 255 limit of `OverlayType` (by secsome & ZivDero)" msgstr "解除了覆盖物最多 255 个的数量限制(by secsome & ZivDero)" -#: ../../Whats-New.md:407 +#: ../../Whats-New.md:441 msgid "" "[Customizable airstrike flare colors](Fixed-or-Improved-Logics.md" "#airstrike-flare-customizations) (by Starkku)" @@ -1666,19 +1850,19 @@ msgstr "" "[自定义空袭引导效果](Fixed-or-Improved-Logics.md#airstrike-flare-visual-" "customizations)(by Starkku)" -#: ../../Whats-New.md:408 +#: ../../Whats-New.md:442 msgid "" "Allowed player's self-healing effects to be benefited by allied or " "`PlayerControl=true` houses (by Ollerus)" msgstr "允许玩家的自愈效果可以从友军或 `PlayerControl=true` 的所属方受益(by Ollerus)" -#: ../../Whats-New.md:409 +#: ../../Whats-New.md:443 msgid "" "[Exclusive SuperWeapon Sidebar](User-Interface.md#superweapon-sidebar) " "(by NetsuNegi & CrimRecya)" msgstr "[超武侧边栏](User-Interface.md#superweapon-sidebar)(by NetsuNegi & CrimRecya)" -#: ../../Whats-New.md:410 +#: ../../Whats-New.md:444 msgid "" "[Customize the scatter caused by aircraft attack mission](Fixed-or-" "Improved-Logics.md#customize-the-scatter-caused-by-aircraft-attack-" @@ -1687,7 +1871,7 @@ msgstr "" "[自定义战机攻击任务引发分散](Fixed-or-Improved-Logics.md#customize-the-scatter-caused-" "by-aircraft-attack-mission)(by TaranDahl)" -#: ../../Whats-New.md:411 +#: ../../Whats-New.md:445 msgid "" "[Customizable garrison and bunker properties](Fixed-or-Improved-Logics.md" "#customizable-garrison-and-bunker-properties) (by Otamaa)" @@ -1695,7 +1879,7 @@ msgstr "" "[自定义驻军建筑与坦克碉堡属性](Fixed-or-Improved-Logics.md#customizable-garrison-and-" "bunker-properties)(by Otamaa)" -#: ../../Whats-New.md:412 +#: ../../Whats-New.md:446 msgid "" "[Disable `DamageSound` for buildings](Fixed-or-Improved-Logics.md" "#disable-damagesound) (by Otamaa)" @@ -1703,7 +1887,7 @@ msgstr "" "[禁用 `DamageSound`](Fixed-or-Improved-Logics.md#disable-damagesound)(by " "Otamaa)" -#: ../../Whats-New.md:413 +#: ../../Whats-New.md:447 msgid "" "[Power plant damage factor](Fixed-or-Improved-Logics.md#power-plant-" "damage-factor) (by Otamaa and Ollerus)" @@ -1711,7 +1895,7 @@ msgstr "" "[伤残电厂电量系数](Fixed-or-Improved-Logics.md#power-plant-damage-factor)(by " "Otamaa and Ollerus)" -#: ../../Whats-New.md:414 +#: ../../Whats-New.md:448 msgid "" "[Customize whether `Crater=yes` animation would destroy tiberium](Fixed-" "or-Improved-Logics.md#customize-whether-crater-yes-animation-would-" @@ -1720,11 +1904,11 @@ msgstr "" "[自定义 `Crater=yes` 的动画能否摧毁矿石](Fixed-or-Improved-Logics.md#customize-" "whether-crater-yes-animation-would-destroy-tiberium)(by TaranDahl)" -#: ../../Whats-New.md:415 +#: ../../Whats-New.md:449 msgid "Weapon target filtering by health percentage (by NetsuNegi)" msgstr "武器根据血量百分比筛选目标(by NetsuNegi)" -#: ../../Whats-New.md:416 +#: ../../Whats-New.md:450 msgid "" "[Turretless vehicles with `Voxel=no` support use `FireUp` like infantry" "](New-or-Enhanced-Logics.md#turretless-shape-vehicle-fireup) (by FlyStar)" @@ -1732,11 +1916,11 @@ msgstr "" "[无炮塔 Shape 载具开火前摇](New-or-Enhanced-Logics.md#turretless-shape-vehicle-" "fireup)(by FlyStar)" -#: ../../Whats-New.md:417 +#: ../../Whats-New.md:451 msgid "Infantry support `IsGattling=yes` (by FlyStar)" msgstr "步兵类现已支持使用 `IsGattling=yes` 开启盖特逻辑(by FlyStar)" -#: ../../Whats-New.md:418 +#: ../../Whats-New.md:452 msgid "" "[Several new Infotypes, no display in specific status and a new single " "frame display method](User-Interface.md#digital-display) (by CrimRecya)" @@ -1744,7 +1928,7 @@ msgstr "" "[多种新的数显信息类型、特定情况下不显示以及一种新的单帧显示方式](User-Interface.md#digital-display)(by " "CrimRecya)" -#: ../../Whats-New.md:419 +#: ../../Whats-New.md:453 msgid "" "[Targeting limitation for berzerk technos](New-or-Enhanced-Logics.md" "#targeting-limitation-for-berzerk-technos) (by TaranDahl)" @@ -1752,13 +1936,13 @@ msgstr "" "[狂暴单位索敌限制](New-or-Enhanced-Logics.md#targeting-limitation-for-berzerk-" "technos)(by TaranDahl)" -#: ../../Whats-New.md:420 +#: ../../Whats-New.md:454 msgid "" "Allowed faking digital display for `InfoType=Health` at disguise (by " "Ollerus)" msgstr "允许 `InfoType=Health` 伪造出伪装目标的数值(by Ollerus)" -#: ../../Whats-New.md:421 +#: ../../Whats-New.md:455 msgid "" "[Warhead activation target health thresholds](Fixed-or-Improved-Logics.md" "#customizable-warhead-trigger-conditions) (by FS-21 & Kerbiter)" @@ -1766,7 +1950,7 @@ msgstr "" "[目标血量作为弹头生效条件](Fixed-or-Improved-Logics.md#customizable-warhead-trigger-" "conditions)(by FS-21 & Kerbiter)" -#: ../../Whats-New.md:422 +#: ../../Whats-New.md:456 msgid "" "[Customize limit and sound when engineer repair a building](New-or-" "Enhanced-Logics.md#engineer-repair-customization) (by NetsuNegi)" @@ -1774,7 +1958,7 @@ msgstr "" "[自定义工程师维修建筑时的修复值与修复音效](New-or-Enhanced-Logics.md#engineer-repair-" "customization)(by NetsuNegi)" -#: ../../Whats-New.md:423 +#: ../../Whats-New.md:457 msgid "" "[Customizable debris trailer anim spawn delay](Fixed-or-Improved-" "Logics.md#customizable-debris-trailer-anim-spawn-delay) (by CrimRecya)" @@ -1782,13 +1966,13 @@ msgstr "" "[自定义 Voxel 碎片尾烟动画生成间隔](Fixed-or-Improved-Logics.md#customizable-debris-" "trailer-anim-spawn-delay)(by CrimRecya)" -#: ../../Whats-New.md:424 +#: ../../Whats-New.md:458 msgid "" "[Display banner](AI-Scripting-and-Mapping.md#display-banner) (by Morton &" " ststl)" msgstr "[横幅](AI-Scripting-and-Mapping.md#display-banner)(by Morton & ststl)" -#: ../../Whats-New.md:425 +#: ../../Whats-New.md:459 msgid "" "[Allows refineries to use multiple ActiveAnim simultaneously](Fixed-or-" "Improved-Logics.md#allows-refineries-to-use-multiple-activeanim-" @@ -1797,17 +1981,17 @@ msgstr "" "[允许矿场同时播放多个 `ActiveAnim` 动画](Fixed-or-Improved-Logics.md#allows-" "refineries-to-use-multiple-activeanim-simultaneously)(by TaranDahl)" -#: ../../Whats-New.md:426 +#: ../../Whats-New.md:460 msgid "Electric/RadBeam trail for laser tails (by NetsuNegi)" msgstr "激光尾焰逻辑支持 EBolt/辐射波(by NetsuNegi)" -#: ../../Whats-New.md:427 +#: ../../Whats-New.md:461 msgid "" "Add `DebrisMinimums` to keep the count of debris within a certain range " "(by CrimRecya)" msgstr "添加了 `DebrisMinimums` 语句以将碎片数量控制在一定范围内(by CrimRecya)" -#: ../../Whats-New.md:428 +#: ../../Whats-New.md:462 msgid "" "[Several attackmove related enhancement](New-or-Enhanced-Logics.md" "#attack-move-behavior-when-target-acquired) (by TaranDahl)" @@ -1815,17 +1999,17 @@ msgstr "" "[几个移动攻击相关的增强](New-or-Enhanced-Logics.md#attack-move-behavior-when-target-" "acquired)(by TaranDahl)" -#: ../../Whats-New.md:429 +#: ../../Whats-New.md:463 msgid "Ground line for select box (by NetsuNegi)" msgstr "为选择框添加了投影线(by NetsuNegi)" -#: ../../Whats-New.md:430 +#: ../../Whats-New.md:464 msgid "" "[Support for more optional weapons](New-or-Enhanced-Logics.md#multi-" "weapon) (by FlyStar)" msgstr "[多武器逻辑](New-or-Enhanced-Logics.md#multi-weapon)(by FlyStar)" -#: ../../Whats-New.md:431 +#: ../../Whats-New.md:465 msgid "" "[Task subtitles display in the middle of the screen](User-Interface.md" "#task-subtitles-display-in-the-middle-of-the-screen) (by CrimRecya)" @@ -1833,7 +2017,7 @@ msgstr "" "[字幕居中](User-Interface.md#task-subtitles-display-in-the-middle-of-the-" "screen)(by CrimRecya)" -#: ../../Whats-New.md:432 +#: ../../Whats-New.md:466 msgid "" "[Event 606: AttachEffect is attaching to a Techno](AI-Scripting-and-" "Mapping.md#attacheffect-is-attaching-to-a-techno) (by FS-21)" @@ -1841,19 +2025,19 @@ msgstr "" "[触发条件 606:AttachEffect 已被附加到单位](AI-Scripting-and-Mapping.md#attacheffect-" "is-attaching-to-a-techno)(by FS-21)" -#: ../../Whats-New.md:433 +#: ../../Whats-New.md:467 msgid "" "[Linked superweapons](New-or-Enhanced-Logics.md#linked-superweapons) (by " "FS-21)" msgstr "[联动超武](New-or-Enhanced-Logics.md#linked-superweapons)(by FS-21)" -#: ../../Whats-New.md:434 +#: ../../Whats-New.md:468 msgid "" "[Delayed fire weapons](New-or-Enhanced-Logics.md#delayed-firing) (by " "Starkku)" msgstr "[延迟开火](New-or-Enhanced-Logics.md#delayed-firing)(by Starkku)" -#: ../../Whats-New.md:435 +#: ../../Whats-New.md:469 msgid "" "[Burst without delay](New-or-Enhanced-Logics.md#burst-without-delay) (by " "CrimRecya & TaranDahl)" @@ -1861,7 +2045,7 @@ msgstr "" "[无间隔连发](New-or-Enhanced-Logics.md#burst-without-delay)(by CrimRecya & " "TaranDahl)" -#: ../../Whats-New.md:436 +#: ../../Whats-New.md:470 msgid "" "[Target scanning delay customization](Fixed-or-Improved-Logics.md#target-" "scanning-delay-optimization) (by TaranDahl & solar-III)" @@ -1869,7 +2053,7 @@ msgstr "" "[自定义索敌间隔](Fixed-or-Improved-Logics.md#target-scanning-delay-" "optimization)(by TaranDahl & solar-III)" -#: ../../Whats-New.md:437 +#: ../../Whats-New.md:471 msgid "" "[Force techno targeting in distributed frames to improve performance" "](Fixed-or-Improved-Logics.md#force-techno-targeting-in-distributed-" @@ -1878,7 +2062,7 @@ msgstr "" "[强制单位索敌行为分散到不同帧以提升性能](Fixed-or-Improved-Logics.md#force-techno-targeting-" "in-distributed-frames-to-improve-performance)(by TaranDahl)" -#: ../../Whats-New.md:438 +#: ../../Whats-New.md:472 msgid "" "[Damaged aircraft image changes](New-or-Enhanced-Logics.md#damaged-" "aircraft-image-changes) (by Fryone)" @@ -1886,7 +2070,7 @@ msgstr "" "[战机伤残更换图像](New-or-Enhanced-Logics.md#damaged-aircraft-image-changes)(by " "Fryone)" -#: ../../Whats-New.md:439 +#: ../../Whats-New.md:473 msgid "" "[Additional attached animation position customizations](Fixed-or-" "Improved-Logics.md#attached-animation-position-customization) (by " @@ -1895,7 +2079,7 @@ msgstr "" "[追加的附着动画位置定义项](Fixed-or-Improved-Logics.md#attached-animation-position-" "customization)(by Starkku)" -#: ../../Whats-New.md:440 +#: ../../Whats-New.md:474 msgid "" "Use `SkipCrushSlowdown=true` to avoid the bug related to " "`Accelerates=true` and `MovementZone=CrushAll` (by TaranDahl)" @@ -1903,7 +2087,7 @@ msgstr "" "使用 `SkipCrushSlowdown=true` 来避免 `Accelerates=true` 与 " "`MovementZone=CrushAll` 相关的 Bug(by TaranDahl)" -#: ../../Whats-New.md:441 +#: ../../Whats-New.md:475 msgid "" "[Automatic conversion based on ammo](New-or-Enhanced-Logics.md#automatic-" "conversion-based-on-ammo) (by FS-21)" @@ -1911,7 +2095,7 @@ msgstr "" "[基于弹药量的自动变形](New-or-Enhanced-Logics.md#automatic-conversion-based-on-" "ammo)(by FS-21)" -#: ../../Whats-New.md:442 +#: ../../Whats-New.md:476 msgid "" "[Units can customize the attack voice that plays when using more weapons" "](New-or-Enhanced-Logics.md#multi-voiceattack) (by FlyStar)" @@ -1919,11 +2103,11 @@ msgstr "" "[单位可以在使用更多武器时自定义各武器下达攻击指令时的音效](New-or-Enhanced-Logics.md#multi-" "voiceattack)(by FlyStar)" -#: ../../Whats-New.md:443 +#: ../../Whats-New.md:477 msgid "Customize squid grapple animation (by NetsuNegi)" msgstr "自定义乌贼拖拽动画(by NetsuNegi)" -#: ../../Whats-New.md:444 +#: ../../Whats-New.md:478 msgid "" "[Auto deploy for GI-like infantry](Fixed-or-Improved-Logics.md#auto-" "deploy-for-gi-like-infantry) (by TaranDahl)" @@ -1931,7 +2115,7 @@ msgstr "" "[GI 式步兵自动部署](Fixed-or-Improved-Logics.md#auto-deploy-for-gi-like-" "infantry)(by TaranDahl)" -#: ../../Whats-New.md:445 +#: ../../Whats-New.md:479 msgid "" "[Vehicles that have lost their target can customize the turret direction " "to align with the vehicle body](New-or-Enhanced-Logics.md#turret-" @@ -1940,13 +2124,13 @@ msgstr "" "[失去目标的车辆可以自定义炮塔方向与车体对齐](New-or-Enhanced-Logics.md#turret-response)(by " "FlyStar)" -#: ../../Whats-New.md:446 +#: ../../Whats-New.md:480 msgid "" "[Reverse engineer warhead](New-or-Enhanced-Logics.md#reverse-engineer-" "warhead) (by CrimRecya)" msgstr "[逆向工程弹头](New-or-Enhanced-Logics.md#reverse-engineer-warhead)(by CrimRecya)" -#: ../../Whats-New.md:447 +#: ../../Whats-New.md:481 msgid "" "[AI base construction modification](Fixed-or-Improved-Logics.md#ai-base-" "construction-modification) (by CrimRecya)" @@ -1954,7 +2138,7 @@ msgstr "" "[AI 基地建设机制更改](Fixed-or-Improved-Logics.md#ai-base-construction-" "modification)(by CrimRecya)" -#: ../../Whats-New.md:448 +#: ../../Whats-New.md:482 msgid "" "[Jumpjet Climbing Logic Enhancement](Fixed-or-Improved-Logics.md#jumpjet-" "climbing-logic-enhancement) (by CrimRecya)" @@ -1962,13 +2146,13 @@ msgstr "" "[Jumpjet 爬升逻辑增强](Fixed-or-Improved-Logics.md#jumpjet-climbing-logic-" "enhancement)(by CrimRecya)" -#: ../../Whats-New.md:449 +#: ../../Whats-New.md:483 msgid "" "[Restore turret recoil effect](Fixed-or-Improved-Logics.md#turret-recoil)" " (by CrimRecya)" msgstr "[复原炮塔制退](Fixed-or-Improved-Logics.md#turret-recoil)(by CrimRecya)" -#: ../../Whats-New.md:450 +#: ../../Whats-New.md:484 msgid "" "[Customize hardcoded projectile initial facing behavior](Fixed-or-" "Improved-Logics.md#customizing-initial-facing-behavior) (by Starkku)" @@ -1976,11 +2160,11 @@ msgstr "" "[自定义初始朝向行为](Fixed-or-Improved-Logics.md#customizing-initial-facing-" "behavior)(by Starkku)" -#: ../../Whats-New.md:451 +#: ../../Whats-New.md:485 msgid "Health bar permanently displayed (by FlyStar)" msgstr "血条恒显(by FlyStar)" -#: ../../Whats-New.md:452 +#: ../../Whats-New.md:486 msgid "" "[`IsSimpleDeployer` facing and deploy check, customization & directional " "deploy animations](Fixed-or-Improved-Logics.md#issimpledeployer-" @@ -1989,7 +2173,7 @@ msgstr "" "[自定义 IsSimpleDeployer 载具部署朝向和部署检查,以及多方向部署动画](Fixed-or-Improved-Logics.md" "#issimpledeployer-customizations)(by Starkku)" -#: ../../Whats-New.md:453 +#: ../../Whats-New.md:487 msgid "" "[Ammo-based deploy customizations for vehicles expanded to non-" "IsSimpleDeployer deploy functions](New-or-Enhanced-Logics.md#automatic-" @@ -1998,15 +2182,15 @@ msgstr "" "[基于弹药量的自动部署与禁用部署扩展至非 IsSimpleDeployer 部署功能](New-or-Enhanced-Logics.md" "#automatic-deploy-and-blocking-deploying-based-on-ammo)(by Starkku)" -#: ../../Whats-New.md:454 +#: ../../Whats-New.md:488 msgid "Randomized anims for several behaviors (by Ollerus)" msgstr "几种行为的随机动画(by Ollerus)" -#: ../../Whats-New.md:455 +#: ../../Whats-New.md:489 msgid "Shield respawn animation and weapon (by Ollerus)" msgstr "护盾重生动画与武器(by Ollerus)" -#: ../../Whats-New.md:456 +#: ../../Whats-New.md:490 msgid "" "[Customize the chained damage of the wall](Fixed-or-Improved-Logics.md" "#customize-the-chained-damage-of-the-wall) (by TaranDahl)" @@ -2014,19 +2198,19 @@ msgstr "" "[自定义墙的连锁伤害](Fixed-or-Improved-Logics.md#customize-the-chained-damage-of-" "the-wall)(by TaranDahl)" -#: ../../Whats-New.md:457 +#: ../../Whats-New.md:491 msgid "" "Allow the aircraft to enter area guard mission and not crash immediately " "without any airport (by CrimRecya)" msgstr "允许战机执行区域警戒任务且在无机场的情况下不会立即坠毁(by CrimRecya)" -#: ../../Whats-New.md:458 +#: ../../Whats-New.md:492 msgid "" "[Unlimbo Detonate warhead](New-or-Enhanced-Logics.md#unlimbo-detonate-" "warhead) (by FlyStar)" msgstr "[去虚拟化弹头](New-or-Enhanced-Logics.md#unlimbo-detonate-warhead)(by Starkku)" -#: ../../Whats-New.md:459 +#: ../../Whats-New.md:493 msgid "" "[Attack](New-or-Enhanced-Logics.md#attack-technos-underground) and " "[damage](New-or-Enhanced-Logics.md#damage-technos-underground) technos " @@ -2036,15 +2220,15 @@ msgstr "" " 和 [杀伤](New-or-Enhanced-Logics.md#damage-technos-underground) 地下单位(by " "TaranDahl)" -#: ../../Whats-New.md:460 +#: ../../Whats-New.md:494 msgid "Fast access structure (by FlyStar)" msgstr "快速进楼(by FlyStar)" -#: ../../Whats-New.md:461 +#: ../../Whats-New.md:495 msgid "Toggle off laser trail and shake effects (by Ollerus)" msgstr "关闭激光尾焰与屏幕抖动效果(by Ollerus)" -#: ../../Whats-New.md:462 +#: ../../Whats-New.md:496 msgid "" "[Dehardcode the `ZAdjust` of warhead anim](Fixed-or-Improved-Logics.md" "#dehardcode-the-zadjust-of-warhead-anim) (by TaranDahl)" @@ -2052,7 +2236,7 @@ msgstr "" "[弹头动画 `ZAdjust` 去硬编码](Fixed-or-Improved-Logics.md#dehardcode-the-zadjust-" "of-warhead-anim)(by TaranDahl)" -#: ../../Whats-New.md:463 +#: ../../Whats-New.md:497 msgid "" "[Interceptor target scan delay customization](New-or-Enhanced-Logics.md" "#projectile-interception-logic) (by Starkku)" @@ -2060,7 +2244,7 @@ msgstr "" "[自定义拦截者目标扫描间隔](New-or-Enhanced-Logics.md#projectile-interception-" "logic)(by Starkku)" -#: ../../Whats-New.md:464 +#: ../../Whats-New.md:498 msgid "" "[Allow deploy controlled MCV](Fixed-or-Improved-Logics.md#allow-deploy-" "controlled-mcv) (by NetsuNegi)" @@ -2068,7 +2252,7 @@ msgstr "" "[允许部署被心控的 MCV](Fixed-or-Improved-Logics.md#allow-deploy-controlled-" "mcv)(by NetsuNegi)" -#: ../../Whats-New.md:465 +#: ../../Whats-New.md:499 msgid "" "[Customize if cloning need power](Fixed-or-Improved-Logics.md#customize-" "if-cloning-need-power) (by NetsuNegi)" @@ -2076,13 +2260,13 @@ msgstr "" "[自定义克隆耗电](Fixed-or-Improved-Logics.md#customize-if-cloning-need-power)(by" " NetsuNegi)" -#: ../../Whats-New.md:466 +#: ../../Whats-New.md:500 msgid "" "[Added Target Filtering Options to AttachEffect System](New-or-Enhanced-" "Logics.md#attached-effects) (by Flactine)" msgstr "[为 AE 系统添加目标过滤选项](New-or-Enhanced-Logics.md#attached-effects)(by Flactine)" -#: ../../Whats-New.md:467 +#: ../../Whats-New.md:501 msgid "" "[Customize type selection for IFV](Fixed-or-Improved-Logics.md#customize-" "type-selection-for-ifv) (by NetsuNegi)" @@ -2090,13 +2274,13 @@ msgstr "" "[自定义 IFV 的类型选择](Fixed-or-Improved-Logics.md#customize-type-selection-for-" "ifv)(by NetsuNegi)" -#: ../../Whats-New.md:468 +#: ../../Whats-New.md:502 msgid "" "[CellSpread in cylinder shape](New-or-Enhanced-Logics.md#cellspread-" "enhancement) (by TaranDahl)" msgstr "[圆柱形弹头范围](New-or-Enhanced-Logics.md#cellspread-enhancement)(by TaranDahl)" -#: ../../Whats-New.md:469 +#: ../../Whats-New.md:503 msgid "" "[CellSpread damage check if victim is in air or on floor](New-or-" "Enhanced-Logics.md#cellspread-enhancement) (by TaranDahl)" @@ -2104,17 +2288,17 @@ msgstr "" "[弹头范围对目标的空地判定](New-or-Enhanced-Logics.md#cellspread-enhancement)(by " "TaranDahl)" -#: ../../Whats-New.md:470 +#: ../../Whats-New.md:504 msgid "" "OpenTopped range bonus and damage multiplier customization for passengers" " (by Ollerus)" msgstr "在乘客上自定义 OpenTopped 射程加成和杀伤倍率(by Ollerus)" -#: ../../Whats-New.md:471 +#: ../../Whats-New.md:505 msgid "AutoDeath upon ownership change (by Ollerus)" msgstr "所属更改引发自毁(by Ollerus)" -#: ../../Whats-New.md:472 +#: ../../Whats-New.md:506 msgid "" "[Script Action 14004 for forcing all new actions to target only the main " "owner's enemy](AI-Scripting-and-Mapping.md#force-global-" @@ -2125,7 +2309,7 @@ msgstr "" "global-onlytargethouseenemy-value-in-teams-for-new-attack-move-actions-" "introduced-by-phobos)(by FS-21)" -#: ../../Whats-New.md:473 +#: ../../Whats-New.md:507 msgid "" "[Allow merging AOE damage to buildings into one](New-or-Enhanced-" "Logics.md#allow-merging-aoe-damage-to-buildings-into-one) (by CrimRecya)" @@ -2133,31 +2317,104 @@ msgstr "" "[允许将建筑所受的 AOE 伤害合而为一](New-or-Enhanced-Logics.md#allow-merging-aoe-damage-" "to-buildings-into-one)(by CrimRecya)" -#: ../../Whats-New.md:475 ../../Whats-New.md:556 ../../Whats-New.md:741 -#: ../../Whats-New.md:1100 ../../Whats-New.md:1209 ../../Whats-New.md:1234 -#: ../../Whats-New.md:1273 ../../Whats-New.md:1318 +#: ../../Whats-New.md:508 +msgid "" +"[Allow customizing whether to synchronously change the owner of the " +"RadioLink-linked units when the owner of a building changes](Fixed-or-" +"Improved-Logics.md#custom-whether-to-synchronously-change-the-owner-of-" +"the-radiolink-linked-units-when-the-owner-of-a-building-changes) (by " +"TaranDahl)" +msgstr "" +"[允许自定义单位是否会在其所连接建筑发生所属变更时同步变更所属](Fixed-or-Improved-Logics.md#custom-" +"whether-to-synchronously-change-the-owner-of-the-radiolink-linked-units-" +"when-the-owner-of-a-building-changes)(by TaranDahl)" + +#: ../../Whats-New.md:509 +msgid "" +"[Toggle per-target warhead effects apply timing](New-or-Enhanced-" +"Logics.md#toggle-per-target-warhead-effects-apply-timing) (by TaranDahl)" +msgstr "" +"[设置按目标生效的弹头效果应用时机](New-or-Enhanced-Logics.md#toggle-per-target-warhead-" +"effects-apply-timing)(by TaranDahl)" + +#: ../../Whats-New.md:510 +msgid "" +"[Extra range for chasing and pre-firing](New-or-Enhanced-Logics.md#extra-" +"range) (by TaranDahl)" +msgstr "[追击和预开火时的额外射程](New-or-Enhanced-Logics.md#extra-range)(by TaranDahl)" + +#: ../../Whats-New.md:511 +msgid "" +"[Allow techno type considered as other type when recruiting techno for " +"teams](Fixed-or-Improved-Logics.md#allow-techno-type-considered-as-other-" +"type-when-recruiting-techno-for-teams) (by NetsuNegi)" +msgstr "" +"[允许单位作为其他类型的单位参与小队招募](Fixed-or-Improved-Logics.md#allow-techno-type-" +"considered-as-other-type-when-recruiting-techno-for-teams) (by NetsuNegi)" + +#: ../../Whats-New.md:512 +msgid "" +"Map Action [`511` Undeploy Building to Waypoint](AI-Scripting-and-" +"Mapping.md#undeploy-building-to-waypoint), [`609` Set Radar Mode](AI-" +"Scripting-and-Mapping.md#set-radar-mode), [`610` Set house's `TeamDelays`" +" value](AI-Scripting-and-Mapping.md#set-house-s-teamdelays-value) (by " +"FlyStar)" +msgstr "" +"地图触发结果 `511` 反部署建筑至路径点`609` 设置雷达模式`610` 设置所属方的 `TeamDelays` " +"值(by FlyStar)" + +#: ../../Whats-New.md:513 +msgid "" +"[Toggle to exclude technos from base center calculations](New-or-" +"Enhanced-Logics.md#exclusion-from-base-center-calculations) (by Starkku)" +msgstr "" +"[定义单位是否不参与基地中心计算](New-or-" +"Enhanced-Logics.md#exclusion-from-base-center-calculations) (by Starkku)" + +#: ../../Whats-New.md:514 +msgid "" +"[Weapons now support `AttackFriendlies` and `AttackCursorOnFriendlies`](Fixed-or-Improved-Logics.md#can-attack-allies) (by" +" FlyStar)" +msgstr "" +"[支持在武器上定义 `AttackFriendlies` 和 `AttackCursorOnFriendlies`](Fixed-or-Improved-Logics.md#can-attack-allies) (by" +" FlyStar)" + +#: ../../Whats-New.md:515 +msgid "[Attack non-threatening structures extensions](New-or-Enhanced-Logics.md#attack-non-threatening-structures-techno) (by FlyStar)" +msgstr "[攻击无威胁建筑扩展](New-or-Enhanced-Logics.md#attack-non-threatening-structures-techno)(by FlyStar)" + +#: ../../Whats-New.md:516 +msgid "[Customize size for mind controlled unit](New-or-Enhanced-Logics.md#mind-control-enhancement) (by NetsuNegi)" +msgstr "[自定义被心控单位的心控尺寸](New-or-Enhanced-Logics.md#mind-control-enhancement)(by NetsuNegi)" + +#: ../../Whats-New.md:518 ../../Whats-New.md:609 ../../Whats-New.md:794 +#: ../../Whats-New.md:1153 ../../Whats-New.md:1262 ../../Whats-New.md:1287 +#: ../../Whats-New.md:1326 ../../Whats-New.md:1371 msgid "Vanilla fixes:" msgstr "原版问题修复:" -#: ../../Whats-New.md:476 +#: ../../Whats-New.md:519 msgid "" "Fixed sidebar not updating queued unit numbers when adding or removing " "units when the production is on hold (by CrimRecya)" msgstr "修复侧边栏在生产暂停时添加或去除订单未能更新预购单位队列数量的问题(by CrimRecya)" -#: ../../Whats-New.md:477 +#: ../../Whats-New.md:520 msgid "" "Prevent the units with locomotors that cause problems from entering the " "tank bunker (by TaranDahl)" msgstr "防止使用了可能导致问题的运动模式的单位进入坦克碉堡(by TaranDahl)" -#: ../../Whats-New.md:478 +#: ../../Whats-New.md:521 msgid "" "Buildings with foundation bigger than 1x1 can now recycle spawned " "correctly (by TaranDahl)" msgstr "占地面积超过 1x1 的建筑现在可以正常回收子机(by TaranDahl)" -#: ../../Whats-New.md:479 +#: ../../Whats-New.md:522 msgid "" "Fixed an issue that `MovementZone=AmphibiousDestroyer` and " "`MovementZone=AmphibiousCrusher` technos being unable to enter on water " @@ -2166,7 +2423,7 @@ msgstr "" "修复了 `MovementZone=AmphibiousDestroyer` 与 `MovementZone=AmphibiousCrusher`" " 的单位无法进入水上建筑的问题(by CrimRecya)" -#: ../../Whats-New.md:480 +#: ../../Whats-New.md:523 msgid "" "Fixed an issue that laser, electric bolt and rad beam not support " "`Inviso=true` projectiles with `FlakScatter=true` to scatter (by " @@ -2175,43 +2432,43 @@ msgstr "" "修复了激光、EBolt、辐射波在 `FlakScatter=true` 的 `Inviso=true` 抛射体上不不跟随散布的问题(by " "CrimRecya)" -#: ../../Whats-New.md:481 +#: ../../Whats-New.md:524 msgid "" "Separated the AirstrikeClass pointer between the attacker/aircraft and " "the target to avoid erroneous overwriting issues (by NetsuNegi)" msgstr "分离了 AirstrikeClass 中攻击者/战机与目标的指针以避免错误覆盖问题(by NetsuNegi)" -#: ../../Whats-New.md:482 +#: ../../Whats-New.md:525 msgid "" "Fixed the bug that buildings will always be tinted as airstrike owner (by" " NetsuNegi)" msgstr "修复了建筑总是被染色为空袭所属方颜色的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:483 +#: ../../Whats-New.md:526 msgid "" "Fixed an issue where computer players did not search for new enemies " "after defeating them or forming alliances with them (by FlyStar)" msgstr "修复了 AI 玩家在消灭一家敌人或敌人结盟后不再搜索新敌人的问题(FlyStar)" -#: ../../Whats-New.md:484 +#: ../../Whats-New.md:527 msgid "" "Fixed an issue where airstrike flare line drawn to target at lower " "elevation would clip (by Starkku)" msgstr "修复了空袭引导激光高打低时会截断的问题(by Starkku)" -#: ../../Whats-New.md:485 +#: ../../Whats-New.md:528 msgid "" "Fixed the bug that damaged particle dont disappear after building has " "repaired by engineer (by NetsuNegi)" msgstr "修复了建筑在被工程师修复后受损粒子不会移除的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:486 +#: ../../Whats-New.md:529 msgid "" "Projectiles with `Vertical=true` now drop straight down if fired off by " "AircraftTypes instead of behaving erratically (by Starkku)" msgstr "现在当一个拥有 `Vertical=true` 的抛射体被战机类发射时将会正常下坠(by Starkku)" -#: ../../Whats-New.md:487 +#: ../../Whats-New.md:530 msgid "" "When `Speed=0` or the TechnoTypes cell cannot move due to " "`MovementRestrictedTo`, vehicles cannot attack targets beyond the " @@ -2221,14 +2478,14 @@ msgstr "" "若 `Speed=0` 或单位由于 `MovementRestrictedTo` 导致无法移动,载具不再可以攻击武器射程外的目标。`Area " "Guard` 和 `Hunt` 任务将不会生效(by FlyStar)" -#: ../../Whats-New.md:488 +#: ../../Whats-New.md:531 msgid "" "Fixed an issue that barrel anim data will be incorrectly overwritten by " "turret anim data if the techno's section exists in the map file (by " "CrimRecya)" msgstr "修复了地图文件中内置了某单位时其炮管动画数据会被炮塔动画数据错误覆盖的问题(by CrimRecya)" -#: ../../Whats-New.md:489 +#: ../../Whats-New.md:532 msgid "" "`IsSimpleDeployer` `BalloonHover=true` units with `DeployToLand=false` " "are no longer forced to land when hovering (by Starkku)" @@ -2236,7 +2493,7 @@ msgstr "" "拥有 `BalloonHover=true` 和 `IsSimpleDeployer=true` 但 `DeployToLand=false` " "的单位现在在悬停时不会强制着陆(by Starkku)" -#: ../../Whats-New.md:490 +#: ../../Whats-New.md:533 msgid "" "If `DeployingAnim` with `Shadow=true` is played for unit currently in air" " its shadow will now be drawn on ground (by Starkku)" @@ -2244,189 +2501,218 @@ msgstr "" "如果当前处于空中的单位通过 `DeployingAnim` 播放带有 `Shadow=true` 的动画则动画的影子现在会绘制在地面上(by " "Starkku)" -#: ../../Whats-New.md:491 +#: ../../Whats-New.md:534 msgid "" "`DeployingAnim` now supports both `Normalized=true` and `Reverse=true` " "(by Starkku)" msgstr "`DeployingAnim` 现已支持 `Normalized=true` 与 `Reverse=true`(by Starkku)" -#: ../../Whats-New.md:492 +#: ../../Whats-New.md:535 msgid "" "`DeployingAnim` using unit drawer now also tint accordingly with the unit" " (by Starkku)" msgstr "`DeployingAnim` 使用单位绘制方式时现可跟随单位一起染色(by Starkku)" -#: ../../Whats-New.md:493 +#: ../../Whats-New.md:536 msgid "Jumpjets in air now can correctly spawn missiles (by TaranDahl)" msgstr "现在 Jumpjet 单位在空中可以正确地生成导弹子机(by TaranDahl)" -#: ../../Whats-New.md:494 +#: ../../Whats-New.md:537 msgid "" "Fixed an issue that the currently hovered planning node not update up-to-" "date, such as using hotkeys to select technos (by CrimRecya)" msgstr "修复了所谓的高等路径学(by CrimRecya)" -#: ../../Whats-New.md:495 +#: ../../Whats-New.md:538 msgid "" "Fixed an issue that jumpjet infantry' shadow is always drawn even if they" " are cloaked (by TaranDahl)" msgstr "修复了 Jumpjet 步兵隐形时依然绘制影子的问题(by TaranDahl)" -#: ../../Whats-New.md:496 +#: ../../Whats-New.md:539 msgid "" "Fixed an issue that technos head to building's dock even they are not " "going to dock (by TaranDahl)" msgstr "修复了单位不执行停靠命令的情况下也会前往停靠位置的问题(by TaranDahl)" -#: ../../Whats-New.md:497 +#: ../../Whats-New.md:540 msgid "" "Fixed an issue that the jumpjet vehicles cannot stop correctly after " "going berserk (by TaranDahl)" msgstr "修复了被混乱的 Jumpjet 载具无法正确停止的问题(by TaranDahl)" -#: ../../Whats-New.md:498 +#: ../../Whats-New.md:541 msgid "" "Fixed an issue that infantry walking through a cell containing a tree " "would cause it to be impassable to other houses (by TaranDahl)" msgstr "修复了步兵占据包含树木的单元格会导致该单元格对其他所属方不可通行的问题(by TaranDahl)" -#: ../../Whats-New.md:499 +#: ../../Whats-New.md:542 msgid "" "Fixed the bug that techno unit will draw with ironcurtain and airstrike " "color and intensity who disguised as terrain or overlay (by NetsuNegi)" msgstr "修复了单位在伪装成地形对象或覆盖物时铁幕与空袭染色强度绘制错误的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:500 +#: ../../Whats-New.md:543 msgid "" "Fixed an issue that the AI would enter a combat state when its building " "receiving damage from friendly units or damage not greater than 0 (by " "TaranDahl)" msgstr "修复了 AI 在建筑受到的伤害即便来自友军单位或不大于 0 点也依然进入防御状态的问题(by TaranDahl)" -#: ../../Whats-New.md:501 +#: ../../Whats-New.md:544 msgid "" "Fixed an issue that the techno with weapon with `AA=yes` and `AG=no` " "would not auto targeting units that are falling, such as paratroopers (by" " TaranDahl)" msgstr "修复了所用武器 `AA=yes` 且 `AG=no` 的单位不会主动攻击坠落中的单位(例如伞兵)的问题(by TaranDahl)" -#: ../../Whats-New.md:502 +#: ../../Whats-New.md:545 msgid "" "Iron Curtain/Custom Tint Support for SHP Turreted Vehicles (by NetsuNegi " "& FlyStar)" msgstr "修复了铁幕/自定义染色无法将 SHP 有炮塔载具染色的问题(by NetsuNegi & FlyStar)" -#: ../../Whats-New.md:503 +#: ../../Whats-New.md:546 msgid "Reactivate unused trigger events 2, 53, and 54 (by FlyStar)" msgstr "重新激活无效的 2、53 和 54 号触发条件(by FlyStar)" -#: ../../Whats-New.md:504 +#: ../../Whats-New.md:547 msgid "" "Fixed the bug that vehicle fall on infantry will make all cell content " "has been removed (by NetsuNegi)" msgstr "修复了载具落到有步兵的单元格上时会将格内所有对象全部移除的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:505 +#: ../../Whats-New.md:548 msgid "" "Fixed buildings that have their owner changed during buildup skipping " "buildup and sometimes not correctly clearing the state (by Starkku)" msgstr "修复了建筑拔起过程中发生所属变更会跳过建造阶段且有时无法正确清除状态的问题(by Starkku)" -#: ../../Whats-New.md:506 +#: ../../Whats-New.md:549 msgid "" "Fixed `MovementZone=Subterannean` harvesters being unable to find docks " "if in area enclosed by water, cliffs etc. (by Starkku)" msgstr "修复了 `MovementZone=Subterannean` 的矿车无法跨越封闭的水域、悬崖等区域找到停靠点的问题(by Starkku)" -#: ../../Whats-New.md:507 +#: ../../Whats-New.md:550 msgid "" "Fixed an issue where some effects pointing to a unit were not properly " "cleared when the unit changed its owner (by TaranDahl)" msgstr "修复了指向某个某个单位的部分效果在该单位变更所属时未能正确清除的问题(by TaranDahl)" -#: ../../Whats-New.md:508 +#: ../../Whats-New.md:551 msgid "" "Allow Reveal Crate to take effect when picking up by another player " "controlled house in campaign (by Trsdy)" msgstr "允许在战役模式中由其他被玩家控制的所属方拾取到的开全图工具箱效果生效(by Trsdy)" -#: ../../Whats-New.md:509 +#: ../../Whats-New.md:552 msgid "Fixed an issue where the vanilla script ignores jumpjets (by TaranDahl)" msgstr "修复了原版脚本会忽略 Jumpjet 单位的问题(by TaranDahl)" -#: ../../Whats-New.md:510 +#: ../../Whats-New.md:553 msgid "" "Fixed the issue where trigger events 2, 53 and 54 in persistent type " "triggers would be activated unconditionally after activation (by FlyStar)" msgstr "修复 2、53 和 54 号触发条件在重复类触发器中只要激活过就会被无条件激活的问题(by FlyStar)" -#: ../../Whats-New.md:511 +#: ../../Whats-New.md:554 msgid "" "Fixed the bug that naval ship will sink even they destroyed in air (by " "NetsuNegi)" msgstr "修复了海军舰船即便在空中被摧毁也会在天上沉没的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:512 +#: ../../Whats-New.md:555 msgid "" "Fixed MPDebug timer displaying when debug's visibility is off (by " "11EJDE11)" msgstr "修复了 MPDEBUG 计时器在 debug 信息关闭可见时依旧显示的问题(by 11EJDE11)" -#: ../../Whats-New.md:513 +#: ../../Whats-New.md:556 msgid "" "Fixed the issue that units will goto farest location if target is closer " "than `MinimumRange` (by NetsuNegi)" msgstr "修复了单位距离目标小于 `MinimumRange` 时会前往最远距离的问题(by NetsuNegi)" -#: ../../Whats-New.md:514 +#: ../../Whats-New.md:557 msgid "" "Fixed a bug where units can be promoted when created via trigger actions " "even if they have `Trainable=false` (by NetsuNegi)" msgstr "修复了由触发结果创建的单位即便拥有 `Trainable=false` 也可以被升级的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:515 +#: ../../Whats-New.md:558 msgid "" "Fixed the bug that ai will try to product aircraft even the airport has " "no free dock for it (by NetsuNegi)" -msgstr "" -"修复了即便在没有可用的空余机位时 AI 也仍会尝试生产战机的 Bug(by NetsuNegi)" +msgstr "修复了即便在没有可用的空余机位时 AI 也仍会尝试生产战机的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:516 +#: ../../Whats-New.md:559 msgid "" "Fixed the issue where non-repairer units needed sensors to attack cloaked" " friendly units (by TaranDahl)" +msgstr "修复了非维修单位需要能够反隐才能攻击友军隐形单位的问题(by TaranDahl)" + +#: ../../Whats-New.md:560 +msgid "" +"Fixed an issue that rockets do not consider the destination altitude " +"during climbing (by TaranDahl)" +msgstr "修复了导弹在爬升过程中不考虑目标高度的问题(by TaranDahl)" + +#: ../../Whats-New.md:561 +msgid "" +"Fixed the bug that if object has been removed from LogicClass in " +"Update(), next object will be skip (by NetsuNegi)" +msgstr "修复了当一个物体更新时被移除会导致全局容器中下一个物体被跳过的 Bug(by NetsuNegi)" + +#: ../../Whats-New.md:562 +msgid "" +"Increased cursor update frequency by setting interval to 1ms instead of 16ms (by Fridge)" msgstr "" -"修复了非维修单位需要能够反隐才能攻击友军隐形单位的问题(by TaranDahl)" +"通过将间隔从 16 毫秒更改为 1 毫秒来提高光标更新频率(by Fridge)" -#: ../../Whats-New.md:517 +#: ../../Whats-New.md:563 msgid "" -"[Allow customizing whether to synchronously change the owner of the " -"RadioLink-linked units when the owner of a building changes](Fixed-or-Improved-Logics.md#custom-whether-to-synchronously-change-the-owner-of-the-radiolink-linked-units-when-the-owner-of-a-building-changes) (by " +"Fixed an issue that the AI would set anger towards friendly houses, " +"causing it to act stupidly (by TaranDahl)" +msgstr "" +"修复了 AI 会对友军所属方产生愤怒而导致行为异常的问题(by TaranDahl)" + +#: ../../Whats-New.md:564 +msgid "" +"Fixed an issue that the AI would look for the first house in the array as" +" an enemy instead of the nearest one when there were no enemies (by " "TaranDahl)" msgstr "" -"[允许自定义单位是否会在其所连接建筑发生所属变更时同步变更所属](Fixed-or-Improved-Logics.md#custom-whether-to-synchronously-change-the-owner-of-the-radiolink-linked-units-when-the-owner-of-a-building-changes)(by " -"TaranDahl)" +"修复了没有敌人的 AI 寻找敌人时会使用数组中第一个所属方而非空间上最近者的问题(by TaranDahl)" + +#: ../../Whats-New.md:565 +msgid "" +"Fixed the issue that weapon selection don't check if secondary's warhead " +"has `IsLocomotor=yes` (by NetsuNegi)" +msgstr "" +"修复了武器选取规则未检查副武弹头是否拥有 `IsLocomotor=yes` 的问题(by NetsuNegi)" -#: ../../Whats-New.md:519 ../../Whats-New.md:559 ../../Whats-New.md:887 -#: ../../Whats-New.md:972 ../../Whats-New.md:1136 ../../Whats-New.md:1177 -#: ../../Whats-New.md:1189 ../../Whats-New.md:1212 ../../Whats-New.md:1222 -#: ../../Whats-New.md:1238 ../../Whats-New.md:1286 ../../Whats-New.md:1297 +#: ../../Whats-New.md:567 ../../Whats-New.md:612 ../../Whats-New.md:940 +#: ../../Whats-New.md:1025 ../../Whats-New.md:1189 ../../Whats-New.md:1230 +#: ../../Whats-New.md:1242 ../../Whats-New.md:1265 ../../Whats-New.md:1275 +#: ../../Whats-New.md:1291 ../../Whats-New.md:1339 ../../Whats-New.md:1350 msgid "Phobos fixes:" msgstr "Phobos 过往版本问题修复:" -#: ../../Whats-New.md:520 +#: ../../Whats-New.md:568 msgid "" "Fixed the bug that `AllowAirstrike=no` cannot completely prevent air " "strikes from being launched against it (by NetsuNegi)" msgstr "修复了 `AllowAirstrike=no` 未能完全阻止对某个单位进行空袭的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:521 +#: ../../Whats-New.md:569 msgid "" "Fixed an issue that `FireAngle` was not taken into account when drawing " "barrel in `TurretShadow` (by CrimRecya)" msgstr "修复了使用 `TurretShadow` 绘制炮管影子时未考虑 `FireAngle` 的问题(by CrimRecya)" -#: ../../Whats-New.md:522 +#: ../../Whats-New.md:570 msgid "" "Fixed a bug that sometimes caused weapon/warhead detonations from " "features such as `ExtraWarheads`, animation damage or `Crit.Warhead` to " @@ -2435,85 +2721,85 @@ msgstr "" "修复了一个有时会导致 `ExtraWarheads`、动画伤害或 `Crit.Warhead` 引爆的武器/弹头相对其预期位置无意中移动的 " "Bug(by Starkku)" -#: ../../Whats-New.md:523 +#: ../../Whats-New.md:571 msgid "" "Fixed an issue that units' `LaserTrails` will always lags behind by one " "frame (by CrimRecya)" msgstr "修复了单位的 `LaserTrails` 总会滞后一帧的问题(by CrimRecya)" -#: ../../Whats-New.md:524 +#: ../../Whats-New.md:572 msgid "Fixed customized `WarpAway` anim's wrong definition (by Ollerus)" msgstr "修复了自定义 `WarpAway` 动画的错误定义(by Ollerus)" -#: ../../Whats-New.md:525 +#: ../../Whats-New.md:573 msgid "Fixed parsing of `DropPodTrailer` from INI (by Starkku)" msgstr "修复了 `DropPodTrailer` 未从 INI 解析的问题(by Starkku)" -#: ../../Whats-New.md:526 +#: ../../Whats-New.md:574 msgid "" "Fixed issue with `ReturnWeapon` not always firing off correctly (by " "CrimRecya)" msgstr "修复了 `ReturnWeapon` 有时不能正确触发的问题(by CrimRecya)" -#: ../../Whats-New.md:527 +#: ../../Whats-New.md:575 msgid "" "Fixed animation damage logic applying invoker/owner inconsistently " "between weapon & warhead (by Ollerus & Starkku)" msgstr "修复了动画在使用武器与弹头造成伤害时的调用者/所属方不一致问题(by Ollerus & Starkku)" -#: ../../Whats-New.md:528 +#: ../../Whats-New.md:576 msgid "" "Fixed an edge-case issue with Phobos' selection handling code crashing " "with Veinholes (by Starkku)" msgstr "修复了一个 Phobos 的选取代码在处理泰伯利亚藤蔓洞时崩溃的罕见问题(by Starkku)" -#: ../../Whats-New.md:529 +#: ../../Whats-New.md:577 msgid "Fixed `AmbientDamage.Warhead` not working for waves (by Starkku)" msgstr "修复了 `AmbientDamage.Warhead` 对波逻辑无效的问题(by Starkku)" -#: ../../Whats-New.md:530 +#: ../../Whats-New.md:578 msgid "" "Fixed `SkirmishUnlimitedColors` not being checked if Phobos runs without " "Ares active (by Starkku)" msgstr "修复了 `SkirmishUnlimitedColors` 在无 Ares 下运行 Phobos 不会被检查的问题(by Starkku)" -#: ../../Whats-New.md:531 +#: ../../Whats-New.md:579 msgid "" "Fixed number of `*.ApplyFirepowerMult` options (f.ex anim damage, crit) " "ignoring veterancy firepower modifier (by Starkku)" msgstr "修复了若干 `*.ApplyFirepowerMult` 选项(如动画伤害、暴击)忽略老兵火力修正的问题(by Starkku)" -#: ../../Whats-New.md:532 +#: ../../Whats-New.md:580 msgid "" "Fixed an issue that jumpjet vehicles can not stop correctly when assigned" " a target in range (by TaranDahl)" msgstr "修复了 Jumpjet 载具在指定射程内目标时无法正确停止的问题(by TaranDahl)" -#: ../../Whats-New.md:533 +#: ../../Whats-New.md:581 msgid "" "Fixed an issue that jumpjet infantry stop incorrectly when assigned a " "target out of range (by TaranDahl)" msgstr "修复了 Jumpjet 步兵在指定超出射程的目标时停止不正确的问题(by TaranDahl)" -#: ../../Whats-New.md:534 +#: ../../Whats-New.md:582 msgid "" "Fixed an issue where the 77 trigger event in Ares was not functioning " "properly (by NetsuNegi)" msgstr "修复了 Ares 的 77 号触发无法正常运作的问题(by NetsuNegi)" -#: ../../Whats-New.md:535 +#: ../../Whats-New.md:583 msgid "" "Fixed an interaction error between the engineer and the Ares rubble (by " "FlyStar)" msgstr "修复了工程师和 Ares 废墟逻辑的交互错误(FlyStar)" -#: ../../Whats-New.md:536 +#: ../../Whats-New.md:584 msgid "" "Fixed the projection location of selectbox when over elevated bridge (by " "NetsuNegi)" msgstr "修复了处于高架桥上时的选择框投影位置不正确的问题(by NetsuNegi)" -#: ../../Whats-New.md:537 +#: ../../Whats-New.md:585 msgid "" "Fixed an issue where the game would only use `Weapon1` and `Weapon2` for " "auto-targeting even when `MultiWeapon=yes` was set (by FlyStar)" @@ -2521,47 +2807,62 @@ msgstr "" "修复了即便设置了 `MultiWeapon=yes` 游戏也仍然只会使用 `Weapon1`、`Weapon2` 进行自动索敌的问题(by " "FlyStar)" -#: ../../Whats-New.md:538 +#: ../../Whats-New.md:586 msgid "" "Fixed a game load crash caused by `MultiWeapon.IsSecondary=-1` or non-" "projectile weapons (by FlyStar)" msgstr "修复了游戏加载过程中由于 `MultiWeapon.IsSecondary=-1` 或武器没有抛射体导致的崩溃问题(by FlyStar)" -#: ../../Whats-New.md:539 +#: ../../Whats-New.md:587 msgid "" "Fixed an issue that caused Ares's `Battery.KeepOnline` cannot keep " "defense buildings works fine (by NetsuNegi)" msgstr "修复了一个导致 Ares 的 `Battery.KeepOnline` 无法保持防御建筑正常运作的问题(by NetsuNegi)" -#: ../../Whats-New.md:540 +#: ../../Whats-New.md:588 msgid "" "Map Event 601 should return true only when exists in the map like other " "similar map events (by FS-21)" msgstr "将触发条件 `601 所属方存在科技类型...` 改为像其他条件一样仅当对象存在于地图内时才视为满足(by FS-21)" -#: ../../Whats-New.md:541 +#: ../../Whats-New.md:589 msgid "" "Fixed OverlayType `ZAdjust` as well as some shield & AttachEffect " "variables not being correctly saved & loaded (by Ollerus)" msgstr "修复了覆盖物的 `ZAdjust` 及一些护盾和 AE 变量无法正确保存与加载的问题(by Ollerus)" -#: ../../Whats-New.md:543 ../../Whats-New.md:942 ../../Whats-New.md:1165 +#: ../../Whats-New.md:590 +msgid "LimboDelivery buildings cannot be selected (by FlyStar)" +msgstr "虚拟投放的建筑不再可以被选中(by FlyStar)" + +#: ../../Whats-New.md:591 +msgid "Fixed the positive value of `Reveal` on warhead (by NetsuNegi)" +msgstr "修复了弹头上正值 `Reveal` 不工作的问题(by NetsuNegi)" + +#: ../../Whats-New.md:592 +msgid "" +"Fixed the bug that weapon cannot used to intercept on gound bullet if " +"it's projectile has `AG=no` (by NetsuNegi)" +msgstr "" +"修复了抛射体 `AG=no` 的武器无法拦截贴地飞行的抛射体的 Bug(by NetsuNegi)" + +#: ../../Whats-New.md:594 ../../Whats-New.md:995 ../../Whats-New.md:1218 msgid "Fixes / interactions with other extensions:" msgstr "其他扩展引擎相关的修复/交互:" -#: ../../Whats-New.md:545 ../../Whats-New.md:956 +#: ../../Whats-New.md:596 ../../Whats-New.md:1009 msgid "" "Taking over Ares' AlphaImage respawn logic to reduce lags from it (by " "NetsuNegi)" msgstr "接管 Ares 的 AlphaImage 重绘逻辑以减少其造成的卡顿(by NetsuNegi)" -#: ../../Whats-New.md:546 +#: ../../Whats-New.md:597 msgid "" "Fixed an issue that Ares' Type Conversion not resetting barrel's " "direction by `FireAngle` (by TaranDahl)" msgstr "修复了 Ares 的单位转换不会通过 `FireAngle` 重设炮管方向的问题(by TaranDahl)" -#: ../../Whats-New.md:547 +#: ../../Whats-New.md:598 msgid "" "Fixed the issue where Ares' `Flash.Duration` cannot override the weapon's" " repair flash effect (by Sovietianqi, based on knowledge of DeathFish)" @@ -2569,7 +2870,7 @@ msgstr "" "修复了 Ares 的 `[WarheadType] -> Flash.Duration=` 无法覆盖维修武器闪光效果的问题(by " "Sovietianqi,基于 DeathFish 的知识)" -#: ../../Whats-New.md:548 +#: ../../Whats-New.md:599 msgid "" "Fixed the bug that building with `CloningFacility=true` and " "`WeaponsFactory=true` may cloning multiple vehicles and then they get " @@ -2578,7 +2879,7 @@ msgstr "" "修复了拥有 `CloningFacility=true` 和 `WeaponsFactory=true` 的建筑可能克隆多个载具并卡住的 " "Bug(by NetsuNegi)" -#: ../../Whats-New.md:549 +#: ../../Whats-New.md:600 msgid "" "[Customize Ares's radar jam logic](New-or-Enhanced-Logics.md#customize-" "ares-s-radar-jam-logic) (by NetsuNegi)" @@ -2586,7 +2887,7 @@ msgstr "" "[自定义 Ares 的雷达干扰逻辑](New-or-Enhanced-Logics.md#customize-ares-s-radar-jam-" "logic)(by NetsuNegi)" -#: ../../Whats-New.md:550 +#: ../../Whats-New.md:601 msgid "" "Fixed a bug introduced by Ares where building types that have " "`UndeploysInto` cannot display `AltCameo` or `AltCameoPCX` even when you " @@ -2595,30 +2896,42 @@ msgstr "" "修复了 Ares 引入的渗透敌方重工后 `UndeploysInto` 建筑 `AltCameo` 或 `AltCameoPCX` 不显示 " "Bug(by NetsuNegi)" -#: ../../Whats-New.md:553 +#: ../../Whats-New.md:602 +msgid "" +"Fixed the issue that technos cannot spawn survivors due to non-" +"probabilistic reasons when the tech type was destroyed (by NetsuNegi)" +msgstr "修复了单位由于非概率原因无法在被摧毁时生成生还者的问题(by NetsuNegi)" + +#: ../../Whats-New.md:603 +msgid "" +"Fixed the bug that vehicle survivor can spawn on wrong position when " +"transport has been destroyed (by NetsuNegi)" +msgstr "修复了载具生还者在运输工具被摧毁时生成在错误位置的 Bug(by NetsuNegi)" + +#: ../../Whats-New.md:606 msgid "0.4.0.1" msgstr "0.4.0.1" -#: ../../Whats-New.md:557 +#: ../../Whats-New.md:610 msgid "" "Fixed preplaced aircraft outside visible map being incorrectly flagged as" " crashing under certain conditions (by Starkku)" msgstr "修复了处于可视地图范围外的预置战机某些情况下被错误标记为坠毁的问题(by Starkku)" -#: ../../Whats-New.md:560 +#: ../../Whats-New.md:613 msgid "" "AttachEffect `DisableWeapons` no longer interferes with 'can this " "unit/building fire weapons?' checks for units/buildings with no weapons " "(by Starkku)" msgstr "AE 的 `DisableWeapons` 效果不再干扰无武器单位/建筑的“该单位/建筑能否开火?”判定(by Starkku)" -#: ../../Whats-New.md:561 +#: ../../Whats-New.md:614 msgid "" "Fixed starting infantry being scattered randomly on game start instead of" " being grouped (by 11EJDE11, Belonit, Ollerus)" msgstr "修复了初始步兵从原有行为变为随机分散的问题(by 11EJDE11, Belonit, Ollerus)" -#: ../../Whats-New.md:562 +#: ../../Whats-New.md:615 msgid "" "Fixed an issue with certain Warhead detonation features (f.ex " "`Crit.Warhead` without `Crit.Warhead.FullDetonation=true` not snapping on" @@ -2627,17 +2940,17 @@ msgstr "" "修复了某些弹头引爆功能问题(例如当未设置 `Crit.Warhead.FullDetonation=true` 且未设置 `CellSpread`" " 的有 `Crit.Warhead` 弹头无法精确命中目标)(by Starkku)" -#: ../../Whats-New.md:563 +#: ../../Whats-New.md:616 msgid "Fixed an issue with `UndeploysInto.Sellable` (by TaranDahl)" msgstr "修复了 `UndeploysInto.Sellable` 相关问题(by TaranDahl)" -#: ../../Whats-New.md:564 +#: ../../Whats-New.md:617 msgid "" "Fixed an issue with `Powered`/`PoweredSpecial` building animation " "ownership change fix (by Trsdy)" msgstr "修复了 `Powered`/`PoweredSpecial` 建筑动画的所属变更修复相关的问题(by Trsdy)" -#: ../../Whats-New.md:565 +#: ../../Whats-New.md:618 msgid "" "Fixed `DisplayIncome`, `Transact.Money` etc. display strings showing " "through shroud and for objects that are supposed to be hidden such as " @@ -2646,248 +2959,248 @@ msgstr "" "修复了 `DisplayIncome`、`Transact.Money` " "等的数字在黑幕之上以及本应隐藏的对象(例如处于未被探测到的隐形敌方单位)上显示的问题(by Starkku)" -#: ../../Whats-New.md:566 +#: ../../Whats-New.md:619 msgid "" "Fixed an issue that could cause crashes when `FeedbackWeapon` was used to" " convert the firer to another TechnoType with less or no weapons (by " "Starkku)" msgstr "修复了一个 `FeedbackWeapon` 将开火者转换为另一种武器数量更少或无武器的单位时可能引发崩溃的问题(by Starkku)" -#: ../../Whats-New.md:567 +#: ../../Whats-New.md:620 msgid "" "Fixed an issue with parsing floating point numbers from INI that may have" " in some cases contributed to desyncs (by Starkku)" msgstr "修复了一个某些情况下从 INI 解析浮点值时可能导致不同步的问题(by Starkku)" -#: ../../Whats-New.md:570 +#: ../../Whats-New.md:623 msgid "0.4" msgstr "0.4" -#: ../../Whats-New.md:575 +#: ../../Whats-New.md:628 msgid "`Crit.AffectsHouses` for critical hit system (by Starkku)" msgstr "暴击系统添加 `Crit.AffectsHouses`(by Starkku)" -#: ../../Whats-New.md:576 +#: ../../Whats-New.md:629 msgid "Warhead or weapon detonation at superweapon target cell (by Starkku)" msgstr "在目标单元格处引爆弹头或武器(by Starkku)" -#: ../../Whats-New.md:577 +#: ../../Whats-New.md:630 msgid "Super Weapons launching other Super Weapons (by Morton)" msgstr "弹头发射超武(by Morton)" -#: ../../Whats-New.md:578 +#: ../../Whats-New.md:631 msgid "Launching Super Weapons on building infiltration (by Morton)" msgstr "允许在建筑被渗透时发射超级武器(by Morton)" -#: ../../Whats-New.md:579 +#: ../../Whats-New.md:632 msgid "Building airstrike target eligibility customization (by Starkku)" msgstr "自定义建筑能否作为空袭目标(by Starkku)" -#: ../../Whats-New.md:580 +#: ../../Whats-New.md:633 msgid "" "IvanBomb detonation & image display optionally centered on buildings (by " "Starkku)" msgstr "伊文炸弹爆点和图像的位置可以设设置成建筑中心(by Starkku)" -#: ../../Whats-New.md:581 +#: ../../Whats-New.md:634 msgid "Forcing specific weapon against cloaked or disguised targets (by Starkku)" msgstr "强制对隐形或伪装中的目标使用特定武器(by Starkku)" -#: ../../Whats-New.md:582 +#: ../../Whats-New.md:635 msgid "Customizable ROF random delay (by Starkku)" msgstr "自定义 `ROF` 随机间隔(by Starkku)" -#: ../../Whats-New.md:583 +#: ../../Whats-New.md:636 msgid "Animation with `Tiled=yes` now supports `CustomPalette` (by ststl)" msgstr "允许 `Tiled=yes` 的动画使用 `CustomPalette` 自定义色盘(by ststl)" -#: ../../Whats-New.md:584 +#: ../../Whats-New.md:637 msgid "Toggleable `DieSound` when grinding (by Trsdy)" msgstr "允许在被回收时播放 `DieSound`(by Trsdy)" -#: ../../Whats-New.md:585 +#: ../../Whats-New.md:638 msgid "Shields can inherit Techno ArmorType (by Starkku)" msgstr "护盾可以继承科技类型护甲(by Starkku)" -#: ../../Whats-New.md:586 +#: ../../Whats-New.md:639 msgid "" "Income money flying-string display when harvesters or slaves are docking " "to refineries or when spies steal credits (by Trsdy)" msgstr "矿车、奴隶对接矿场或间谍窃取资金时的 flying-string 显示(by Trsdy)" -#: ../../Whats-New.md:587 +#: ../../Whats-New.md:640 msgid "Allow random crates to be generated only on lands (by Trsdy)" msgstr "允许随机工具箱仅生成在陆地(by Trsdy)" -#: ../../Whats-New.md:588 +#: ../../Whats-New.md:641 msgid "Iron-curtain effects on infantry and organic units (by ststl)" msgstr "允许在步兵和生物单位上使用铁幕效果(by ststl)" -#: ../../Whats-New.md:589 +#: ../../Whats-New.md:642 msgid "Custom `SlavesFreeSound` (by TwinkleStar)" msgstr "自定义 `SlavesFreeSound`(by TwinkleStar)" -#: ../../Whats-New.md:590 +#: ../../Whats-New.md:643 msgid "Allows jumpjet to crash without rotation (by TwinkleStar)" msgstr "允许 Jumpjet 坠毁时不旋转(by TwinkleStar)" -#: ../../Whats-New.md:591 +#: ../../Whats-New.md:644 msgid "Customizable priority of superweapons timer sorting(by ststl)" msgstr "自定义超武计时器优先级(by ststl)" -#: ../../Whats-New.md:592 +#: ../../Whats-New.md:645 msgid "Customizable aircraft spawner spawn delay (by Starkku)" msgstr "自定义子机发射器生成间隔(by Starkku)" -#: ../../Whats-New.md:593 +#: ../../Whats-New.md:646 msgid "Customizable `Cluster` scatter distance (by Starkku)" msgstr "自定义 `Cluster` 散布距离(by Starkku)" -#: ../../Whats-New.md:594 +#: ../../Whats-New.md:647 msgid "Customizable `FlakScatter` distance (by Starkku)" msgstr "自定义 `FlakScatter` 散布距离(by Starkku)" -#: ../../Whats-New.md:595 +#: ../../Whats-New.md:648 msgid "" "Customizable debris & meteor impact and warhead detonation behaviour (by " "Starkku & Otamaa)" msgstr "自定义碎片 & 流星撞击以及弹头引爆行为(by Starkku 与 Otamaa)" -#: ../../Whats-New.md:596 +#: ../../Whats-New.md:649 msgid "Custom warhead debris animations (by Starkku)" msgstr "自定义弹头碎片动画(by Starkku)" -#: ../../Whats-New.md:597 +#: ../../Whats-New.md:650 msgid "" "Multiple burst shots / burst delay within infantry firing sequence (by " "Starkku)" msgstr "步兵开火序列的多发 Burst/Burst 间隔(by Starkku)" -#: ../../Whats-New.md:598 +#: ../../Whats-New.md:651 msgid "Attached particle system for animations (by Starkku)" msgstr "动画的附加粒子系统(by Starkku)" -#: ../../Whats-New.md:599 +#: ../../Whats-New.md:652 msgid "" "Removal of hardcoded AA & Gattling weapon selection restrictions (by " "Starkku)" msgstr "移除硬编码的对空与盖特逻辑的武器选用限制(by Starkku)" -#: ../../Whats-New.md:600 +#: ../../Whats-New.md:653 msgid "Projectile `SubjectTo(Land/Water)` (by Starkku)" msgstr "抛射体的 `SubjectTo(Land/Water)`(by Starkku)" -#: ../../Whats-New.md:601 +#: ../../Whats-New.md:654 msgid "Real time timers (by Morton)" msgstr "实时计时器(by Morton)" -#: ../../Whats-New.md:602 +#: ../../Whats-New.md:655 msgid "" "Default campaign game speed override and custom campaign game speed FPS " "(by Morton)" msgstr "默认战役游戏速度覆盖与自定义战役速度 FPS(by Morton)" -#: ../../Whats-New.md:603 +#: ../../Whats-New.md:656 msgid "Trigger actions that allow/forbid MCV to redeploy in game (by Trsdy)" msgstr "允许/禁止 MCV 重部署的触发结果(by Trsdy)" -#: ../../Whats-New.md:604 +#: ../../Whats-New.md:657 msgid "" "`AnimList` on zero damage Warheads toggle via `AnimList.ShowOnZeroDamage`" " (by Starkku)" msgstr "由 `AnimList.ShowOnZeroDamage` 决定 0 伤害弹头上的 `AnimList` 是否播放(by Starkku)" -#: ../../Whats-New.md:605 +#: ../../Whats-New.md:658 msgid "Including INI files and inheriting INI sections (by Morton)" msgstr "包含 INI 文件与继承 INI 节(by Morton)" -#: ../../Whats-New.md:606 +#: ../../Whats-New.md:659 msgid "Additions to automatic passenger deletion (by Starkku)" msgstr "自动删除乘客的补充(by Starkku)" -#: ../../Whats-New.md:607 +#: ../../Whats-New.md:660 msgid "Buildings considered as vehicles (by Starkku)" msgstr "将建筑视为载具(by Starkku)" -#: ../../Whats-New.md:608 +#: ../../Whats-New.md:661 msgid "" "TechnoType target evaluation map zone check behaviour customization (by " "Starkku)" msgstr "自定义目标评估地图区域检查行为(by Starkku)" -#: ../../Whats-New.md:609 +#: ../../Whats-New.md:662 msgid "`CanC4=false` building zero damage toggle (by Starkku)" msgstr "`CanC4=false` 建筑的 0 伤害开关(by Starkku)" -#: ../../Whats-New.md:610 +#: ../../Whats-New.md:663 msgid "OpenTopped transport target sharing customization (by Starkku)" msgstr "自定义 OpenTopped 运输工具共享目标(by Starkku)" -#: ../../Whats-New.md:611 +#: ../../Whats-New.md:664 msgid "Vanish animation for `AutoDeath.Behavior=vanish` (by Starkku)" msgstr "`AutoDeath.Behavior=vanish` 时的消失动画(by Starkku)" -#: ../../Whats-New.md:612 +#: ../../Whats-New.md:665 msgid "`AAOnly` for projectiles (by Starkku)" msgstr "抛射体上的 `AAOnly`(by Starkku)" -#: ../../Whats-New.md:613 +#: ../../Whats-New.md:666 msgid "" "`CreateUnit` improvements & additions (can spawn infantry and aircraft, " "units spawning in air, spawn animation) (by Starkku)" msgstr "`CreateUnit` 改进与增强(可以生成步兵和战机、单位可以在空中生成、生成动画)(by Starkku)" -#: ../../Whats-New.md:614 +#: ../../Whats-New.md:667 msgid "Option to center pause menu background (by Starkku)" msgstr "暂停菜单背景居中(by Starkku)" -#: ../../Whats-New.md:615 +#: ../../Whats-New.md:668 msgid "`LaunchSW.DisplayMoney` (by Starkku)" msgstr "`LaunchSW.DisplayMoney`(by Starkku)" -#: ../../Whats-New.md:616 +#: ../../Whats-New.md:669 msgid "Disguise logic improvements (by Starkku)" msgstr "伪装逻辑改进(by Starkku)" -#: ../../Whats-New.md:617 +#: ../../Whats-New.md:670 msgid "Custom insignias (by Starkku)" msgstr "自定义军衔(by Starkku)" -#: ../../Whats-New.md:618 +#: ../../Whats-New.md:671 msgid "Upgrade logic to allow altering of SpySat status (by Otamaa)" msgstr "允许加载物逻辑更改 SpySat 效果(by Otamaa)" -#: ../../Whats-New.md:619 +#: ../../Whats-New.md:672 msgid "" "Allow `ZShapePointMove` to apply during buildup via " "`ZShapePointMove.OnBuildup` (by Starkku)" msgstr "允许使用 `ZShapePointMove.OnBuildup` 决定拔起动画遵照 `ZShapePointMove`(by Starkku)" -#: ../../Whats-New.md:620 +#: ../../Whats-New.md:673 msgid "" "`UndeploysInto` building selling buildup sequence length customization " "(by Starkku)" msgstr "自定义可反部署建筑出售序列动画长度(by Starkku)" -#: ../../Whats-New.md:621 +#: ../../Whats-New.md:674 msgid "" "Allow overriding `Shield.AffectTypes` for each Warhead shield interaction" " (by Starkku)" msgstr "允许为每个弹头设置的 `Shield.AffectTypes`(by Starkku)" -#: ../../Whats-New.md:622 +#: ../../Whats-New.md:675 msgid "TechnoType conversion warhead & superweapon (by Morton)" msgstr "单位转换弹头与超级武器(by Morton)" -#: ../../Whats-New.md:623 +#: ../../Whats-New.md:676 msgid "TechnoType conversion on ownership change (by Trsdy)" msgstr "科技类型根据操作者改变而变形(by Trsdy)" -#: ../../Whats-New.md:624 +#: ../../Whats-New.md:677 msgid "Unlimited skirmish colors (by Morton)" msgstr "无限制遭遇战颜色(by Morton)" -#: ../../Whats-New.md:625 +#: ../../Whats-New.md:678 msgid "" "Example custom locomotor that circles around the target (*NOTE: For " "developer use only*) (by Kerbiter, CCHyper, with help from Otamaa; based " @@ -2896,35 +3209,35 @@ msgstr "" "围绕目标旋转的自定义运动模式示例实现(注:仅限开发者使用)(by Kerbiter、CCHyper,Otamaa 提供协助;基于 CnCVK " "的早期尝试)" -#: ../../Whats-New.md:626 +#: ../../Whats-New.md:679 msgid "" "Vehicle voxel turret shadows & body multi-section shadows (by TwinkleStar" " & Trsdy)" msgstr "Voxel 载具炮塔与多组件 Voxel 车体影子(by TwinkleStar 与 Trsdy)" -#: ../../Whats-New.md:627 +#: ../../Whats-New.md:680 msgid "Crushing tilt and slowdown customization (by Starkku)" msgstr "自定义碾压倾斜和减速(by Starkku)" -#: ../../Whats-New.md:628 +#: ../../Whats-New.md:681 msgid "Extra warhead detonations on weapon (by Starkku)" msgstr "在武器上引爆额外弹头(by Starkku)" -#: ../../Whats-New.md:629 +#: ../../Whats-New.md:682 msgid "" "Chrono sparkle animation display customization and improvements (by " "Starkku)" msgstr "超时空闪烁动画显示的自定义与改进(by Starkku)" -#: ../../Whats-New.md:630 +#: ../../Whats-New.md:683 msgid "Script action to Chronoshift teams to enemy base (by Starkku)" msgstr "超时空传送到敌方基地的动作脚本(by Starkku)" -#: ../../Whats-New.md:631 +#: ../../Whats-New.md:684 msgid "Customizable ElectricBolt Arcs (by Fryone & Kerbiter)" msgstr "自定义 EBolt 电弧(by Fryone 与 Kerbiter)" -#: ../../Whats-New.md:632 +#: ../../Whats-New.md:685 msgid "" "Digital display of HP and SP (by ststl, FlyStar, NaotoYuuki, Saigyouji, " "JunJacobYoung, based on knowledge of DeathFish)" @@ -2932,37 +3245,37 @@ msgstr "" "数字化显示生命值和护盾值(by ststl、FlyStar、NaotoYuuki、Saigyouji、JunJacobYoung,基于 " "DeathFish 的知识)" -#: ../../Whats-New.md:633 +#: ../../Whats-New.md:686 msgid "" "PipScale pip customizations (size, ammo / spawn / tiberium frames or " "offsets) (by Starkku)" msgstr "自定义各 PipScale 的 pip(大小、弹药/子机/矿石帧或偏移)(by Starkku)" -#: ../../Whats-New.md:634 +#: ../../Whats-New.md:687 msgid "Auto-deploy/Deploy block on ammo change (by Fryone)" msgstr "根据弹药自动部署/阻止部署(by Fryone)" -#: ../../Whats-New.md:635 +#: ../../Whats-New.md:688 msgid "`AltPalette` lighting toggle (by Starkku)" msgstr "`AltPalette` 亮度开关(by Starkku)" -#: ../../Whats-New.md:636 +#: ../../Whats-New.md:689 msgid "Unhardcoded timer blinking color scheme (by Starkku)" msgstr "对计时器闪烁的配色方案去硬编码(by Starkku)" -#: ../../Whats-New.md:637 +#: ../../Whats-New.md:690 msgid "" "Customizing shield self-healing timer restart when shield is damaged (by " "Starkku)" msgstr "自定义护盾受击重置自愈计时器(by Starkku)" -#: ../../Whats-New.md:638 +#: ../../Whats-New.md:691 msgid "" "Customizing minimum & maximum amount of damage shield can take from a " "single hit (by Starkku)" msgstr "自定义护盾单次可承受的最小与最大伤害(by Starkku)" -#: ../../Whats-New.md:639 +#: ../../Whats-New.md:692 msgid "" "`AutoDeath.Technos(Dont)Exist` can optionally track limboed (not " "physically on map, e.g transports etc) technos (by Starkku)" @@ -2970,39 +3283,39 @@ msgstr "" "`AutoDeath.Technos(Dont)Exist` 可计入 Limbo 状态(不在地图上,例如在运输工具中等)的科技类型(by " "Starkku)" -#: ../../Whats-New.md:640 +#: ../../Whats-New.md:693 msgid "Wall overlay `Palette` support (by Starkku)" msgstr "墙类覆盖物自定义 `Palette` 支持(by Starkku)" -#: ../../Whats-New.md:641 +#: ../../Whats-New.md:694 msgid "Show designator & inhibitor range (by Morton)" msgstr "显示指示者和抑制者范围(by Morton)" -#: ../../Whats-New.md:642 +#: ../../Whats-New.md:695 msgid "Owner-only sound on unit creation (by Fryone)" msgstr "单位创建时仅对所有者播放音效(by Fryone)" -#: ../../Whats-New.md:643 +#: ../../Whats-New.md:696 msgid "" "Allow using `Secondary` weapon against walls if `Primary` cannot target " "them (by Starkku)" msgstr "如果 `Primary` 无法对墙则切换为使用 `Secondary`(by Starkku)" -#: ../../Whats-New.md:644 +#: ../../Whats-New.md:697 msgid "Reloading ammo in transports (by Starkku)" msgstr "在运输工具内重装填弹药(by Starkku)" -#: ../../Whats-New.md:645 +#: ../../Whats-New.md:698 msgid "Dump variables to file on scenario end / hotkey (by Morton)" msgstr "在场景结束/按下快捷键时将变量输出至文件(by Morton)" -#: ../../Whats-New.md:646 +#: ../../Whats-New.md:699 msgid "" "\"House owns TechnoType\" and \"House doesn't own TechnoType\" trigger " "events (by Morton)" msgstr "`601 所属方存在科技类型...` 与 `602 所属方不·存在科技类型...` 触发条件(by Morton)" -#: ../../Whats-New.md:647 +#: ../../Whats-New.md:700 msgid "" "Allow toggling `Infantry/UnitsGainSelfHeal` for `MultiplayPassive=true` " "houses (by Starkku)" @@ -3010,23 +3323,23 @@ msgstr "" "允许为 `MultiplayPassive=true` 的所属方开关 `Infantry/UnitsGainSelfHeal`(by " "Starkku)" -#: ../../Whats-New.md:648 +#: ../../Whats-New.md:701 msgid "" "Customizable straight trajectory detonation & snap distance and pass-" "through option (by Starkku)" msgstr "自定义直线弹道引爆和瞬移距离以及穿透选项(by Starkku)" -#: ../../Whats-New.md:649 +#: ../../Whats-New.md:702 msgid "Airstrike & spy plane fixed spawn distance & height (by Starkku)" msgstr "空袭与间谍飞机固定生成距离与高度(by Starkku)" -#: ../../Whats-New.md:650 +#: ../../Whats-New.md:703 msgid "" "Allow enabling application of `Verses` and `PercentAtMax` for negative " "damage (by Starkku)" msgstr "允许负值杀伤使用 `Verses` 和 `PercentAtMax`(by Starkku)" -#: ../../Whats-New.md:651 +#: ../../Whats-New.md:704 msgid "" "In addition to `PlacementGrid.Translucency`, allow to set the " "transparency of the grid when `PlacementPreview` is enabled, using the " @@ -3035,250 +3348,250 @@ msgstr "" "除 `PlacementGrid.Translucency` 外允许在启用 `PlacementPreview` 时使用 " "`PlacementGrid.TranslucencyWithPreview` 设置预览格子的透明度(by Belonit)" -#: ../../Whats-New.md:652 +#: ../../Whats-New.md:705 msgid "Show briefing screen on singleplayer mission start (by Starkku)" msgstr "单人任务开始时显示简报屏幕(by Starkku)" -#: ../../Whats-New.md:653 +#: ../../Whats-New.md:706 msgid "" "Allow setting mission par times and related messages in `missionmd.ini` " "(by Starkku)" msgstr "允许在 `missionmd.ini` 中设置时间限制和相关信息(by Starkku)" -#: ../../Whats-New.md:654 +#: ../../Whats-New.md:707 msgid "" "Allow setting default singleplayer map loading screen and briefing " "offsets (by Starkku)" msgstr "允许设置单人游戏载入图与简报的偏移(by Starkku)" -#: ../../Whats-New.md:655 +#: ../../Whats-New.md:708 msgid "" "Allow toggling whether or not fire particle systems adjust target " "coordinates when firer rotates (by Starkku)" msgstr "允许开关 Fire 粒子系统是否在开火者旋转时调整目标坐标(by Starkku)" -#: ../../Whats-New.md:656 +#: ../../Whats-New.md:709 msgid "`AmbientDamage` warhead & main target ignore customization (by Starkku)" msgstr "自定义 `AmbientDamage` 弹头和忽略直接目标(by Starkku)" -#: ../../Whats-New.md:657 +#: ../../Whats-New.md:710 msgid "Flashing Technos on selecting (by Fryone)" msgstr "闪烁选中的科技类型(by Fryone)" -#: ../../Whats-New.md:658 +#: ../../Whats-New.md:711 msgid "Customizable DropPod properties on a per-InfantryType basis (by Trsdy)" msgstr "自定义每个步兵的 DropPod 参数(by Trsdy)" -#: ../../Whats-New.md:659 +#: ../../Whats-New.md:712 msgid "Projectile return weapon (by Starkku)" msgstr "抛射体归返武器(by Starkku)" -#: ../../Whats-New.md:660 +#: ../../Whats-New.md:713 msgid "" "Allow customizing aircraft landing direction per aircraft or per dock (by" " Starkku)" msgstr "允许每个战机和机场自定义战机着陆方向(by Starkku)" -#: ../../Whats-New.md:661 +#: ../../Whats-New.md:714 msgid "" "Allow animations to play sounds detached from audio event handler (by " "Starkku)" msgstr "允许动画播放独立于音频事件处理程序的音效(by Starkku)" -#: ../../Whats-New.md:662 +#: ../../Whats-New.md:715 msgid "Game save option when starting campaigns (by Trsdy)" msgstr "开始游戏时是否自动存档的开关(by Trsdy)" -#: ../../Whats-New.md:663 +#: ../../Whats-New.md:716 msgid "Carryall pickup voice (by Starkku)" msgstr "吊运拾起音效(by Starkku)" -#: ../../Whats-New.md:664 +#: ../../Whats-New.md:717 msgid "" "Option to have `Grinding.Weapon` require accumulated credits from " "grinding (by Starkku)" msgstr "可以设置 `Grinding.Weapon` 需要通过回收来积累足够的资金(by Starkku)" -#: ../../Whats-New.md:665 +#: ../../Whats-New.md:718 msgid "Re-enable the Veinhole Monster and Weeds from TS (by ZivDero)" msgstr "重启 TS 中的泰伯利亚藤蔓怪和泰伯利亚废矿逻辑(by ZivDero)" -#: ../../Whats-New.md:666 +#: ../../Whats-New.md:719 msgid "" "Recreate the weed-charging of SWs like the TS Chemical Missile (by " "ZivDero)" msgstr "重新创建类似于 TS 中化学飞弹那样的超武根据废矿充能效果(by ZivDero)" -#: ../../Whats-New.md:667 +#: ../../Whats-New.md:720 msgid "Allow to change the speed of gas particles (by ZivDero)" msgstr "允许更改 gas 粒子的速度(by ZivDero)" -#: ../../Whats-New.md:668 +#: ../../Whats-New.md:721 msgid "" "Allow upgrade animations to use `Powered` & `PoweredLight/Effect/Special`" " keys (by Starkku)" msgstr "允许加载物动画使用 `Powered` 和 `PoweredLight/Effect/Special` 类的标签(by Starkku)" -#: ../../Whats-New.md:669 +#: ../../Whats-New.md:722 msgid "" "Toggle for `Explodes=true` BuildingTypes to not explode during buildup or" " being sold (by Starkku)" msgstr "独立设置 `Explodes=true` 的建筑是否在拔起和出售时是否爆炸的开关(by Starkku)" -#: ../../Whats-New.md:670 +#: ../../Whats-New.md:723 msgid "" "Toggleable height-based shadow scaling for voxel air units (by Trsdy & " "Starkku)" msgstr "可开关的 Voxel 空中单位影子随高度缩放效果(by Trsdy 与 Starkku)" -#: ../../Whats-New.md:671 +#: ../../Whats-New.md:724 msgid "" "User setting toggles for harvester counter & power delta indicator (by " "Starkku)" msgstr "用于矿车计数器和电力变动指示器的用户设置开关(by Starkku)" -#: ../../Whats-New.md:672 +#: ../../Whats-New.md:725 msgid "Shrapnel weapon target filtering toggle (by Starkku)" msgstr "`Shrapnel.UseWeaponTargeting`(by Starkku)" -#: ../../Whats-New.md:673 +#: ../../Whats-New.md:726 msgid "" "Restore functionality of `[CrateRules] -> FreeMCV` with customizable " "credits threshold (by Starkku)" msgstr "复原 `[CrateRules] -> FreeMCV` 功能并允许自定义资金阈值(by Starkku)" -#: ../../Whats-New.md:674 +#: ../../Whats-New.md:727 msgid "" "Allow customizing the number of vehicles required for unit crates to turn" " into money crates (by Starkku)" msgstr "允许自定义单位箱子转为钱箱所判定的载具数量阈值(by Starkku)" -#: ../../Whats-New.md:675 +#: ../../Whats-New.md:728 msgid "Per-VehicleType reroll chance for `CrateGoodie=true` (by Starkku)" msgstr "每个 `CrateGoodie=true` 载具独立定义的重新随机概率(by Starkku)" -#: ../../Whats-New.md:676 +#: ../../Whats-New.md:729 msgid "Warheads spawning powerup crates (by Starkku)" msgstr "弹头生成升级工具箱(by Starkku)" -#: ../../Whats-New.md:677 +#: ../../Whats-New.md:730 msgid "Custom tint on TechnoTypes (by Starkku)" msgstr "自定义单位染色(by Starkku)" -#: ../../Whats-New.md:678 +#: ../../Whats-New.md:731 msgid "Revenge weapon (by Starkku)" msgstr "复仇武器(by Starkku)" -#: ../../Whats-New.md:679 +#: ../../Whats-New.md:732 msgid "" "AttachEffect types with new features like custom tint and weapon range " "modifier (by Starkku)" msgstr "AE 类型支持自定义染色和武器射程修正等新功能(by Starkku)" -#: ../../Whats-New.md:680 +#: ../../Whats-New.md:733 msgid "" "Force shield effect sync on deploy & vs. organic targets effect " "customization to complement the Iron Curtain ones (by Starkku)" msgstr "力场护盾在(反)部署时继承及针对有生物体的自定义铁幕功能补充(by Starkku)" -#: ../../Whats-New.md:681 +#: ../../Whats-New.md:734 msgid "" "Map trigger action `41 Play Animation At...` now uses additional " "parameter to determine if animation can play sound, deal damage etc. (by " "Starkku)" msgstr "地图触发结果 `41 播放动画在...` 现在使用额外参数来决定是否播放声音和造成杀伤(by Starkku)" -#: ../../Whats-New.md:682 +#: ../../Whats-New.md:735 msgid "" "Allow restricting how many times per frame a single radiation site can " "damage a building (by Starkku)" msgstr "允许限制同一辐射每帧对一个建筑造成杀伤的次数(by Starkku)" -#: ../../Whats-New.md:683 +#: ../../Whats-New.md:736 msgid "" "Allow explicitly setting the superweapons AI uses for Chronoshift script " "actions (by Starkku)" msgstr "允许明确定义 AI 使用超时空传送动作脚本时所使用的超级武器(by Starkku)" -#: ../../Whats-New.md:684 +#: ../../Whats-New.md:737 msgid "" "Allow customizing Aircraft weapon strafing regardless of `ROT` and " "`Strafing.Shots` values beyond 5 (by Trsdy)" msgstr "允许自定义战机武器扫射功能不受 `ROT` 值限制且 `Strafing.Shots` 可以超过 5(by Trsdy)" -#: ../../Whats-New.md:685 +#: ../../Whats-New.md:738 msgid "" "Allow strafing weapons to deduct ammo per shot instead of per strafing " "run (by Starkku)" msgstr "允许扫射武器按每次开火而非每次扫射扣除弹药(by Starkku)" -#: ../../Whats-New.md:686 +#: ../../Whats-New.md:739 msgid "" "Allow `CloakVisible=true` laser trails optinally be seen only if unit is " "detected (by Starkku)" msgstr "允许 `CloakVisible=true` 的激光尾焰仅在单位被检测到时可见(by Starkku)" -#: ../../Whats-New.md:687 +#: ../../Whats-New.md:740 msgid "" "Skirmish AI \"sell all buildings and set all technos to hunt\" behavior " "dehardcode (by TaranDahl)" msgstr "遭遇战 AI「卖家冲锋」行为去硬编码(by TaranDahl)" -#: ../../Whats-New.md:688 +#: ../../Whats-New.md:741 msgid "Skirmish AI \"gather when MCV deploy\" behavior dehardcode (by TaranDahl)" msgstr "遭遇战 AI「在 MCV 部署时集结」行为去硬编码(by TaranDahl)" -#: ../../Whats-New.md:689 +#: ../../Whats-New.md:742 msgid "" "Customizing whether passengers are kicked out when an aircraft fires (by " "ststl)" msgstr "自定义战机开火时是否踹出乘客(by ststl)" -#: ../../Whats-New.md:690 +#: ../../Whats-New.md:743 msgid "Shield hit flash (by Starkku)" msgstr "护盾受击闪光(by Starkku)" -#: ../../Whats-New.md:691 +#: ../../Whats-New.md:744 msgid "" "Option to scatter `(Anim/Splash)List` animations around impact " "coordinates (by Starkku)" msgstr "自定义 `(Anim/Splash)List` 在引爆坐标周围散布(by Starkku)" -#: ../../Whats-New.md:692 +#: ../../Whats-New.md:745 msgid "Customizable wake anim (by TwinkleStar)" msgstr "自定义涟漪动画(by TwinkleStar)" -#: ../../Whats-New.md:693 +#: ../../Whats-New.md:746 msgid "Customizable rocker amplitude (by TwinkleStar & Ollerus)" msgstr "自定义掀起幅度(by TwinkleStar 与 Ollerus)" -#: ../../Whats-New.md:694 +#: ../../Whats-New.md:747 msgid "" "AI script action to jump back to previous script after picking a random " "script (by handama)" msgstr "随机跳转回先前步骤的 AI 动作脚本(by handama)" -#: ../../Whats-New.md:695 +#: ../../Whats-New.md:748 msgid "Insignias visibility and position adjustments (by Fryone)" msgstr "军衔可见性与位置调整(by Fryone)" -#: ../../Whats-New.md:696 +#: ../../Whats-New.md:749 msgid "Promotion animation (by Fryone)" msgstr "升级动画(by Fryone)" -#: ../../Whats-New.md:697 +#: ../../Whats-New.md:750 msgid "" "Allow different technos to share build limit in a group (by ststl & " "Ollerus)" msgstr "允许不同科技类型共享建造限制组(by ststl 与 Ollerus)" -#: ../../Whats-New.md:698 +#: ../../Whats-New.md:751 msgid "" "Map events `604-605` for checking if a specific Techno enters in a cell " "(by FS-21)" msgstr "用于检查特定科技类型是否进入单元格的 `604-605` 号地图触发条件(by FS-21)" -#: ../../Whats-New.md:699 +#: ../../Whats-New.md:752 msgid "" "Waypoint path is drawn for all units under player control or if " "`[GlobalControls] -> DebugPlanningPaths=yes` (by Trsdy)" @@ -3286,193 +3599,193 @@ msgstr "" "当 `[GlobalControls] -> DebugPlanningPaths=yes` " "时为玩家控制的所有单位绘制路径点路径而不是仅限玩家所属方的(by Trsdy)" -#: ../../Whats-New.md:700 +#: ../../Whats-New.md:753 msgid "`RemoveDisguise` now works on vehicle disguises (by Trsdy)" msgstr "允许 `RemoveDisguise` 作用于载具伪装效果(by Trsdy)" -#: ../../Whats-New.md:701 +#: ../../Whats-New.md:754 msgid "" "Allow anchoring extended tooltips to the left side of the sidebar (by " "Trsdy)" msgstr "允许将扩展拓展工具条锚定在侧边栏左侧(by Trsdy)" -#: ../../Whats-New.md:702 +#: ../../Whats-New.md:755 msgid "" "Toggle to allow spawned aircraft to attack immediately after being " "spawned (by Starkku)" msgstr "子机生成后是否等待集结的开关(by Starkku)" -#: ../../Whats-New.md:703 +#: ../../Whats-New.md:756 msgid "`ZAdjust` for OverlayTypes (by Starkku)" msgstr "让覆盖物可以读取 `ZAdjust` 标签的值(by Starkku)" -#: ../../Whats-New.md:704 +#: ../../Whats-New.md:757 msgid "" "Allow customizing extra tint intensity for Iron Curtain & Force Shield " "(by Starkku)" msgstr "允许自定义铁幕和力场护盾的额外染色强度(by Starkku)" -#: ../../Whats-New.md:705 +#: ../../Whats-New.md:758 msgid "" "Option to enable parsing 8-bit RGB values from `[ColorAdd]` instead of " "RGB565 (by Starkku)" msgstr "允许 `[ColorAdd]` 使用 8 位 RGB 而非 RGB565(by Starkku)" -#: ../../Whats-New.md:706 +#: ../../Whats-New.md:759 msgid "" "Customizing height and speed at which subterranean units travel (by " "Starkku)" msgstr "自定义潜地单位的地下水平移动高度和速度(by Starkku)" -#: ../../Whats-New.md:707 +#: ../../Whats-New.md:760 msgid "" "Option for Warhead damage to penetrate Iron Curtain or Force Shield (by " "Starkku)" msgstr "允许弹头穿透铁幕或力场护盾(by Starkku)" -#: ../../Whats-New.md:708 +#: ../../Whats-New.md:761 msgid "Option for Warhead to remove all shield types at once (by Starkku)" msgstr "允许弹头一次性移除所有护盾类型(by Starkku)" -#: ../../Whats-New.md:709 +#: ../../Whats-New.md:762 msgid "" "Allow customizing voxel light source position (by Kerbiter & Morton, " "based on knowledge of thomassnedon)" msgstr "自定义 Voxel 光照角度(by Kerbiter 与 Morton,基于 thomassnedon 的知识)" -#: ../../Whats-New.md:710 +#: ../../Whats-New.md:763 msgid "" "Option to fix voxel light source being offset and incorrectly tilting on " "slopes (by Kerbiter)" msgstr "允许使用无额外调整的 Voxel 光照角度计算方式,原版算法会导致在斜坡上使用错误的倾斜角度(by Kerbiter)" -#: ../../Whats-New.md:711 +#: ../../Whats-New.md:764 msgid "AI superweapon delay timer customization (by Starkku)" msgstr "自定义 AI 超级武器发射延迟(by Starkku)" -#: ../../Whats-New.md:712 +#: ../../Whats-New.md:765 msgid "Disabling `MultipleFactory` bonus from specific BuildingType (by Starkku)" msgstr "排除特定工厂的多工厂加成(by Starkku)" -#: ../../Whats-New.md:713 +#: ../../Whats-New.md:766 msgid "Customizable ChronoSphere teleport delays for units (by Starkku)" msgstr "自定义单位被超时空传送超武传送的延迟(by Starkku)" -#: ../../Whats-New.md:714 +#: ../../Whats-New.md:767 msgid "Allowed and disallowed types for `FactoryPlant` (by Starkku)" msgstr "`FactoryPlant` 效果的受益类型限制(by Starkku)" -#: ../../Whats-New.md:715 +#: ../../Whats-New.md:768 msgid "" "Customizable damage & 'crumbling' (destruction) frames for TerrainTypes " "(by Starkku)" msgstr "自定义地形对象残损与倒坍(摧毁)帧(by Starkku)" -#: ../../Whats-New.md:716 +#: ../../Whats-New.md:769 msgid "Custom object palettes for TerrainTypes (by Starkku)" msgstr "地形对象自定义色盘(by Starkku)" -#: ../../Whats-New.md:717 +#: ../../Whats-New.md:770 msgid "Forbidding parallel AI queues for specific TechnoTypes (by Starkku)" msgstr "禁止特定科技类型的 AI 并行生产队列(by Starkku)" -#: ../../Whats-New.md:718 +#: ../../Whats-New.md:771 msgid "Nonprovocative Warheads (by Starkku)" msgstr "非挑衅弹头(by Starkku)" -#: ../../Whats-New.md:719 +#: ../../Whats-New.md:772 msgid "Option to restore `PowerSurplus` setting for AI (by Starkku)" msgstr "为 AI 重启 `PowerSurplus` 设置(by Starkku)" -#: ../../Whats-New.md:720 +#: ../../Whats-New.md:773 msgid "`FireOnce` infantry sequence reset toggle (by Starkku)" msgstr "禁止 `FireOnce` 重置步兵序列(by Starkku)" -#: ../../Whats-New.md:721 +#: ../../Whats-New.md:774 msgid "Assign Super Weapon cameo to any sidebar tab (by NetsuNegi)" msgstr "自定义超级武器所在栏(by NetsuNegi)" -#: ../../Whats-New.md:722 +#: ../../Whats-New.md:775 msgid "Customizing effect of level lighting on air units (by Starkku)" msgstr "自定义光照等级对空中单位的影响(by Starkku)" -#: ../../Whats-New.md:723 +#: ../../Whats-New.md:776 msgid "" "Reimplemented `Airburst` & `Splits` logic with more customization options" " (by Starkku)" msgstr "重新实现 `Airburst` 和 `Splits` 逻辑并添加更多自定义项(by Starkku)" -#: ../../Whats-New.md:724 +#: ../../Whats-New.md:777 msgid "Buildings considered as destroyable pathfinding obstacles (by Starkku)" msgstr "允许建筑被视为可摧毁的寻路障碍(by Starkku)" -#: ../../Whats-New.md:725 +#: ../../Whats-New.md:778 msgid "Animation visibility customization settings (by Starkku)" msgstr "自定义动画可见性(by Starkku)" -#: ../../Whats-New.md:726 +#: ../../Whats-New.md:779 msgid "Light effect customizations (by Starkku)" msgstr "自定义光效(by Starkku)" -#: ../../Whats-New.md:727 +#: ../../Whats-New.md:780 msgid "Building unit repair customizations (by Starkku)" msgstr "在建筑上自定义单位维修参数(by Starkku)" -#: ../../Whats-New.md:728 +#: ../../Whats-New.md:781 msgid "" "Toggle to disallow buildings from providing build area during buildup (by" " Starkku)" msgstr "允许禁用建筑还在建造过程中就提供 `BaseNormal` 效果(by Starkku)" -#: ../../Whats-New.md:729 +#: ../../Whats-New.md:782 msgid "" "Allow customizing which building types provide build area for a building " "(by Starkku)" msgstr "允许自定义建筑为哪些建筑提供 `BaseNormal` 效果(by Starkku)" -#: ../../Whats-New.md:730 +#: ../../Whats-New.md:783 msgid "`Scorch` / `Flamer` fire animation customization (by Starkku)" msgstr "自定义 `Scorch`/`Flamer` 火焰动画(by Starkku)" -#: ../../Whats-New.md:731 +#: ../../Whats-New.md:784 msgid "Warheads parasite removal customization (by Starkku)" msgstr "自定义弹头移除寄生(by Starkku)" -#: ../../Whats-New.md:732 +#: ../../Whats-New.md:785 msgid "Allow infantry to use land sequences in water (by Starkku)" msgstr "允许步兵在水中使用陆地序列(by Starkku)" -#: ../../Whats-New.md:733 +#: ../../Whats-New.md:786 msgid "" "`` can now be used as owner for pre-placed objects on " "skirmish and multiplayer maps (by Starkku)" msgstr "`` 现在可以作为遭遇战/多人游戏地图预置对象的所有者(by Starkku)" -#: ../../Whats-New.md:734 +#: ../../Whats-New.md:787 msgid "Allow customizing charge turret delays per burst on a weapon (by Starkku)" msgstr "允许武器自定义充能炮塔变换间隔(by Starkku)" -#: ../../Whats-New.md:735 +#: ../../Whats-New.md:788 msgid "Draw visual effects for airburst weapons (by CrimRecya)" msgstr "空爆武器正常绘制武器特效(by CrimRecya)" -#: ../../Whats-New.md:736 +#: ../../Whats-New.md:789 msgid "Unit `Speed` setting now accepts floating point values (by Starkku)" msgstr "现在单位的 `Speed` 支持小数(by Starkku)" -#: ../../Whats-New.md:737 +#: ../../Whats-New.md:790 msgid "" "`Strafing` is now disabled by default when using `Trajectory` (by " "CrimRecya)" msgstr "现在 `Strafing` 在抛射体使用了 `Trajectory` 时默认禁用(by CrimRecya)" -#: ../../Whats-New.md:738 +#: ../../Whats-New.md:791 msgid "" "Skip target scanning function calling for unarmed technos (by TaranDahl &" " solar-III)" msgstr "禁用了无武器单位的索敌(by TaranDahl & solar-III)" -#: ../../Whats-New.md:739 +#: ../../Whats-New.md:792 msgid "" "Allow retint fix to be disabled with `[AudioVisual] -> UseRetintFix=no` " "in `rulesmd.ini` due to performance considerations (by Kerbiter)" @@ -3480,99 +3793,99 @@ msgstr "" "允许通过在 `rulesmd.ini` 中设置 `[AudioVisual] -> UseRetintFix=no` " "来禁用地图光照重绘时的建筑光源问题修复以优化性能(by Kerbiter)" -#: ../../Whats-New.md:742 +#: ../../Whats-New.md:795 msgid "" "Allow AI to repair structures built from base nodes/trigger action 125/SW" " delivery in single player missions (by Trsdy)" msgstr "允许 AI 在单人任务中修复由基地节点/125 号触发结果/超级武器所投送的建筑(by Trsdy)" -#: ../../Whats-New.md:743 +#: ../../Whats-New.md:796 msgid "" "Allow setting whether `AlternateFLH` applies to vehicle passengers in the" " transport unit (by Trsdy & NetsuNegi)" msgstr "允许设定 `AlternateFLH` 是否作用于运输工具中的载具类载员(by Trsdy & NetsuNegi)" -#: ../../Whats-New.md:744 +#: ../../Whats-New.md:797 msgid "" "Improved the statistic distribution of the spawned crates over the " "visible area of the map. (by Trsdy, based on TwinkleStar's work)" msgstr "改进了升级工具箱在可见地图区域内生成位置的统计分布(by Trsdy,基于 TwinkleStar 的工作)" -#: ../../Whats-New.md:745 +#: ../../Whats-New.md:798 msgid "" "Teams spawned by trigger action 7,80,107 can use IFV and `OpenTopped` " "logic normally (by Trsdy)" msgstr "通过触发结果 7/80/107 生成的小队现在可以正常使用 IFV 和 `OpenTopped` 逻辑(by Trsdy)" -#: ../../Whats-New.md:746 +#: ../../Whats-New.md:799 msgid "" "Prevented units from retaining previous order after ownership change (by " "Trsdy)" msgstr "单位在所属变更后不再保留原指令(by Trsdy)" -#: ../../Whats-New.md:747 +#: ../../Whats-New.md:800 msgid "" "Break the mind-control link when capturing a mind-controlled building " "with an engineer (by Trsdy)" msgstr "工程师占领被心灵控制的建筑时切断心灵控制链接(by Trsdy)" -#: ../../Whats-New.md:748 +#: ../../Whats-New.md:801 msgid "" "Fixed BibShape drawing for a couple of frames during buildup for " "buildings with long buildup animations (by Starkku)" msgstr "修复了建造动画较长的建筑其 BibShape 会在建造过程中闪现的问题(by Starkku)" -#: ../../Whats-New.md:749 +#: ../../Whats-New.md:802 msgid "Cloaked & disguised objects displaying to observers (by Starkku)" msgstr "观察者现在可以看到隐形和伪装的对象(by Starkku)" -#: ../../Whats-New.md:750 +#: ../../Whats-New.md:803 msgid "" "Cloaked objects from allies displaying to player in single player " "missions (by Trsdy)" msgstr "单人任务中玩家可以看到友军的隐形对象(by Trsdy)" -#: ../../Whats-New.md:751 +#: ../../Whats-New.md:804 msgid "" "Skip `NaturalParticleSystem` displaying from in-map pre-placed structures" " (by Trsdy)" msgstr "地图预置建筑不再产生 `NaturalParticleSystem` 的粒子系统(by Trsdy)" -#: ../../Whats-New.md:752 +#: ../../Whats-New.md:805 msgid "Made sure that `Suicide=yes` weapon does kill the firer (by Trsdy)" msgstr "现在 `Suicide=yes` 的武器可以确保击杀开火者(by Trsdy)" -#: ../../Whats-New.md:753 +#: ../../Whats-New.md:806 msgid "" "Made sure that vxl units being flipped over get killed instead of " "rotating up and down (by Trsdy)" msgstr "现在确保了被翻转的 Voxel 单位会被击杀而不是占据原单元格持续翻滚(不死亡)(by Trsdy)" -#: ../../Whats-New.md:754 +#: ../../Whats-New.md:807 msgid "" "Allow jumpjet units to visually tilt or be flipped over on the ground " "even if `TiltCrashJumpjet=no` (by Trsdy)" msgstr "允许 Jumpjet 单位即便 `TiltCrashJumpjet=no` 也可以显示倾斜或翻转效果(by Trsdy)" -#: ../../Whats-New.md:755 +#: ../../Whats-New.md:808 msgid "" "Fixed the range for number of debris spawned by Warhead to use MaxDebris " "instead of MaxDebris - 1 (by Starkku)" msgstr "现在弹头碎片生成量上线正确使用 `MaxDebris` 而非 `MaxDebris - 1`(by Starkku)" -#: ../../Whats-New.md:756 +#: ../../Whats-New.md:809 msgid "" "Fixed `LandTargeting=1` not preventing from targeting TerrainTypes (trees" " etc.) on land (by Starkku)" msgstr "修复了 `LandTargeting=1` 没有禁止瞄准陆地上的地形对象(树等)的问题(by Starkku)" -#: ../../Whats-New.md:757 +#: ../../Whats-New.md:810 msgid "" "Fixed `NavalTargeting=6` not preventing from targeting empty water cells " "or TerrainTypes (trees etc.) on water (by Starkku)" msgstr "修复了 `NavalTargeting=6` 没有禁止瞄准空白水域或水上地形对象(树等)的问题(by Starkku)" -#: ../../Whats-New.md:758 +#: ../../Whats-New.md:811 msgid "" "Fixed `NavalTargeting=7` and/or `LandTargeting=2` resulting in still " "targeting TerrainTypes (trees etc.) on land with `Primary` weapon (by " @@ -3581,22 +3894,22 @@ msgstr "" "修复了 `NavalTargeting=7` 和 `LandTargeting=2` 仍允许使用主武器对陆地上的地形对象(树等)的问题(by " "Starkku)" -#: ../../Whats-New.md:759 +#: ../../Whats-New.md:812 msgid "" "Fixed an issue that causes objects in layers outside ground layer to not " "be sorted correctly (caused issues with animation and jumpjet layering " "for an instance) (by Starkku)" msgstr "修复非 ground 层物体排序异常所导致的问题(例如导致动画和 Jumpjet 图层排序错误)(by Starkku)" -#: ../../Whats-New.md:760 +#: ../../Whats-New.md:813 msgid "Restored `EVA_StructureSold` for buildings with `UndeploysInto` (by Trsdy)" msgstr "复原 `UndeploysInto` 建筑的 `EVA_StructureSold`(by Trsdy)" -#: ../../Whats-New.md:761 +#: ../../Whats-New.md:814 msgid "Allow MCV to redeploy in campaigns (by Trsdy)" msgstr "允许 MCV 在战役中重部署(by Trsdy)" -#: ../../Whats-New.md:762 +#: ../../Whats-New.md:815 msgid "" "Allow buildings with `UndeploysInto` to be sold if `Unsellable=no` but " "`ConstructionYard=no` (by Trsdy)" @@ -3604,13 +3917,13 @@ msgstr "" "允许拥有 `UndeploysInto` 的建筑在 `Unsellable=no` 但 `ConstructionYard=no` " "的情况下被出售(by Trsdy)" -#: ../../Whats-New.md:763 +#: ../../Whats-New.md:816 msgid "" "Fixed infantry without `C4=true` being killed in water if paradropped, " "chronoshifted etc. even if they can normally enter water (by Starkku)" msgstr "修复了无 `C4=true` 的步兵通过空降/超时空等方式进入水域会死亡的问题。即便它们正常情况下进入水域(by Starkku)" -#: ../../Whats-New.md:764 +#: ../../Whats-New.md:817 msgid "" "Fixed `WaterBound=true` buildings with `UndeploysInto` not correctly " "setting the location for the vehicle to move into when undeployed (by " @@ -3619,23 +3932,23 @@ msgstr "" "修复了 `WaterBound=true` 且拥有 `UndeploysInto` 的建筑在反部署时无法正常设置载具移动位置的问题(by " "Starkku)" -#: ../../Whats-New.md:765 +#: ../../Whats-New.md:818 msgid "Allow more than 5 `AlternateFLH` entries for units (by ststl)" msgstr "允许 `AlternateFLH` 条目超过 5 个(by ststl)" -#: ../../Whats-New.md:766 +#: ../../Whats-New.md:819 msgid "" "Buildings with `CanC4=false` will no longer take 1 point of positive " "damage if hit by negative damage (by Starkku)" msgstr "拥有 `CanC4=false` 的建筑在受到负值杀伤时不再获得 1 点正值伤害(by Starkku)" -#: ../../Whats-New.md:767 +#: ../../Whats-New.md:820 msgid "" "Buildings with primary weapon that has `AG=false` projectile now have " "attack cursor when selected (by Starkku)" msgstr "主武器使用 `AG=false` 抛射体的的建筑现在在选中时将正常显示攻击光标(by Starkku)" -#: ../../Whats-New.md:768 +#: ../../Whats-New.md:821 msgid "" "Transports with `OpenTopped=true` and weapon that has `Burst` above 1 and" " passengers firing out no longer have the passenger firing offset shift " @@ -3644,59 +3957,59 @@ msgstr "" "现在 `OpenTopped=true` 且拥有大于 1 的 `Burst` 的武器的运输工具其载员开火不再由于连发的序数而改变侧向偏移位置(by" " Starkku)" -#: ../../Whats-New.md:769 +#: ../../Whats-New.md:822 msgid "" "Light tint created by a building is now able to be removed after loading " "the game (by Trsdy)" msgstr "现在建筑灯光效果可以正常在读档后移除(by Trsdy)" -#: ../../Whats-New.md:770 +#: ../../Whats-New.md:823 msgid "Prevented crashing jumpjet units from firing (by Trsdy)" msgstr "修复了 Jumpjet 单位在坠毁时仍可继续向敌方目标开火的 Bug(by Trsdy)" -#: ../../Whats-New.md:771 +#: ../../Whats-New.md:824 msgid "" "Fixed disguised infantry not using custom palette for drawing the " "disguise when needed (by Starkku)" msgstr "修复了伪装的步兵在必要时没有使用自定义色盘来绘制伪装图像的问题(by Starkku)" -#: ../../Whats-New.md:772 +#: ../../Whats-New.md:825 msgid "" "Reenabled the obsolete `[General] -> WarpIn` as default anim type when " "units are warping in (by Trsdy)" msgstr "重启废弃的 `[General] -> WarpIn` 作为单位超时空传送来的默认动画类型(by Trsdy)" -#: ../../Whats-New.md:773 +#: ../../Whats-New.md:826 msgid "" "Fixed permanent health bar display for units targeted by temporal weapons" " upon mouse hover (by Trsdy)" msgstr "修复了被超时空武器攻击的单位其血条在鼠标掠过其上后不会消失的 Bug(by Trsdy)" -#: ../../Whats-New.md:774 +#: ../../Whats-New.md:827 msgid "" "Buildings with superweapons no longer display `SuperAnimThree` at " "beginning of match if pre-placed on the map (by Starkku)" msgstr "地图上预先放置的超级武器类建筑在游戏开始时不再显示 `SuperAnimThree`(by Starkku)" -#: ../../Whats-New.md:775 +#: ../../Whats-New.md:828 msgid "" "AI players can now build `Naval=true` and `Naval=false` vehicles " "concurrently like human players do (by Starkku)" msgstr "现在 AI 玩家可以像人类玩家一样同时建造 `Naval=true` 与 `Naval=false` 的载具(by Starkku)" -#: ../../Whats-New.md:776 +#: ../../Whats-New.md:829 msgid "" "Fixed the bug when jumpjets were snapping into facing bottom-right when " "starting movement (by Kerbiter)" msgstr "修复了 Jumpjet 单位在开始移动时会突然面向右下方向的 Bug(by Kerbiter)" -#: ../../Whats-New.md:777 +#: ../../Whats-New.md:830 msgid "" "Suppressed the BuildingCaptured EVA events when capturing a building " "considered as a vehicle (by Trsdy)" msgstr "移除了占领被视为载具的建筑时触发的 `EVA_BuildingCaptured` 事件播报(by Trsdy)" -#: ../../Whats-New.md:778 +#: ../../Whats-New.md:831 msgid "" "Objects with `Palette` set now have their color tint adjusted accordingly" " by superweapons, map retint actions etc. if they belong to a house using" @@ -3706,14 +4019,14 @@ msgstr "" "现在拥有 `Palette` 设置的对象可以正常根据超级武器、地图重绘光照行为等调整其色调。只要它们属于使用了任何配色方案的所属方而不仅限于 " "`[Colors]` 列表前半部分那些(by Starkku)" -#: ../../Whats-New.md:779 +#: ../../Whats-New.md:832 msgid "" "Animations using `AltPalette` are now remapped to their owner's color " "scheme instead of first listed color scheme and no longer draw over " "shroud (by Starkku)" msgstr "现在使用 `AltPalette` 的动画会被重映射到其所属方的配色方案而不再是被列出的第一个配色方案并且不再绘制于黑幕之上(by Starkku)" -#: ../../Whats-New.md:780 +#: ../../Whats-New.md:833 msgid "" "Fixed `DeployToFire` not considering building placement rules for " "`DeploysInto` buildings and as a result not working properly with " @@ -3722,13 +4035,13 @@ msgstr "" "修复了 `DeployToFire` 未考虑 `DeploysInto` 建筑的摆放规则并导致该功能无法与 `WaterBound` " "建筑一起正常工作的问题(by Starkku)" -#: ../../Whats-New.md:781 +#: ../../Whats-New.md:834 msgid "" "Fixed `DeployToFire` not recalculating firer's position on land if it " "cannot currently deploy (by Starkku)" msgstr "修复了 `DeployToFire` 在当前无法部署时未能重新计算开火者在陆地上所处位置的问题(by Starkku)" -#: ../../Whats-New.md:782 +#: ../../Whats-New.md:835 msgid "" "`Arcing=true` projectile elevation inaccuracy can now be fixed by setting" " `Arcing.AllowElevationInaccuracy=false` (by Starkku)" @@ -3736,67 +4049,67 @@ msgstr "" "现在可以通过设置 `Arcing.AllowElevationInaccuracy=false` 来修复 `Arcing=true` " "抛射体在有高程影响下的精度问题(by Starkku)" -#: ../../Whats-New.md:783 +#: ../../Whats-New.md:836 msgid "" "Fixed position and layer of info tip and reveal production cameo on " "selected building (by Belonit)" msgstr "修复了被选中建筑上信息提示和显示生产图标的位置和图层问题(by Belonit)" -#: ../../Whats-New.md:784 +#: ../../Whats-New.md:837 msgid "Fixed `TurretOffset` to be supported for SHP vehicles (by TwinkleStar)" msgstr "现在 `TurretOffset` 可以支持 Shape 载具了(by TwinkleStar)" -#: ../../Whats-New.md:785 +#: ../../Whats-New.md:838 msgid "" "`Powered`/`PoweredSpecial` buildings' powered anims will update as usual " "when being captured by enemies (by Trsdy)" msgstr "修复了 `Powered`/`PoweredSpecial` 的建筑在被敌人占领时其受电力影响的动画不再更新的问题(by Trsdy)" -#: ../../Whats-New.md:786 +#: ../../Whats-New.md:839 msgid "" "Fixed a glitch related to incorrect target setting for missiles (by " "Belonit)" msgstr "修复导弹目标设置错误导致的图形问题(by Belonit)" -#: ../../Whats-New.md:787 +#: ../../Whats-New.md:840 msgid "" "Skipped parsing `[Header]` section of compaign maps which led to " "occasional crashes on Linux (by Trsdy)" msgstr "跳过对战役地图 `[Header]` 小节的解析以修复 Linux 系统偶尔崩溃的问题(by Trsdy)" -#: ../../Whats-New.md:788 +#: ../../Whats-New.md:841 msgid "Fixed units' turret rotation and jumpjet wobble under EMP (by Trsdy)" msgstr "修复了 EMP 状态下炮塔仍可转动炮塔以及 Jumpjet 单位仍旧浮动的问题(by Trsdy)" -#: ../../Whats-New.md:789 +#: ../../Whats-New.md:842 msgid "" "Fixed `AmbientDamage` when used with `IsRailgun=yes` being cut off by " "elevation changes (by Starkku)" msgstr "修复了 `AmbientDamage` 在与 `IsRailgun=yes` 共用时会被高度变化切断的问题(by Starkku)" -#: ../../Whats-New.md:790 +#: ../../Whats-New.md:843 msgid "" "Fixed railgun and fire particles being cut off by elevation changes (by " "Starkku)" msgstr "修复了轨道炮和火焰粒子被高度变化切断的问题(by Starkku)" -#: ../../Whats-New.md:791 +#: ../../Whats-New.md:844 msgid "" "Fixed teleport units' frozen-still timer being reset after load game (by " "Trsdy)" msgstr "修复了超时空单位的僵直计时器在载入游戏后被清空的问题(by Trsdy)" -#: ../../Whats-New.md:792 +#: ../../Whats-New.md:845 msgid "Fixed teleport units being unable to visually tilt on slopes (by Trsdy)" msgstr "修复了超时空运动模式的单位无法在斜坡上视觉性倾斜的问题(by Trsdy)" -#: ../../Whats-New.md:793 +#: ../../Whats-New.md:846 msgid "" "Fixed teleport and drill units being unable to be visually flipped (by " "Trsdy)" msgstr "修复了超时空和潜地单位无法视觉翻转的问题(by Trsdy)" -#: ../../Whats-New.md:794 +#: ../../Whats-New.md:847 msgid "" "Aircraft docking on buildings now respect `[AudioVisual] -> PoseDir` as " "the default setting and do not always land facing north or in case of " @@ -3805,89 +4118,89 @@ msgstr "" "现在战机在建筑上停靠时尊重 `[AudioVisual] -> PoseDir` " "作为默认设置而不总是朝向北方,或者在地图预置建筑上面向建筑的方向(by Starkku)" -#: ../../Whats-New.md:795 +#: ../../Whats-New.md:848 msgid "" "Spawned aircraft now align with the spawner's facing when landing (by " "Starkku)" msgstr "现在生成的子机在降落时会与其母舰的朝向对正(by Starkku)" -#: ../../Whats-New.md:796 +#: ../../Whats-New.md:849 msgid "" "Fixed infantry attempted to entering buildings when waypointing together " "with engineer/agent/occupier/etc (by Trsdy)" msgstr "修复了步兵在与间谍/工程师/可驻军步兵等一起进入路径点时会尝试进入建筑的 Bug(by Trsdy)" -#: ../../Whats-New.md:797 +#: ../../Whats-New.md:850 msgid "Fixed jumpjet crash speed when crashing onto buildings (by NetsuNegi)" msgstr "移除了 Jumpjet 单位坠毁到建筑上时的减速效果(by NetsuNegi)" -#: ../../Whats-New.md:798 +#: ../../Whats-New.md:851 msgid "" "Fixed a desync potentially caused by displaying of cursor over selected " "`DeploysInto` units (by Starkku)" msgstr "修复了在选中 `DeploysInto` 单位上显示光标时可能引起的不同步问题(by Starkku)" -#: ../../Whats-New.md:799 +#: ../../Whats-New.md:852 msgid "Skipped drawing the rally point line when undeploying a factory (by Trsdy)" msgstr "跳过工厂类建筑反部署时的集结线绘制(by Trsdy)" -#: ../../Whats-New.md:800 +#: ../../Whats-New.md:853 msgid "" "Tint effects are now correctly applied to SHP vehicles and all types of " "aircraft as well as building animations regardless of their position (by " "Starkku)" msgstr "现在染色效果无论对象位置如何都会正确对 Shape 载具、所有类型的战机以及建筑动画生效(by Starkku)" -#: ../../Whats-New.md:801 +#: ../../Whats-New.md:854 msgid "" "Iron Curtained / Force Shielded objects now always use the correct tint " "color (by Starkku)" msgstr "现在被铁幕或力场护盾保护的对象将始终使用正确的染色效果(by Starkku)" -#: ../../Whats-New.md:802 +#: ../../Whats-New.md:855 msgid "" "Objects in invalid map coordinates are no longer used for starting view " "and AI base center calculations (by Starkku)" msgstr "位于无效地图坐标中的对象不再用于初始视图和 AI 基地中心计算(by Starkku)" -#: ../../Whats-New.md:803 +#: ../../Whats-New.md:856 msgid "" "Units & buildings with `DecloakToFire=false` weapons can now cloak while " "targeting & reloading (by Starkku)" msgstr "现在拥有 `DecloakToFire=false` 武器的单位和建筑在瞄准和装填时会隐形(by Starkku)" -#: ../../Whats-New.md:804 +#: ../../Whats-New.md:857 msgid "" "Units with `Sensors=true` will no longer reveal ally buildings (by " "Starkku)" msgstr "拥有 `Sensors=true` 的单位将不再解除友军建筑的隐形(by Starkku)" -#: ../../Whats-New.md:805 +#: ../../Whats-New.md:858 msgid "" "Air units are now reliably included by target scan with large range and " "Warhead detonation by large `CellSpread` (by Starkku)" msgstr "现在具有大范围的目标检索和大 `CellSpread` 的弹头爆炸范围可靠的包含了空中单位(by Starkku)" -#: ../../Whats-New.md:806 +#: ../../Whats-New.md:859 msgid "" "Weapons with `AA=true` Projectile can now correctly fire at air units " "when both firer and target are over a bridge (by Starkku)" msgstr "现在当开火者和目标都在桥上时拥有 `AA=true` 抛射体的武器可以正确的对空中单位射击(by Starkku)" -#: ../../Whats-New.md:807 +#: ../../Whats-New.md:860 msgid "" "Fixed disguised units not using the correct palette if target has custom " "palette (by NetsuNegi)" msgstr "修复了伪装单位在目标具有自定义调色盘时未使用正确调色盘的问题(by NetsuNegi)" -#: ../../Whats-New.md:808 +#: ../../Whats-New.md:861 msgid "" "Building upgrades now consistently use building's `PowerUpN` animation " "settings corresponding to the upgrade's `PowersUpToLevel` where possible " "(by Starkku)" msgstr "现在建筑加载物将尽可能一致地使用与加载物 `PowersUpToLevel` 相对应的建筑 `PowerUpN` 动画设置(by Starkku)" -#: ../../Whats-New.md:809 +#: ../../Whats-New.md:862 msgid "" "Subterranean units are no longer allowed to perform deploy functions like" " firing weapons or `IsSimpleDeployer` while burrowed or burrowing, they " @@ -3897,19 +4210,19 @@ msgstr "" "现在潜地单位在下潜或正在潜地移动时不再允许执行例如发射武器或 `IsSimpleDeployer` " "那样的部署功能,现在它们会先像运输工具释放乘客那样先钻出地面(by Starkku)" -#: ../../Whats-New.md:810 +#: ../../Whats-New.md:863 msgid "" "Fixed `Temporal=true` Warheads potentially crashing game if used to " "attack `Slaved=true` infantry (by Starkku)" msgstr "修复了 `Temporal=true` 弹头在攻击 `Slaved=true` 步兵时可能崩溃的问题(by Starkku)" -#: ../../Whats-New.md:811 +#: ../../Whats-New.md:864 msgid "" "Fixed some locomotors (Tunnel, Walk, Mech) getting stuck when moving too " "fast (by NetsuNegi)" msgstr "修复了一些运动模式(Tunnel、Walk、Mech)在移动过快时卡住的问题(by NetsuNegi)" -#: ../../Whats-New.md:812 +#: ../../Whats-New.md:865 msgid "" "Animations with `MakeInfantry` and `UseNormalLight=false` that are drawn " "in unit palette will now have cell lighting changes applied on them (by " @@ -3918,31 +4231,31 @@ msgstr "" "现在使用 `MakeInfantry` 和 `UseNormalLight=false` 并使用单位色盘绘制的动画将正常应用单元格的亮度变化(by" " Starkku)" -#: ../../Whats-New.md:813 +#: ../../Whats-New.md:866 msgid "" "Fixed Nuke & Dominator Level lighting not applying to AircraftTypes (by " "Starkku)" msgstr "修复了核弹和心灵支配的光照等级未应用于战机类别的问题(by Starkku)" -#: ../../Whats-New.md:814 +#: ../../Whats-New.md:867 msgid "" "Removed the 0 damage effect from `InfDeath=9` warheads to in-air infantry" " (by Trsdy)" msgstr "移除了 `InfDeath=9` 的弹头对 Jumpjet 步兵只能造成 0 伤害的效果(by Trsdy)" -#: ../../Whats-New.md:815 +#: ../../Whats-New.md:868 msgid "" "Projectiles created from `AirburstWeapon` now remember their WeaponType " "and can apply radiation etc. (by Starkku)" msgstr "现在由 `AirburstWeapon` 创建的抛射体会保留完整 WeaponType 并且可以应用辐射等效果(by Starkku)" -#: ../../Whats-New.md:816 +#: ../../Whats-New.md:869 msgid "" "Fixed damaged aircraft not repairing on `UnitReload=true` docks unless " "they land on the dock first (by Starkku)" msgstr "修复了受损的战机除非先降落于 `UnitReload=true` 的停靠点上否则不能修复的问题(by Starkku)" -#: ../../Whats-New.md:817 +#: ../../Whats-New.md:870 msgid "" "Certain global tileset indices (`ShorePieces`, `WaterSet`, `CliffSet`, " "`WaterCliffs`, `WaterBridge`, `BridgeSet` and `WoodBridgeSet`) can now be" @@ -3952,7 +4265,7 @@ msgstr "" "来切换某些全局地块索引(`ShorePieces`、`WaterSet`、`CliffSet`、`WaterCliffs`、`WaterBridge`、`BridgeSet`" " 和 `WoodBridgeSet`)以解析月球场景(by Starkku)" -#: ../../Whats-New.md:818 +#: ../../Whats-New.md:871 msgid "" "Fixed infantry `SecondaryFire` / `SecondaryProne` sequences being " "displayed in water instead of `WetAttack` (by Starkku)" @@ -3960,13 +4273,13 @@ msgstr "" "修复了步兵在水中显示 `SecondaryFire`/`SecondaryProne` 序列而不是 `WetAttack` 的问题(by " "Starkku)" -#: ../../Whats-New.md:819 +#: ../../Whats-New.md:872 msgid "" "Fixed objects with ally target and `AttackFriendlies=true` having their " "target reset every frame, particularly AI-owned buildings (by Starkku)" msgstr "修复了目标为友军单位且 `AttackFriendlies=true` 的对象每帧重置目标的问题,尤其是 AI 拥有的建筑(by Starkku)" -#: ../../Whats-New.md:820 +#: ../../Whats-New.md:873 msgid "" "Follower vehicle index for preplaced vehicles in maps is now explicitly " "constrained to `[Units]` list in map files and is no longer thrown off by" @@ -3976,42 +4289,42 @@ msgstr "" "现在地图预置载具的跟随索引已被明确限制在地图 `[Units]` " "列表中并且不再受到无法创建的载具或创建的载具具有其他载具作为初始乘客的情况所干扰(by Starkku)" -#: ../../Whats-New.md:821 +#: ../../Whats-New.md:874 msgid "" "Drive/Jumpjet/Ship/Teleport locomotor did not power on when it is un-" "piggybacked bugfix (by tyuah8)" msgstr "修复了 Drive/Jumpjet/Ship/Teleport 运动方式在退出 piggybacked 接口时无法激活的问题(by tyuah8)" -#: ../../Whats-New.md:822 +#: ../../Whats-New.md:875 msgid "Fixed `Stop` command not working so well in some cases (by CrimRecya)" msgstr "修复了 `停止` 命令有时候不灵光的问题(by CrimRecya)" -#: ../../Whats-New.md:823 +#: ../../Whats-New.md:876 msgid "" "Use 2D distance instead of 3D to check whether in air team members have " "arrived destination (by CrimRecya)" msgstr "现在作为小队成员的空中单位将使用 2D 距离而不是 3D 距离来判断是否达到任务目的地(by CrimRecya)" -#: ../../Whats-New.md:824 +#: ../../Whats-New.md:877 msgid "" "Subterranean movement now benefits from speed multipliers from all " "sources such as veterancy, AttachEffect etc. (by Starkku)" msgstr "现在潜地运动方式享受来自升级、AttachEffect 等所有来源的速度加成(by Starkku)" -#: ../../Whats-New.md:825 +#: ../../Whats-New.md:878 msgid "" "Fixed an issue where a unit will leave an impassable invisible barrier in" " its original position when it is teleported by ChronoSphere onto an " "uncrushable unit and self destruct (by NetsuNegi)" msgstr "修复了一个单位被超时空传送超武传送到一个不可碾压的单位上并自爆时会在原地留下空气墙的问题(by NetsuNegi)" -#: ../../Whats-New.md:826 +#: ../../Whats-New.md:879 msgid "" "Fixed the bug that parasite will vanish if it missed its target when its " "previous cell is occupied (by TaranDahl)" msgstr "修复了寄生单位在错过目标且其先前单元格被占用时会直接消失的 Bug(by TaranDahl)" -#: ../../Whats-New.md:827 +#: ../../Whats-New.md:880 msgid "" "Aircraft will now behave as expected according to it's `MovementZone` and" " `SpeedType` when moving onto different surfaces. In particular, this " @@ -4022,38 +4335,38 @@ msgstr "" "战机现在会根据其 `MovementZone` 和 `SpeedType` " "在移动到不同地形上时表现得像预期一样。特别是,这修复了原版中战机被命令移动到水面却将移动命令改为附近的岸边这一异常行为(by CrimRecya)" -#: ../../Whats-New.md:828 +#: ../../Whats-New.md:881 msgid "" "Fixed the bug that destroyed unit may leaves sensors (by tyuah8 & " "NetsuNegi)" msgstr "修复了单位被摧毁仍会遗留反隐形探测效果的问题(by tyuah8 与 NetsuNegi)" -#: ../../Whats-New.md:829 +#: ../../Whats-New.md:882 msgid "" "`FreeUnit` uses its own `SpeedType` to determine where to spawn (by " "NetsuNegi)" msgstr "`FreeUnit` 使用单位自己的 `SpeedType` 来寻找生成位置(by NetsuNegi)" -#: ../../Whats-New.md:830 +#: ../../Whats-New.md:883 msgid "" "Fixed the bug where naval ships set to `AllowedToStartInMultiplayer=yes` " "may spawn incorrectly on land (by NetsuNegi)" msgstr "修复了海军舰船设为 `AllowedToStartInMultiplayer=yes` 可能生成在陆地上的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:831 +#: ../../Whats-New.md:884 msgid "" "Fixed the bug where pathfinding issues occur when a building performs " "undeploy (by NetsuNegi)" msgstr "修复了建筑执行 `UndeploysInto` 时的寻路问题(by NetsuNegi)" -#: ../../Whats-New.md:832 +#: ../../Whats-New.md:885 msgid "" "Units are now unable to kick out from a factory that is in construction " "process, and will not always stuck in the factory (by CrimRecya & " "TaranDahl)" msgstr "单位现在不会再从正在建造的工厂中驶出,并且将不再会被卡在工厂内(by CrimRecya 与 TaranDahl)" -#: ../../Whats-New.md:833 +#: ../../Whats-New.md:886 msgid "" "Fixed a crash caused by electric bolt not invalidating Owner (by " "NetsuNegi)" @@ -4062,32 +4375,32 @@ msgstr "" "004C2C19](https://modenc.renegadeprojects.com/Internal_Error#eip_004C2C19)(by" " NetsuNegi)" -#: ../../Whats-New.md:834 +#: ../../Whats-New.md:887 msgid "" "Fixed a jumpjet crash related to voxel shadow drawing (by hejiajun107, " "Xkein, ZivDero)" msgstr "修复与 Voxel 阴影绘制相关的 Jumpjet 崩溃问题(by hejiajun107、Xkein、ZivDero)" -#: ../../Whats-New.md:835 +#: ../../Whats-New.md:888 msgid "" "Fixed issues caused by incorrect reference removal (f.ex. If the unit " "cloaks/enters transport, it cannot gain experience from previously " "launched spawners/C4/projectiles)" msgstr "修复了错误脱引用导致的问题(例如,如果单位隐形/进入运输工具则无法自此前发射的子机/抛射体以及安置的 C4 炸弹获得经验)" -#: ../../Whats-New.md:836 +#: ../../Whats-New.md:889 msgid "" "Fixed an issue that caused `IsSonic=true` wave drawing to crash the game " "if the wave traveled over a certain distance (by Starkku)" msgstr "修复了一个如果 `IsSonic=true` 的波绘制超过一定距离会导致游戏崩溃的问题(by Starkku)" -#: ../../Whats-New.md:837 +#: ../../Whats-New.md:890 msgid "" "Fixed `Hospital=yes` building can't kick out infantry after loading a " "save (by FlyStar)" msgstr "修复了 `Hospital=yes` 的建筑在读档后无法让步兵离开的问题(by FlyStar)" -#: ../../Whats-New.md:838 +#: ../../Whats-New.md:891 msgid "" "Electric bolts that are supposed to update their position based on units " "current firing coords (by default, those fired by vehicles) now do so " @@ -4096,57 +4409,57 @@ msgstr "" "现在那些本应跟随单位当前开火坐标更新位置的 EBolt 效果(默认指由载具发射的)能够正确的对超过 1 个同时创建的 EBolt 效果生效(by " "Starkku)" -#: ../../Whats-New.md:839 +#: ../../Whats-New.md:892 msgid "" "Fixed an issue where `FireAngle` would not work properly under certain " "circumstances (by TaranDahl)" msgstr "修复了 `FireAngle` 在某些情况下未能正常工作的问题(by TaranDahl)" -#: ../../Whats-New.md:840 +#: ../../Whats-New.md:893 msgid "" "Fixed the bug that healing weapons could not automatically acquire aerial" " targets (by TaranDahl)" msgstr "修复了治疗武器无法自动获取到空中目标的 Bug(by TaranDahl)" -#: ../../Whats-New.md:841 +#: ../../Whats-New.md:894 msgid "" "Technos are no longer unable to stop when it is above the elevated " "bridge, and they are still not allowed to stop moving under the elevated " "bridge, but can stop other missions (by CrimRecya)" msgstr "单位不再会因为在桥上而无法停止,目前它们在桥下还无法停止移动,但可以停止其他任务(by CrimRecya)" -#: ../../Whats-New.md:842 +#: ../../Whats-New.md:895 msgid "" "Fixed an issue that aircraft carriers can not find suitable locations for" " attacks when under elevated bridges on their own (by CrimRecya)" msgstr "修复了航空母舰在桥下时无法找到恰当攻击位置的问题(by CrimRecya)" -#: ../../Whats-New.md:843 +#: ../../Whats-New.md:896 msgid "" "Fixed an issue that in air aircraft carriers being unable to attack when " "it is near by elevated bridges (by CrimRecya & TaranDahl)" msgstr "修复了空天母舰靠近高架桥梁时无法攻击的问题(by CrimRecya 与 TaranDahl)" -#: ../../Whats-New.md:844 +#: ../../Whats-New.md:897 msgid "" "Fixed an issue that aircraft carriers cannot retract its spawned aircraft" " when on the bridge (by CrimRecya)" msgstr "修复了航空母舰在桥上无法回收子机的问题(by CrimRecya)" -#: ../../Whats-New.md:845 +#: ../../Whats-New.md:898 msgid "" "Fixed an issue where the shadow of jumpjet remained on the ground when it" " was above the elevated bridge (by CrimRecya)" msgstr "修复了 Jumpjet 在桥梁上方时其影子残留在地面的问题(by CrimRecya)" -#: ../../Whats-New.md:846 +#: ../../Whats-New.md:899 msgid "" "Fixed an issue where AI would select unreachable buildings and get stuck " "when looking for buildings like tank bunkers, bio reactors, etc. (by " "TaranDahl)" msgstr "修复了 AI 会找实际无法抵达的坦克碉堡、生化反应炉等建筑作为目标而导致卡住的问题(by TaranDahl)" -#: ../../Whats-New.md:847 +#: ../../Whats-New.md:900 msgid "" "Fixed the bug that `EnterBioReactorSound`, `LeaveBioReactorSound`, " "`EnterGrinderSound` on technotype does not used (by NetsuNegi)" @@ -4154,231 +4467,231 @@ msgstr "" "修复了 `EnterBioReactorSound`、`LeaveBioReactorSound`、`EnterGrinderSound` " "在单位上微观设定无效的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:848 +#: ../../Whats-New.md:901 msgid "" "Fixed the bug that harvester dont stop unloading and cannot unload cargos" " anymore when lifting by `IsLocomotor=yes` warhead (by NetsuNegi)" msgstr "修复了矿车被 `IsLocomotor=yes` 的弹头抬起也不会停止卸载状态且无法继续正常卸载的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:849 +#: ../../Whats-New.md:902 msgid "" "Fixed an issue that units on the slope tilted at an excessive angle (by " "CrimRecya & NetsuNegi)" msgstr "修复了单位在斜坡上倾斜角度过大的问题(by CrimRecya 与 NetsuNegi)" -#: ../../Whats-New.md:850 +#: ../../Whats-New.md:903 msgid "" "Fixed an issue that the first passenger who call the transport ship no " "longer board the transport ship when the land units call for boarding (by" " CrimRecya)" msgstr "修复了当陆地单位请求登船时第一个呼叫运输船的乘客不会登船的问题(by CrimRecya)" -#: ../../Whats-New.md:851 +#: ../../Whats-New.md:904 msgid "" "Fixed an issue that impassable invisible barrier generated by the " "behavior of infantry continuously entering vehicles (by CrimRecya)" msgstr "修复了步兵通过路径点连续进入两个载具等行为会产生空气墙的问题(by CrimRecya)" -#: ../../Whats-New.md:852 +#: ../../Whats-New.md:905 msgid "" "Fixed an issue that teleport units board transport vehicles on the bridge" " will create an impassable invisible barrier, which may cause the game to" " freeze or even crash (by NetsuNegi)" msgstr "修复了单位超时空进入桥上的运输载具会产生空气墙并可能导致游戏卡死乃至崩溃的问题(by NetsuNegi)" -#: ../../Whats-New.md:853 +#: ../../Whats-New.md:906 msgid "" "Fixed an issue that moving MCV with Teleport locomotion will cause " "reconnection error (by CrimRecya)" msgstr "修复了超时空移动的 MCV 会引发 Reconnection Error 的问题(by CrimRecya)" -#: ../../Whats-New.md:854 +#: ../../Whats-New.md:907 msgid "" "Fixed wrong shadow when a vehicle has hover locomotor and is being lifted" " by `IsLocomotor=yes` warhead (by NetsuNegi)" msgstr "修复了使用悬浮运动模式的载具被 `IsLocomotor=yes` 弹头抬起时显示的错误阴影(by NetsuNegi)" -#: ../../Whats-New.md:855 +#: ../../Whats-New.md:908 msgid "" "Fixed an issue that harvesters with amphibious movement zone can not " "automatically return to refineries with `WaterBound` on water surface (by" " NetsuNegi)" msgstr "修复了两栖矿车无法自动返回拥有 `WaterBound` 的矿场的问题(by NetsuNegi)" -#: ../../Whats-New.md:856 +#: ../../Whats-New.md:909 msgid "" "Fixed an issue that game crashes (EIP:7FB178) when infantry are about to " "enter an occupiable building that has been removed and is not real dead " "(by CrimRecya)" msgstr "修复了当步兵进入一个已被移除但并未真正死亡的可驻军建筑时导致的游戏崩溃问题(EIP:7FB178)(by CrimRecya)" -#: ../../Whats-New.md:857 +#: ../../Whats-New.md:910 msgid "" "Fixed an issue that game crashes when spawnee has been removed and is not" " real dead (by CrimRecya)" msgstr "修复了当子机已被移除但并未真正死亡时导致的游戏崩溃问题(by CrimRecya)" -#: ../../Whats-New.md:858 +#: ../../Whats-New.md:911 msgid "" "Fixed the bug that infantry ignored `Passengers` and `SizeLimit` when " "entering buildings (by NetsuNegi)" msgstr "修复了步兵进入建筑时忽略 `Passengers` 和 `SizeLimit` 的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:859 +#: ../../Whats-New.md:912 msgid "" "Fixed `VoiceDeploy` not played, when deployed through hot-key/command bar" " (by Fryone)" msgstr "修复了通过快捷键/底边栏按钮部署时不播放 `VoiceDeploy` 的问题(by Fryone)" -#: ../../Whats-New.md:860 +#: ../../Whats-New.md:913 msgid "Fixed the bug that ships can travel on elevated bridges (by NetsuNegi)" msgstr "修复了船只可以在高架桥上行驶的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:861 +#: ../../Whats-New.md:914 msgid "" "Fixed the bug that uncontrolled scatter when elite techno attacked by " "aircraft or some unit try crush it (by NetsuNegi)" msgstr "修复精英单位在被战机攻击或一个单位尝试碾压它时强制散开的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:862 +#: ../../Whats-New.md:915 msgid "" "Second weapon with `ElectricAssault=yes` will not unconditionally attack " "your building with `Overpowerable=yes` (by FlyStar)" msgstr "有 `ElectricAssault=yes` 的副武不再会无条件地攻击己方 `Overpowerable=yes` 的建筑(by FlyStar)" -#: ../../Whats-New.md:863 +#: ../../Whats-New.md:916 msgid "" "Fixed an issue that the widespread damage caused by detonation on the " "bridge/ground cannot affect objects on the ground/bridge who are in the " "opposite case (by CrimRecya)" msgstr "修复了范围伤害在桥上/地面引爆时无法影响相对情况即在地面/桥上的对象的问题(by CrimRecya)" -#: ../../Whats-New.md:864 +#: ../../Whats-New.md:917 msgid "" "Fixed the bug that `DamageSelf` and `AllowDamageOnSelf` are ineffective " "on airforce (by NetsuNegi)" msgstr "修复了 `DamageSelf` 和 `AllowDamageOnSelf` 对空军无效的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:865 +#: ../../Whats-New.md:918 msgid "" "Fixed an issue of incorrect position of `TrailerAnim` in `VoxelAnim` (by " "CrimRecya)" msgstr "修复了 Voxel 碎片 `TrailerAnim` 生成位置不正确的问题(by CrimRecya)" -#: ../../Whats-New.md:866 +#: ../../Whats-New.md:919 msgid "" "Fixed the bug that `OpenToppedWarpDistance` is calculated incorrectly for" " building target (by TaranDahl)" msgstr "修复了建筑类目标 `OpenToppedWarpDistance` 计算错误的 Bug(by TaranDahl)" -#: ../../Whats-New.md:867 +#: ../../Whats-New.md:920 msgid "" "Fixed an issue that `MovementZone=Fly` harvesters can not be able to " "enter refinery buildings manually (by CrimRecya)" msgstr "修复了 `MovementZone=Fly` 的矿车无法手动进入矿场的问题(by CrimRecya)" -#: ../../Whats-New.md:868 +#: ../../Whats-New.md:921 msgid "" "Fixed an issue that jumpjet harvester cannot automatically go mining when" " leaving the weapons factory (by CrimRecya)" msgstr "修复了 `Locomotor=Jumpjet` 的矿车出厂后不会自动去采矿的问题(by CrimRecya)" -#: ../../Whats-New.md:869 +#: ../../Whats-New.md:922 msgid "" "Fixed an issue that jumpjet harvester will overlap when manually entering" " refinery buildings and cause game crashes (by CrimRecya)" msgstr "修复了 `Locomotor=Jumpjet` 的矿车会因为手动进入矿场而交叠并导致游戏崩溃的问题(by CrimRecya)" -#: ../../Whats-New.md:870 +#: ../../Whats-New.md:923 msgid "" "Fixed an issue that `Spawned` aircraft will fly towards the edge of the " "map when its `Spawner` is under EMP (by CrimRecya)" msgstr "修了拥有 `Spawned` 的战机会在子机发射器单位处于 EMP 状态时飞向地图边界的问题(by CrimRecya)" -#: ../../Whats-New.md:871 +#: ../../Whats-New.md:924 msgid "" "Engineers can enter buildings normally when they don't need to be " "repaired (or you can force it by pressing Alt) (by FlyStar)" msgstr "工程师在建筑无需维修时可以正常进入(也可以通过按住 `[Alt]` 强制进入)(by FlyStar)" -#: ../../Whats-New.md:872 +#: ../../Whats-New.md:925 msgid "" "Player-controlled spies are not forced to perform other tasks while " "attacking buildings (by FlyStar)" msgstr "人类玩家控制的间谍在攻击建筑时不会强制执行其他任务(by FlyStar)" -#: ../../Whats-New.md:873 +#: ../../Whats-New.md:926 msgid "" "If `BombDisarm=yes` is not present for all weapon warheads, then the " "engineer will no longer use the appropriate mouse action (by FlyStar)" msgstr "如果所有武器的弹头都没有 `BombDisarm=yes` 则工程师将不再使用相应的鼠标动作(by FlyStar)" -#: ../../Whats-New.md:874 +#: ../../Whats-New.md:927 msgid "Fixed an unusual use of DeployFireWeapon for InfantryType (by FlyStar)" msgstr "修复了步兵使用 `DeployFireWeapon` 时的异常情况(by FlyStar)" -#: ../../Whats-New.md:875 +#: ../../Whats-New.md:928 msgid "" "Fixed the bug that passengers' Temporal attacks wouldn't stop when an " "OpenTopped vehicle was frozen by a Temporal warhead (by NetsuNegi)" msgstr "修复了即便 `OpenTopped` 载具被超时空弹头冻结其乘客的超时空武器攻击也不会停止的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:876 +#: ../../Whats-New.md:929 msgid "" "Fixed the bug that vehicle owned by computer will scatter when cloaking " "(by NetsuNegi)" msgstr "修复了 AI 的载具在隐形时会乱跑的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:877 +#: ../../Whats-New.md:930 msgid "" "Fixed the bug that submarine always turn left after changed owner by map " "event (by NetsuNegi)" msgstr "修复了水下单位在被地图触发修改所属后总会朝向左方的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:878 +#: ../../Whats-New.md:931 msgid "" "Fixed the bug that occupyable structure won't redraw when press deploy " "hotkey to release all occupants (by NetsuNegi)" msgstr "修复了可驻军建筑在按部署键释放全部驻兵后绘图不会刷新的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:879 +#: ../../Whats-New.md:932 msgid "" "Fixed an issue that if the garrison unload occupants when there is no " "open space around it would result in the disappearance of the occupants " "(by CrimRecya)" msgstr "修复了周围没有空地时释放驻军会导致它们消失的问题(by CrimRecya)" -#: ../../Whats-New.md:880 +#: ../../Whats-New.md:933 msgid "" "Fixed the bug that Locomotor warhead won't stop working when the attacker" " is being affected by `Temporal=yes` warhead (by NetsuNegi)" msgstr "修复了攻击者被 `Temporal=yes` 弹头作用时运动模式弹头不会停止工作的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:881 +#: ../../Whats-New.md:934 msgid "" "Fixed the bug that `IsLocomotor=yes` warhead rendering hover units " "unselectable and undamageable on elevated bridge (by NetsuNegi)" msgstr "修复了 `IsLocomotor=yes` 弹头会导致高架桥上的悬浮载具无法选中且无法被伤害的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:882 +#: ../../Whats-New.md:935 msgid "" "Fixed the bug that Locomotor warhead won't stop working when firer " "(except for vehicle) stop firing (by NetsuNegi)" msgstr "修复了非载具单位使用运动模式弹头时停止开火也不会停止工作的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:883 +#: ../../Whats-New.md:936 msgid "" "Fixed the bug that hover vehicle will sink if destroyed on bridge (by " "NetsuNegi)" msgstr "修复了悬浮载具在桥上被摧毁会沉没(而不是爆炸)的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:884 +#: ../../Whats-New.md:937 msgid "" "Fixed the fact that when the selected unit is in a rearmed state, it can " "unconditionally use attack mouse on the target (by FlyStar)" msgstr "修复了当被选中的单位武器正在 CD 时可以无条件对目标使用 Attack 光标的问题(by FlyStar)" -#: ../../Whats-New.md:885 +#: ../../Whats-New.md:938 msgid "" "Fixed pathfinding crashes (EIP 0x42A525, 0x42C507, 0x42C554) that " "happened on bigger maps due to too small pathfinding node buffer (by " @@ -4387,35 +4700,35 @@ msgstr "" "修复了在较大的地图中由于寻路节点缓冲区过小而引发的寻路崩溃(EIP 0x42A525、0x42C507、0x42C554)问题(by " "CrimRecya)" -#: ../../Whats-New.md:888 +#: ../../Whats-New.md:941 msgid "" "Fixed a few errors of calling for superweapon launch by `LaunchSW` or " "building infiltration (by Trsdy)" msgstr "修复了通过 `LaunchSW` 或渗透建筑来调用超级武器发射相关的若干错误(by Trsdy)" -#: ../../Whats-New.md:889 +#: ../../Whats-New.md:942 msgid "Add `ImmuneToCrit` for shields (by Trsdy)" msgstr "添加护盾版的 `ImmuneToCrit`(by Trsdy)" -#: ../../Whats-New.md:890 +#: ../../Whats-New.md:943 msgid "" "Reimplemented the bugfix for jumpjet units' facing when firing, discard " "the inappropriate `JumpjetTurnToTarget` tag (by Trsdy)" msgstr "重新实现了 Jumpjet 开火朝向 Bug 修复,弃用不合适的 `JumpjetTurnToTarget` 标签(by Trsdy)" -#: ../../Whats-New.md:891 +#: ../../Whats-New.md:944 msgid "" "`Gunner=true` transports now correctly change turret if a passenger is " "removed by `PassengerDeletion` (by Starkku)" msgstr "现在 `Gunner=true` 的运输工具可以在载员被 `PassengerDeletion` 删除时正确更换炮塔图像(by Starkku)" -#: ../../Whats-New.md:892 +#: ../../Whats-New.md:945 msgid "" "`PassengerDeletion.Soylent` now correctly calculates refund value if " "removed passenger has no explicitly set `Soylent` value (by Starkku)" msgstr "现在 `PassengerDeletion.Soylent` 可以在载员未设置 `Soylent` 的情况下正确计算退款金额(by Starkku)" -#: ../../Whats-New.md:893 +#: ../../Whats-New.md:946 msgid "" "Superweapon `Detonate.Weapon` & `Detonate.Warhead` now use the firing " "house to deal damage and apply Phobos warhead effects even if no firing " @@ -4424,68 +4737,68 @@ msgstr "" "现在超武的 `Detonate.Weapon` 和 `Detonate.Warhead` 即便找不到发射建筑也会使用发射者的所属方来造成伤害并使用" " Phobos 弹头效果(by Starkku)" -#: ../../Whats-New.md:894 +#: ../../Whats-New.md:947 msgid "" "`CreateUnit` now uses civilian house as owner instead if the intended " "owner house has been defeated (this is in-line with how `MakeInfantry` " "works) (by Starkku)" msgstr "现在 `CreateUnit` 会在目标所属方失败时转为中立所属方(与 `MakeInfantry` 的工作方式一致)(by Starkku)" -#: ../../Whats-New.md:895 +#: ../../Whats-New.md:948 msgid "" "`IsHouseColor` laser trails on techno now correctly change color when it " "changes owner (by Trsdy)" msgstr "现在 `IsHouseColor` 的激光尾焰可以在所属方变更时正确改变颜色(by Trsdy)" -#: ../../Whats-New.md:896 +#: ../../Whats-New.md:949 msgid "" "Fixed `Layer.UseObjectLayer=true` to work correctly for all cases where " "object changes layer (by Starkku)" msgstr "修复了 `Layer.UseObjectLayer=true` 以在所有对象改变层级的情形下都能正确工作(by Starkku)" -#: ../../Whats-New.md:897 +#: ../../Whats-New.md:950 msgid "" "Fixed `DetonateOnAllMapObjects.RequireVerses` not considering shield " "armor types (by Starkku)" msgstr "修复了 `DetonateOnAllMapObjects.RequireVerses` 未考虑护甲类型的问题(by Starkku)" -#: ../../Whats-New.md:898 +#: ../../Whats-New.md:951 msgid "" "Fixed new Phobos script actions not picking team leader correctly based " "on `LeadershipRating` (by Starkku)" msgstr "修复了 Phobos 新增动作脚本未能正确根据 `LeadershipRating` 选择队长的问题(by Starkku)" -#: ../../Whats-New.md:899 +#: ../../Whats-New.md:952 msgid "" "Fixed an issue with `Gunner=true` vehicles not correctly using the first " "passenger's mode with multiple passengers inside (by Starkku)" msgstr "修复了 `Gunner=true` 载具存在多名载员时未能正确使用首位载员 `IFVMode` 的问题(by Starkku)" -#: ../../Whats-New.md:900 +#: ../../Whats-New.md:953 msgid "" "Used `MindControl.Anim` for buildings deployed from mind-controlled " "vehicles (by Trsdy)" msgstr "为从被心灵控制的载具部署而来的建筑应用 `MindControl.Anim` 动画(by Trsdy)" -#: ../../Whats-New.md:901 +#: ../../Whats-New.md:954 msgid "" "Optimized extension class implementation, should improve performance all " "around (by Otamaa & Starkku)" msgstr "优化了扩展类的实现,应该能提高整体性能(by Otamaa 与 Starkku)" -#: ../../Whats-New.md:902 +#: ../../Whats-New.md:955 msgid "" "Fixed `Interceptor` not resetting target if the intercepted projectile " "changes type to non-interceptable one afterwards (by Starkku)" msgstr "修复了 `Interceptor` 在拦截的抛射体变为不可拦截抛射体后未能重置目标的问题(by Starkku)" -#: ../../Whats-New.md:903 +#: ../../Whats-New.md:956 msgid "" "Fixed `PlacementPreview` setting for BuildingTypes not being parsed from " "INI (by Starkku)" msgstr "修复了 `[BuildingType] -> PlacementPreview` 未从 INI 解析的问题(by Starkku)" -#: ../../Whats-New.md:904 +#: ../../Whats-New.md:957 msgid "" "Fixed Phobos animation additions that support `CreateUnit.Owner` not also" " checking `MakeInfantryOwner` (by Starkku)" @@ -4493,13 +4806,13 @@ msgstr "" "修复使用了 `CreateUnit.Owner` 的 Phobos 动画新增逻辑后导致不再检查 `MakeInfantryOwner` " "的问题(by Starkku)" -#: ../../Whats-New.md:905 +#: ../../Whats-New.md:958 msgid "" "Fixed `AutoDeath` to consider all conditions for objects in limbo (by " "Starkku)" msgstr "修复 `AutoDeath` 未考虑 Limbo 单位作为条件的问题(by Starkku)" -#: ../../Whats-New.md:906 +#: ../../Whats-New.md:959 msgid "" "Shields will no longer take damage if the parent techno has `Immune=true`" " or has `TypeImmune=true` and the damage comes from instance of same " @@ -4508,42 +4821,42 @@ msgstr "" "护盾现在可以正常根据单位上的 `Immune=true` 和 `TypeImmune=true` 正常忽略这些语句所免疫的伤害(by " "Starkku)" -#: ../../Whats-New.md:907 +#: ../../Whats-New.md:960 msgid "Fixed interceptors causing multiplayer games to desync (by Starkku)" msgstr "修复了抛射体拦截导致的 Reconnection Error 问题(by Starkku)" -#: ../../Whats-New.md:908 +#: ../../Whats-New.md:961 msgid "" "Optimized performance for map trigger retint action light source fix (by " "Starkku)" msgstr "优化了地图触发器重绘光源修复的性能表现(by Starkku)" -#: ../../Whats-New.md:909 +#: ../../Whats-New.md:962 msgid "" "Fixed a number of issues with Warhead Shield respawn / self heal rate " "modifiers like timers getting reset unnecessarily, the timer being " "adjusted wrong after the Warhead effect runs out etc. (by Starkku)" msgstr "修复了弹头护盾重生/自愈相关的多个问题例如计时器在不必要的情况下重置以及弹头效果结束后计时器被错误地调整等(by Starkku)" -#: ../../Whats-New.md:910 +#: ../../Whats-New.md:963 msgid "" "Fixed a problem with disguise visibility logic that could cause game to " "crash on loading a map (by Starkku)" msgstr "修复了伪装可见性可能导致地图加载时崩溃的问题(by Starkku)" -#: ../../Whats-New.md:911 +#: ../../Whats-New.md:964 msgid "" "Fixed owned `LimboDelivery` buildings not being saved correctly in " "savegames (by Starkku)" msgstr "修复了已有 `LimboDelivery` 建筑没有正确写入存档的问题(by Starkku)" -#: ../../Whats-New.md:912 +#: ../../Whats-New.md:965 msgid "" "Fixed a typo in weapon selector code causing issues with `NoAmmoWeapon` " "and related checks (by Starkku)" msgstr "修复了武器选择代码中导致 `NoAmmoWeapon` 及相关检查出错的拼写错误(by Starkku)" -#: ../../Whats-New.md:913 +#: ../../Whats-New.md:966 msgid "" "Fixed `DetonateOnAllMapObjects` behaving erratically or potentially " "crashing if it destroys buildings using Ares' advanced rubble (by " @@ -4552,67 +4865,67 @@ msgstr "" "修复了 `DetonateOnAllMapObjects` 在摧毁使用了 Ares 的高级废墟逻辑的建筑上行为异常甚至存在潜在崩溃风险的问题(by" " Starkku)" -#: ../../Whats-New.md:914 +#: ../../Whats-New.md:967 msgid "" "Fixed game crashing on loading save games if the saved game state had " "active radiation sites (by Starkku)" msgstr "修复了辐射逻辑导致游戏读档崩溃的问题(by Starkku)" -#: ../../Whats-New.md:915 +#: ../../Whats-New.md:968 msgid "Fixed a desync error caused by air/top layer sorting (by Starkku)" msgstr "修复了 air/top 图层排序引发的 Reconnection Error 文件(by Starkku)" -#: ../../Whats-New.md:916 +#: ../../Whats-New.md:969 msgid "" "Fixed heal / repair weapons being unable to remove parasites from " "shielded targets if they were unable to heal / repair the parent unit (by" " Starkku)" msgstr "修复了寄生在无法治疗/维修的单位中的寄生者无法被自愈/维修武器驱逐的问题" -#: ../../Whats-New.md:917 +#: ../../Whats-New.md:970 msgid "" "Fixed `Inviso=true` interceptor projectiles applying damage on " "interceptable, armor type-having projectiles twice (by Starkku)" msgstr "修复了拦截者使用 `Inviso=true` 抛射体会对可拦截且拥有护甲类型的被拦截抛射体造成两次伤害的问题(by Starkku)" -#: ../../Whats-New.md:918 +#: ../../Whats-New.md:971 msgid "" "Fixed `AutoDeath` causing crashes when used to kill a parasite unit " "inside an another unit (by Starkku)" msgstr "修复了 `AutoDeath` 在击杀当前寄生在另一个单位中的寄生者时导致崩溃的问题(by Starkku)" -#: ../../Whats-New.md:919 +#: ../../Whats-New.md:972 msgid "" "Phobos Warhead effects combined with `CellSpread` now correctly apply to " "buildings if any of the foundation cells are hit (by Starkku)" msgstr "现在 Phobos 弹头效果可以在 `CellSpread` 套住建筑所占据的任意单元格时均可正确作用(by Starkku)" -#: ../../Whats-New.md:920 +#: ../../Whats-New.md:973 msgid "" "Phobos Warhead effects on zero-`CellSpread` Warheads no longer apply to " "target if projectile detonates prematurely, far-away from target (by " "Starkku)" msgstr "现在 Phobos 弹头效果在 `CellSpread` 为 0 时不会在抛射体提前引爆的情况下依旧作用于目标(by Starkku)" -#: ../../Whats-New.md:921 +#: ../../Whats-New.md:974 msgid "" "Fixed radiation site damage not taking the radiation level reduction into" " accord (by Starkku)" msgstr "修复了辐射伤害未考虑辐射等级衰减的问题(by Starkku)" -#: ../../Whats-New.md:922 +#: ../../Whats-New.md:975 msgid "" "Correctly update laser trail position while techno is cloaked even if " "trail is not drawn (by Starkku)" msgstr "现在在单位隐形时即便没有绘制尾迹也会正确更新激光尾焰的位置(by Starkku)" -#: ../../Whats-New.md:923 +#: ../../Whats-New.md:976 msgid "" "Fixed `Shield.Respawn.Amount` not defaulting to shield type default if " "not set (by Starkku)" msgstr "修复了 `Shield.Respawn.Amount` 在未设置时未正确使用护盾类型默认值的问题(by Starkku)" -#: ../../Whats-New.md:924 +#: ../../Whats-New.md:977 msgid "" "Fixed an issue where the hotkey message text in frame-by-frame mode " "incorrectly referenced `TXT_DISPLAY_DAMAGE_DESC` instead of " @@ -4621,7 +4934,7 @@ msgstr "" "修复了逐帧模式快捷键的消息提示文本读取了 `TXT_DISPLAY_DAMAGE_DESC` 而不是 " "`TXT_FRAME_BY_FRAME_DESC` 的问题(by DeathFish)" -#: ../../Whats-New.md:925 +#: ../../Whats-New.md:978 msgid "" "Buildings considered vehicles (`ConsideredVehicle=true` or not set in " "conjunction with `UndeploysInto` & 1x1 foundation) are now considered " @@ -4630,29 +4943,29 @@ msgstr "" "现在被视为载具的建筑(`ConsideredVehicle=true` 或同时拥有 `UndeploysInto` 与 " "`Foundation=1x1` 的建筑)在目标类型检查时被视为载具(by Starkku)" -#: ../../Whats-New.md:926 +#: ../../Whats-New.md:979 msgid "" "Fixed Phobos Warhead effects not reliably being applied on damage area as" " opposed to full weapon-based Warhead detonation (by Starkku)" msgstr "修复了 Phobos 弹头效果未能像由武器引爆的完整弹头那样可靠地作用于伤害区域的问题(by Starkku)" -#: ../../Whats-New.md:927 +#: ../../Whats-New.md:980 msgid "Fixed `LimboKill` not working reliably (by CrimRecya)" msgstr "修复了 `LimboKill` 未能可靠地移除虚拟建筑的问题(by CrimRecya)" -#: ../../Whats-New.md:928 +#: ../../Whats-New.md:981 msgid "" "Fixed `SelfHealGainType=none` not working (changed to `noheal`) (by " "Starkku)" msgstr "修复了 `SelfHealGainType=none` 无效的问题(改为 `noheal`)(by Starkku)" -#: ../../Whats-New.md:929 +#: ../../Whats-New.md:982 msgid "" "Fixed AircraftTypes gaining self-healing from `UnitsGainSelfHeal` by " "default (while not displaying the pip) when they should not (by Starkku)" msgstr "修复了默认情况下战机类型错误地通过 `UnitsGainSelfHeal` 获得自愈能力(同时也不现实 pip)的问题(by Starkku)" -#: ../../Whats-New.md:930 +#: ../../Whats-New.md:983 msgid "" "Fixed `LaunchSW.IgnoreInhibitors` and `SW.Next.IgnoreInhibitors` " "overriding corresponding `IgnoreDesignators` and `IgnoreInhibitors` " @@ -4661,14 +4974,14 @@ msgstr "" "修复了 `LaunchSW.IgnoreInhibitors` 和 `SW.Next.IgnoreInhibitors` 覆盖对应 " "`IgnoreDesignators` 和 `IgnoreInhibitors` 设置的问题(by Ollerus)" -#: ../../Whats-New.md:931 +#: ../../Whats-New.md:984 msgid "" "Type conversion on Warheads and Superweapons will no longer recursively " "convert units if applicable conversion pairs are listed, and only first " "applicable pair takes effect (by Starkku)" msgstr "单位转换弹头和超武在存在有效的转换对应关系时不再递归执行而是仅使用列表中更早读到的那组对应关系(by Starkku)" -#: ../../Whats-New.md:932 +#: ../../Whats-New.md:985 msgid "" "Fixed `Ammo.DeployUnlockMinimumAmount`/`Ammo.DeployUnlockMaximumAmount` " "behavior inside tank bunkers (by Fryone)" @@ -4677,55 +4990,55 @@ msgstr "" "`Ammo.DeployUnlockMinimumAmount`/`Ammo.DeployUnlockMaximumAmount` 行为(by " "Fryone)" -#: ../../Whats-New.md:933 +#: ../../Whats-New.md:986 msgid "" "Fixed `Ammo.AddOnDeploy` behavior inside tank bunkers for non-converters " "(by Fryone)" msgstr "修复了坦克碉堡内无 `Convert.Deploy` 载具的 `Ammo.AddOnDeploy` 行为(by Fryone)" -#: ../../Whats-New.md:934 +#: ../../Whats-New.md:987 msgid "" "Fixed an issue that caused new attack and move script actions to pick " "buildings with `InvisibleInGame=yes` as targets (by FS-21)" msgstr "修复了新攻击和移动脚本将 `InvisibleInGame=yes` 建筑视为目标的问题(by FS-21)" -#: ../../Whats-New.md:935 +#: ../../Whats-New.md:988 msgid "Fixed `Insignia.Weapon` failing to parse in map (by Ollerus)" msgstr "修复了地图内置 `Insignia.Weapon` 解析失败的问题(by Ollerus)" -#: ../../Whats-New.md:936 +#: ../../Whats-New.md:989 msgid "Fixed `AltNextScenario` not taking effect (by FlyStar)" msgstr "修复了 `AltNextScenario` 无效的问题(by FlyStar)" -#: ../../Whats-New.md:937 +#: ../../Whats-New.md:990 msgid "" "Fixed `DefaultDisguise` showing wrong house colors for different players " "(by NetsuNegi & Ollerus)" msgstr "修复了 `DefaultDisguise` 为不同玩家显示不同所属方颜色的问题(by NetsuNegi 与 Ollerus)" -#: ../../Whats-New.md:938 +#: ../../Whats-New.md:991 msgid "" "`600 The shield of the attached object is broken` bug fix for the " "triggered event (by FlyStar)" msgstr "对 `600 对象护盾被摧毁...` 触发条件的修复(by FlyStar)" -#: ../../Whats-New.md:939 +#: ../../Whats-New.md:992 msgid "Fixed a read bug when setting the SHP file name in INI (By Noble_Fish)" msgstr "修复了一个在 INI 中设置 SHP 文件名的读取 Bug(by Noble_Fish)" -#: ../../Whats-New.md:940 +#: ../../Whats-New.md:993 msgid "" "Fixed map trigger action `125 Build At...` not always playing buildups " "correctly (by Starkku)" msgstr "修复了触发结果 `125 将建筑建于...` 有时不能正确播放建造动画的 Bug(by Starkku)" -#: ../../Whats-New.md:943 +#: ../../Whats-New.md:996 msgid "" "Weapons fired by EMPulse superweapons *(Ares feature)* now fully respect " "the firing building's FLH (by Starkku)" msgstr "现在由 EMPulse 超级武器(*Ares 功能*)发射的武器将完全遵照发射建筑的 FLH 设置(by Starkku)" -#: ../../Whats-New.md:944 +#: ../../Whats-New.md:997 msgid "" "Weapons fired by EMPulse superweapons *(Ares feature)* now respect " "`Floater` and Phobos-added `Gravity` setting (by Starkku)" @@ -4733,7 +5046,7 @@ msgstr "" "现在由 EMPulse 超级武器(*Ares 功能*)发射的武器遵守 `Floater` 与 Phobos 添加的 `Gravity` 设定(by" " Starkku)" -#: ../../Whats-New.md:945 +#: ../../Whats-New.md:998 msgid "" "`IsSimpleDeployer` units with Hover locomotor and `DeployToLand` no " "longer get stuck after deploying or play their move sound indefinitely " @@ -4742,7 +5055,7 @@ msgstr "" "拥有 Hover 运动模式的 `IsSimpleDeployer` 且 `DeployToLand` " "的单位在部署后不再会卡住或无限播放移动音效(by Starkku)" -#: ../../Whats-New.md:946 +#: ../../Whats-New.md:999 msgid "" "All forms of type conversion (including Ares') now correctly update the " "warp-in delay if unit with teleport `Locomotor` was converted while the " @@ -4751,26 +5064,26 @@ msgstr "" "现在所有单位转换形式(包括 Ares 的)在使用超时空 `Locomotor` 的单位处于僵直状态被转换时可以正确的更新传送延迟(by " "Starkku)" -#: ../../Whats-New.md:947 +#: ../../Whats-New.md:1000 msgid "" "All forms of type conversion (including Ares') now correctly update " "`MoveSound` if a moving unit has their type changed (by Starkku)" msgstr "现在所有单位转换形式(包括 Ares 的)在移动单位的类型被转换时可以正确更新 `MoveSound`(by Starkku)" -#: ../../Whats-New.md:948 +#: ../../Whats-New.md:1001 msgid "" "All forms of type conversion (including Ares') now correctly update " "`OpenTopped` state of passengers in transport that is converted (by " "Starkku)" msgstr "现在所有单位转换形式(包括 Ares 的)在运输工具被转换时可以正确更新乘客的 `OpenTopped` 状态" -#: ../../Whats-New.md:949 +#: ../../Whats-New.md:1002 msgid "" "Infantry type conversion from `Deployer=yes` to `no` now correctly update" " the sequence anim (by Trsdy)" msgstr "现在从由于单位转换导致 `Deployer=yes` 变为 `no` 的步兵能够正确更新序列动画(by Trsdy)" -#: ../../Whats-New.md:950 +#: ../../Whats-New.md:1003 msgid "" "Fixed an issue introduced by Ares that caused building `ActiveAnim` to be" " incorrectly restored while `SpecialAnim` was playing and the building " @@ -4779,23 +5092,23 @@ msgstr "" "修复了 Ares 引入的建筑正在播放 `SpecialAnim` 时被出售/抹除/摧毁会错误恢复 `ActiveAnim` 的问题(by " "Starkku 与 Trsdy)" -#: ../../Whats-New.md:951 +#: ../../Whats-New.md:1004 msgid "Appended Ares' `SW.Shots` usage to extended tooltips (by Trsdy)" msgstr "允许将 Ares 的 `SW.Shots` 添加至扩展拓展工具条(by Trsdy)" -#: ../../Whats-New.md:952 +#: ../../Whats-New.md:1005 msgid "" "Fixed Ares' Abductor weapon leaves permanent placement stats when " "abducting moving vehicles (by Trsdy)" msgstr "修复了 Ares 超时空监狱吸取移动载具时会留下空气墙的问题(by Trsdy)" -#: ../../Whats-New.md:953 +#: ../../Whats-New.md:1006 msgid "" "Suppressed Ares' swizzle warning when parsing `Tags` and `TaskForces` (by" " Trsdy)" msgstr "在解析标签和特遣部队时抑制 Ares 的 swizzle 警告(by Trsdy)" -#: ../../Whats-New.md:954 +#: ../../Whats-New.md:1007 msgid "" "Fixed Academy *(Ares feature)* not working on the initial payloads *(Ares" " feature)* of vehicles built from a war factory (by Trsdy, supersedes " @@ -4804,80 +5117,80 @@ msgstr "" "修复了训练所(*Ares 功能*)在由战车工厂所生产载具的初始载员(*Ares 功能*)上不起作用的问题(by Trsdy,取代了 Aephiex" " 的实现)" -#: ../../Whats-New.md:955 +#: ../../Whats-New.md:1008 msgid "" "Fixed Ares' InitialPayload not being created for vehicles spawned by " "trigger actions (by Trsdy)" msgstr "修复了 Ares 的初始荷载未为触发行为生成的载具创建的问题(by Trsdy)" -#: ../../Whats-New.md:957 +#: ../../Whats-New.md:1010 msgid "" "Fixed an issue where a portion of Ares's trigger event 75/77 was " "determined unsuccessfully (by FlyStar)" msgstr "修复了 Ares 触发条件 75/77 有时判定不成功的问题(by FlyStar)" -#: ../../Whats-New.md:958 +#: ../../Whats-New.md:1011 msgid "" "Fixed an issue where some units crashed after the deployment " "transformation (by ststl & FlyStar)" msgstr "修复了某些单位部署变形后崩溃的问题(by ststl & FlyStar)" -#: ../../Whats-New.md:959 +#: ../../Whats-New.md:1012 msgid "" "Fixed the bug that AlphaImage remained after unit entered tunnel (by " "NetsuNegi)" msgstr "修复了 AlphaImage 在单位进入隧道后会遗留在隧道口的 Bug(by NetsuNegi)" -#: ../../Whats-New.md:960 +#: ../../Whats-New.md:1013 msgid "" "Fixed an issue where Ares' `Convert.Deploy` triggers repeatedly when the " "unit is turning or moving (by CrimRecya)" msgstr "" -#: ../../Whats-New.md:961 +#: ../../Whats-New.md:1014 msgid "" "Fixed quicksave command and save game trigger action to work with YRpp " "spawner's multiplayer saves (by Kerbiter)" msgstr "修复了快速存档命令和触发结果以使其舰容 YRpp spawner 的多人游戏存档(by Kerbiter)" -#: ../../Whats-New.md:962 +#: ../../Whats-New.md:1015 msgid "" "Ported XNA CnCNet Client multiplayer save handling to get rid of " "occasional multiplayer save file overwriting when saving too fast (by " "Kerbiter)" msgstr "移植了 XNA CNCNet Client 的多人游戏存档处理以解决保存过快时偶发的多人存档文件覆盖文件(by Kerbiter)" -#: ../../Whats-New.md:965 +#: ../../Whats-New.md:1018 msgid "0.3.0.1" msgstr "0.3.0.1" -#: ../../Whats-New.md:970 +#: ../../Whats-New.md:1023 msgid "Additional sync logging in case of desync errors occuring (by Starkku)" msgstr "现在发生 Reconnection Error 时所生成的 `SYNC#.txt` 将记录更多信息(by Starkku)" -#: ../../Whats-New.md:973 +#: ../../Whats-New.md:1026 msgid "`AutoDeath` support for objects in limbo (by Trsdy)" msgstr "`AutoDeath` 也支持 Limbo 的对象了(by Trsdy)" -#: ../../Whats-New.md:974 +#: ../../Whats-New.md:1027 msgid "" "Buildings sold by `AutoDeath` no longer play a click sound effect (by " "Trsdy)" msgstr "建筑被 `AutoDeath` 出售时不再播放点击音效(by Trsdy)" -#: ../../Whats-New.md:975 +#: ../../Whats-New.md:1028 msgid "" "Fixed shield animation being hidden while underground or in tunnels fix " "not working correctly (by Starkku)" msgstr "修复了护盾动画在地下或隧道中被隐藏的问题,之前的修复未能解决(by Starkku)" -#: ../../Whats-New.md:976 +#: ../../Whats-New.md:1029 msgid "" "Restore the `MindClearedSound` when deploying a mind-controlled unit into" " a building loses the mind-control (by Trsdy)" msgstr "复原当被心控载具部署成建筑而解除心控时播放的 `MindClearedSound`(by Trsdy)" -#: ../../Whats-New.md:977 +#: ../../Whats-New.md:1030 msgid "" "Fixed `RadSiteWarhead.Detonate` not detonating precisely on the affected " "object (thus requiring `CellSpread`) (by Starkku)" @@ -4885,23 +5198,23 @@ msgstr "" "修复了 `RadSiteWarhead.Detonate` 未能在受影响对象上精确引爆(因此需要 `CellSpread`)的问题(by " "Starkku)" -#: ../../Whats-New.md:978 +#: ../../Whats-New.md:1031 msgid "" "Fixed script action 10103 'Load Into Transports' unintentionally skipping" " next action (by FS-21)" msgstr "修复了动作脚本 `10103 - 装载入运输载具` 会意外跳过下一个动作的问题(by FS-21)" -#: ../../Whats-New.md:979 +#: ../../Whats-New.md:1032 msgid "" "Changed mission retry dialog button order to better match old order " "people are used to (by Trsdy)" msgstr "更改了任务重开对话框按钮顺序以更好地符合人们旧有习惯的顺序(by Trsdy)" -#: ../../Whats-New.md:980 +#: ../../Whats-New.md:1033 msgid "Allow PowerPlant Enhancer to be affected by EMP (by Trsdy)" msgstr "允许电厂增幅器受到 EMP 影响(by Trsdy)" -#: ../../Whats-New.md:981 +#: ../../Whats-New.md:1034 msgid "" "Animation `Weapon` with `Damage.DealtByInvoker=true` now uses the " "invoker's house to deal damage and apply Phobos warhead effects even if " @@ -4910,561 +5223,561 @@ msgstr "" "现在动画 `Damage.DealtByInvoker=true` 时其 `Weapon` " "即便调用者在武器开火时已死亡也会使用调用者的所属方来造成伤害并应用 Phobos 弹头效果(by Starkku)" -#: ../../Whats-New.md:982 +#: ../../Whats-New.md:1035 msgid "" "Fixed a crash when trying to create radiation outside map bounds (by " "Otamaa)" msgstr "修复了尝试在地图边界外创建辐射时导致的崩溃(by Otamaa)" -#: ../../Whats-New.md:983 +#: ../../Whats-New.md:1036 msgid "" "Fixed new AI attack scripts not allowing zero damage weapons to pick " "targets (by Starkku)" msgstr "修复了新的 AI 攻击脚本不允许 0 伤害武器选择目标的问题(by Starkku)" -#: ../../Whats-New.md:984 +#: ../../Whats-New.md:1037 msgid "" "Fixed floating point value parsing precision to match the game (by " "Starkku)" msgstr "修复了浮点值解析精度以匹配游戏(by Starkku)" -#: ../../Whats-New.md:985 +#: ../../Whats-New.md:1038 msgid "" "Power output / drain should now correctly be applied for buildings " "created via `LimboDelivery` in campaigns (by Starkku)" msgstr "现在战役中通过 `LimboDelivery` 创建的建筑的电力/负载可以正确生效(by Starkku)" -#: ../../Whats-New.md:986 +#: ../../Whats-New.md:1039 msgid "" "Fixed shield health bar showing empty bar when shield is still on very " "low health instead of depleted (by Starkku)" msgstr "修复了护盾在丝血状态下会直接显示空血条而非即将耗尽的问题(by Starkku)" -#: ../../Whats-New.md:987 +#: ../../Whats-New.md:1040 msgid "" "Fixed `CanTarget` not considering objects on bridges when checking if " "cell is empty (by Starkku)" msgstr "修复了 `CanTarget` 在检查单元格是否为空时未考虑桥上物体的问题(by Starkku)" -#: ../../Whats-New.md:988 +#: ../../Whats-New.md:1041 msgid "" "Fixed vehicle deploy weapons not working if the unit is cloaked and " "weapon has `DecloakToFire=true` (by NetsuNegi & Starkku)" msgstr "修复了单位在隐形状态无法使用 `DecloakToFire=true` 的武器开火的问题(by NetsuNegi 与 Starkku)" -#: ../../Whats-New.md:989 +#: ../../Whats-New.md:1042 msgid "" "Fixed `IsAnimated` terrain not updating correctly in all circumstances " "(by Starkku)" msgstr "修复了 `IsAnimated` 地形对象在所有情况下都不会正确更新的问题(by Starkku)" -#: ../../Whats-New.md:990 +#: ../../Whats-New.md:1043 msgid "" "Fixed `CreateUnit` interaction with bridges (spawning under when " "shouldn't etc) (by Starkku)" msgstr "修复了 `CreateUnit` 与桥的交互问题(不应生成在桥下时仍会生成等)(by Starkku)" -#: ../../Whats-New.md:991 +#: ../../Whats-New.md:1044 msgid "" "`CanTarget` now considers bridges as land like game's normal weapon " "selection does (by Starkku)" msgstr "现在 `CanTarget` 会像常规武器目标选择逻辑一样将桥梁视为陆地(by Starkku)" -#: ../../Whats-New.md:992 +#: ../../Whats-New.md:1045 msgid "" "`AreaFire.Target` now takes cells with bridges into consideration " "depending on firer's elevation (by Starkku)" msgstr "现在 `AreaFire.Target` 会根据开火者所在高度处理桥梁所在的单元格(by Starkku)" -#: ../../Whats-New.md:996 +#: ../../Whats-New.md:1049 msgid "0.3" msgstr "0.3" -#: ../../Whats-New.md:1001 +#: ../../Whats-New.md:1054 msgid "LaserTrails initial implementation (by Kerbiter & ChrisLv_CN)" msgstr "激光尾焰初始实现(by Kerbiter 与 ChrisLv_CN)" -#: ../../Whats-New.md:1002 +#: ../../Whats-New.md:1055 msgid "Anim-to-Unit logic and ability to randomize `DestroyAnim` (by Otamaa)" msgstr "动画生成单位逻辑与随机 `DestroyAnim`(by Otamaa)" -#: ../../Whats-New.md:1003 +#: ../../Whats-New.md:1056 msgid "Shield modification warheads (by Starkku)" msgstr "护盾修改弹头(by Starkku)" -#: ../../Whats-New.md:1004 +#: ../../Whats-New.md:1057 msgid "Shield BreakWeapon & InitialStrength (by Starkku)" msgstr "护盾 `BreakWeapon` 与 `InitialStrength`(by Starkku)" -#: ../../Whats-New.md:1005 +#: ../../Whats-New.md:1058 msgid "Initial Strength for TechnoTypes (by Uranusian)" msgstr "单位的 `InitialStrength`(by Uranusian)" -#: ../../Whats-New.md:1006 +#: ../../Whats-New.md:1059 msgid "" "Re-enable obsolete `[JumpjetControls]` for TechnoTypes' default Jumpjet " "properties (by Uranusian)" msgstr "重启废弃的`[JumpjetControls]`作为单位的 Jumpjet 参数默认值(by Uranusian)" -#: ../../Whats-New.md:1007 +#: ../../Whats-New.md:1060 msgid "Weapon targeting filter (by Uranusian & Starkku)" msgstr "武器瞄准筛选(by Uranusian 与 Starkku)" -#: ../../Whats-New.md:1008 +#: ../../Whats-New.md:1061 msgid "Secondary weapon fallback customization (by Starkku)" msgstr "禁用副武器自动推算(by Starkku)" -#: ../../Whats-New.md:1009 +#: ../../Whats-New.md:1062 msgid "Burst-specific FLHs for TechnoTypes (by Starkku)" msgstr "Burst 开火坐标(by Starkku)" -#: ../../Whats-New.md:1010 +#: ../../Whats-New.md:1063 msgid "Burst delays for weapons (by Starkku)" msgstr "武器自定义 `BurstDelays`(by Starkku)" -#: ../../Whats-New.md:1011 +#: ../../Whats-New.md:1064 msgid "AreaFire weapon target customization (by Starkku)" msgstr "自定义 `AreaFire` 目标(by Starkku)" -#: ../../Whats-New.md:1012 +#: ../../Whats-New.md:1065 msgid "Auto-firing TechnoType weapons (by Starkku)" msgstr "自动发射武器(by Starkku)" -#: ../../Whats-New.md:1013 +#: ../../Whats-New.md:1066 msgid "PowerPlant Enhancer (by secsome)" msgstr "电厂增幅器(by secsome)" -#: ../../Whats-New.md:1014 +#: ../../Whats-New.md:1067 msgid "Unlimited Global / Local Variables (by secsome)" msgstr "无限制数量的全局/局部变量(by secsome)" -#: ../../Whats-New.md:1015 +#: ../../Whats-New.md:1068 msgid "" "Adds a \"Load Game\" button to the retry dialog on mission failure (by " "secsome)" msgstr "在任务失败的重开对话框中添加了一个「载入游戏」按钮(by secsome)" -#: ../../Whats-New.md:1016 +#: ../../Whats-New.md:1069 msgid "Default disguise for individual InfantryTypes (by secsome)" msgstr "步兵类型微观定义默认伪装(by secsome)" -#: ../../Whats-New.md:1017 +#: ../../Whats-New.md:1070 msgid "Quicksave hotkey command (by secsome)" msgstr "快速存档快捷键(by secsome)" -#: ../../Whats-New.md:1018 +#: ../../Whats-New.md:1071 msgid "Save Game trigger action (by secsome)" msgstr "保存游戏的触发结果(by secsome)" -#: ../../Whats-New.md:1019 +#: ../../Whats-New.md:1072 msgid "Numeric Variables (by secsome)" msgstr "数字化变量(by secsome)" -#: ../../Whats-New.md:1020 +#: ../../Whats-New.md:1073 msgid "TechnoType's tooltip would display it's build time now (by secsome)" msgstr "现在单位的拓展工具条会显示生产时间(by secsome)" -#: ../../Whats-New.md:1021 +#: ../../Whats-New.md:1074 msgid "Customizable tooltip background color and opacity (by secsome)" msgstr "可自定义的拓展工具条背景颜色和不透明度(by secsome)" -#: ../../Whats-New.md:1022 +#: ../../Whats-New.md:1075 msgid "FrameByFrame & FrameStep hotkey command (by secsome)" msgstr "逐帧模式及逐帧步进快捷键(by secsome)" -#: ../../Whats-New.md:1023 +#: ../../Whats-New.md:1076 msgid "" "Allow `NotHuman=yes` infantry to use random `Death` anim sequence (by " "Otamaa)" msgstr "允许 `NotHuman=yes` 的步兵可以使用随机的 `Death` 动画序列(by Otamaa)" -#: ../../Whats-New.md:1024 +#: ../../Whats-New.md:1077 msgid "" "Ability for warheads to trigger specific `NotHuman=yes` infantry `Death` " "anim sequence (by Otamaa)" msgstr "允许弹头触发 `NotHuman=yes` 步兵的特定 `Death` 动画序列(by Otamaa)" -#: ../../Whats-New.md:1025 +#: ../../Whats-New.md:1078 msgid "XDrawOffset for animations (by Morton)" msgstr "动画的 `XDrawOffset`(by Morton)" -#: ../../Whats-New.md:1026 +#: ../../Whats-New.md:1079 msgid "Customizable OpenTopped properties (by Otamaa)" msgstr "自定义 `OpenTopped` 属性(by Otamaa)" -#: ../../Whats-New.md:1027 +#: ../../Whats-New.md:1080 msgid "Automatic Passenger Deletion (by FS-21)" msgstr "自动删除乘客(by FS-21)" -#: ../../Whats-New.md:1028 +#: ../../Whats-New.md:1081 msgid "Script actions for new AI attacks (by FS-21)" msgstr "新的 AI 攻击动作脚本(by FS-21)" -#: ../../Whats-New.md:1029 +#: ../../Whats-New.md:1082 msgid "Script actions for modifying AI Trigger Current Weight (by FS-21)" msgstr "修改 AI 触发器当前权重的动作脚本(by FS-21)" -#: ../../Whats-New.md:1030 +#: ../../Whats-New.md:1083 msgid "" "Script action for waiting & repeat the same new AI attack if no target " "was found (by FS-21)" msgstr "未发现目标时等待并重复原有动作的 AI 攻击脚本(by FS-21)" -#: ../../Whats-New.md:1031 +#: ../../Whats-New.md:1084 msgid "" "Script action that modifies the Team's Trigger Weight when ends the new " "attack action (by FS-21)" msgstr "在当前新攻击动作结束时修改 AI 触发器当前权重的动作脚本(by FS-21)" -#: ../../Whats-New.md:1032 +#: ../../Whats-New.md:1085 msgid "Script action for picking a random script from a list (by FS-21)" msgstr "从列表中随机选择脚本的动作脚本(by FS-21)" -#: ../../Whats-New.md:1033 +#: ../../Whats-New.md:1086 msgid "Script action for new AI movements towards certain objects (by FS-21)" msgstr "向特定对象移动的新 AI 移动脚本(by FS-21)" -#: ../../Whats-New.md:1034 +#: ../../Whats-New.md:1087 msgid "" "Script action that modify target distance in the new move actions (by " "FS-21)" msgstr "修改新移动动作中目标距离的动作脚本(by FS-21)" -#: ../../Whats-New.md:1035 +#: ../../Whats-New.md:1088 msgid "Script action that modify how ends the new move actions (by FS-21)" msgstr "修改新移动动作结束条件的动作脚本(by FS-21)" -#: ../../Whats-New.md:1036 +#: ../../Whats-New.md:1089 msgid "Script action that un-register Team success (by FS-21)" msgstr "取消注册小队成功的动作脚本(by FS-21)" -#: ../../Whats-New.md:1037 +#: ../../Whats-New.md:1090 msgid "Script action to regroup temporarily around the Team Leader (by FS-21)" msgstr "围绕队长临时集合的动作脚本(by FS-21)" -#: ../../Whats-New.md:1038 +#: ../../Whats-New.md:1091 msgid "Script action to randomly skip next action (by FS-21)" msgstr "随机跳过下一个动作的动作脚本(by FS-21)" -#: ../../Whats-New.md:1039 +#: ../../Whats-New.md:1092 msgid "Script action for timed script action jumps (by FS-21)" msgstr "定时跳转动作脚本(by FS-21)" -#: ../../Whats-New.md:1040 +#: ../../Whats-New.md:1093 msgid "ObjectInfo now shows current Target and AI Trigger data (by FS-21)" msgstr "现在 Object 信息可以显示当前的目标和 AI 触发数据(by FS-21)" -#: ../../Whats-New.md:1041 +#: ../../Whats-New.md:1094 msgid "Shield absorption and passthrough customization (by Morton)" msgstr "自定义护盾吸收和穿透(by Morton)" -#: ../../Whats-New.md:1042 +#: ../../Whats-New.md:1095 msgid "Limbo Delivery of buildings (by Morton)" msgstr "虚拟投放(by Morton)" -#: ../../Whats-New.md:1043 +#: ../../Whats-New.md:1096 msgid "Ore stage threshold for `HideIfNoOre` (by Otamaa)" msgstr "`HideIfNoOre` 的矿石阶段阈值(by Otamaa)" -#: ../../Whats-New.md:1044 +#: ../../Whats-New.md:1097 msgid "Image reading in art rules for all TechnoTypes (by Morton)" msgstr "在 art 中为所有科技类型使用 `Image` 指定图像(by Morton)" -#: ../../Whats-New.md:1045 +#: ../../Whats-New.md:1098 msgid "Attached animation layer customization (by Starkku)" msgstr "自定义附着动画图层(by Starkku)" -#: ../../Whats-New.md:1046 +#: ../../Whats-New.md:1099 msgid "Jumpjet unit layer deviation customization (by Starkku)" msgstr "自定义 Jumpjet 单位图层偏移(by Starkku)" -#: ../../Whats-New.md:1047 +#: ../../Whats-New.md:1100 msgid "IsSimpleDeployer deploy direction & animation customizations (by Starkku)" msgstr "自定义 `IsSimpleDeployer` 载具部署(by Starkku)" -#: ../../Whats-New.md:1048 +#: ../../Whats-New.md:1101 msgid "Customizable projectile gravity (by secsome)" msgstr "自定义抛射体重力(by secsome)" -#: ../../Whats-New.md:1049 +#: ../../Whats-New.md:1102 msgid "" "Gates can now link with walls correctly via `NSGates` or `EWGates` (by " "Uranusian)" msgstr "现在由 `NSGates` `EWGates` 设定的闸门可以正常与围墙连接(by Uranusian)" -#: ../../Whats-New.md:1050 +#: ../../Whats-New.md:1103 msgid "Per-warhead toggle for decloak of damaged targets (by Starkku)" msgstr "自定义被伤害目标解除隐形(by Starkku)" -#: ../../Whats-New.md:1051 +#: ../../Whats-New.md:1104 msgid "" "`DeployFireWeapon=-1` now allows the deployed infantry using both weapons" " as undeployed (by Uranusian)" msgstr "现在 `DeployFireWeapon=-1` 可以让部署状态的步兵像未部署的步兵那样使用两种武器(by Uranusian)" -#: ../../Whats-New.md:1052 +#: ../../Whats-New.md:1105 msgid "Power delta (surplus) counter for sidebar (by Morton)" msgstr "在侧边栏显示电力变动(盈余)计数器(by Morton)" -#: ../../Whats-New.md:1053 +#: ../../Whats-New.md:1106 msgid "Added Production and Money to Dump Object Info command (by FS-21)" msgstr "输出对象信息快捷键现在可以显示建筑生产与资金信息(by FS-21)" -#: ../../Whats-New.md:1054 +#: ../../Whats-New.md:1107 msgid "`EnemyUIName=` Now also works for other TechnoTypes (by Otamaa)" msgstr "现在 `EnemyUIName=` 已扩展至所有科技类型(by Otamaa)" -#: ../../Whats-New.md:1055 +#: ../../Whats-New.md:1108 msgid "`DestroyAnim` & `DestroySound` for TerrainTypes (by Otamaa)" msgstr "地形对象的 `DestroyAnim` 与 `DestroySound`(by Otamaa)" -#: ../../Whats-New.md:1056 +#: ../../Whats-New.md:1109 msgid "Weapons fired on warping in / out (by Starkku)" msgstr "超时空移动时发射武器(by Starkku)" -#: ../../Whats-New.md:1057 +#: ../../Whats-New.md:1110 msgid "" "`Storage.TiberiumIndex` for customizing resource storage in structures " "(by FS-21)" msgstr "使用 `Storage.TiberiumIndex` 自定义建筑存储的矿物类型(by FS-21)" -#: ../../Whats-New.md:1058 +#: ../../Whats-New.md:1111 msgid "Grinder improvements & customizations (by Starkku)" msgstr "回收站增强与自定义(by Starkku)" -#: ../../Whats-New.md:1059 +#: ../../Whats-New.md:1112 msgid "Attached animation position customization (by Starkku)" msgstr "自定义附着动画位置(by Starkku)" -#: ../../Whats-New.md:1060 +#: ../../Whats-New.md:1113 msgid "Trigger Action 505 for Firing SW at specified location (by FS-21)" msgstr "触发结果 `505 在坐标释放超级武器...`(by FS-21)" -#: ../../Whats-New.md:1061 +#: ../../Whats-New.md:1114 msgid "Trigger Action 506 for Firing SW at waypoint (by FS-21)" msgstr "触发动作 `506 在路径点释放超级武器...`(by FS-21)" -#: ../../Whats-New.md:1062 +#: ../../Whats-New.md:1115 msgid "" "New behaviors for objects' self-destruction under certain conditions (by " "Trsdy & FS-21)" msgstr "单位在特定情况下自毁的新增行为(by Trsdy 与 FS-21)" -#: ../../Whats-New.md:1063 +#: ../../Whats-New.md:1116 msgid "" "Slaves' ownership decision when corresponding slave miner is destroyed " "(by Trsdy)" msgstr "奴隶矿场被毁后的奴隶归属判定(by Trsdy)" -#: ../../Whats-New.md:1064 +#: ../../Whats-New.md:1117 msgid "Customize buildings' selling sound and EVA voice (by Trsdy)" msgstr "自定义建筑出售音效与 EVA 播报(by Trsdy)" -#: ../../Whats-New.md:1065 +#: ../../Whats-New.md:1118 msgid "" "`ForceWeapon.Naval.Decloacked` for overriding uncloaked underwater attack" " behavior (by FS-21)" msgstr "使用 `ForceWeapon.Naval.Decloacked` 覆盖攻击未隐形水下单位时的行为(by FS-21)" -#: ../../Whats-New.md:1066 +#: ../../Whats-New.md:1119 msgid "Shrapnel enhancement (by secsome)" msgstr "溅射增强(by secsome)" -#: ../../Whats-New.md:1067 +#: ../../Whats-New.md:1120 msgid "Shared Ammo for transports to passengers (by FS-21)" msgstr "运输工具与乘客共享弹药(by FS-21)" -#: ../../Whats-New.md:1068 +#: ../../Whats-New.md:1121 msgid "Additional critical hit logic customizations (by Starkku)" msgstr "额外暴击逻辑自定义项(by Starkku)" -#: ../../Whats-New.md:1069 +#: ../../Whats-New.md:1122 msgid "Laser trails for VoxelAnims (by Otamaa)" msgstr "Voxel 碎片激光尾焰(by Otamaa)" -#: ../../Whats-New.md:1070 +#: ../../Whats-New.md:1123 msgid "Local warhead screen shaking (by Starkku)" msgstr "限制屏幕抖动于当前视角(by Starkku)" -#: ../../Whats-New.md:1071 +#: ../../Whats-New.md:1124 msgid "Feedback weapon (by Starkku)" msgstr "反馈武器(by Starkku)" -#: ../../Whats-New.md:1072 +#: ../../Whats-New.md:1125 msgid "TerrainType & ore minimap color customization (by Starkku)" msgstr "自定义地形对象与矿石的小地图颜色(by Starkku)" -#: ../../Whats-New.md:1073 +#: ../../Whats-New.md:1126 msgid "Single-color weapon lasers (by Starkku)" msgstr "单色激光(by Starkku)" -#: ../../Whats-New.md:1074 +#: ../../Whats-New.md:1127 msgid "Customizable projectile trajectory (by secsome)" msgstr "自定义抛射体弹道(by secsome)" -#: ../../Whats-New.md:1075 +#: ../../Whats-New.md:1128 msgid "Display damage numbers debug hotkey command (by Starkku)" msgstr "显示伤害数字快捷键(by Starkku)" -#: ../../Whats-New.md:1076 +#: ../../Whats-New.md:1129 msgid "Toggleable display of TransactMoney amounts (by Starkku)" msgstr "可开关的金币弹金额显示(by Starkku)" -#: ../../Whats-New.md:1077 +#: ../../Whats-New.md:1130 msgid "Building-provided self-healing customization (by Starkku)" msgstr "自定义建筑提供的自愈(by Starkku)" -#: ../../Whats-New.md:1078 +#: ../../Whats-New.md:1131 msgid "Building placement preview (by Otamaa & Belonit)" msgstr "建筑放置预览(by Otamaa 与 Belonit)" -#: ../../Whats-New.md:1079 +#: ../../Whats-New.md:1132 msgid "Passable & buildable-upon TerrainTypes (by Starkku)" msgstr "可通行和可建造于其上的地形对象(by Starkku)" -#: ../../Whats-New.md:1080 +#: ../../Whats-New.md:1133 msgid "" "Toggle for passengers to automatically change owner if transport owner " "changes (by Starkku)" msgstr "可开关的载员跟随运输供给转换所属方效果(by Starkku)" -#: ../../Whats-New.md:1081 +#: ../../Whats-New.md:1134 msgid "Superweapon launch on warhead detonation (by Trsdy)" msgstr "弹头发射超武(by Trsdy)" -#: ../../Whats-New.md:1082 +#: ../../Whats-New.md:1135 msgid "Preserve IronCurtain status upon `DeploysInto`/`UndeploysInto` (by Trsdy)" msgstr "`DeploysInto`/`UndeploysInto`保留铁幕状态(by Trsdy)" -#: ../../Whats-New.md:1083 +#: ../../Whats-New.md:1136 msgid "" "Correct owner house for Warhead Anim/SplashList & Play Animation trigger " "animations (by Starkku)" msgstr "现在弹头 `AnimList` 与 `SplashList` 以及播放动画触发所生成的动画均拥有所属方(by Starkku)" -#: ../../Whats-New.md:1084 +#: ../../Whats-New.md:1137 msgid "Customizable FLH When Infantry Is Crouched Or Deployed (by FS-21)" msgstr "自定义步兵匍匐与部署 FLH(by FS-21)" -#: ../../Whats-New.md:1085 +#: ../../Whats-New.md:1138 msgid "" "Enhanced projectile interception logic, including projectile strength & " "armor types (by Starkku)" msgstr "增强的抛射体拦截逻辑,包括抛射体的 `Strength` 与 `Armor` 设定(by Starkku)" -#: ../../Whats-New.md:1086 +#: ../../Whats-New.md:1139 msgid "Initial Strength for Cloned Infantry (by FS-21)" msgstr "克隆步兵的初始生命值(by FS-21)" -#: ../../Whats-New.md:1087 +#: ../../Whats-New.md:1140 msgid "" "OpenTopped transport rangefinding & deactivated state customizations (by " "Starkku)" msgstr "自定义 `OpenTopped` 载具测距与瘫痪状态行为(by Starkku)" -#: ../../Whats-New.md:1088 +#: ../../Whats-New.md:1141 msgid "Forbidding parallel AI queues by type (by NetsuNegi & Trsdy)" msgstr "按类禁止 AI 克隆生产(by NetsuNegi 与 Trsdy)" -#: ../../Whats-New.md:1089 +#: ../../Whats-New.md:1142 msgid "Animation damage / weapon improvements (by Starkku)" msgstr "动画伤害/武器增强(by Starkku)" -#: ../../Whats-New.md:1090 +#: ../../Whats-New.md:1143 msgid "Warhead self-damaging toggle (by Starkku)" msgstr "弹头自伤开关(by Starkku)" -#: ../../Whats-New.md:1091 +#: ../../Whats-New.md:1144 msgid "Trailer animations inheriting owner (by Starkku)" msgstr "尾烟动画能够继承所属方(by Starkku)" -#: ../../Whats-New.md:1092 +#: ../../Whats-New.md:1145 msgid "Warhead detonation on all objects on map (by Starkku)" msgstr "全图弹头(by Starkku)" -#: ../../Whats-New.md:1093 +#: ../../Whats-New.md:1146 msgid "" "Implemented support for PCX images for campaign loading screen (by " "FlyStar)" msgstr "实现了战役载入图的 PCX 图像支持(by FlyStar)" -#: ../../Whats-New.md:1094 +#: ../../Whats-New.md:1147 msgid "" "Implemented support for PCX images for observer loading screen (by " "Uranusian)" msgstr "实现了观察者载入图的 PCX支持(by Uranusian)" -#: ../../Whats-New.md:1095 +#: ../../Whats-New.md:1148 msgid "Animated (non-tiberium spawning) TerrainTypes (by Starkku)" msgstr "可动(且非矿柱的)地形对象(by Starkku)" -#: ../../Whats-New.md:1096 +#: ../../Whats-New.md:1149 msgid "Toggleable passenger killing for `Explodes=true` units (by Starkku)" msgstr "可开关的 `Explodes=true` 单位乘客祭天(by Starkku)" -#: ../../Whats-New.md:1097 +#: ../../Whats-New.md:1150 msgid "" "New condition for automatic self-destruction logic when TechnoTypes " "exist/don't exist (by FlyStar)" msgstr "当科技类型存在/不存在时自动自毁逻辑的新行为(by FlyStar)" -#: ../../Whats-New.md:1098 +#: ../../Whats-New.md:1151 msgid "" "For developers: now you can use command line arg to control main " "exception handler (by Multfinite)" msgstr "开发者功能:现在可以通过命令行参数控制主循环的异常处理程序" -#: ../../Whats-New.md:1101 +#: ../../Whats-New.md:1154 msgid "" "Fixed laser drawing code to allow for thicker lasers in house color draw " "mode (by Kerbiter & ChrisLv_CN)" msgstr "修复了激光绘制代码以允许其可在所属方颜色模式下绘制更粗的激光(by Kerbiter 与 ChrisLv_CN)" -#: ../../Whats-New.md:1102 +#: ../../Whats-New.md:1155 msgid "Fixed `DeathWeapon` not detonating properly (by Uranusian)" msgstr "修复了 `DeathWeapon` 没有正确引爆的问题(by Uranusian)" -#: ../../Whats-New.md:1103 +#: ../../Whats-New.md:1156 msgid "" "Fixed lasers & other effects drawing from wrong offset with weapons that " "use `Burst` (by Starkku)" msgstr "修复了激光和其他特效在使用 `Burst` 的武器上从错误的偏移位置绘制的问题(by Starkku)" -#: ../../Whats-New.md:1104 +#: ../../Whats-New.md:1157 msgid "" "Fixed buildings with `Naval=yes` ignoring `WaterBound=no` to be forced to" " place onto water (by Uranusian)" msgstr "修复了建筑拥有 `Naval=yes` 会无视 `WaterBound=no` 强制只能放置在水域的问题(by Uranusian)" -#: ../../Whats-New.md:1105 +#: ../../Whats-New.md:1158 msgid "" "Fixed temporal weapon crash under certain conditions where stack dump " "starts with 0051BB7D (by secsome)" msgstr "修复了 Stack Dump 以 0051BB7D 开头的特定情况下超时空武器崩溃(by secsome)" -#: ../../Whats-New.md:1106 +#: ../../Whats-New.md:1159 msgid "" "Fixed the bug when retinting map lighting with a map action corrupted " "light sources (by secsome)" msgstr "修复了通过地图触发结果重绘地图光照时建筑光源不正常的 Bug(by secsome)" -#: ../../Whats-New.md:1107 +#: ../../Whats-New.md:1160 msgid "" "Fixed the bug when reading a map which puts `Preview(Pack)` after `Map` " "lead to the game fail to draw the preview (by secsome)" msgstr "修复了读取地图时若地图的 `Preview(Pack)` 节被放置于 Map 之后会导致无法绘制预览图的 Bug(by secsome)" -#: ../../Whats-New.md:1108 +#: ../../Whats-New.md:1161 msgid "Fixed the bug that GameModeOptions are not correctly saved (by secsome)" msgstr "修复了游戏模式选项未能正确保存的 Bug(by secsome)" -#: ../../Whats-New.md:1109 +#: ../../Whats-New.md:1162 msgid "" "Fixed the bug that AITriggerTypes do not recognize building upgrades (by " "Uranusian)" msgstr "修复了 AITriggerTypes 没能识别建筑加载物的 Bug(by Uranusian)" -#: ../../Whats-New.md:1110 +#: ../../Whats-New.md:1163 msgid "" "Fixed AI Aircraft docks bug when Ares tag `[GlobalControls] -> " "AllowParallelAIQueues=no` is set (by FS-21)" @@ -5472,13 +5785,13 @@ msgstr "" "修复了当设置 Ares 标签 `[GlobalControls] -> AllowParallelAIQueues=no` 时 AI " "战机对接机场的 Bug(by FS-21)" -#: ../../Whats-New.md:1111 +#: ../../Whats-New.md:1164 msgid "" "Fixed the bug when occupied building's `MuzzleFlashX` is drawn on the " "center of the building when `X` goes past 10 (by Otamaa)" msgstr "修复了当驻军建筑的 `MuzzleFlashX` 在 `X` 超过 10 后绘制在建筑中心的 Bug(by Otamaa)" -#: ../../Whats-New.md:1112 +#: ../../Whats-New.md:1165 msgid "" "Fixed jumpjet units that are `Crashable` not crashing to ground properly " "if destroyed while being pulled by a `Locomotor` warhead (by Starkku)" @@ -5486,85 +5799,85 @@ msgstr "" "修复了拥有 `Crashable` 的 Jumpjet 类单位在被 `Locomotor` 弹头牵引时被摧毁则无法正常坠毁的 Bug(by " "Starkku)" -#: ../../Whats-New.md:1113 +#: ../../Whats-New.md:1166 msgid "" "Fixed aircraft & jumpjet units not being affected by speed modifiers (by " "Starkku)" msgstr "修复了战机与 Jumpjet 单位不受速度加成影响的问题(by Starkku)" -#: ../../Whats-New.md:1114 +#: ../../Whats-New.md:1167 msgid "Fixed vehicles (both voxel & SHP) to fully respect `Palette` (by Starkku)" msgstr "修复了(Voxel 与 Shape)载具不完全遵循 `Palette` 设定的问题(by Starkku)" -#: ../../Whats-New.md:1115 +#: ../../Whats-New.md:1168 msgid "" "Fixed mind control indicator animations not reappearing on mind " "controlled objects that are cloaked and then uncloaked (by Starkku)" msgstr "修复了心灵控制指示动画在被心控对象隐形并重新显形后未能重新出现的问题(by Starkku)" -#: ../../Whats-New.md:1116 +#: ../../Whats-New.md:1169 msgid "" "Fixed Nuke carrier and payload weapons not respecting `Bright` setting on" " weapon (by Starkku)" msgstr "修复了核弹载体与载荷武器不尊重过武器 `Bright` 设定的问题(by Starkku)" -#: ../../Whats-New.md:1117 +#: ../../Whats-New.md:1170 msgid "" "Fixed buildings not reverting to undamaged graphics when HP was restored " "above `[AudioVisual] -> ConditionYellow` via `SelfHealing` (by Starkku)" msgstr "修复了建筑自愈恢复到 `[AudioVisual] -> ConditionYellow` 以上却没有恢复非残损图像的问题(by Starkku)" -#: ../../Whats-New.md:1118 +#: ../../Whats-New.md:1171 msgid "" "Fixed jumpjet units being unable to turn to the target when firing from a" " different direction (by Trsdy)" msgstr "修复了 Jumpjet 单位从其他方向开火时无法转向目标的 Bug(by Trsdy)" -#: ../../Whats-New.md:1119 +#: ../../Whats-New.md:1172 msgid "" "Fixed turreted jumpjet units always facing bottom-right direction when " "stop moving (by Trsdy)" msgstr "修复了 Jumpjet 单位总是在停止移动时朝向右下方向的 Bug(by Trsdy)" -#: ../../Whats-New.md:1120 +#: ../../Whats-New.md:1173 msgid "" "Fixed jumpjet objects being unable to detect cloaked objects beneath (by " "Trsdy)" msgstr "修复了 Jumpjet 单位无法探测下方隐形物体的问题(by Trsdy)" -#: ../../Whats-New.md:1121 +#: ../../Whats-New.md:1174 msgid "" "Anim owner is now set for warhead AnimList/SplashList anims and Play Anim" " at Waypoint trigger animations (by Starkku)" msgstr "现在弹头 `AnimList`/`SplashList` 及在路径点播放动画触发的动画拥有所属方了(by Starkku)" -#: ../../Whats-New.md:1122 +#: ../../Whats-New.md:1175 msgid "" "Fixed AI script action Deploy getting stuck with vehicles with " "`DeploysInto` if there was no space to deploy at initial location (by " "Starkku)" msgstr "修复了 AI 部署动作脚本导致拥有 `DeploysInto` 的载具在其原位置空间不足而卡住的问题(by Starkku)" -#: ../../Whats-New.md:1123 +#: ../../Whats-New.md:1176 msgid "" "Fixed `Foundation=0x0` causing crashes if used on TerrainTypes (by " "Starkku)" msgstr "修复了 `Foundation=0x0` 用于地形对象会导致崩溃的问题(by Starkku)" -#: ../../Whats-New.md:1124 +#: ../../Whats-New.md:1177 msgid "" "Projectiles now remember the house of the firer even if the firer is " "destroyed before the projectile detonates. Does not currently apply to " "Ares-introduced Warhead effects (by Starkku)" msgstr "现在即便开火者在抛射体引爆前被摧毁抛射体也可以保留开火者的所属方。目前暂不适用于某些 Ares 引入的弹头效果(by Starkku)" -#: ../../Whats-New.md:1125 +#: ../../Whats-New.md:1178 msgid "" "Buildings now correctly use laser parameters set for Secondary weapons " "instead of reading them from Primary weapon (by Starkku)" msgstr "现在建筑可以正确的使用副武器设置的激光参数而不再是从主武器读取(by Starkku)" -#: ../../Whats-New.md:1126 +#: ../../Whats-New.md:1179 msgid "" "Fixed an issue that caused vehicles killed by damage dealt by a known " "house but without a known source TechnoType (f.ex animation warhead " @@ -5572,21 +5885,21 @@ msgid "" "trigger events etc. (by Starkku)" msgstr "修复了只有所属方但没有开火者的杀伤击杀载具时未能正确记录因而无法触发地图事件等问题(by Starkku)" -#: ../../Whats-New.md:1127 +#: ../../Whats-New.md:1180 msgid "" "Translucent RLE SHPs will now be drawn using a more precise and " "performant algorithm that has no green tint and banding (only applies to " "Z-aware drawing mode for now) (by Apollo)" msgstr "现在半透明的 RLE SHP 将使用更精确且性能更高的算法进行绘制,不会出现绿色色调和条纹(by Apollo)" -#: ../../Whats-New.md:1128 +#: ../../Whats-New.md:1181 msgid "" "Fixed transports recursively put into each other not having a correct " "killer set after second transport when being killed by something (by " "Kerbiter)" msgstr "修复了被递归嵌套放置的运输工具被击杀时从第二层运输工具开始击杀来源设置不正确的问题(by Kerbiter)" -#: ../../Whats-New.md:1129 +#: ../../Whats-New.md:1182 msgid "" "Fixed projectiles with `Inviso=true` suffering from potential inaccuracy " "problems if combined with `Airburst=yes` or Warhead with `EMEffect=true` " @@ -5595,56 +5908,56 @@ msgstr "" "修复了带有 `Inviso=true` 的抛射体在与 `Airburst=yes` 或拥有 `EMEffect=true` " "的弹头结合使用时可能出现的精度问题(by Starkku)" -#: ../../Whats-New.md:1130 +#: ../../Whats-New.md:1183 msgid "" "Fixed the bug when `MakeInfantry` logic on BombClass resulted in " "`Neutral` side infantry (by Otamaa)" msgstr "修复了 `MakeInfantry` 逻辑在 BombClass(伊文炸弹)上导致生成 `Neutral` 阵营步兵的 Bug(by Otamaa)" -#: ../../Whats-New.md:1131 +#: ../../Whats-New.md:1184 msgid "" "Fixed railgun particles being drawn to wrong coordinate against buildings" " with non-default `TargetCoordOffset` or when force-firing on bridges (by" " Starkku)" msgstr "修复了轨道炮粒子对于具有非默认 `TargetCoordOffset` 的建筑或在桥上强制开火时被绘制到错误坐标的问题(by Starkku)" -#: ../../Whats-New.md:1132 +#: ../../Whats-New.md:1185 msgid "" "Fixed building `TargetCoordOffset` not being taken into accord for " "several things like fire angle calculations and target lines (by Starkku)" msgstr "修复了建筑 `TargetCoordOffset` 未将开火角度和目标指示线考虑在内的问题(by Starkku)" -#: ../../Whats-New.md:1133 +#: ../../Whats-New.md:1186 msgid "Allowed observers to see a selected building's radial indicator (by Trsdy)" msgstr "允许了观察者查看选中建筑的范围指示器(by Trsdy)" -#: ../../Whats-New.md:1134 +#: ../../Whats-New.md:1187 msgid "" "Allow voxel projectiles to use `AnimPalette` and `FirersPalette` (by " "NetsuNegi)" msgstr "允许了 Voxel 抛射体使用 `AnimPalette` 和 `FirersPalette`(by NetsuNegi)" -#: ../../Whats-New.md:1137 +#: ../../Whats-New.md:1190 msgid "" "Fixed shields being able to take damage when the parent TechnoType was " "under effects of a `Temporal` Warhead (by Starkku)" msgstr "修复了单位被 `Temporal` 弹头冻结时其护盾仍可受伤的问题(by Starkku)" -#: ../../Whats-New.md:1138 +#: ../../Whats-New.md:1191 msgid "Improved shield behavior for forced damage (by Uranusian)" msgstr "改进了护盾在强制承受伤害时的行为(by Uranusian)" -#: ../../Whats-New.md:1139 +#: ../../Whats-New.md:1192 msgid "" "Fixed `SplashList` animations playing when a unit is hit on a bridge over" " water (by Uranusian)" msgstr "修复了命中桥上单位时会播放 `SplashList` 动画的问题(by Uranusian)" -#: ../../Whats-New.md:1140 +#: ../../Whats-New.md:1193 msgid "Fixed shielded objects not decloaking if shield takes damage (by Starkku)" msgstr "修复了带有护盾的物体在受击时不会解除隐形的问题(by Starkku)" -#: ../../Whats-New.md:1141 +#: ../../Whats-New.md:1194 msgid "" "Fixed critical hit animation playing even if no critical hits were dealt " "due to `Crit.Affects` or `ImmuneToCrit` settings (by Starkku)" @@ -5652,13 +5965,13 @@ msgstr "" "修复了即便修复了由于 `Crit.Affects` 或`ImmuneToCrit` 设定未能造成暴击伤害时仍会播放暴击动画的问题(by " "Starkku)" -#: ../../Whats-New.md:1142 +#: ../../Whats-New.md:1195 msgid "" "Fixed `RemoveDisguise` not working on `PermaDisguise` infantry (by " "Starkku)" msgstr "修复了 `RemoveDisguise` 未能在 `PermaDisguise` 步兵上工作的问题(by Starkku)" -#: ../../Whats-New.md:1143 +#: ../../Whats-New.md:1196 msgid "" "Fixed single-color laser (IsHouseColor, IsSingleColor, LaserTrails) glow " "falloff to match the vanilla appearance (by Starkku)" @@ -5666,47 +5979,47 @@ msgstr "" "修复了单色激光(`IsHouseColor`、`IsSingleColor`、LaserTrails)的光照算法以保持与原版效果一致(by " "Starkku)" -#: ../../Whats-New.md:1144 +#: ../../Whats-New.md:1197 msgid "" "Fixed a potential cause of crashes concerning shield animations (such in " "conjunction with cloaking) (by Starkku)" msgstr "修复了一个可能导致崩溃的护盾动画问题(by Starkku)" -#: ../../Whats-New.md:1145 +#: ../../Whats-New.md:1198 msgid "" "Fixed interceptors intercepting projectiles fired by friendly objects if " "the said object died after firing the projectile (by Starkku)" msgstr "修复了友军对象在死亡后其发射的抛射体会被抛射体拦截逻辑视为应拦截目标的问题(by Starkku)" -#: ../../Whats-New.md:1146 +#: ../../Whats-New.md:1199 msgid "" "Fixed interceptor weapons with `Inviso=true` projectiles detonating the " "projectile at wrong coordinates (by Starkku)" msgstr "修复了 `Inviso=true` 抛射体拦截武器在错误左边处引爆的问题(by Starkku)" -#: ../../Whats-New.md:1147 +#: ../../Whats-New.md:1200 msgid "" "Fixed some possible configuration reading issues when using Phobos with " "patches that rename `uimd.ini` (by Belonit)" msgstr "修复了 Phobos 与重命名 `uimd.ini` 的补丁共用时可能出现的配置文件读取文件(by Belonit)" -#: ../../Whats-New.md:1148 +#: ../../Whats-New.md:1201 msgid "Fixed a game crash when using the Map Snapshot command (by Otamaa)" msgstr "修复了抓取地图快捷键导致的游戏崩溃(by Otamaa)" -#: ../../Whats-New.md:1149 +#: ../../Whats-New.md:1202 msgid "" "Fixed issue with incorrect input in edit dialog element when using IME " "(by Belonit)" msgstr "修复了使用输入法时编辑对话框内容输入错误的问题(by Belonit)" -#: ../../Whats-New.md:1150 +#: ../../Whats-New.md:1203 msgid "" "Fixed an issue where tooltip text could be clipped by tooltip rectangle " "border if using `MaxWidth` > 0 (by Starkku)" msgstr "修复了 `MaxWidth` > 0 时拓展工具条文本可能被拓展工具条矩形边框截断的问题(by Starkku)" -#: ../../Whats-New.md:1151 +#: ../../Whats-New.md:1204 msgid "" "Fixed projectiles with `Trajectory=Straight` suffering from potential " "inaccuracy problems if combined with `Airburst=yes` or Warhead with " @@ -5715,75 +6028,75 @@ msgstr "" "修复了带有 `Trajectory=Straight` 的抛射体在与 `Airburst=yes` 或拥有 `EMEffect=true` " "的弹头结合使用时可能出现的精度问题(by Starkku)" -#: ../../Whats-New.md:1152 +#: ../../Whats-New.md:1205 msgid "Minor performance optimization related to shields (by Trsdy)" msgstr "对护盾进行了轻微的性能优化(by Trsdy)" -#: ../../Whats-New.md:1153 +#: ../../Whats-New.md:1206 msgid "" "Fixed teleporting miners (Chrono Miner) considered to be idle by " "harvester counter, improved related game performance (by Trsdy)" msgstr "修复了超时空矿车被矿车计数器误判为摆烂的问题,并进行了相关的性能优化(by Trsdy)" -#: ../../Whats-New.md:1154 +#: ../../Whats-New.md:1207 msgid "" "Fixed negative damage weapons considering shield health when evaluating " "targets even if Warhead had `Shield.Penetrate` set to true (by Starkku)" msgstr "修复了负伤害武器在选择目标时即便在弹头 `Shield.Penetrate` 设为 true 也仍会考虑护盾值的问题(by Starkku)" -#: ../../Whats-New.md:1155 +#: ../../Whats-New.md:1208 msgid "" "Fixed engineers considering shield health instead of building health when" " determining if they can repair or capture a building (by Starkku)" msgstr "修复了工程师在判断能否维修/占领建筑时考虑护盾值而非建筑生命值的问题(by Starkku)" -#: ../../Whats-New.md:1156 +#: ../../Whats-New.md:1209 msgid "" "Fixed shield animations (`IdleAnim`, `BreakAnim` and `HitAnim`) showing " "up even if the object shield is attached to is currently underground (by " "Starkku)" msgstr "修复了护盾动画(`IdleAnim`、`BreakAnim` 和 `HitAnim`)在其附着对象处于地下时仍然显示的问题(by Starkku)" -#: ../../Whats-New.md:1157 +#: ../../Whats-New.md:1210 msgid "" "Fixed shields not being removed from sinking units until they have fully " "finished sinking (by Starkku)" msgstr "修复了护盾在单位完全沉没前未被移除的问题(by Starkku)" -#: ../../Whats-New.md:1158 +#: ../../Whats-New.md:1211 msgid "Fixed techno-extdata update after type conversion (by Trsdy)" msgstr "修复了单位转换后的数据更新问题(by Trsdy)" -#: ../../Whats-New.md:1159 +#: ../../Whats-New.md:1212 msgid "" "Fixed Phobos Warhead effects (crits, new shield modifiers etc.) " "considering sinking units valid targets (by Starkku)" msgstr "修复了 Phobos 弹头效果(暴击、护盾修改等)将正在下沉的单位视为有效目标的问题(by Starkku)" -#: ../../Whats-New.md:1160 +#: ../../Whats-New.md:1213 msgid "" "Fixed an issue where `FireOnce=yes` deploy weapons on vehicles would " "still fire multiple times if deploy command is issued repeatedly or when " "not idle (by Starkku)" msgstr "修复了拥有 `FireOnce=yes` 的部署武器在重复下达部署质量或非闲置状态仍会多次开火的问题(by Starkku)" -#: ../../Whats-New.md:1161 +#: ../../Whats-New.md:1214 msgid "" "Fixed a game crash when checking `BuildLimit` if Phobos is running " "without Ares (by Belonit)" msgstr "修复了当 Phobos 未与 Ares 共同使用时检查 `BuildLimit` 会导致游戏崩溃的问题(by Belonit)" -#: ../../Whats-New.md:1162 +#: ../../Whats-New.md:1215 msgid "" "Corrected the misinterpretation in the definition of `DiskLaser.Radius` " "(by Trsdy)" msgstr "更正了定义 `DiskLaser.Radius` 错误解释的问题(by Trsdy)" -#: ../../Whats-New.md:1163 +#: ../../Whats-New.md:1216 msgid "Fixed GlobalVariables failed working among scenarios (by Trsdy)" msgstr "修复了全局变量在多个场景失效的问题(by Trsdy)" -#: ../../Whats-New.md:1166 +#: ../../Whats-New.md:1219 msgid "" "Weapons fired by EMPulse superweapons *(Ares feature)* without " "`EMPulse.TargetSelf=true` can now create radiation (by Starkku)" @@ -5791,57 +6104,57 @@ msgstr "" "现在由 EMPulse 超级武器(*Ares 功能*)发射的武器在没有 `EMPulse.TargetSelf=true` " "的情况下也可以正常产生辐射(by Starkku)" -#: ../../Whats-New.md:1168 +#: ../../Whats-New.md:1221 msgid "Non-DLL:" msgstr "非 DLL 内容:" -#: ../../Whats-New.md:1169 +#: ../../Whats-New.md:1222 msgid "" "Implemented a tool (sed wrapper) to semi-automatically upgrade INIs to " "use latest Phobos tags (by Kerbiter)" msgstr "做了一个 sed 脚本工具来半自动的更新 INI 内容为最新版 Phobos 的对应标签(by Kerbiter)" -#: ../../Whats-New.md:1173 +#: ../../Whats-New.md:1226 msgid "0.2.2.2" msgstr "0.2.2.2" -#: ../../Whats-New.md:1178 +#: ../../Whats-New.md:1231 msgid "Fixed shield type info not saving properly (by Uranusian)" msgstr "修复了护盾类型信息未能正确保存的问题(by Uranusian)" -#: ../../Whats-New.md:1179 +#: ../../Whats-New.md:1232 msgid "" "Fixed extended building upgrades logic not properly interacting with " "Ares' BuildLimit check (by Uranusian)" msgstr "修复了拓展的建筑加载物逻辑与 Ares 的 BuildLimit 检查交互异常的问题(by Uranusian)" -#: ../../Whats-New.md:1180 +#: ../../Whats-New.md:1233 msgid "Fixed more random crashes for `CameoPriority` (by Uranusian)" msgstr "修复了更多由 `CameoPriority` 导致的随机崩溃问题(by Uranusian)" -#: ../../Whats-New.md:1181 +#: ../../Whats-New.md:1234 msgid "" "Fixed aircraft weapons causing game freeze when burst index was not " "correctly reset after firing (by Starkku)" msgstr "修复了战机开火后 Burst 索引未能正确重置导致的游戏卡死问题(by Starkku)" -#: ../../Whats-New.md:1185 +#: ../../Whats-New.md:1238 msgid "0.2.2.1" msgstr "0.2.2.1" -#: ../../Whats-New.md:1190 +#: ../../Whats-New.md:1243 msgid "Fixed random crashes about `CameoPriority` (by Uranusian)" msgstr "修复了 `CameoPriority` 导致的随机崩溃(by Uranusian)" -#: ../../Whats-New.md:1191 +#: ../../Whats-New.md:1244 msgid "Fixed trigger action 125 not functioning properly (by Uranusian)" msgstr "修复了触发结果 125 号未能正常工作的问题(by Uranusian)" -#: ../../Whats-New.md:1192 +#: ../../Whats-New.md:1245 msgid "Fixed area warhead detonation not falling back to firer house (by Otamaa)" msgstr "修复了范围弹头的所属问题(by Otamaa)" -#: ../../Whats-New.md:1193 +#: ../../Whats-New.md:1246 msgid "" "RadSite hook adjustment for `FootClass` to support Ares `RadImmune`; also" " various fixes to radiation / desolators (by Otamaa)" @@ -5849,83 +6162,83 @@ msgstr "" "对 `FootClass` 的钩子进行调整以支持 Ares 的 `RadImmune` 相关逻辑;同时对辐射/辐射工兵进行了多项修复(by " "Otamaa)" -#: ../../Whats-New.md:1194 +#: ../../Whats-New.md:1247 msgid "Fixed `Crit.Affects` not functioning properly (by Uranusian)" msgstr "修复了 `Crit.Affects` 未能正常工作的问题(by Uranusian)" -#: ../../Whats-New.md:1195 +#: ../../Whats-New.md:1248 msgid "" "Fixed improper upgrade owner transfer which resulted in built ally / " "enemy building upgrades keeping the player who built them alive (by " "Kerbiter)" msgstr "修复了建造在其他所属方建筑上的加载物会导致本应战败的所属方保持存活的问题(by Kerbiter)" -#: ../../Whats-New.md:1199 +#: ../../Whats-New.md:1252 msgid "0.2.2" msgstr "0.2.2" -#: ../../Whats-New.md:1204 +#: ../../Whats-New.md:1257 msgid "" "Customizable producing progress \"bars\" like CnC:Remastered did (by " "Uranusian)" msgstr "自定义像 CNC 重置版那样的生产进度「条」(by Uranusian)" -#: ../../Whats-New.md:1205 +#: ../../Whats-New.md:1258 msgid "Customizable cameo sorting priority (by Uranusian)" msgstr "自定义图标排序优先级(by Uranusian)" -#: ../../Whats-New.md:1206 +#: ../../Whats-New.md:1259 msgid "Customizable harvester ore gathering animation (by secsome, Uranusian)" msgstr "自定义矿车采矿动画(by secsome, Uranusian)" -#: ../../Whats-New.md:1207 +#: ../../Whats-New.md:1260 msgid "" "Allow making technos unable to be issued with movement order (by " "Uranusian)" msgstr "允许设置单位无法被下达移动指令(by Uranusian)" -#: ../../Whats-New.md:1210 +#: ../../Whats-New.md:1263 msgid "" "Fixed non-IME keyboard input to be working correctly for languages / " "keyboard layouts that use character ranges other than Basic Latin and " "Latin-1 Supplement (by Belonit)" msgstr "修复了非输入法键盘输入在基础拉丁或拉丁 -1 以外的语言/键盘布局中无法正常工作的问题(by Belonit)" -#: ../../Whats-New.md:1213 +#: ../../Whats-New.md:1266 msgid "Fixed the critical damage logic not functioning properly (by Uranusian)" msgstr "修复了暴击伤害逻辑无法正常工作的问题(by Uranusian)" -#: ../../Whats-New.md:1214 +#: ../../Whats-New.md:1267 msgid "Fixed the bug when executing the stop command game crashes (by Uranusian)" msgstr "修复了执行停止命令时游戏崩溃的 Bug(by Uranusian)" -#: ../../Whats-New.md:1218 +#: ../../Whats-New.md:1271 msgid "0.2.1.1" msgstr "0.2.1.1" -#: ../../Whats-New.md:1223 +#: ../../Whats-New.md:1276 msgid "" "Fixed occasional crashes introduced by `Speed=0` stationary vehicles code" " (by Starkku)" msgstr "修复了由 `Speed=0` 静止载具代码引起的偶发性崩溃问题(by Starkku)" -#: ../../Whats-New.md:1227 +#: ../../Whats-New.md:1280 msgid "0.2.1" msgstr "0.2.1" -#: ../../Whats-New.md:1232 +#: ../../Whats-New.md:1285 msgid "" "Setting VehicleType `Speed` to 0 now makes game treat them as stationary " "(by Starkku)" msgstr "现在载具将在 `Speed` 设置为 0 时使游戏将它们视为静止(by Starkku)" -#: ../../Whats-New.md:1235 +#: ../../Whats-New.md:1288 msgid "" "Fixed the bug when after a failed placement the building/defence tab " "hotkeys won't trigger placement mode again (by Uranusian)" msgstr "修复了在摆放失败后使用切换到建筑栏和防御栏的快捷键无法再次进入放置模式的问题(by Uranusian)" -#: ../../Whats-New.md:1236 +#: ../../Whats-New.md:1289 msgid "" "Fixed the bug when building with `UndeployInto` plays " "`EVA_NewRallypointEstablished` while undeploying (by secsome)" @@ -5933,189 +6246,189 @@ msgstr "" "修复了拥有 `UndeployInto` 的建筑在反部署时会播放 `EVA_NewRallypointEstablished` 的问题(by " "secsome)" -#: ../../Whats-New.md:1239 +#: ../../Whats-New.md:1292 msgid "" "Fixed the bug when trigger action `125 Build At...` wasn't actually " "producing a building when the target cells were occupied (by secsome)" msgstr "修复了触发结果 `125 将建筑建于...` 在目标单元格被占用时无法生产建筑的问题(by secsome)" -#: ../../Whats-New.md:1244 +#: ../../Whats-New.md:1297 msgid "0.2" msgstr "0.2" -#: ../../Whats-New.md:1249 +#: ../../Whats-New.md:1302 msgid "" "Shield logic for TechnoTypes (by Uranusian, secsome, Belonit) with " "warhead additions (by Starkku)" msgstr "护盾逻辑(by Uranusian、secsome、Belonit)及对应新增弹头功能(by Starkku)" -#: ../../Whats-New.md:1250 +#: ../../Whats-New.md:1303 msgid "Custom Radiation Types (by AlexB, Otamaa, Belonit, Uranusian)" msgstr "自定义辐射(by AlexB、Otamaa、Belonit、Uranusian)" -#: ../../Whats-New.md:1251 +#: ../../Whats-New.md:1304 msgid "" "New ScriptType actions `71 Timed Area Guard`, `72 Load Onto Transports`, " "`73 Wait until ammo is full` (by FS-21)" msgstr "新增动作脚本 `71 区域警戒(时间计数)`、`72 装载入运输载具`、`73 等待弹药装满`(by FS-21)" -#: ../../Whats-New.md:1252 +#: ../../Whats-New.md:1305 msgid "" "Ore drills now have customizable ore type, range, ore growth stage and " "amount of cells generated (by Kerbiter)" msgstr "现在矿柱可以自定义矿石的类型、范围、生长阶段和生长的单元格数(by Kerbiter)" -#: ../../Whats-New.md:1253 +#: ../../Whats-New.md:1306 msgid "" "Basic projectile interception logic (by AutoGavy, ChrisLv_CN, Kerbiter, " "Erzoid/SukaHati)" msgstr "基础的抛射体拦截逻辑(by AutoGavy、ChrisLv_CN、Kerbiter、Erzoid/SukaHati)" -#: ../../Whats-New.md:1254 +#: ../../Whats-New.md:1307 msgid "" "Customizable harvester active/total counter next to credits counter (by " "Uranusian)" msgstr "在资金计数器旁自定义「工作矿车/矿车总量」计数器(by Uranusian)" -#: ../../Whats-New.md:1255 +#: ../../Whats-New.md:1308 msgid "Select Next Idle Harvester hotkey command (by Kerbiter)" msgstr "选择下一个空闲矿车快捷键(by Kerbiter)" -#: ../../Whats-New.md:1256 +#: ../../Whats-New.md:1309 msgid "Dump Object Info hotkey command (by secsome & FS-21)" msgstr "输出对象信息快捷键(by secsome 与 FS-21)" -#: ../../Whats-New.md:1257 +#: ../../Whats-New.md:1310 msgid "Remove Disguise and Remove Mind Control warhead effects (by secsome)" msgstr "解除伪装和解除心控弹头效果(by secsome)" -#: ../../Whats-New.md:1258 +#: ../../Whats-New.md:1311 msgid "Custom per-warhead `SplashLists` (by Uranusian)" msgstr "弹头微观定义 `SplashLists`(by Uranusian)" -#: ../../Whats-New.md:1259 +#: ../../Whats-New.md:1312 msgid "" "`AnimList.PickRandom` used to randomize `AnimList` with no side effects " "(by secsome)" msgstr "添加了 `AnimList.PickRandom` 用于实现没有副作用的随机 `AnimList`(by secsome)" -#: ../../Whats-New.md:1260 +#: ../../Whats-New.md:1313 msgid "Chance-based critical damage system on warheads (by AutoGavy)" msgstr "基于概率的弹头暴击伤害系统(by AutoGavy)" -#: ../../Whats-New.md:1261 +#: ../../Whats-New.md:1314 msgid "Optional mind control range limit (by Uranusian)" msgstr "自定义心控有效距离上限(by Uranusian)" -#: ../../Whats-New.md:1262 +#: ../../Whats-New.md:1315 msgid "" "Multiple mind controllers can now release units on overload (by Uranusian" " & secsome)" msgstr "多重心控单位(原版脑车)可以在过载时及时释放单位(by Uranusian & secsome)" -#: ../../Whats-New.md:1263 +#: ../../Whats-New.md:1316 msgid "" "Spawns now can be killed on low power and have limited pursuing range (by" " FS-21)" msgstr "现在子机可以在母舰断电时坠毁并且具有有限的追击范围(by FS-21)" -#: ../../Whats-New.md:1264 +#: ../../Whats-New.md:1317 msgid "Spawns can now have the same exp. level as owner techno (by Uranusian)" msgstr "现在子机可以同步母舰的经验等级(by Uranusian)" -#: ../../Whats-New.md:1265 +#: ../../Whats-New.md:1318 msgid "" "`TurretOffset` now accepts `F,L,H` and `F,L` values instead of just `F` " "value (by Kerbiter)" msgstr "现在 `TurretOffset` 可以接受 `F,L,H` 和 `F,L` 那样的值而不仅限于一个 `F`(by Kerbiter)" -#: ../../Whats-New.md:1266 +#: ../../Whats-New.md:1319 msgid "ElectricBolt arc visuals can now be disabled per-arc (by Otamaa)" msgstr "现在可以单独关闭 EBolt 特效中的特定电弧(by Otamaa)" -#: ../../Whats-New.md:1267 +#: ../../Whats-New.md:1320 msgid "Semantic locomotor aliases for modder convenience (by Belonit)" msgstr "为 modder 们添加了简化的 Locomotor 别称(by Belonit)" -#: ../../Whats-New.md:1268 +#: ../../Whats-New.md:1321 msgid "" "Ability to specify amount of shots for strafing aircraft and burst " "simulation (by Starkku)" msgstr "可以为战机扫射指定次数以及模拟 `Burst`(by Starkku)" -#: ../../Whats-New.md:1269 +#: ../../Whats-New.md:1322 msgid "" "Customizeable Teleport/Chrono Locomotor properties per TechnoType (by " "Otamaa)" msgstr "自定义超时空运动模式的参数(by Otamaa)" -#: ../../Whats-New.md:1270 +#: ../../Whats-New.md:1323 msgid "Maximum waypoints amount increased from 702 to 2147483647 (by secsome)" msgstr "路径点数量上限由 702 提升到 2147483647(by secsome)" -#: ../../Whats-New.md:1271 +#: ../../Whats-New.md:1324 msgid "Customizeable Missing Cameo file (by Uranusian)" msgstr "自定义缺省图标(by Uranusian)" -#: ../../Whats-New.md:1274 +#: ../../Whats-New.md:1327 msgid "" "Map previews with zero size won't crash the game anymore (by Kerbiter & " "Belonit)" msgstr "0 尺寸的地图预览图不再会导致游戏崩溃(by Kerbiter 与 Belonit)" -#: ../../Whats-New.md:1275 +#: ../../Whats-New.md:1328 msgid "Tileset 255+ bridge fix (by E1 Elite)" msgstr "Tileset 255+ 情况的桥梁修复(by E1 Elite)" -#: ../../Whats-New.md:1276 +#: ../../Whats-New.md:1329 msgid "" "Fixed fatal errors when `Blowfish.dll` couldn't be registered in the " "system properly due to missing admin rights (by Belonit)" msgstr "修复了由于确实管理员权限导致 `Blowfish.dll` 无法正确注册而引发的 Fatal Error(by Belonit)" -#: ../../Whats-New.md:1277 +#: ../../Whats-New.md:1330 msgid "" "Fixed to take Burst into account for aircraft weapon shots beyond the " "first one (by Starkku)" msgstr "修复了战机扫射武器仅有第一发考虑 `Burst` 的问题(by Starkku)" -#: ../../Whats-New.md:1278 +#: ../../Whats-New.md:1331 msgid "" "Fixed the bug when units are already dead but still in map (for sinking, " "crashing, dying animation, etc.), they could die again (by Uranusian)" msgstr "修复了已经死亡但仍存在于地图上的单位(例如沉没、坠毁、播放死亡动画等)可以再次死亡的 Bug(by Uranusian)" -#: ../../Whats-New.md:1279 +#: ../../Whats-New.md:1332 msgid "" "Fixed the bug when cloaked Desolator was unable to fire his deploy weapon" " (by Otamaa)" msgstr "修复了隐形的辐射工兵无法部署发射武器的 Bug(by Otamaa)" -#: ../../Whats-New.md:1280 +#: ../../Whats-New.md:1333 msgid "" "Fixed the bug when `InfiniteMindControl` with `Damage=1` will auto-" "release the victim to control new one (by Uranusian)" msgstr "修复了 `InfiniteMindControl` 在 `Damage=1` 的情况下只能控制 1 个单位的问题(by Uranusian)" -#: ../../Whats-New.md:1281 +#: ../../Whats-New.md:1334 msgid "" "Fixed the bug that script action `Move to cell` was still using leftover " "cell calculations from previous games (by secsome)" msgstr "修复了动作脚本 `移动到单元格` 使用先代游戏残留单元格算法的 Bug(by secsome)" -#: ../../Whats-New.md:1282 +#: ../../Whats-New.md:1335 msgid "" "Fixed the bug when trigger action `125 Build At...` didn't play buildup " "anim (by secsome)" msgstr "修复了触发结果 `125 将建筑建于...` 不播放建造动画的 Bug(by secsome)" -#: ../../Whats-New.md:1283 +#: ../../Whats-New.md:1336 msgid "" "Fixed `DebrisMaximums` (spawned debris type amounts cannot go beyond " "specified maximums anymore) (by Otamaa)" msgstr "修复了 `DebrisMaximums`(生成的碎片不再超过其对应的最大数量)(by Otamaa)" -#: ../../Whats-New.md:1284 +#: ../../Whats-New.md:1337 msgid "" "Fixes to `DeployFire` logic (`DeployFireWeapon`, `FireOnce`, stop command" " now work properly) (by Starkku)" @@ -6123,13 +6436,13 @@ msgstr "" "修复了 `DeployFire` 逻辑(现在 `DeployFireWeapon`、`FireOnce`、停止命令可以正常工作)(by " "Starkku)" -#: ../../Whats-New.md:1287 +#: ../../Whats-New.md:1340 msgid "" "Properly rewritten a fix for mind-controlled vehicles deploying into " "buildings (by FS-21)" msgstr "彻底重写了被心控载具部署成建筑的修复方案(by FS-21)" -#: ../../Whats-New.md:1288 +#: ../../Whats-New.md:1341 msgid "" "Properly rewritten `DeployToFire` fix, tag `Deployed.RememberTarget` is " "deprecated, now always on (by Kerbiter)" @@ -6137,97 +6450,97 @@ msgstr "" "彻底重写了 `DeployToFire` 的修复,标签 `Deployed.RememberTarget` 已弃用,现在总是启用(by " "Kerbiter)" -#: ../../Whats-New.md:1289 +#: ../../Whats-New.md:1342 msgid "New warheads now work with Ares' `GenericWarhead` superweapon (by Belonit)" msgstr "现在新的弹头效果可以用于 Ares 的 `GenericWarhead` 类超级武器(by Belonit)" -#: ../../Whats-New.md:1293 +#: ../../Whats-New.md:1346 msgid "0.1.1" msgstr "0.1.1" -#: ../../Whats-New.md:1298 +#: ../../Whats-New.md:1351 msgid "" "Fixed an occasional crash when selecting units with a selection box (by " "Kerbiter)" msgstr "修复了框选单位时偶尔崩溃的问题(by Kerbiter)" -#: ../../Whats-New.md:1302 +#: ../../Whats-New.md:1355 msgid "0.1" msgstr "0.1" -#: ../../Whats-New.md:1307 +#: ../../Whats-New.md:1360 msgid "Full-color PCX graphics support (by Belonit)" msgstr "全彩 PCX 支持(by Belonit)" -#: ../../Whats-New.md:1308 +#: ../../Whats-New.md:1361 msgid "Support for PCX loading screens of any size (by Belonit)" msgstr "支持了任意尺寸的 PCX 载入图(by Belonit)" -#: ../../Whats-New.md:1309 +#: ../../Whats-New.md:1362 msgid "" "Extended sidebar tooltips with descriptions, recharge time and power " "consumption/generation (by Kerbiter & Belonit)" msgstr "扩展侧边栏拓展工具条时其带有描述、充能时间和电力能耗/产出(by Kerbiter 与 Belonit)" -#: ../../Whats-New.md:1310 +#: ../../Whats-New.md:1363 msgid "Selection priority filtering for box selection (by Kerbiter)" msgstr "低优先级框选(by Kerbiter)" -#: ../../Whats-New.md:1311 +#: ../../Whats-New.md:1364 msgid "Shroud, reveal and money transact warheads (by Belonit)" msgstr "黑幕弹、揭示弹、金币弹(by Belonit)" -#: ../../Whats-New.md:1312 +#: ../../Whats-New.md:1365 msgid "Custom game icon command line arg (by Belonit)" msgstr "使用命令行参数自定义游戏图标(by Belonit)" -#: ../../Whats-New.md:1313 +#: ../../Whats-New.md:1366 msgid "Ability to disable black spawn position dots on map preview (by Belonit)" msgstr "允许禁用空置出生点黑点(by Belonit)" -#: ../../Whats-New.md:1314 +#: ../../Whats-New.md:1367 msgid "" "Ability to specify applicable building owner for building upgrades (by " "Kerbiter)" msgstr "允许为建筑加载物指定适当的建筑所属方,也就是可以建造在别人的建筑上(by Kerbiter)" -#: ../../Whats-New.md:1315 +#: ../../Whats-New.md:1368 msgid "Customizable disk laser radius (by Belonit & Kerbiter)" msgstr "自定义飞碟激光半径(by Belonit 与 Kerbiter)" -#: ../../Whats-New.md:1316 +#: ../../Whats-New.md:1369 msgid "Ability to switch to GDI sidebar layout for any side (by Belonit)" msgstr "允许为任意阵营 UI 切换 GDI 式侧边栏布局(by Belonit)" -#: ../../Whats-New.md:1319 +#: ../../Whats-New.md:1372 msgid "" "Deploying mind-controlled TechnoTypes won't make them permanently mind-" "controlled anymore (unfinished fix by DCoder)" msgstr "部署被心灵控制的单位不再会时其永远处于被心控状态(实际上直接刷漆了)(DCoder 未完成的修复)" -#: ../../Whats-New.md:1320 +#: ../../Whats-New.md:1373 msgid "" "SHP debris hardcoded shadows now respect `Shadow=no` tag value (by " "Kerbiter)" msgstr "SHP 碎片硬编码显示的阴影现在遵守 `Shadow=no` 设置(by Kerbiter)" -#: ../../Whats-New.md:1321 +#: ../../Whats-New.md:1374 msgid "" "`DeployToFire` vehicles won't lose target on deploy anymore (unfinished " "fix by DCoder)" msgstr "`DeployToFire` 的载具不再会于部署时丢失目标(DCoder 未完成的修复)" -#: ../../Whats-New.md:1322 +#: ../../Whats-New.md:1375 msgid "" "Fixed QWER hotkey tab switching not hiding the displayed tooltip as it " "should (by Belonit)" msgstr "修复了当通过 QWER 快捷键切换标签页时未能正确隐藏拓展工具条的问题(by Belonit)" -#: ../../Whats-New.md:1323 +#: ../../Whats-New.md:1376 msgid "Sidebar tooltips now can go over sidebar bounds (by Belonit)" msgstr "现在侧边栏拓展工具条可以超出侧边栏边界(by Belonit)" -#: ../../Whats-New.md:1324 +#: ../../Whats-New.md:1377 msgid "Lifted stupidly small limit for tooltip character amount (by Belonit)" msgstr "解除了拓展工具条字符数量小得愚蠢的上限(by Belonit)" diff --git a/docs/locale/zh_CN/LC_MESSAGES/index.po b/docs/locale/zh_CN/LC_MESSAGES/index.po index 80afe4862b..50de167274 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/index.po +++ b/docs/locale/zh_CN/LC_MESSAGES/index.po @@ -503,7 +503,7 @@ msgstr "欢迎每位团队成员在下方为他们自己的条目添加捐款链 msgid "" "**Kerbiter ([@Metadorius](https://github.com/Metadorius))** - T3 " "maintainer (lead)" -msgstr "**Kerbiter([@Metadorius](https://github.com/Metadorius))** - T3 维护者(领导者)" +msgstr "**Kerbiter([@Metadorius](https://github.com/Metadorius))**- T3 维护者(领导者)" #: ../../../README.md:106 msgid "" @@ -521,7 +521,7 @@ msgstr "[Patreon](https://www.patreon.com/Starkku)" #: ../../../README.md:109 msgid "**[@CrimRecya](https://github.com/CrimRecya) (绯红热茶)** - T2 maintainer" -msgstr "**[@CrimRecya](https://github.com/CrimRecya)(绯红热茶)** - T2 维护者" +msgstr "**[@CrimRecya](https://github.com/CrimRecya)(绯红热茶)**- T2 维护者" #: ../../../README.md:110 msgid "[Alipay](https://i2.hdslb.com/bfs/new_dyn/8de77b17b8fc2e005613821b62008e37362533219.jpg)" @@ -537,7 +537,7 @@ msgstr "[Patreon](https://www.patreon.com/c/ZivDero)" #: ../../../README.md:113 msgid "**Ollerus ([@Coronia](https://github.com/Coronia))** - T1 maintainer" -msgstr "**Ollerus ([@Coronia](https://github.com/Coronia))** - T1 维护者" +msgstr "**Ollerus([@Coronia](https://github.com/Coronia))**- T1 维护者" #: ../../../README.md:114 msgid "[Alipay](https://i2.hdslb.com/bfs/new_dyn/7c5f82c5530c88dc076a6f1ca2c02b46362533219.jpg)" @@ -553,7 +553,7 @@ msgstr "[支付宝](https://i2.hdslb.com/bfs/new_dyn/cb69d2b5eb08c13d03bc79664e6 #: ../../../README.md:117 msgid "**[@TaranDahl](https://github.com/TaranDahl) (航味麻酱)** - T1 maintainer" -msgstr "**[@TaranDahl](https://github.com/TaranDahl)(航味麻酱)** - T1 维护者" +msgstr "**[@TaranDahl](https://github.com/TaranDahl)(航味麻酱)**- T1 维护者" #: ../../../README.md:118 msgid "[WeChatPay](https://i2.hdslb.com/bfs/new_dyn/ffd5d36cc5efcdd83d93138062ec116e362533219.jpg)" @@ -564,7 +564,7 @@ msgid "" "**Noble_Fish ([@DeathFishAtEase](https://github.com/DeathFishAtEase))** -" " triage, doc maintainer" msgstr "" -"**Noble_Fish([@DeathFishAtEase](https://github.com/DeathFishAtEase))** - " +"**Noble_Fish([@DeathFishAtEase](https://github.com/DeathFishAtEase))**- " "分派、文档维护者" #: ../../../README.md:120 @@ -573,7 +573,7 @@ msgstr "[支付宝](https://i2.hdslb.com/bfs/new_dyn/b080641faea49ae3e10b4728679 #: ../../../README.md:121 msgid "**FlyStar ([@Fly-Star-him](https://github.com/Fly-Star-him))** - triage" -msgstr "**FlyStar([@Fly-Star-him](https://github.com/Fly-Star-him))** - 分派" +msgstr "**FlyStar([@Fly-Star-him](https://github.com/Fly-Star-him))**- 分派" #: ../../../README.md:122 msgid "**[@Fryone](https://github.com/Fryone)** - triage" diff --git a/src/Commands/Commands.cpp b/src/Commands/Commands.cpp index 0e5ad329af..2460c6b971 100644 --- a/src/Commands/Commands.cpp +++ b/src/Commands/Commands.cpp @@ -15,7 +15,6 @@ #include -#include #include #include diff --git a/src/Commands/Commands.h b/src/Commands/Commands.h index ae3c89f503..77206961db 100644 --- a/src/Commands/Commands.h +++ b/src/Commands/Commands.h @@ -2,9 +2,7 @@ #include #include -#include #include -#include template T* MakeCommand() diff --git a/src/Commands/DamageDisplay.cpp b/src/Commands/DamageDisplay.cpp index 33ae3548de..6bd1109e68 100644 --- a/src/Commands/DamageDisplay.cpp +++ b/src/Commands/DamageDisplay.cpp @@ -1,6 +1,5 @@ #include "DamageDisplay.h" -#include #include const char* DamageDisplayCommandClass::GetName() const diff --git a/src/Commands/FrameByFrame.cpp b/src/Commands/FrameByFrame.cpp index e5a1e2c2d5..28da4cfa27 100644 --- a/src/Commands/FrameByFrame.cpp +++ b/src/Commands/FrameByFrame.cpp @@ -1,11 +1,8 @@ #include "FrameByFrame.h" -#include -#include +#include #include -#include - size_t FrameByFrameCommandClass::FrameStepCount = 0; bool FrameByFrameCommandClass::FrameStep = false; diff --git a/src/Commands/FrameStep.h b/src/Commands/FrameStep.h index caf432425c..5639afd624 100644 --- a/src/Commands/FrameStep.h +++ b/src/Commands/FrameStep.h @@ -3,6 +3,7 @@ #include "Commands.h" #include "FrameByFrame.h" +#include template class FrameStepCommandClass : public CommandClass diff --git a/src/Commands/NextIdleHarvester.cpp b/src/Commands/NextIdleHarvester.cpp index 1f78d1a3df..7811e78ae7 100644 --- a/src/Commands/NextIdleHarvester.cpp +++ b/src/Commands/NextIdleHarvester.cpp @@ -1,13 +1,7 @@ #include "NextIdleHarvester.h" -#include -#include -#include -#include #include -#include #include -#include const char* NextIdleHarvesterCommandClass::GetName() const { diff --git a/src/Commands/ObjectInfo.cpp b/src/Commands/ObjectInfo.cpp index 98d9768542..47637330ac 100644 --- a/src/Commands/ObjectInfo.cpp +++ b/src/Commands/ObjectInfo.cpp @@ -1,17 +1,9 @@ #include "ObjectInfo.h" #include -#include -#include -#include -#include -#include -#include -#include #include #include -#include #include const char* ObjectInfoCommandClass::GetName() const diff --git a/src/Commands/QuickSave.cpp b/src/Commands/QuickSave.cpp index 85c6514306..bf56bbe358 100644 --- a/src/Commands/QuickSave.cpp +++ b/src/Commands/QuickSave.cpp @@ -1,8 +1,5 @@ #include "QuickSave.h" -#include -#include -#include #include #include #include diff --git a/src/Commands/SaveVariablesToFile.cpp b/src/Commands/SaveVariablesToFile.cpp index 2c216e333f..46f77205cc 100644 --- a/src/Commands/SaveVariablesToFile.cpp +++ b/src/Commands/SaveVariablesToFile.cpp @@ -1,7 +1,6 @@ #include "SaveVariablesToFile.h" #include -#include const char* SaveVariablesToFileCommandClass::GetName() const { diff --git a/src/Commands/ToggleDesignatorRange.cpp b/src/Commands/ToggleDesignatorRange.cpp index efedf0bd61..7689c33a5b 100644 --- a/src/Commands/ToggleDesignatorRange.cpp +++ b/src/Commands/ToggleDesignatorRange.cpp @@ -1,6 +1,5 @@ #include "ToggleDesignatorRange.h" -#include #include const char* ToggleDesignatorRangeCommandClass::GetName() const diff --git a/src/Commands/ToggleDigitalDisplay.cpp b/src/Commands/ToggleDigitalDisplay.cpp index 34c9825345..1d6da264a8 100644 --- a/src/Commands/ToggleDigitalDisplay.cpp +++ b/src/Commands/ToggleDigitalDisplay.cpp @@ -1,6 +1,5 @@ #include "ToggleDigitalDisplay.h" -#include #include const char* ToggleDigitalDisplayCommandClass::GetName() const diff --git a/src/Commands/ToggleSWSidebar.cpp b/src/Commands/ToggleSWSidebar.cpp index 49369828c7..be41653f7d 100644 --- a/src/Commands/ToggleSWSidebar.cpp +++ b/src/Commands/ToggleSWSidebar.cpp @@ -1,5 +1,4 @@ #include "ToggleSWSidebar.h" -#include #include #include diff --git a/src/Ext/Aircraft/Body.cpp b/src/Ext/Aircraft/Body.cpp index 6a4dd860be..bc0d7976fb 100644 --- a/src/Ext/Aircraft/Body.cpp +++ b/src/Ext/Aircraft/Body.cpp @@ -1,9 +1,6 @@ #include "Body.h" -#include - #include -#include #include // TODO: Implement proper extended AircraftClass. diff --git a/src/Ext/Aircraft/Body.h b/src/Ext/Aircraft/Body.h index 4fee5f65e6..5fecdfc443 100644 --- a/src/Ext/Aircraft/Body.h +++ b/src/Ext/Aircraft/Body.h @@ -1,5 +1,5 @@ #pragma once -#include +#include // TODO: Implement proper extended AircraftClass. diff --git a/src/Ext/Aircraft/Hooks.cpp b/src/Ext/Aircraft/Hooks.cpp index 3b24ffa41f..5587e442af 100644 --- a/src/Ext/Aircraft/Hooks.cpp +++ b/src/Ext/Aircraft/Hooks.cpp @@ -1,13 +1,10 @@ -#include +#include "Body.h" + #include -#include -#include -#include #include #include #include -#include #pragma region Mission_Attack @@ -1179,3 +1176,25 @@ DEFINE_HOOK(0x4157EB, AircraftClass_Mission_SpyPlaneOverfly_MaxCount, 0x6) return 0; } + +#pragma region Rocket + +DEFINE_HOOK(0x66295A, RocketLocomotionClass_Process_IsHighEnoughForCruise, 0x8) +{ + GET(AircraftClass*, pLinkedTo, ECX); + GET(ILocomotion*, pThis, ESI); + + const auto pLoco = locomotion_cast(pThis); + const int heightThis = pLinkedTo->GetHeight(); + int heightTarget = pLinkedTo->Location.Z - pLoco->MovingDestination.Z; + + if (MapClass::Instance.GetCellAt(pLoco->MovingDestination)->ContainsBridge()) + heightTarget -= CellClass::BridgeHeight; + + R->EAX(Math::min(heightThis, heightTarget)); + //R->EAX(pLinkedTo->GetHeight()); Vanilla behavior + + return R->Origin() + 0x8; +} + +#pragma endregion diff --git a/src/Ext/Anim/Body.cpp b/src/Ext/Anim/Body.cpp index f7c74fdb28..2afd1793ce 100644 --- a/src/Ext/Anim/Body.cpp +++ b/src/Ext/Anim/Body.cpp @@ -2,8 +2,8 @@ #include -#include #include +#include #include #include diff --git a/src/Ext/Anim/Body.h b/src/Ext/Anim/Body.h index 72f3726100..6a26255188 100644 --- a/src/Ext/Anim/Body.h +++ b/src/Ext/Anim/Body.h @@ -1,11 +1,7 @@ #pragma once #include #include - #include -#include -#include -#include class AnimExt { diff --git a/src/Ext/Anim/Hooks.AnimCreateUnit.cpp b/src/Ext/Anim/Hooks.AnimCreateUnit.cpp index 9049822e6f..eecc11dc6f 100644 --- a/src/Ext/Anim/Hooks.AnimCreateUnit.cpp +++ b/src/Ext/Anim/Hooks.AnimCreateUnit.cpp @@ -3,14 +3,7 @@ #include "Body.h" -#include -#include -#include - -#include -#include #include -#include DEFINE_HOOK(0x737F6D, UnitClass_TakeDamage_Destroy, 0x7) { diff --git a/src/Ext/Anim/Hooks.cpp b/src/Ext/Anim/Hooks.cpp index fc8ad2c1a4..5c1169a2a0 100644 --- a/src/Ext/Anim/Hooks.cpp +++ b/src/Ext/Anim/Hooks.cpp @@ -1,14 +1,9 @@ #include "Body.h" -#include -#include - -#include +#include #include #include -#include - namespace AnimLoggingTemp { DWORD UniqueID = 0; diff --git a/src/Ext/AnimType/Body.cpp b/src/Ext/AnimType/Body.cpp index 902faebafb..b7cab913bb 100644 --- a/src/Ext/AnimType/Body.cpp +++ b/src/Ext/AnimType/Body.cpp @@ -1,11 +1,4 @@ #include "Body.h" -#include -#include -#include -#include -#include -#include -#include #include #include diff --git a/src/Ext/AnimType/Body.h b/src/Ext/AnimType/Body.h index 806180910d..cf35037b67 100644 --- a/src/Ext/AnimType/Body.h +++ b/src/Ext/AnimType/Body.h @@ -2,11 +2,10 @@ #include -#include #include -#include -#include -#include +#include + +#include enum class AttachedAnimPosition : BYTE { diff --git a/src/Ext/Building/Body.cpp b/src/Ext/Building/Body.cpp index 0671b3eca9..cf8b632590 100644 --- a/src/Ext/Building/Body.cpp +++ b/src/Ext/Building/Body.cpp @@ -1,8 +1,8 @@ #include "Body.h" #include +#include #include -#include BuildingExt::ExtContainer BuildingExt::ExtMap; @@ -474,6 +474,7 @@ void BuildingExt::ExtData::Serialize(T& Stm) .Process(this->CurrentLaserWeaponIndex) .Process(this->PoweredUpToLevel) .Process(this->CurrentEMPulseSW) + //.Process(this->IsFiringNow) It is set and reset within a same function. ; } diff --git a/src/Ext/Building/Body.h b/src/Ext/Building/Body.h index 170cc378f3..215d284034 100644 --- a/src/Ext/Building/Body.h +++ b/src/Ext/Building/Body.h @@ -1,17 +1,5 @@ #pragma once -#include -#include -#include -#include - -#include -#include -#include - -#include #include -#include -#include #include class BuildingExt @@ -38,6 +26,7 @@ class BuildingExt std::optional CurrentLaserWeaponIndex; int PoweredUpToLevel; // Distinct from UpgradeLevel, and set to highest PowersUpToLevel out of applied upgrades regardless of how many are currently applied to this building. SuperClass* CurrentEMPulseSW; + bool IsFiringNow; ExtData(BuildingClass* OwnerObject) : Extension(OwnerObject) , TypeExtData { nullptr } @@ -52,6 +41,7 @@ class BuildingExt , CurrentLaserWeaponIndex {} , PoweredUpToLevel { 0 } , CurrentEMPulseSW {} + , IsFiringNow { false } { } void DisplayIncomeString(); diff --git a/src/Ext/Building/Hooks.Grinding.cpp b/src/Ext/Building/Hooks.Grinding.cpp index 0d51a2dafa..59eabbe643 100644 --- a/src/Ext/Building/Hooks.Grinding.cpp +++ b/src/Ext/Building/Hooks.Grinding.cpp @@ -1,6 +1,5 @@ #include "Body.h" -#include #include DEFINE_HOOK(0x43C30A, BuildingClass_ReceiveMessage_Grinding, 0x6) diff --git a/src/Ext/Building/Hooks.Refinery.cpp b/src/Ext/Building/Hooks.Refinery.cpp index 45ff8b3799..667078e8f7 100644 --- a/src/Ext/Building/Hooks.Refinery.cpp +++ b/src/Ext/Building/Hooks.Refinery.cpp @@ -1,5 +1,7 @@ #include "Body.h" +#include + // The method of calculating the income is subject to each specific situation, // which may probably subject to further changes if anyone wants to extend the harvesting logic in the future. // I don't want to investigate the details so I check the balance difference directly. --Trsdy diff --git a/src/Ext/Building/Hooks.Selling.cpp b/src/Ext/Building/Hooks.Selling.cpp index 15f159bea6..c1e00a71da 100644 --- a/src/Ext/Building/Hooks.Selling.cpp +++ b/src/Ext/Building/Hooks.Selling.cpp @@ -1,5 +1,7 @@ #include "Body.h" +#include + // SellSound and EVA dehardcode DEFINE_HOOK(0x4D9F7B, FootClass_Sell, 0x6) { diff --git a/src/Ext/Building/Hooks.cpp b/src/Ext/Building/Hooks.cpp index a44574902a..970479bd36 100644 --- a/src/Ext/Building/Hooks.cpp +++ b/src/Ext/Building/Hooks.cpp @@ -1,15 +1,10 @@ #include "Body.h" -#include -#include -#include #include #include #include #include #include -#include -#include #pragma region Update @@ -948,3 +943,21 @@ DEFINE_HOOK(0x4485DB, BuildingClass_SetOwningHouse_SyncLinkedOwner, 0x6) GET(BuildingClass*, pThis, ESI); return BuildingTypeExt::ExtMap.Find(pThis->Type)->BuildingRadioLink_SyncOwner.Get(RulesExt::Global()->BuildingRadioLink_SyncOwner) ? 0 : SkipGameCode; } + +#pragma region PrefiringMark + +DEFINE_HOOK(0x440042, BuildingClass_UpdateDelayedFiring_PrefiringMark1, 0x9) +{ + GET(BuildingClass*, pThis, ESI); + BuildingExt::ExtMap.Find(pThis)->IsFiringNow = (int)pThis->PrismStage && pThis->DelayBeforeFiring <= 1; + return 0; +} + +DEFINE_HOOK(0x4400F9, BuildingClass_UpdateDelayedFiring_PrefiringMar2, 0x7) +{ + GET(BuildingClass*, pThis, ESI); + BuildingExt::ExtMap.Find(pThis)->IsFiringNow = false; + return 0; +} + +#pragma endregion diff --git a/src/Ext/BuildingType/Body.cpp b/src/Ext/BuildingType/Body.cpp index f5c195f924..e02bb8a231 100644 --- a/src/Ext/BuildingType/Body.cpp +++ b/src/Ext/BuildingType/Body.cpp @@ -1,7 +1,6 @@ #include "Body.h" #include -#include #include BuildingTypeExt::ExtContainer BuildingTypeExt::ExtMap; diff --git a/src/Ext/BuildingType/Body.h b/src/Ext/BuildingType/Body.h index 2ec79724d1..a10911eb7e 100644 --- a/src/Ext/BuildingType/Body.h +++ b/src/Ext/BuildingType/Body.h @@ -1,9 +1,4 @@ #pragma once -#include -#include -#include - -#include #include #include diff --git a/src/Ext/BuildingType/Hooks.Placing.cpp b/src/Ext/BuildingType/Hooks.Placing.cpp index a8d08eafb2..581738cb99 100644 --- a/src/Ext/BuildingType/Hooks.Placing.cpp +++ b/src/Ext/BuildingType/Hooks.Placing.cpp @@ -1,8 +1,6 @@ #include "Body.h" -#include - -#include "Ext/Rules/Body.h" +#include // AIConstructionYard Hook #1 -> sub_740810 - Check number of construction yard before deploy. DEFINE_HOOK(0x740A11, UnitClass_Mission_Guard_AIAutoDeployMCV, 0x6) diff --git a/src/Ext/BuildingType/Hooks.Upgrade.cpp b/src/Ext/BuildingType/Hooks.Upgrade.cpp index d09626aad9..e4dcdc61b3 100644 --- a/src/Ext/BuildingType/Hooks.Upgrade.cpp +++ b/src/Ext/BuildingType/Hooks.Upgrade.cpp @@ -1,11 +1,6 @@ -#include -#include -#include -#include -#include #include "Body.h" -#include -#include + +#include #include bool BuildingTypeExt::CanUpgrade(BuildingClass* pBuilding, BuildingTypeClass* pUpgradeType, HouseClass* pUpgradeOwner) diff --git a/src/Ext/BuildingType/Hooks.cpp b/src/Ext/BuildingType/Hooks.cpp index d47fda7159..b082c5ef85 100644 --- a/src/Ext/BuildingType/Hooks.cpp +++ b/src/Ext/BuildingType/Hooks.cpp @@ -1,11 +1,7 @@ #include "Body.h" -#include #include -#include -#include - DEFINE_HOOK(0x460285, BuildingTypeClass_LoadFromINI_Muzzle, 0x6) { enum { Skip = 0x460388, Read = 0x460299 }; diff --git a/src/Ext/Bullet/Body.cpp b/src/Ext/Bullet/Body.cpp index c5c7a3e989..6571a5b149 100644 --- a/src/Ext/Bullet/Body.cpp +++ b/src/Ext/Bullet/Body.cpp @@ -1,16 +1,11 @@ #include "Body.h" #include -#include #include -#include #include -#include #include #include -#include -#include -#include +#include BulletExt::ExtContainer BulletExt::ExtMap; diff --git a/src/Ext/Bullet/Body.h b/src/Ext/Bullet/Body.h index 5927470f6c..6d2c1b428b 100644 --- a/src/Ext/Bullet/Body.h +++ b/src/Ext/Bullet/Body.h @@ -3,11 +3,7 @@ #include #include -#include -#include -#include #include -#include "Trajectories/PhobosTrajectory.h" class BulletExt { diff --git a/src/Ext/Bullet/Hooks.DetonateLogics.cpp b/src/Ext/Bullet/Hooks.DetonateLogics.cpp index ac07a6e057..ca22c62392 100644 --- a/src/Ext/Bullet/Hooks.DetonateLogics.cpp +++ b/src/Ext/Bullet/Hooks.DetonateLogics.cpp @@ -1,18 +1,11 @@ #include "Body.h" -#include #include #include -#include #include -#include #include #include -#include -#include -#include - DEFINE_HOOK(0x4690D4, BulletClass_Logics_NewChecks, 0x6) { enum { SkipShaking = 0x469130, GoToExtras = 0x469AA4 }; @@ -78,8 +71,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 +105,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 +113,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 +121,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 +129,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/Bullet/Hooks.Obstacles.cpp b/src/Ext/Bullet/Hooks.Obstacles.cpp index 3a568e12fa..fcc01d4e3d 100644 --- a/src/Ext/Bullet/Hooks.Obstacles.cpp +++ b/src/Ext/Bullet/Hooks.Obstacles.cpp @@ -1,8 +1,6 @@ #include "Body.h" #include -#include -#include // Ares reimplements the bullet obstacle logic so need to get creative to add any new functionality for that in Phobos. // Not named PhobosTrajectoryHelper to avoid confusion with actual custom trajectory logic. diff --git a/src/Ext/Bullet/Hooks.cpp b/src/Ext/Bullet/Hooks.cpp index ad67265d4f..df78ad4eb6 100644 --- a/src/Ext/Bullet/Hooks.cpp +++ b/src/Ext/Bullet/Hooks.cpp @@ -1,13 +1,7 @@ #include "Body.h" #include #include -#include -#include #include -#include -#include - -#include // has everything inited except SpawnNextAnim at this point DEFINE_HOOK(0x466556, BulletClass_Init, 0x6) diff --git a/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp b/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp index 27f979d4f1..7b713c8431 100644 --- a/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/BombardTrajectory.cpp @@ -1,8 +1,5 @@ #include "BombardTrajectory.h" -#include "Memory.h" -#include -#include #include #include diff --git a/src/Ext/Bullet/Trajectories/ParabolaTrajectory.cpp b/src/Ext/Bullet/Trajectories/ParabolaTrajectory.cpp index 100da59b9b..28b7c17827 100644 --- a/src/Ext/Bullet/Trajectories/ParabolaTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/ParabolaTrajectory.cpp @@ -1,10 +1,6 @@ #include "ParabolaTrajectory.h" -#include -#include - #include -#include #include std::unique_ptr ParabolaTrajectoryType::CreateInstance() const diff --git a/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp b/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp index 2ec47db210..794de60dbc 100644 --- a/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/PhobosTrajectory.cpp @@ -1,14 +1,9 @@ -#include -#include -#include - -#include -#include - #include "StraightTrajectory.h" #include "BombardTrajectory.h" #include "ParabolaTrajectory.h" +#include + TrajectoryTypePointer::TrajectoryTypePointer(TrajectoryFlag flag) { switch (flag) diff --git a/src/Ext/Bullet/Trajectories/PhobosTrajectory.h b/src/Ext/Bullet/Trajectories/PhobosTrajectory.h index e92617bed9..2ce55bcb5a 100644 --- a/src/Ext/Bullet/Trajectories/PhobosTrajectory.h +++ b/src/Ext/Bullet/Trajectories/PhobosTrajectory.h @@ -1,9 +1,6 @@ #pragma once #include -#include - -#include enum class TrajectoryFlag : int { diff --git a/src/Ext/Bullet/Trajectories/SampleTrajectory.cpp b/src/Ext/Bullet/Trajectories/SampleTrajectory.cpp index cd3a3e480d..b2ed5778c6 100644 --- a/src/Ext/Bullet/Trajectories/SampleTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/SampleTrajectory.cpp @@ -1,7 +1,5 @@ #include "SampleTrajectory.h" -#include - // Create std::unique_ptr SampleTrajectoryType::CreateInstance() const { diff --git a/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp b/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp index 20e488e05e..7818e0c991 100644 --- a/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp +++ b/src/Ext/Bullet/Trajectories/StraightTrajectory.cpp @@ -1,7 +1,5 @@ #include "StraightTrajectory.h" -#include -#include #include #include diff --git a/src/Ext/BulletType/Body.h b/src/Ext/BulletType/Body.h index e85909e894..754cc44766 100644 --- a/src/Ext/BulletType/Body.h +++ b/src/Ext/BulletType/Body.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include #include diff --git a/src/Ext/CaptureManager/Body.cpp b/src/Ext/CaptureManager/Body.cpp index dfc0014aa4..d22e08a0d0 100644 --- a/src/Ext/CaptureManager/Body.cpp +++ b/src/Ext/CaptureManager/Body.cpp @@ -1,23 +1,112 @@ #include "Body.h" #include +#include + +int CaptureManagerExt::GetControlledTotalSize(CaptureManagerClass* pManager) +{ + int totalSize = 0; + + for (const auto pNode : pManager->ControlNodes) + { + if (const auto pTechno = pNode->Unit) + totalSize += TechnoExt::ExtMap.Find(pTechno)->TypeExtData->MindControlSize; + } + + return totalSize; +} + +struct DummyExtHere +{ + char _[0x9C]; + bool DriverKilled; +}; + +struct DummyTypeExtHere +{ + char _[0x131]; + bool Vet_PsionicsImmune; + bool __[0x6]; + bool Elite_PsionicsImmune; +}; bool CaptureManagerExt::CanCapture(CaptureManagerClass* pManager, TechnoClass* pTarget) { - if (pManager->MaxControlNodes == 1) - return pManager->CanCapture(pTarget); + // target exists and doesn't belong to capturing player + if (!pTarget) + return false; + + if (pManager->MaxControlNodes <= 0) + return false; - const auto pTechnoTypeExt = TechnoExt::ExtMap.Find(pManager->Owner)->TypeExtData; - if (pTechnoTypeExt->MultiMindControl_ReleaseVictim) + const auto pOwner = pManager->Owner; + + if (pTarget->Owner == pOwner->Owner) + return false; + + const auto pTargetType = pTarget->GetTechnoType(); + + // generally not capturable + if (pTargetType->ImmuneToPsionics) + return false; + + if (AresHelper::CanUseAres) { - // I hate Ares' completely rewritten things - secsome - pManager->MaxControlNodes += 1; - const bool result = pManager->CanCapture(pTarget); - pManager->MaxControlNodes -= 1; - return result; + const auto pTargetTypeExt_Ares = reinterpret_cast(pTargetType->align_2FC); + + switch (pTarget->Veterancy.GetRemainingLevel()) + { + case Rank::Elite: + if (pTargetTypeExt_Ares->Elite_PsionicsImmune) + return false; + + case Rank::Veteran: + if (pTargetTypeExt_Ares->Vet_PsionicsImmune) + return false; + + default: + break; + } } - return pManager->CanCapture(pTarget); + // disallow capturing bunkered units + if (pTarget->BunkerLinkedItem && pTarget->WhatAmI() == AbstractType::Unit) + return false; + + if (pTarget->IsMindControlled() || pTarget->MindControlledByHouse) + return false; + + // free slot? (move on if infinite or single slot which will be freed if used) + if (!pManager->InfiniteMindControl && pManager->MaxControlNodes != 1) + { + const auto pOwnerTypeExt = TechnoExt::ExtMap.Find(pOwner)->TypeExtData; + + if (!pOwnerTypeExt->MindControl_IgnoreSize) + { + const int totalSize = CaptureManagerExt::GetControlledTotalSize(pManager); + const int available = pOwnerTypeExt->MultiMindControl_ReleaseVictim ? pManager->MaxControlNodes : pManager->MaxControlNodes - totalSize; + + if (TechnoTypeExt::ExtMap.Find(pTargetType)->MindControlSize > available) + return false; + } + else + { + if (pManager->ControlNodes.Count >= pManager->MaxControlNodes && !pOwnerTypeExt->MultiMindControl_ReleaseVictim) + return false; + } + } + + // currently disallowed + const auto mission = pTarget->CurrentMission; + + if (pTarget->IsIronCurtained() || mission == Mission::Selling || mission == Mission::Construction) + return false; + + // driver killed. has no mind. + if (AresHelper::CanUseAres && reinterpret_cast(*(uintptr_t*)((char*)pTarget + 0x154))->DriverKilled) + return false; + + return true; } bool CaptureManagerExt::FreeUnit(CaptureManagerClass* pManager, TechnoClass* pTarget, bool silent) @@ -68,7 +157,7 @@ bool CaptureManagerExt::FreeUnit(CaptureManagerClass* pManager, TechnoClass* pTa } bool CaptureManagerExt::CaptureUnit(CaptureManagerClass* pManager, TechnoClass* pTarget, - bool bRemoveFirst, AnimTypeClass* pControlledAnimType, bool silent, int threatDelay) + bool removeFirst, AnimTypeClass* pControlledAnimType, bool silent, int threatDelay) { if (CaptureManagerExt::CanCapture(pManager, pTarget)) { @@ -78,10 +167,26 @@ bool CaptureManagerExt::CaptureUnit(CaptureManagerClass* pManager, TechnoClass* if (!pManager->InfiniteMindControl) { if (pManager->MaxControlNodes == 1 && pManager->ControlNodes.Count == 1) + { CaptureManagerExt::FreeUnit(pManager, pManager->ControlNodes[0]->Unit); - else if (pManager->ControlNodes.Count == pManager->MaxControlNodes) - if (bRemoveFirst) - CaptureManagerExt::FreeUnit(pManager, pManager->ControlNodes[0]->Unit); + } + else if (pManager->ControlNodes.Count > 0 && removeFirst) + { + const auto pOwnerTypeExt = TechnoTypeExt::ExtMap.Find(pManager->Owner->GetTechnoType()); + + if (pOwnerTypeExt->MindControl_IgnoreSize) + { + if (pManager->ControlNodes.Count == pManager->MaxControlNodes) + CaptureManagerExt::FreeUnit(pManager, pManager->ControlNodes[0]->Unit); + } + else + { + const auto pTargetTypeExt = TechnoTypeExt::ExtMap.Find(pTarget->GetTechnoType()); + + while (pManager->ControlNodes.Count && pTargetTypeExt->MindControlSize > pManager->MaxControlNodes - CaptureManagerExt::GetControlledTotalSize(pManager)) + CaptureManagerExt::FreeUnit(pManager, pManager->ControlNodes[0]->Unit); + } + } } auto const pControlNode = GameCreate(); diff --git a/src/Ext/CaptureManager/Body.h b/src/Ext/CaptureManager/Body.h index 2d9a782cff..483e43e96b 100644 --- a/src/Ext/CaptureManager/Body.h +++ b/src/Ext/CaptureManager/Body.h @@ -1,20 +1,17 @@ #pragma once -#include #include -#include #include -#include -#include - -#include +#include class CaptureManagerExt { public: + static int GetControlledTotalSize(CaptureManagerClass* pManager); + static bool CanCapture(CaptureManagerClass* pManager, TechnoClass* pTarget); static bool FreeUnit(CaptureManagerClass* pManager, TechnoClass* pTarget, bool silent = false); - static bool CaptureUnit(CaptureManagerClass* pManager, TechnoClass* pTarget, bool bRemoveFirst, + static bool CaptureUnit(CaptureManagerClass* pManager, TechnoClass* pTarget, bool removeFirst, AnimTypeClass* pControlledAnimType = RulesClass::Instance->ControlledAnimationType, bool silent = false, int threatDelay = 0); static bool CaptureUnit(CaptureManagerClass* pManager, AbstractClass* pTechno, AnimTypeClass* pControlledAnimType = RulesClass::Instance->ControlledAnimationType, int threatDelay = 0); diff --git a/src/Ext/CaptureManager/Hooks.cpp b/src/Ext/CaptureManager/Hooks.cpp index ebf35f5e04..bcd59daf6e 100644 --- a/src/Ext/CaptureManager/Hooks.cpp +++ b/src/Ext/CaptureManager/Hooks.cpp @@ -1,9 +1,6 @@ #include "Body.h" -#include #include -#include -#include DEFINE_HOOK(0x471D40, CaptureManagerClass_CaptureUnit, 0x7) { @@ -25,14 +22,44 @@ DEFINE_HOOK(0x471FF0, CaptureManagerClass_FreeUnit, 0x8) return 0x472006; } -DEFINE_HOOK(0x6FCB34, TechnoClass_CanFire_CanCapture, 0x6) +DEFINE_HOOK(0x471C90, CaptureManagerClass_CanCapture, 0x6) { - GET(TechnoClass*, pThis, ESI); - GET(TechnoClass*, pTarget, EBP); + GET(CaptureManagerClass*, pThis, ECX); + GET_STACK(TechnoClass*, pTarget, 0x4); + + R->AL(CaptureManagerExt::CanCapture(pThis, pTarget)); + + return 0x471D39; +} + +static int __fastcall _GetControlledCount(CaptureManagerClass* pThis) +{ + const auto pOwnerTypeExt = TechnoExt::ExtMap.Find(pThis->Owner)->TypeExtData; + + if (!pOwnerTypeExt->MindControl_IgnoreSize) + return CaptureManagerExt::GetControlledTotalSize(pThis); + + return pThis->ControlNodes.Count; +} +DEFINE_FUNCTION_JUMP(LJMP, 0x4722D0, _GetControlledCount) - R->AL(CaptureManagerExt::CanCapture(pThis->CaptureManager, pTarget)); +DEFINE_HOOK(0x4726C7, CaptureManagerClass_IsOverloading_ControlledCount, 0x6) +{ + enum { ContinueCheck = 0x4726D1, ReturnFalse = 0x4726E4 }; + + GET(CaptureManagerClass*, pThis, ECX); + + return pThis->GetControlledCount() > pThis->MaxControlNodes ? ContinueCheck : ReturnFalse; +} + +DEFINE_HOOK(0x4722AA, CaptureManagerClass_CannotControlAnyMore_ControlledCount, 0x6) +{ + enum { SkipGameCode = 0x4722B5 }; + + GET(CaptureManagerClass*, pThis, ECX); - return 0x6FCB40; + R->AL(pThis->GetControlledCount() >= pThis->MaxControlNodes); + return SkipGameCode; } DEFINE_HOOK(0x519F71, InfantryClass_UpdatePosition_BeforeBuildingChangeHouse, 0x6) @@ -107,7 +134,7 @@ static void __fastcall CaptureManagerClass_Overload_AI(CaptureManagerClass* pThi return; int nCurIdx = 0; - int const nNodeCount = pThis->ControlNodes.Count; + int const nNodeCount = pThis->GetControlledCount(); for (int i = 0; i < (int)(OverloadCount.size()); ++i) { diff --git a/src/Ext/Cell/Body.cpp b/src/Ext/Cell/Body.cpp index 64612cf6b1..f5c5c3eda8 100644 --- a/src/Ext/Cell/Body.cpp +++ b/src/Ext/Cell/Body.cpp @@ -1,9 +1,5 @@ #include "Body.h" -#include - -#include - CellExt::ExtContainer CellExt::ExtMap; // ============================= diff --git a/src/Ext/Cell/Body.h b/src/Ext/Cell/Body.h index 49692be63f..5947c207e3 100644 --- a/src/Ext/Cell/Body.h +++ b/src/Ext/Cell/Body.h @@ -1,10 +1,8 @@ #pragma once #include -#include #include -#include -#include +#include class CellExt { diff --git a/src/Ext/EBolt/Body.h b/src/Ext/EBolt/Body.h index ea48eb941d..51cf0cf0d0 100644 --- a/src/Ext/EBolt/Body.h +++ b/src/Ext/EBolt/Body.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include #include diff --git a/src/Ext/EBolt/Hooks.cpp b/src/Ext/EBolt/Hooks.cpp index 1607a990c6..2b7b40b52f 100644 --- a/src/Ext/EBolt/Hooks.cpp +++ b/src/Ext/EBolt/Hooks.cpp @@ -1,11 +1,7 @@ #include "Body.h" -#include #include #include -#include -#include -#include namespace BoltTemp { diff --git a/src/Ext/House/Body.cpp b/src/Ext/House/Body.cpp index b1f8e95ca9..bcd85f3cf2 100644 --- a/src/Ext/House/Body.cpp +++ b/src/Ext/House/Body.cpp @@ -1,11 +1,8 @@ #include "Body.h" #include -#include #include -#include - //Static init HouseExt::ExtContainer HouseExt::ExtMap; @@ -685,6 +682,9 @@ void HouseExt::ExtData::Serialize(T& Stm) .Process(this->ForceEnemyIndex) .Process(this->ForceOnlyTargetHouseEnemy) .Process(this->ForceOnlyTargetHouseEnemyMode) + .Process(this->TeamDelay) + .Process(this->FreeRadar) + .Process(this->ForceRadar) ; } diff --git a/src/Ext/House/Body.h b/src/Ext/House/Body.h index 7042542922..a005b611c3 100644 --- a/src/Ext/House/Body.h +++ b/src/Ext/House/Body.h @@ -1,14 +1,9 @@ #pragma once #include -#include #include #include -#include - -#include - class HouseExt { public: @@ -68,6 +63,9 @@ class HouseExt std::vector SuperExts; int ForceEnemyIndex; + int TeamDelay; + bool FreeRadar; + bool ForceRadar; ExtData(HouseClass* OwnerObject) : Extension(OwnerObject) , PowerPlantEnhancers {} @@ -99,6 +97,9 @@ class HouseExt , ForceEnemyIndex(-1) , ForceOnlyTargetHouseEnemy { false } , ForceOnlyTargetHouseEnemyMode { -1 } + , TeamDelay(-1) + , FreeRadar(false) + , ForceRadar(false) { } bool OwnsLimboDeliveredBuilding(BuildingClass* pBuilding) const; diff --git a/src/Ext/House/Hooks.AINavalProduction.cpp b/src/Ext/House/Hooks.AINavalProduction.cpp index e43f2fa7e6..52a5b72bb5 100644 --- a/src/Ext/House/Hooks.AINavalProduction.cpp +++ b/src/Ext/House/Hooks.AINavalProduction.cpp @@ -1,7 +1,6 @@ #include "Body.h" -#include -#include +#include // AI Naval queue bugfix hooks diff --git a/src/Ext/House/Hooks.UnitFromFactory.cpp b/src/Ext/House/Hooks.UnitFromFactory.cpp index e741e8b153..b776706e2e 100644 --- a/src/Ext/House/Hooks.UnitFromFactory.cpp +++ b/src/Ext/House/Hooks.UnitFromFactory.cpp @@ -1,10 +1,6 @@ #include #include -#include -#include -#include -#include DEFINE_HOOK(0x4FB63A, HouseClass_UnitFromFactory_DisablingEVAUnitReady, 0xF) { diff --git a/src/Ext/House/Hooks.cpp b/src/Ext/House/Hooks.cpp index 2152239bd1..86f08f3fa3 100644 --- a/src/Ext/House/Hooks.cpp +++ b/src/Ext/House/Hooks.cpp @@ -2,9 +2,7 @@ #include #include -#include "Ext/Techno/Body.h" -#include "Ext/Building/Body.h" -#include +#include DEFINE_HOOK(0x508C30, HouseClass_UpdatePower_UpdateCounter, 0x5) { @@ -128,13 +126,12 @@ DEFINE_HOOK(0x4FD1CD, HouseClass_RecalcCenter_LimboDelivery, 0x6) GET(BuildingClass* const, pBuilding, ESI); - if (!MapClass::Instance.CoordinatesLegal(pBuilding->GetMapCoords())) - return R->Origin() == 0x4FD1CD ? SkipBuilding1 : SkipBuilding2; - - auto const pExt = RecalcCenterTemp::pExtData; - - if (pExt && pExt->OwnsLimboDeliveredBuilding(pBuilding)) + if (!MapClass::Instance.CoordinatesLegal(pBuilding->GetMapCoords()) + || (RecalcCenterTemp::pExtData && RecalcCenterTemp::pExtData->OwnsLimboDeliveredBuilding(pBuilding)) + || TechnoTypeExt::ExtMap.Find(pBuilding->Type)->IgnoreForBaseCenter) + { return R->Origin() == 0x4FD1CD ? SkipBuilding1 : SkipBuilding2; + } return 0; } @@ -145,7 +142,7 @@ DEFINE_HOOK(0x4AC534, DisplayClass_ComputeStartPosition_IllegalCoords, 0x6) GET(TechnoClass* const, pTechno, ECX); - if (!MapClass::Instance.CoordinatesLegal(pTechno->GetMapCoords())) + if (!MapClass::Instance.CoordinatesLegal(pTechno->GetMapCoords()) || TechnoExt::ExtMap.Find(pTechno)->TypeExtData->IgnoreForBaseCenter) return SkipTechno; return 0; @@ -483,3 +480,70 @@ DEFINE_HOOK(0x4FD8F7, HouseClass_UpdateAI_OnLastLegs, 0x10) return ret; } + +DEFINE_HOOK(0x4F8ACC, HouseClass_Update_ResetTeamDelay, 0x6) +{ + enum { ResetTeamDelay = 0x4F8AD5 }; + + GET(HouseClass*, pThis, ESI); + + const int teamDelay = HouseExt::ExtMap.Find(pThis)->TeamDelay; + + if (teamDelay >= 0) + { + R->ECX(teamDelay); + return ResetTeamDelay; + } + + return 0; +} + +DEFINE_HOOK(0x508E17, HouseClass_UpdateRadar_FreeRadar, 0x8) +{ + enum { ForceRadar = 0x508F2F, Continue = 0x508E4A }; + + GET(HouseClass*, pThis, ECX); + + auto const pExt = HouseExt::ExtMap.Find(pThis); + const bool freeRadar = pExt->FreeRadar; + + if (pExt->ForceRadar) + { + R->Stack(STACK_OFFSET(0x1C, -0xC), freeRadar); + return ForceRadar; + } + else if (pThis->PowerBlackoutTimer.InProgress()) + { + R->Stack(STACK_OFFSET(0x1C, -0xC), false); + return ForceRadar; + } + else if (freeRadar) + { + R->Stack(STACK_OFFSET(0x1C, -0xC), true); + return ForceRadar; + } + + R->Stack(STACK_OFFSET(0x1C, -0xC), false); + return Continue; +} + +// WW's code set anger on every houses, even on the allies. +DEFINE_HOOK(0x4FD616, HouseClass_UpdateAI_DontAngerOnAlly, 0x9) +{ + enum { SkipCurrentHouse = 0x4FD6FE }; + + GET(HouseClass*, pThis, EBX); + GET(HouseClass*, pTargetHouse, ESI); + + return pThis->IsAlliedWith(pTargetHouse) ? SkipCurrentHouse : 0; +} + +// WW calculates the distance from pThis to pThis ... +DEFINE_HOOK(0x4FD635, HouseClass_UpdateAI_DistCalcFix, 0x5) +{ + enum { SkipGameCode = 0x4FD657 }; + GET(HouseClass*, pTargetHouse, ESI); + auto baseMapCrd = pTargetHouse->BaseCenter == CellStruct::Empty ? pTargetHouse->BaseSpawnCell : pTargetHouse->BaseCenter; + R->EAX(*(int*)&baseMapCrd); + return SkipGameCode; +} diff --git a/src/Ext/Infantry/Hooks.Firing.cpp b/src/Ext/Infantry/Hooks.Firing.cpp index 39d7c442d9..d11e7b3fa1 100644 --- a/src/Ext/Infantry/Hooks.Firing.cpp +++ b/src/Ext/Infantry/Hooks.Firing.cpp @@ -1,6 +1,3 @@ -#include -#include - #include #include diff --git a/src/Ext/Infantry/Hooks.cpp b/src/Ext/Infantry/Hooks.cpp index a02e32a70e..668855d8c3 100644 --- a/src/Ext/Infantry/Hooks.cpp +++ b/src/Ext/Infantry/Hooks.cpp @@ -1,13 +1,8 @@ -#include - -#include -#include -#include -#include - #include #include +#include + DEFINE_HOOK(0x51B2BD, InfantryClass_UpdateTarget_IsControlledByHuman, 0x6) { GET(InfantryClass*, pThis, ESI); diff --git a/src/Ext/OverlayType/Body.cpp b/src/Ext/OverlayType/Body.cpp index 7916065a88..568f54e84e 100644 --- a/src/Ext/OverlayType/Body.cpp +++ b/src/Ext/OverlayType/Body.cpp @@ -1,10 +1,5 @@ #include "Body.h" -#include -#include - -#include - OverlayTypeExt::ExtContainer OverlayTypeExt::ExtMap; // ============================= diff --git a/src/Ext/OverlayType/Body.h b/src/Ext/OverlayType/Body.h index 3c96aaebfa..1acdffce48 100644 --- a/src/Ext/OverlayType/Body.h +++ b/src/Ext/OverlayType/Body.h @@ -1,10 +1,8 @@ #pragma once #include -#include #include #include -#include class OverlayTypeExt { diff --git a/src/Ext/OverlayType/Hooks.cpp b/src/Ext/OverlayType/Hooks.cpp index 9839e90975..029ef78bde 100644 --- a/src/Ext/OverlayType/Hooks.cpp +++ b/src/Ext/OverlayType/Hooks.cpp @@ -1,7 +1,5 @@ #include "Body.h" -#include - DEFINE_HOOK(0x47F71D, CellClass_DrawOverlay_ZAdjust, 0x5) { GET(const int, zAdjust, EDI); diff --git a/src/Ext/ParticleSystemType/Body.h b/src/Ext/ParticleSystemType/Body.h index 9bdfd467e9..b613a3c5bf 100644 --- a/src/Ext/ParticleSystemType/Body.h +++ b/src/Ext/ParticleSystemType/Body.h @@ -1,11 +1,8 @@ #pragma once #include -#include #include #include -#include -#include class ParticleSystemTypeExt { diff --git a/src/Ext/ParticleType/Body.h b/src/Ext/ParticleType/Body.h index 91f24b4298..fe2c2d283f 100644 --- a/src/Ext/ParticleType/Body.h +++ b/src/Ext/ParticleType/Body.h @@ -2,10 +2,8 @@ #include -#include #include #include -#include class ParticleTypeExt { diff --git a/src/Ext/ParticleType/Hooks.cpp b/src/Ext/ParticleType/Hooks.cpp index 030a483ef6..8877735b13 100644 --- a/src/Ext/ParticleType/Hooks.cpp +++ b/src/Ext/ParticleType/Hooks.cpp @@ -1,7 +1,5 @@ #include "Body.h" -#include - DEFINE_HOOK(0x62BE30, ParticleClass_Gas_AI_DriftSpeed, 0x5) { enum { ContinueAI = 0x62BE60 }; diff --git a/src/Ext/RadSite/Body.cpp b/src/Ext/RadSite/Body.cpp index 1cb80538ea..2841b62646 100644 --- a/src/Ext/RadSite/Body.cpp +++ b/src/Ext/RadSite/Body.cpp @@ -1,9 +1,9 @@ #include "Body.h" -#include #include #include #include +#include #include RadSiteExt::ExtContainer RadSiteExt::ExtMap; diff --git a/src/Ext/RadSite/Body.h b/src/Ext/RadSite/Body.h index 4d929e90c5..44f8d7525f 100644 --- a/src/Ext/RadSite/Body.h +++ b/src/Ext/RadSite/Body.h @@ -2,7 +2,6 @@ #include -#include #include #include diff --git a/src/Ext/RadSite/Hooks.cpp b/src/Ext/RadSite/Hooks.cpp index ba9d61f821..40cdc98cb9 100644 --- a/src/Ext/RadSite/Hooks.cpp +++ b/src/Ext/RadSite/Hooks.cpp @@ -1,19 +1,10 @@ #include "Body.h" -#include -#include -#include -#include -#include - -#include #include #include -#include +#include #include #include - -#include /* Custom Radiations Worked out from old uncommented Ares RadSite Hook , adding some more hook diff --git a/src/Ext/Rules/Body.cpp b/src/Ext/Rules/Body.cpp index baf4c6ae67..b373daa3fb 100644 --- a/src/Ext/Rules/Body.cpp +++ b/src/Ext/Rules/Body.cpp @@ -1,12 +1,6 @@ #include "Body.h" -#include -#include -#include -#include -#include #include -#include #include #include #include @@ -15,7 +9,6 @@ #include #include #include -#include std::unique_ptr RulesExt::Data = nullptr; @@ -344,6 +337,15 @@ void RulesExt::ExtData::LoadBeforeTypeData(RulesClass* pThis, CCINIClass* pINI) this->BuildingRadioLink_SyncOwner.Read(exINI, GameStrings::General, "BuildingRadioLink.SyncOwner"); + this->ExtraRange_TargetMoving.Read(exINI, GameStrings::General, "ExtraRange.TargetMoving"); + this->ExtraRange_TargetMoving_CloseRangeOnly.Read(exINI, GameStrings::General, "ExtraRange.TargetMoving.CloseRangeOnly"); + this->ExtraRange_FirerMoving.Read(exINI, GameStrings::General, "ExtraRange.FirerMoving"); + this->ExtraRange_Prefiring.Read(exINI, GameStrings::General, "ExtraRange.Prefiring"); + this->ExtraRange_Prefiring_IncludeBurst.Read(exINI, GameStrings::General, "ExtraRange.Prefiring.IncludeBurst"); + + this->AutoTarget_NoThreatBuildings.Read(exINI, GameStrings::General, "AutoTarget.NoThreatBuildings"); + this->AutoTargetAI_NoThreatBuildings.Read(exINI, GameStrings::General, "AutoTargetAI.NoThreatBuildings"); + // Section AITargetTypes int itemsCount = pINI->GetKeyCount("AITargetTypes"); for (int i = 0; i < itemsCount; ++i) @@ -623,6 +625,13 @@ void RulesExt::ExtData::Serialize(T& Stm) .Process(this->MergeBuildingDamage) .Process(this->BuildingRadioLink_SyncOwner) .Process(this->ApplyPerTargetEffectsOnDetonate) + .Process(this->ExtraRange_TargetMoving) + .Process(this->ExtraRange_TargetMoving_CloseRangeOnly) + .Process(this->ExtraRange_FirerMoving) + .Process(this->ExtraRange_Prefiring) + .Process(this->ExtraRange_Prefiring_IncludeBurst) + .Process(this->AutoTarget_NoThreatBuildings) + .Process(this->AutoTargetAI_NoThreatBuildings) ; } diff --git a/src/Ext/Rules/Body.h b/src/Ext/Rules/Body.h index b6ae66f080..008da33838 100644 --- a/src/Ext/Rules/Body.h +++ b/src/Ext/Rules/Body.h @@ -1,14 +1,8 @@ #pragma once -#include #include #include -#include -#include -#include #include -#include -#include class AnimTypeClass; class MouseCursor; @@ -290,9 +284,18 @@ class RulesExt Valueable SortCameoByName; Valueable BuildingRadioLink_SyncOwner; + + Valueable ExtraRange_TargetMoving; + Valueable ExtraRange_TargetMoving_CloseRangeOnly; + Valueable ExtraRange_FirerMoving; + Valueable ExtraRange_Prefiring; + Valueable ExtraRange_Prefiring_IncludeBurst; Valueable ApplyPerTargetEffectsOnDetonate; + Valueable AutoTarget_NoThreatBuildings; + Valueable AutoTargetAI_NoThreatBuildings; + ExtData(RulesClass* OwnerObject) : Extension(OwnerObject) , Storage_TiberiumIndex { -1 } , HarvesterDumpAmount { 0.0f } @@ -524,6 +527,15 @@ class RulesExt , BuildingRadioLink_SyncOwner { true } , ApplyPerTargetEffectsOnDetonate { true } + + , ExtraRange_TargetMoving { Leptons(0) } + , ExtraRange_TargetMoving_CloseRangeOnly { false } + , ExtraRange_FirerMoving { Leptons(0) } + , ExtraRange_Prefiring { Leptons(0) } + , ExtraRange_Prefiring_IncludeBurst { true } + + , AutoTarget_NoThreatBuildings { false } + , AutoTargetAI_NoThreatBuildings { true } { } virtual ~ExtData() = default; diff --git a/src/Ext/Rules/Hooks.Image.cpp b/src/Ext/Rules/Hooks.Image.cpp index 6212a9bfca..e78a55b176 100644 --- a/src/Ext/Rules/Hooks.Image.cpp +++ b/src/Ext/Rules/Hooks.Image.cpp @@ -1,14 +1,4 @@ -#include - -#include -#include -#include - -#include -#include -#include -#include -#include +#include "Body.h" static void ReplaceImageInfantry(InfantryTypeClass* pType) { diff --git a/src/Ext/SWType/Body.cpp b/src/Ext/SWType/Body.cpp index f230746dc7..c23b601b90 100644 --- a/src/Ext/SWType/Body.cpp +++ b/src/Ext/SWType/Body.cpp @@ -2,8 +2,6 @@ #include "NewSWType/NewSWType.h" -#include - SWTypeExt::ExtContainer SWTypeExt::ExtMap; void SWTypeExt::ExtData::Initialize() @@ -55,7 +53,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 +141,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..447a8c56d1 100644 --- a/src/Ext/SWType/Body.h +++ b/src/Ext/SWType/Body.h @@ -1,13 +1,7 @@ #pragma once -#include -#include -#include - -#include +#include #include #include - -#include #include class SWTypeExt @@ -60,7 +54,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 +141,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..ae7be77c36 100644 --- a/src/Ext/SWType/FireSuperWeapon.cpp +++ b/src/Ext/SWType/FireSuperWeapon.cpp @@ -1,17 +1,8 @@ #include "Body.h" -#include -#include -#include -#include -#include - -#include -#include - -#include "Ext/House/Body.h" -#include "Ext/WarheadType/Body.h" -#include "Ext/WeaponType/Body.h" +#include +#include +#include #include // ============= New SuperWeapon Effects================ @@ -206,7 +197,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/SWType/Hooks.cpp b/src/Ext/SWType/Hooks.cpp index 023073853e..d25a14592e 100644 --- a/src/Ext/SWType/Hooks.cpp +++ b/src/Ext/SWType/Hooks.cpp @@ -1,9 +1,5 @@ #include "Body.h" -#include - -#include - //this hook just for phobos NewSWType DEFINE_HOOK(0x6CC390, SuperClass_Launch, 0x6) { diff --git a/src/Ext/SWType/NewSWType/NewSWType.h b/src/Ext/SWType/NewSWType/NewSWType.h index e44204bf74..84709aa8ce 100644 --- a/src/Ext/SWType/NewSWType/NewSWType.h +++ b/src/Ext/SWType/NewSWType/NewSWType.h @@ -1,7 +1,5 @@ #pragma once #include -#include -#include class NewSWType { diff --git a/src/Ext/Scenario/Body.cpp b/src/Ext/Scenario/Body.cpp index a2135dfa35..ccc6b8b75b 100644 --- a/src/Ext/Scenario/Body.cpp +++ b/src/Ext/Scenario/Body.cpp @@ -1,8 +1,9 @@ #include "Body.h" -#include #include +#include + std::unique_ptr ScenarioExt::Data = nullptr; bool ScenarioExt::CellParsed = false; @@ -90,6 +91,11 @@ void ScenarioExt::Remove(ScenarioClass* pThis) void ScenarioExt::LoadFromINIFile(ScenarioClass* pThis, CCINIClass* pINI) { Data->LoadFromINI(pINI); + + for (auto const pHouse : HouseClass::Array) + { + HouseExt::ExtMap.Find(pHouse)->FreeRadar = ScenarioClass::Instance->FreeRadar; + } } void ScenarioExt::ExtData::UpdateAutoDeathObjectsInLimbo() diff --git a/src/Ext/Scenario/Body.h b/src/Ext/Scenario/Body.h index 534c6c0022..bb15c90df1 100644 --- a/src/Ext/Scenario/Body.h +++ b/src/Ext/Scenario/Body.h @@ -1,16 +1,12 @@ #pragma once #include -#include -#include #include #include #include -#include - struct ExtendedVariable { char Name[0x100]; diff --git a/src/Ext/Scenario/Hooks.Variables.cpp b/src/Ext/Scenario/Hooks.Variables.cpp index 7b2e20e46c..3fa43e9825 100644 --- a/src/Ext/Scenario/Hooks.Variables.cpp +++ b/src/Ext/Scenario/Hooks.Variables.cpp @@ -1,9 +1,5 @@ -#include - #include "Body.h" -#include - DEFINE_HOOK(0x689910, ScenarioClass_SetLocalToByID, 0x5) { GET_STACK(const int, nIndex, 0x4); diff --git a/src/Ext/Scenario/Hooks.Waypoints.cpp b/src/Ext/Scenario/Hooks.Waypoints.cpp index 61a2231a31..4c6d2145be 100644 --- a/src/Ext/Scenario/Hooks.Waypoints.cpp +++ b/src/Ext/Scenario/Hooks.Waypoints.cpp @@ -1,9 +1,5 @@ -#include - #include "Body.h" -#include - DEFINE_HOOK(0x68BCC0, ScenarioClass_Get_Waypoint_Location, 0xB) { GET_STACK(CellStruct*, pCell, 0x4); diff --git a/src/Ext/Scenario/Hooks.cpp b/src/Ext/Scenario/Hooks.cpp index ab96369e04..4b370ff968 100644 --- a/src/Ext/Scenario/Hooks.cpp +++ b/src/Ext/Scenario/Hooks.cpp @@ -1,6 +1,4 @@ -#include -#include -#include +#include "Body.h" DEFINE_HOOK(0x6870D7, ReadScenario_MissionINI, 0x5) { diff --git a/src/Ext/Script/Body.cpp b/src/Ext/Script/Body.cpp index e44973f5c1..c34d624dfd 100644 --- a/src/Ext/Script/Body.cpp +++ b/src/Ext/Script/Body.cpp @@ -1,7 +1,5 @@ #include "Body.h" -#include -#include #include ScriptExt::ExtContainer ScriptExt::ExtMap; diff --git a/src/Ext/Script/Body.h b/src/Ext/Script/Body.h index aca40872c8..a40f048268 100644 --- a/src/Ext/Script/Body.h +++ b/src/Ext/Script/Body.h @@ -2,21 +2,9 @@ #include #include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include #include +#include #include -#include enum class PhobosScripts : unsigned int { diff --git a/src/Ext/Script/Hooks.cpp b/src/Ext/Script/Hooks.cpp index 312952fbea..880757c914 100644 --- a/src/Ext/Script/Hooks.cpp +++ b/src/Ext/Script/Hooks.cpp @@ -1,10 +1,5 @@ #include "Body.h" -#include - -#include -#include - DEFINE_HOOK(0x6E9443, TeamClass_AI, 0x8) { GET(TeamClass*, pTeam, ESI); diff --git a/src/Ext/Script/Mission.Attack.cpp b/src/Ext/Script/Mission.Attack.cpp index 2246e97db4..454d36a169 100644 --- a/src/Ext/Script/Mission.Attack.cpp +++ b/src/Ext/Script/Mission.Attack.cpp @@ -2,7 +2,6 @@ #include #include -#include #include // Contains ScriptExt::Mission_Attack and its helper functions. @@ -1379,7 +1378,7 @@ void ScriptExt::Mission_Attack_List(TeamClass* pTeam, int calcThreatMode, bool r if (RulesExt::Global()->AITargetTypesLists.size() > 0 && RulesExt::Global()->AITargetTypesLists[attackAITargetType].size() > 0) { - ScriptExt::Mission_Attack(pTeam, repeatAction, calcThreatMode, attackAITargetType, -1); + ScriptExt::Mission_Attack(pTeam, calcThreatMode, repeatAction, attackAITargetType, -1); } } @@ -1453,7 +1452,7 @@ void ScriptExt::Mission_Attack_List1Random(TeamClass* pTeam, int calcThreatMode, if (selected) pTeamData->IdxSelectedObjectFromAIList = idxSelectedObject; - ScriptExt::Mission_Attack(pTeam, repeatAction, calcThreatMode, attackAITargetType, idxSelectedObject); + ScriptExt::Mission_Attack(pTeam, calcThreatMode, repeatAction, attackAITargetType, idxSelectedObject); } // This action finished diff --git a/src/Ext/Side/Body.cpp b/src/Ext/Side/Body.cpp index e59f347000..b0eabbd0ff 100644 --- a/src/Ext/Side/Body.cpp +++ b/src/Ext/Side/Body.cpp @@ -1,7 +1,5 @@ #include "Body.h" -#include - SideExt::ExtContainer SideExt::ExtMap; void SideExt::ExtData::Initialize() diff --git a/src/Ext/Side/Body.h b/src/Ext/Side/Body.h index bc0d72a748..27a868cfa0 100644 --- a/src/Ext/Side/Body.h +++ b/src/Ext/Side/Body.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include #include diff --git a/src/Ext/Side/Hooks.SidebarGDIPositions.cpp b/src/Ext/Side/Hooks.SidebarGDIPositions.cpp index 5b46ce2ce2..c8e65ad0c8 100644 --- a/src/Ext/Side/Hooks.SidebarGDIPositions.cpp +++ b/src/Ext/Side/Hooks.SidebarGDIPositions.cpp @@ -1,4 +1,3 @@ -#include #include "Body.h" bool isNODSidebar = false; diff --git a/src/Ext/Side/Hooks.cpp b/src/Ext/Side/Hooks.cpp index ede854f79f..c49735a83b 100644 --- a/src/Ext/Side/Hooks.cpp +++ b/src/Ext/Side/Hooks.cpp @@ -1,5 +1,4 @@ #include "Body.h" -#include #include // Ingame music switch when defeated diff --git a/src/Ext/Sidebar/Body.cpp b/src/Ext/Sidebar/Body.cpp index 4d4c83cec3..57ee601f0a 100644 --- a/src/Ext/Sidebar/Body.cpp +++ b/src/Ext/Sidebar/Body.cpp @@ -2,8 +2,6 @@ #include "SWSidebar/SWSidebarClass.h" #include -#include -#include std::unique_ptr SidebarExt::Data = nullptr; diff --git a/src/Ext/Sidebar/Body.h b/src/Ext/Sidebar/Body.h index c5df31106f..86644822b5 100644 --- a/src/Ext/Sidebar/Body.h +++ b/src/Ext/Sidebar/Body.h @@ -2,12 +2,9 @@ #include -#include #include #include -#include - class SidebarExt { public: diff --git a/src/Ext/Sidebar/Hooks.cpp b/src/Ext/Sidebar/Hooks.cpp index 3d5546a7b0..cf19a93322 100644 --- a/src/Ext/Sidebar/Hooks.cpp +++ b/src/Ext/Sidebar/Hooks.cpp @@ -1,10 +1,6 @@ #include "Body.h" #include "SWSidebar/SWSidebarClass.h" -#include -#include -#include - #include #include diff --git a/src/Ext/Sidebar/SWSidebar/SWButtonClass.cpp b/src/Ext/Sidebar/SWSidebar/SWButtonClass.cpp index 5794f9f18a..143844cccd 100644 --- a/src/Ext/Sidebar/SWSidebar/SWButtonClass.cpp +++ b/src/Ext/Sidebar/SWSidebar/SWButtonClass.cpp @@ -2,10 +2,7 @@ #include "SWSidebarClass.h" #include #include -#include -#include -#include #include SWButtonClass::SWButtonClass(int superIdx, int x, int y, int width, int height) diff --git a/src/Ext/Sidebar/SWSidebar/SWButtonClass.h b/src/Ext/Sidebar/SWSidebar/SWButtonClass.h index ec4561a076..5703f9f464 100644 --- a/src/Ext/Sidebar/SWSidebar/SWButtonClass.h +++ b/src/Ext/Sidebar/SWSidebar/SWButtonClass.h @@ -1,6 +1,8 @@ #pragma once #include +#include + class SWButtonClass : public GadgetClass { public: diff --git a/src/Ext/Sidebar/SWSidebar/SWColumnClass.cpp b/src/Ext/Sidebar/SWSidebar/SWColumnClass.cpp index 1bc283351e..8bfff873f5 100644 --- a/src/Ext/Sidebar/SWSidebar/SWColumnClass.cpp +++ b/src/Ext/Sidebar/SWSidebar/SWColumnClass.cpp @@ -1,9 +1,6 @@ #include "SWColumnClass.h" #include "SWSidebarClass.h" -#include -#include - SWColumnClass::SWColumnClass(int maxButtons, int x, int y, int width, int height) : GadgetClass(x, y, width, height, static_cast(0), false) , MaxButtons(maxButtons) diff --git a/src/Ext/Sidebar/SWSidebar/SWColumnClass.h b/src/Ext/Sidebar/SWSidebar/SWColumnClass.h index 3ffed8f1fc..5ca8dd36b4 100644 --- a/src/Ext/Sidebar/SWSidebar/SWColumnClass.h +++ b/src/Ext/Sidebar/SWSidebar/SWColumnClass.h @@ -1,6 +1,7 @@ #pragma once #include "SWButtonClass.h" -#include +#include +#include #include diff --git a/src/Ext/Sidebar/SWSidebar/SWSidebarClass.cpp b/src/Ext/Sidebar/SWSidebar/SWSidebarClass.cpp index 8046451d08..5d4eec40f8 100644 --- a/src/Ext/Sidebar/SWSidebar/SWSidebarClass.cpp +++ b/src/Ext/Sidebar/SWSidebar/SWSidebarClass.cpp @@ -1,9 +1,6 @@ #include "SWSidebarClass.h" -#include #include -#include -#include SWSidebarClass SWSidebarClass::Instance; CommandClass* SWSidebarClass::Commands[10]; diff --git a/src/Ext/Sidebar/SWSidebar/SWSidebarClass.h b/src/Ext/Sidebar/SWSidebar/SWSidebarClass.h index 5cfaf415a9..82b78fe797 100644 --- a/src/Ext/Sidebar/SWSidebar/SWSidebarClass.h +++ b/src/Ext/Sidebar/SWSidebar/SWSidebarClass.h @@ -1,8 +1,6 @@ #pragma once -#include "SWButtonClass.h" #include "SWColumnClass.h" #include "ToggleSWButtonClass.h" -#include #include class SWSidebarClass diff --git a/src/Ext/Sidebar/SWSidebar/ToggleSWButtonClass.cpp b/src/Ext/Sidebar/SWSidebar/ToggleSWButtonClass.cpp index b8df65eb87..7daa55e539 100644 --- a/src/Ext/Sidebar/SWSidebar/ToggleSWButtonClass.cpp +++ b/src/Ext/Sidebar/SWSidebar/ToggleSWButtonClass.cpp @@ -1,7 +1,6 @@ #include "ToggleSWButtonClass.h" #include "SWSidebarClass.h" #include -#include #include diff --git a/src/Ext/TAction/Body.cpp b/src/Ext/TAction/Body.cpp index 9284bebb66..2ffde8cd0d 100644 --- a/src/Ext/TAction/Body.cpp +++ b/src/Ext/TAction/Body.cpp @@ -2,16 +2,10 @@ #include +#include #include -#include - #include - -#include - -#include #include -#include //Static init TActionExt::ExtContainer TActionExt::ExtMap; @@ -71,6 +65,8 @@ bool TActionExt::Execute(TActionClass* pThis, HouseClass* pHouse, ObjectClass* p case PhobosTriggerAction::ToggleMCVRedeploy: return TActionExt::ToggleMCVRedeploy(pThis, pHouse, pObject, pTrigger, location); + case PhobosTriggerAction::UndeployToWaypoint: + return TActionExt::UndeployToWaypoint(pThis, pHouse, pObject, pTrigger, location); case PhobosTriggerAction::EditAngerNode: return TActionExt::EditAngerNode(pThis, pHouse, pObject, pTrigger, location); @@ -78,6 +74,10 @@ bool TActionExt::Execute(TActionClass* pThis, HouseClass* pHouse, ObjectClass* p return TActionExt::ClearAngerNode(pThis, pHouse, pObject, pTrigger, location); case PhobosTriggerAction::SetForceEnemy: return TActionExt::SetForceEnemy(pThis, pHouse, pObject, pTrigger, location); + case PhobosTriggerAction::SetFreeRadar: + return TActionExt::SetFreeRadar(pThis, pHouse, pObject, pTrigger, location); + case PhobosTriggerAction::SetTeamDelay: + return TActionExt::SetTeamDelay(pThis, pHouse, pObject, pTrigger, location); case PhobosTriggerAction::CreateBannerLocal: return TActionExt::CreateBannerLocal(pThis, pHouse, pObject, pTrigger, location); @@ -384,6 +384,99 @@ bool TActionExt::ToggleMCVRedeploy(TActionClass* pThis, HouseClass* pHouse, Obje return true; } +bool TActionExt::UndeployToWaypoint(TActionClass* const pThis, HouseClass* const pHouse, ObjectClass* const pObject, TriggerClass* const pTrigger, const CellStruct& location) +{ + const auto& nCell = ScenarioExt::Global()->Waypoints[pThis->Waypoint]; + CellClass* const pCell = MapClass::Instance.TryGetCellAt(nCell); + + if (!pCell) + return true; + + HouseClass* vHouse = nullptr; + const int houseIndex = pThis->Param3; + + if (houseIndex >= 0) + { + vHouse = HouseClass::Index_IsMP(houseIndex) + ? HouseClass::FindByIndex(houseIndex) : HouseClass::FindByCountryIndex(houseIndex); + } + + if (!vHouse) + return true; + + const char* buildingName = pThis->TechnoID; + bool allBuilding = false; + BuildingTypeClass* pBuildingType = nullptr; + + if (!strcmp(buildingName, "")) + { + allBuilding = true; + } + else + { + pBuildingType = BuildingTypeClass::Find(buildingName); + } + + if (!allBuilding && !pBuildingType) + return true; + + const auto& limboDelivereds = HouseExt::ExtMap.Find(vHouse)->OwnedLimboDeliveredBuildings; + const bool existLimboBuilding = !limboDelivereds.empty(); + const auto vectorBegin = limboDelivereds.begin(); + const auto vectorEnd = limboDelivereds.end(); + + // Thanks to chaserli for the relevant code! + // There should be a more perfect way to do this, but I don't know how. + auto canUndeploy = [&](BuildingClass* const pBuilding) + { + auto const pType = pBuilding->Type; + + if (!pType->UndeploysInto + || pBuilding->Owner != vHouse + || (!allBuilding && pType != pBuildingType) + || pBuilding->CurrentMission == Mission::Selling + || !pBuilding->IsAlive || pBuilding->Health <= 0 || pBuilding->InLimbo) + { + return false; + } + + // verify whether the building's source is LimboDelivery. + if (existLimboBuilding + && std::find(vectorBegin, vectorEnd, pBuilding) != vectorEnd) + { + return false; + } + + if (pType->ConstructionYard) + { + // Conyards can't undeploy if MCVRedeploy=no + if (!GameModeOptionsClass::Instance.MCVRedeploy) + return false; + // or MindControlledBy YURIX (why? for balance?) + if (!RulesExt::Global()->AllowDeployControlledMCV && pBuilding->MindControlledBy) + return false; + } + + return true; + }; + + for (const auto pBuilding : BuildingClass::Array) + { + if (!canUndeploy(pBuilding)) + continue; + + // Why does having this allow it to undeploy? + // Why don't vehicles move when waypoints are placed off the map? + + const bool old = std::exchange(VocClass::VoicesEnabled, false); + pBuilding->SetArchiveTarget(pCell); + pBuilding->Sell(true); + VocClass::VoicesEnabled = old; + } + + return true; +} + bool TActionExt::EditAngerNode(TActionClass* pThis, HouseClass* pHouse, ObjectClass* pObject, TriggerClass* pTrigger, CellStruct const& location) { if (pHouse->AngerNodes.Count <= 0) @@ -519,6 +612,59 @@ bool TActionExt::SetForceEnemy(TActionClass* pThis, HouseClass* pHouse, ObjectCl return true; } +bool TActionExt::SetFreeRadar(TActionClass* const pThis, HouseClass* const pHouse, ObjectClass* const pObject, TriggerClass* const pTrigger, const CellStruct& location) +{ + if (pHouse->IsControlledByHuman()) + { + auto const pHouseExt = HouseExt::ExtMap.Find(pHouse); + + switch (pThis->Param3) + { + case 1: + pHouseExt->FreeRadar = true; + pHouseExt->ForceRadar = false; + break; + case 2: + pHouseExt->FreeRadar = true; + pHouseExt->ForceRadar = true; + break; + case 3: + pHouseExt->FreeRadar = false; + pHouseExt->ForceRadar = true; + break; + default: + pHouseExt->FreeRadar = false; + pHouseExt->ForceRadar = false; + break; + } + + pHouse->RecheckRadar = true; + } + + return true; +} + +bool TActionExt::SetTeamDelay(TActionClass* const pThis, HouseClass* const pHouse, ObjectClass* const pObject, TriggerClass* const pTrigger, const CellStruct& location) +{ + const int value = pThis->Param3; + const int timer = value < 0 ? RulesClass::Instance->TeamDelays.Items[static_cast(pHouse->AIDifficulty)] : value; + HouseExt::ExtMap.Find(pHouse)->TeamDelay = value; + + auto& Timer = pHouse->TeamDelayTimer; + const int time = std::min(Timer.GetTimeLeft(), timer); + + if (Timer.StartTime == -1 && Timer.TimeLeft != 0 && time > 0) + { + Timer.TimeLeft = time; + } + else if (Timer.InProgress()) + { + Timer.Start(time); + } + + return true; +} + static void CreateOrReplaceBanner(TActionClass* pTAction, bool isGlobal) { const auto pBannerType = BannerTypeClass::Find(pTAction->Text); diff --git a/src/Ext/TAction/Body.h b/src/Ext/TAction/Body.h index 72bf78126f..c8d6e17680 100644 --- a/src/Ext/TAction/Body.h +++ b/src/Ext/TAction/Body.h @@ -1,9 +1,7 @@ #pragma once #include -#include - -#include +#include #include @@ -19,10 +17,13 @@ enum class PhobosTriggerAction : unsigned int RunSuperWeaponAtLocation = 505, RunSuperWeaponAtWaypoint = 506, ToggleMCVRedeploy = 510, + UndeployToWaypoint = 511, EditAngerNode = 606, ClearAngerNode = 607, SetForceEnemy = 608, + SetFreeRadar = 609, + SetTeamDelay = 610, CreateBannerLocal = 800, // any banner w/ local variable CreateBannerGlobal = 801, // any banner w/ global variable @@ -71,10 +72,13 @@ class TActionExt ACTION_FUNC(RunSuperWeaponAtLocation); ACTION_FUNC(RunSuperWeaponAtWaypoint); ACTION_FUNC(ToggleMCVRedeploy); + ACTION_FUNC(UndeployToWaypoint); ACTION_FUNC(EditAngerNode); ACTION_FUNC(ClearAngerNode); ACTION_FUNC(SetForceEnemy); + ACTION_FUNC(SetFreeRadar); + ACTION_FUNC(SetTeamDelay); ACTION_FUNC(CreateBannerLocal); ACTION_FUNC(CreateBannerGlobal); diff --git a/src/Ext/TAction/Hooks.cpp b/src/Ext/TAction/Hooks.cpp index d8ed3ad2e7..a1176555d7 100644 --- a/src/Ext/TAction/Hooks.cpp +++ b/src/Ext/TAction/Hooks.cpp @@ -3,18 +3,6 @@ #include #include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - DEFINE_HOOK(0x6DD8B0, TActionClass_Execute, 0x6) { GET(TActionClass*, pThis, ECX); @@ -131,3 +119,6 @@ DEFINE_HOOK(0x6E2368, TActionClass_PlayAnimAt, 0x7) return SkipGameCode; } + +// Enable InGameMovie TAction in non-campaign mode. +DEFINE_JUMP(LJMP, 0x5BF3B0, 0x5BF3BD); diff --git a/src/Ext/TEvent/Body.cpp b/src/Ext/TEvent/Body.cpp index 20071e9f67..f1b15bfbfe 100644 --- a/src/Ext/TEvent/Body.cpp +++ b/src/Ext/TEvent/Body.cpp @@ -1,13 +1,7 @@ #include "Body.h" -#include -#include #include -#include -#include -#include -#include -#include +#include //Static init TEventExt::ExtContainer TEventExt::ExtMap; diff --git a/src/Ext/TEvent/Body.h b/src/Ext/TEvent/Body.h index 553494e697..478dfa3c55 100644 --- a/src/Ext/TEvent/Body.h +++ b/src/Ext/TEvent/Body.h @@ -1,10 +1,7 @@ #pragma once #include -#include -#include - -#include +#include #include diff --git a/src/Ext/TEvent/Hooks.cpp b/src/Ext/TEvent/Hooks.cpp index eef6aeb8aa..c98bb7e2c7 100644 --- a/src/Ext/TEvent/Hooks.cpp +++ b/src/Ext/TEvent/Hooks.cpp @@ -1,15 +1,11 @@ #include "Body.h" -#include - #include #include #include #include #include -#include - DEFINE_HOOK(0x71E940, TEventClass_Execute, 0x5) { GET(TEventClass*, pThis, ECX); diff --git a/src/Ext/Team/Body.h b/src/Ext/Team/Body.h index 71a531d4b8..373b559c5a 100644 --- a/src/Ext/Team/Body.h +++ b/src/Ext/Team/Body.h @@ -1,11 +1,8 @@ #pragma once #include -#include -#include #include #include -#include class TeamExt { diff --git a/src/Ext/Team/Hooks.cpp b/src/Ext/Team/Hooks.cpp index 64688d2f17..adee3b7416 100644 --- a/src/Ext/Team/Hooks.cpp +++ b/src/Ext/Team/Hooks.cpp @@ -1,5 +1,6 @@ #include "Body.h" #include +#include // Bugfix: TAction 7,80,107. DEFINE_HOOK(0x65DF67, TeamTypeClass_CreateMembers_LoadOntoTransport, 0x6) @@ -53,3 +54,95 @@ DEFINE_HOOK(0x65DF67, TeamTypeClass_CreateMembers_LoadOntoTransport, 0x6) return 0x65DF8D; } + +DEFINE_HOOK(0x6EA6BE, TeamClass_CanAddMember_Consideration, 0x6) +{ + enum { SkipGameCode = 0x6EA6F2 }; + + GET(TeamClass*, pTeam, EBP); + GET(FootClass*, pFoot, ESI); + GET(int*, idx, EBX); + const auto pFootTypeExt = TechnoExt::ExtMap.Find(pFoot)->TypeExtData; + const auto pFootType = pFootTypeExt->OwnerObject(); + const auto pTaskForce = pTeam->Type->TaskForce; + + do + { + const auto pType = pTaskForce->Entries[*idx].Type; + + if (pType == pFootType || pFootTypeExt->TeamMember_ConsideredAs.Contains(pType)) + break; + + *idx = *idx + 1; + } + while (pTaskForce->CountEntries > *idx); + + return SkipGameCode; +} + +DEFINE_HOOK(0x6EA8E7, TeamClass_LiberateMember_Consideration, 0x5) +{ + enum { SkipGameCode = 0x6EA91B }; + + GET(TeamClass*, pTeam, EDI); + GET(FootClass*, pMember, EBP); + int idx = 0; + const auto pMemberTypeExt = TechnoExt::ExtMap.Find(pMember)->TypeExtData; + const auto pMemberType = pMemberTypeExt->OwnerObject(); + const auto pTaskForce = pTeam->Type->TaskForce; + + do + { + const auto pSearchType = pTaskForce->Entries[idx].Type; + + if (pSearchType == pMemberType || pMemberTypeExt->TeamMember_ConsideredAs.Contains(pSearchType)) + break; + + ++idx; + } + while (pTaskForce->CountEntries > idx); + + R->Stack(STACK_OFFSET(0x14, 0x8), idx); + return SkipGameCode; +} + +DEFINE_HOOK(0x6EAD73, TeamClass_RecruitMember_Consideration, 0x7) +{ + enum { ContinueCheck = 0x6EAD8F, SkipThisMember = 0x6EADB3 }; + + GET(TeamClass*, pTeam, ECX); + GET(UnitClass*, pMember, ESI); + GET_STACK(const int, idx, STACK_OFFSET(0x3C, 0x4)); + const auto pMemberType = pMember->Type; + const auto pTaskForce = pTeam->Type->TaskForce; + const auto pSearchType = pTaskForce->Entries[idx].Type; + + return pSearchType == pMemberType || TechnoTypeExt::ExtMap.Find(pMemberType)->TeamMember_ConsideredAs.Contains(pSearchType) ? ContinueCheck : SkipThisMember; +} + +DEFINE_HOOK(0x6EF57F, TeamClass_GetTaskForceMissingMemberTypes_Consideration, 0x5) +{ + enum { ContinueIn = 0x6EF584, SkipThisMember = 0x6EF5A5 }; + + GET(int, idx, EAX); + + if (idx != -1) + return ContinueIn; + + GET(DynamicVectorClass*, vector, ESI); + GET(FootClass*, pMember, EDI); + const auto pMemberTypeExt = TechnoExt::ExtMap.Find(pMember)->TypeExtData; + + for (const auto pConsideType : pMemberTypeExt->TeamMember_ConsideredAs) + { + idx = vector->FindItemIndex(pConsideType); + + if (idx != -1) + { + R->EAX(idx); + return ContinueIn; + } + } + + return SkipThisMember; +} diff --git a/src/Ext/Techno/Body.Internal.cpp b/src/Ext/Techno/Body.Internal.cpp index bbc744a6b2..7251d5ae27 100644 --- a/src/Ext/Techno/Body.Internal.cpp +++ b/src/Ext/Techno/Body.Internal.cpp @@ -1,9 +1,5 @@ #include "Body.h" -#include - -#include - // Unsorted methods void TechnoExt::ExtData::InitializeLaserTrails() diff --git a/src/Ext/Techno/Body.Update.cpp b/src/Ext/Techno/Body.Update.cpp index 1be8e43495..24874e3729 100644 --- a/src/Ext/Techno/Body.Update.cpp +++ b/src/Ext/Techno/Body.Update.cpp @@ -1,22 +1,15 @@ // methods used in TechnoClass_AI hooks or anything similar #include "Body.h" -#include -#include -#include -#include -#include -#include #include #include -#include #include #include #include #include #include -#include +#include #include #include @@ -992,7 +985,7 @@ void TechnoExt::ExtData::UpdateTypeData(TechnoTypeClass* pCurrentType) } else if (pOldTypeExt->Convert_ResetMindControl) { - if (!infiniteCapture && pCaptureManager->ControlNodes.Count > maxCapture) + if (!infiniteCapture && pCaptureManager->GetControlledCount() > maxCapture) { // Remove excess nodes. for (int i = pCaptureManager->ControlNodes.Count - 1; i >= maxCapture; --i) @@ -1113,8 +1106,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 +1909,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/Body.Visuals.cpp b/src/Ext/Techno/Body.Visuals.cpp index b14c4b8337..3046619ada 100644 --- a/src/Ext/Techno/Body.Visuals.cpp +++ b/src/Ext/Techno/Body.Visuals.cpp @@ -1,14 +1,8 @@ #include "Body.h" -#include -#include -#include -#include -#include #include #include #include -#include void TechnoExt::DrawSelfHealPips(TechnoClass* pThis, Point2D* pLocation, RectangleStruct* pBounds) { @@ -540,7 +534,7 @@ void TechnoExt::GetValuesForDisplay(TechnoClass* pThis, TechnoTypeClass* pType, if (!pCaptureManager) return; - value = pCaptureManager->ControlNodes.Count; + value = pCaptureManager->GetControlledCount(); maxValue = pCaptureManager->MaxControlNodes; break; } diff --git a/src/Ext/Techno/Body.cpp b/src/Ext/Techno/Body.cpp index 8ddfcf20f1..26cddf886c 100644 --- a/src/Ext/Techno/Body.cpp +++ b/src/Ext/Techno/Body.cpp @@ -1,8 +1,5 @@ #include "Body.h" -#include -#include -#include #include #include @@ -876,6 +873,110 @@ bool TechnoExt::SimpleDeployerAllowedToDeploy(UnitClass* pThis, bool defaultValu return true; } +bool TechnoExt::EjectRandomly(FootClass* pEjectee, const CoordStruct& coords, int distance, bool select) +{ + std::vector usableCoords; + + for (int direction = 0; direction < 8; ++direction) + { + const CellStruct tmpCoords = Unsorted::AdjacentCell[direction]; + CoordStruct ejectCoords { coords.X + tmpCoords.X * distance, coords.Y + tmpCoords.Y * distance, coords.Z }; + const auto pCell = MapClass::Instance.TryGetCellAt(ejectCoords); + + if (!pCell) + continue; + + const auto occupied = pEjectee->IsCellOccupied(pCell, FacingType::None, -1, nullptr, true); + + if (occupied != Move::OK && occupied != Move::MovingBlock) + continue; + + if (pEjectee->WhatAmI() == InfantryClass::AbsID) + { + ejectCoords = pCell->FindInfantrySubposition(ejectCoords, false, false, false); + ejectCoords.Z = coords.Z; + } + else + { + ejectCoords = CellClass::Cell2Coord(pCell->MapCoords, coords.Z); + } + + usableCoords.emplace_back(ejectCoords); + } + + const int count = static_cast(usableCoords.size()); + + if (!count) + return false; + + return TechnoExt::EjectSurvivor(pEjectee, usableCoords[ScenarioClass::Instance->Random(0, count - 1)], select); +} + +bool TechnoExt::EjectSurvivor(FootClass* pSurvivor, CoordStruct coords, bool select) +{ + const auto pCell = MapClass::Instance.GetCellAt(coords); + + pSurvivor->OnBridge = pCell->ContainsBridge(); + + const int floorZ = pCell->GetCoordsWithBridge().Z; + const bool chuted = (coords.Z - floorZ > 2 * Unsorted::LevelHeight); + + if (chuted) + { + pSurvivor->Limbo(); + + ++Unsorted::ScenarioInit; + const bool result = pSurvivor->SpawnParachuted(coords); + --Unsorted::ScenarioInit; + + if (!result) + return false; + } + else + { + coords.Z = floorZ; + + ++Unsorted::ScenarioInit; + const bool result = pSurvivor->Unlimbo(coords, static_cast(ScenarioClass::Instance->Random(0, 7))); + --Unsorted::ScenarioInit; + + if (!result) + return false; + } + + if (const auto pTransporter = pSurvivor->Transporter) + { + if (pTransporter->GetTechnoType()->OpenTopped) + pTransporter->ExitedOpenTopped(pSurvivor); + + pSurvivor->Transporter = nullptr; + } + + pSurvivor->LastMapCoords = pCell->MapCoords; + + if (chuted) + { + const bool scat = pSurvivor->OnBridge; + const auto occupation = scat ? pCell->AltOccupationFlags : pCell->OccupationFlags; + + if (occupation & 0x1C) + pCell->ScatterContent(CoordStruct::Empty, true, true, scat); + } + else + { + pSurvivor->Scatter(CoordStruct::Empty, true, false); + pSurvivor->QueueMission(pSurvivor->Owner->IsControlledByHuman() ? Mission::Guard : Mission::Hunt, 0); + } + + pSurvivor->ShouldEnterOccupiable = false; + pSurvivor->ShouldGarrisonStructure = false; + + if (select) + pSurvivor->Select(); + + return true; +} + // ============================= // load / save diff --git a/src/Ext/Techno/Body.h b/src/Ext/Techno/Body.h index 1d234782ad..8f6b540c09 100644 --- a/src/Ext/Techno/Body.h +++ b/src/Ext/Techno/Body.h @@ -1,11 +1,8 @@ #pragma once -#include -#include -#include +#include #include #include -#include #include #include #include @@ -297,6 +294,9 @@ class TechnoExt static bool SimpleDeployerAllowedToDeploy(UnitClass* pThis, bool defaultValue, bool alwaysCheckLandTypes); static void ShowPromoteAnim(TechnoClass* pThis); + static bool EjectRandomly(FootClass* pEjectee, const CoordStruct& coords, int distance, bool select); + static bool EjectSurvivor(FootClass* pSurvivor, CoordStruct coords, bool select); + // WeaponHelpers.cpp static int PickWeaponIndex(TechnoClass* pThis, TechnoClass* pTargetTechno, AbstractClass* pTarget, int weaponIndexOne, int weaponIndexTwo, bool allowFallback = true, bool allowAAFallback = true); static void FireWeaponAtSelf(TechnoClass* pThis, WeaponTypeClass* pWeaponType); diff --git a/src/Ext/Techno/Hooks.Airstrike.cpp b/src/Ext/Techno/Hooks.Airstrike.cpp index d56887555c..38795d54c8 100644 --- a/src/Ext/Techno/Hooks.Airstrike.cpp +++ b/src/Ext/Techno/Hooks.Airstrike.cpp @@ -1,6 +1,4 @@ #include "Body.h" -#include -#include #include diff --git a/src/Ext/Techno/Hooks.Firing.cpp b/src/Ext/Techno/Hooks.Firing.cpp index 8bb16235db..da5c69dd7b 100644 --- a/src/Ext/Techno/Hooks.Firing.cpp +++ b/src/Ext/Techno/Hooks.Firing.cpp @@ -1,15 +1,10 @@ #include "Body.h" -#include -#include -#include - #include #include #include #include #include -#include #pragma region TechnoClass_SelectWeapon @@ -263,6 +258,28 @@ DEFINE_HOOK(0x6F3432, TechnoClass_WhatWeaponShouldIUse_Gattling, 0xA) return UseWeaponIndex; } +DEFINE_HOOK(0x6F3528, TechnoClass_WhatWeaponShouldIUse_IsLocomotor, 0x6) +{ + enum { ContinueAfter = 0x6F3558, Primary = 0x6F37AD, Secondary = 0x6F3549 }; + + GET(TechnoClass*, pTargetTechno, EBP); + + if (pTargetTechno && pTargetTechno->WhatAmI() == AbstractType::Building) + { + GET(WeaponTypeClass*, pPrimary, EBX); + + if (pPrimary->Warhead->IsLocomotor) + return Secondary; + + GET_STACK(WeaponTypeClass*, pSecondary, STACK_OFFSET(0x18, -0x8)); + + if (pSecondary->Warhead->IsLocomotor) + return Primary; + } + + return ContinueAfter; +} + DEFINE_HOOK(0x5218F3, InfantryClass_WhatWeaponShouldIUse_DeployFireWeapon, 0x6) { GET(InfantryClass*, pThis, ESI); @@ -481,6 +498,19 @@ DEFINE_HOOK(0x6FC749, TechnoClass_GetFireError_AntiUnderground, 0x5) return GoOtherChecks; } +DEFINE_HOOK(0x6FC7EB, TechnoClass_GetFireError_InterceptBullet, 0x7) +{ + enum { IgnoreAG = 0x6FC815, ContinueCheck = 0x6FC7F2 }; + + GET(AbstractClass*, pTarget, EBX); + + if (pTarget->WhatAmI() == AbstractType::Bullet) + return IgnoreAG; + + R->AL(pTarget->IsInAir()); + return ContinueCheck; +} + #pragma endregion #pragma region TechnoClass_Fire diff --git a/src/Ext/Techno/Hooks.Misc.cpp b/src/Ext/Techno/Hooks.Misc.cpp index 6e15973360..6ae2637716 100644 --- a/src/Ext/Techno/Hooks.Misc.cpp +++ b/src/Ext/Techno/Hooks.Misc.cpp @@ -1,7 +1,6 @@ #include "Body.h" #include -#include #include #include diff --git a/src/Ext/Techno/Hooks.Pips.cpp b/src/Ext/Techno/Hooks.Pips.cpp index b15f9f64bd..075299f870 100644 --- a/src/Ext/Techno/Hooks.Pips.cpp +++ b/src/Ext/Techno/Hooks.Pips.cpp @@ -1,7 +1,3 @@ -#include -#include -#include -#include #include "Body.h" DEFINE_HOOK_AGAIN(0x6D9134, TacticalClass_RenderLayers_DrawBefore, 0x5)// BuildingClass diff --git a/src/Ext/Techno/Hooks.ReceiveDamage.cpp b/src/Ext/Techno/Hooks.ReceiveDamage.cpp index 9c14e7c8d9..f15c6bb265 100644 --- a/src/Ext/Techno/Hooks.ReceiveDamage.cpp +++ b/src/Ext/Techno/Hooks.ReceiveDamage.cpp @@ -1,12 +1,9 @@ #include "Body.h" -#include -#include - +#include +#include #include #include -#include -#include namespace ReceiveDamageTemp { @@ -383,7 +380,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 +393,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..73c91eae39 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()); @@ -203,8 +203,10 @@ DEFINE_HOOK(0x6F85AB, TechnoClass_CanAutoTargetObject_AggressiveAttackMove, 0x6) GET(TechnoClass* const, pThis, EDI); - if (!pThis->Owner->IsControlledByHuman()) - return CanTarget; + // Now, it is possible to customize which types of national active attacks on non-threatening buildings, so this part has been commented out. + // The new judgment code is in TechnoClass_CanAutoTarget_AttackNoThreatBuildings of Hook.cpp. + // if (!pThis->Owner->IsControlledByHuman()) + // return CanTarget; if (!pThis->MegaMissionIsAttackMove()) return ContinueCheck; diff --git a/src/Ext/Techno/Hooks.Tint.cpp b/src/Ext/Techno/Hooks.Tint.cpp index 4aa401265a..32cd0ecaa5 100644 --- a/src/Ext/Techno/Hooks.Tint.cpp +++ b/src/Ext/Techno/Hooks.Tint.cpp @@ -1,7 +1,4 @@ -#include -#include #include -#include #include "Body.h" diff --git a/src/Ext/Techno/Hooks.Transport.cpp b/src/Ext/Techno/Hooks.Transport.cpp index c9001516da..8416ebf863 100644 --- a/src/Ext/Techno/Hooks.Transport.cpp +++ b/src/Ext/Techno/Hooks.Transport.cpp @@ -1,7 +1,6 @@ #include "Body.h" #include - #include #include diff --git a/src/Ext/Techno/Hooks.WeaponEffects.cpp b/src/Ext/Techno/Hooks.WeaponEffects.cpp index 3ba82f6232..6f5ead2daa 100644 --- a/src/Ext/Techno/Hooks.WeaponEffects.cpp +++ b/src/Ext/Techno/Hooks.WeaponEffects.cpp @@ -1,14 +1,7 @@ -#include -#include -#include -#include -#include -#include +#include "Body.h" #include -#include #include -#include // Contains hooks that fix weapon graphical effects like lasers, railguns, electric bolts, beams and waves not interacting // correctly with obstacles between firer and target, as well as railgun / railgun particles being cut off by elevation. diff --git a/src/Ext/Techno/Hooks.WeaponRange.cpp b/src/Ext/Techno/Hooks.WeaponRange.cpp index 0e0aeeab25..270a15bd79 100644 --- a/src/Ext/Techno/Hooks.WeaponRange.cpp +++ b/src/Ext/Techno/Hooks.WeaponRange.cpp @@ -1,8 +1,7 @@ #include "Body.h" -#include - #include +#include // Reimplements the game function with few changes / optimizations DEFINE_HOOK(0x7012C2, TechnoClass_WeaponRange, 0x8) @@ -51,20 +50,129 @@ DEFINE_HOOK(0x7012C2, TechnoClass_WeaponRange, 0x8) return ReturnResult; } +static bool IsChasing(TechnoClass* pThis, AbstractClass* pTarget) +{ + if ((pThis->AbstractFlags & AbstractFlags::Foot) == AbstractFlags::None) + return false; + + if (!pTarget) + return false; + + const auto pFootTarget = abstract_cast(pTarget); + + if (!pFootTarget || !pFootTarget->Locomotor.GetInterfacePtr()->Is_Really_Moving_Now()) + return false; + + return true; +} + +static bool IsMovingFire(TechnoClass* pThis) +{ + const auto pFoot = abstract_cast(pThis); + + if (!pFoot || !pFoot->Locomotor.GetInterfacePtr()->Is_Really_Moving_Now()) + return false; + + return true; +} + +static bool IsPrefiring(TechnoClass* pThis, WeaponTypeClass* pWeapon) +{ + const auto pTypeExt = WeaponTypeExt::ExtMap.Find(pWeapon); + const int currentBurst = pThis->CurrentBurstIndex % pWeapon->Burst; + + if (pTypeExt->ExtraRange_Prefiring_IncludeBurst.Get(RulesExt::Global()->ExtraRange_Prefiring_IncludeBurst) && currentBurst != 0) + return true; + + const auto pTechnoExt = TechnoExt::ExtMap.Find(pThis); + + if (pTechnoExt->DelayedFireTimer.InProgress()) + return true; + + switch (pThis->WhatAmI()) + { + case AbstractType::Unit: + { + const auto pUnit = static_cast(pThis); + int syncFrame = -1; + + if (currentBurst == 0) + syncFrame = pUnit->Type->FiringSyncFrame0; + else if (currentBurst == 1) + syncFrame = pUnit->Type->FiringSyncFrame1; + + if (syncFrame == -1) + return false; + + return pUnit->CurrentFiringFrame >= syncFrame; + } + case AbstractType::Aircraft: + { + const auto pAircraft = static_cast(pThis); + const auto status = (AirAttackStatus)pAircraft->MissionStatus; + return status == AirAttackStatus::FireAtTarget + || status == AirAttackStatus::FireAtTarget2 + || status == AirAttackStatus::FireAtTarget2_Strafe + || status == AirAttackStatus::FireAtTarget3_Strafe + || status == AirAttackStatus::FireAtTarget4_Strafe + || status == AirAttackStatus::FireAtTarget5_Strafe; + } + case AbstractType::Building: + { + const auto pBuilding = static_cast(pThis); + const auto pExt = BuildingExt::ExtMap.Find(pBuilding); + return pBuilding->DelayBeforeFiring || pExt->IsFiringNow; + } + case AbstractType::Infantry: + { + const auto pInfantry = static_cast(pThis); + return pInfantry->IsFiring; + } + default: + return false; + } +} + DEFINE_HOOK(0x6F7248, TechnoClass_InRange_WeaponRange, 0x6) { enum { SkipGameCode = 0x6F724E }; GET(TechnoClass*, pThis, ESI); GET(WeaponTypeClass*, pWeapon, EBX); + GET_BASE(AbstractClass*, pTarget, 0xC); int range = 0; - if (const auto keepRange = WeaponTypeExt::GetTechnoKeepRange(pWeapon, pThis, false)) + if (const int keepRange = WeaponTypeExt::GetTechnoKeepRange(pWeapon, pThis, false)) + { range = keepRange; + } else + { range = WeaponTypeExt::GetRangeWithModifiers(pWeapon, pThis); + if (range != -512) + { + const auto pExt = WeaponTypeExt::ExtMap.Find(pWeapon); + const auto prefiringExtraRange = pExt->ExtraRange_Prefiring.Get(RulesExt::Global()->ExtraRange_Prefiring); + + if (prefiringExtraRange && IsPrefiring(pThis, pWeapon)) + range += prefiringExtraRange; + + const auto targetMovingExtraRange = pExt->ExtraRange_TargetMoving.isset() + ? pExt->ExtraRange_TargetMoving.Get() : (!RulesExt::Global()->ExtraRange_TargetMoving_CloseRangeOnly || pThis->GetTechnoType()->CloseRange + ? RulesExt::Global()->ExtraRange_TargetMoving : Leptons(0)); + + if (targetMovingExtraRange && IsChasing(pThis, pTarget)) + range += targetMovingExtraRange; + + const auto firerMovingExtraRange = pExt->ExtraRange_FirerMoving.Get(RulesExt::Global()->ExtraRange_FirerMoving); + + if (firerMovingExtraRange && IsMovingFire(pThis)) + range += firerMovingExtraRange; + } + } + R->EDI(range); return SkipGameCode; diff --git a/src/Ext/Techno/Hooks.cpp b/src/Ext/Techno/Hooks.cpp index 25f7a90674..480c922963 100644 --- a/src/Ext/Techno/Hooks.cpp +++ b/src/Ext/Techno/Hooks.cpp @@ -1,20 +1,14 @@ #include "Body.h" -#include -#include #include #include -#include -#include #include #include #include #include -#include #include -#include -#include +#include #include #include #include @@ -1489,3 +1483,112 @@ DEFINE_HOOK(0x6F9398, TechnoClass_SelectAutoTarget_Scan_FallingDown, 0x9) } #pragma endregion + +DEFINE_HOOK(0x6FBFA3, TechnoClass_Select_SkipLimboDelivery, 0x6) +{ + enum { SkipSelect = 0x6FC029 }; + + GET(TechnoClass* const, pThis, ESI); + + if (auto const pBuilding = abstract_cast(pThis)) + { + const auto& limboDelivereds = HouseExt::ExtMap.Find(pBuilding->Owner)->OwnedLimboDeliveredBuildings; + const auto vectorEnd = limboDelivereds.end(); + + if (std::find(limboDelivereds.begin(), vectorEnd, pBuilding) != vectorEnd) + return SkipSelect; + } + + return 0; +} + +#pragma region AutoTargetExtension + +DEFINE_JUMP(LJMP, 0x700387, 0x7003BD) + +DEFINE_HOOK(0x700358, TechnoClass_MouseOverObject_AttackFriendlies, 0x6) +{ + enum { CanAttack = 0x700381, Continue = 0x700385 }; + + GET(TechnoClass*, pThis, ESI); + GET(WeaponTypeClass*, pWeapon, EBP); + GET_STACK(const bool, IvanBomb, STACK_OFFSET(0x1C, -0xC)); + + const auto pType = pThis->GetTechnoType(); + const auto pWeaponTypeExt = WeaponTypeExt::ExtMap.Find(pWeapon); + + if (pWeaponTypeExt->AttackFriendlies.Get(pType->AttackFriendlies) + || (pWeaponTypeExt->AttackCursorOnFriendlies.Get(pType->AttackCursorOnFriendlies) && !IvanBomb)) + { + return CanAttack; + } + + return Continue; +} + +DEFINE_HOOK_AGAIN(0x6F9CE9, TechnoClass_CheckAutoTarget_AttackFriendlies, 0xA) // TechnoClass::SelectAutoTarget +DEFINE_HOOK_AGAIN(0x6F9BAE, TechnoClass_CheckAutoTarget_AttackFriendlies, 0xA) +DEFINE_HOOK_AGAIN(0x6F9204, TechnoClass_CheckAutoTarget_AttackFriendlies, 0xA) +DEFINE_HOOK_AGAIN(0x6F8BBC, TechnoClass_CheckAutoTarget_AttackFriendlies, 0xA) // TechnoClass::TryAutoTargetObject +DEFINE_HOOK(0x6F8A92, TechnoClass_CheckAutoTarget_AttackFriendlies, 0xA) +{ + GET(TechnoClass*, pThis, ESI); + + const auto pTypeExt = TechnoExt::ExtMap.Find(pThis)->TypeExtData; + + R->CL(pThis->Veterancy.IsElite() ? pTypeExt->AttackFriendlies.Y : pTypeExt->AttackFriendlies.X); + return R->Origin() + 0x10; +} + +namespace CanAutoTargetTemp +{ + TechnoTypeExt::ExtData* TypeExtData = nullptr; + WeaponTypeExt::ExtData* WeaponExt = nullptr; +} + +DEFINE_HOOK(0x6F7E30, TechnoClass_CanAutoTarget_SetContent, 0x6) +{ + GET(TechnoClass*, pThis, EDI); + GET(WeaponTypeClass*, pWeapon, EBP); + + CanAutoTargetTemp::TypeExtData = TechnoExt::ExtMap.Find(pThis)->TypeExtData; + CanAutoTargetTemp::WeaponExt = WeaponTypeExt::ExtMap.TryFind(pWeapon); + + return 0; +} + +DEFINE_HOOK(0x6F7EF4, TechnoClass_CanAutoTarget_AttackFriendlies, 0xA) +{ + enum { SkipGameCode = 0x6F7F04 }; + + GET(TechnoClass*, pThis, EDI); + + bool attackFriendlies = pThis->GetTechnoType()->AttackFriendlies; + + if (const auto pWeaponExt = CanAutoTargetTemp::WeaponExt) + attackFriendlies = pWeaponExt->AttackFriendlies.Get(attackFriendlies); + + R->CL(attackFriendlies); + return SkipGameCode; +} + +DEFINE_HOOK(0x6F85CF, TechnoClass_CanAutoTarget_AttackNoThreatBuildings, 0xA) +{ + enum { CanAttack = 0x6F8604, Continue = 0x6F85D9 }; + + GET(TechnoClass*, pThis, EDI); + GET(BuildingClass*, pTarget, ESI); + + bool canAttack = pThis->Owner->IsControlledByHuman() ? RulesExt::Global()->AutoTarget_NoThreatBuildings : RulesExt::Global()->AutoTargetAI_NoThreatBuildings; + + if (const auto pWeaponExt = CanAutoTargetTemp::WeaponExt) + canAttack = pWeaponExt->AttackNoThreatBuildings.Get(canAttack); + + if (canAttack) + return CanAttack; + + R->EAX(pTarget->GetTurretWeapon()); + return Continue; +} + +#pragma endregion diff --git a/src/Ext/Techno/WeaponHelpers.cpp b/src/Ext/Techno/WeaponHelpers.cpp index 12e5a2a875..53eca0434f 100644 --- a/src/Ext/Techno/WeaponHelpers.cpp +++ b/src/Ext/Techno/WeaponHelpers.cpp @@ -1,10 +1,7 @@ #include "Body.h" -#include - #include #include -#include // Compares two weapons and returns index of which one is eligible to fire against current target (0 = first, 1 = second), or -1 if neither works. int TechnoExt::PickWeaponIndex(TechnoClass* pThis, TechnoClass* pTargetTechno, AbstractClass* pTarget, int weaponIndexOne, int weaponIndexTwo, bool allowFallback, bool allowAAFallback) @@ -235,16 +232,16 @@ 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) - && EnumFunctions::IsTechnoEligible(pThis, pWHExt->KillWeapon_Affects)))) + if (pWHExt->KillWeapon && (!pSource || (EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_AffectsHouse, pSource->Owner, pThis->Owner) + && EnumFunctions::IsTechnoEligible(pThis, pWHExt->KillWeapon_AffectsTarget)))) { if (!pTypeExt->SuppressKillWeapons || (hasFilters && !pTypeExt->SuppressKillWeapons_Types.Contains(pWHExt->KillWeapon))) WeaponTypeExt::DetonateAt(pWHExt->KillWeapon, pThis, pSource); } // KillWeapon.OnFirer must have a source - if (pWHExt->KillWeapon_OnFirer && pSource && EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_OnFirer_AffectsHouses, pSource->Owner, pThis->Owner) - && EnumFunctions::IsTechnoEligible(pThis, pWHExt->KillWeapon_OnFirer_Affects)) + if (pWHExt->KillWeapon_OnFirer && pSource && EnumFunctions::CanTargetHouse(pWHExt->KillWeapon_OnFirer_AffectsHouse, pSource->Owner, pThis->Owner) + && EnumFunctions::IsTechnoEligible(pThis, pWHExt->KillWeapon_OnFirer_AffectsTarget)) { if (!pTypeExt->SuppressKillWeapons || (hasFilters && !pTypeExt->SuppressKillWeapons_Types.Contains(pWHExt->KillWeapon_OnFirer))) WeaponTypeExt::DetonateAt(pWHExt->KillWeapon_OnFirer, pSource, pSource); @@ -262,7 +259,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 +282,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..88efd591ee 100644 --- a/src/Ext/TechnoType/Body.cpp +++ b/src/Ext/TechnoType/Body.cpp @@ -1,19 +1,14 @@ #include "Body.h" -#include -#include -#include #include -#include -#include #include #include #include #include +#include #include -#include #include TechnoTypeExt::ExtContainer TechnoTypeExt::ExtMap; @@ -443,37 +438,60 @@ void TechnoTypeExt::ExtData::UpdateAdditionalAttributes() const auto pThis = this->OwnerObject(); int count = 2; + const bool attackFriendlies = pThis->AttackFriendlies; + this->AttackFriendlies = { attackFriendlies ,attackFriendlies }; + if (this->MultiWeapon && (!pThis->IsGattling && (!pThis->HasMultipleTurrets() || !pThis->Gunner))) { count = pThis->WeaponCount; } - for (int index = 0; index < count; index++) + auto WeaponCheck = [&](WeaponTypeClass* const pWeapon, const bool isElite) { - const auto pWeapon = pThis->GetWeapon(index)->WeaponType; - auto pEliteWeapon = pThis->GetEliteWeapon(index)->WeaponType; + if (!pWeapon) + return; - if (!pEliteWeapon) - pEliteWeapon = pWeapon; + if (isElite) + { + if (pWeapon->Projectile) + this->ThreatTypes.Y |= pWeapon->AllowedThreats(); - if (pWeapon) + this->CombatDamages.Y += (pWeapon->Damage + pWeapon->AmbientDamage); + eliteNum++; + + if (!this->AttackFriendlies.Y + && WeaponTypeExt::ExtMap.Find(pWeapon)->AttackFriendlies.Get(false)) + { + this->AttackFriendlies.Y = true; + } + } + else { if (pWeapon->Projectile) this->ThreatTypes.X |= pWeapon->AllowedThreats(); this->CombatDamages.X += (pWeapon->Damage + pWeapon->AmbientDamage); num++; + + if (!this->AttackFriendlies.X + && WeaponTypeExt::ExtMap.Find(pWeapon)->AttackFriendlies.Get(false)) + { + this->AttackFriendlies.X = true; + } } + }; - if (pEliteWeapon) - { - if (pEliteWeapon->Projectile) - this->ThreatTypes.Y |= pEliteWeapon->AllowedThreats(); + for (int index = 0; index < count; index++) + { + const auto pWeapon = pThis->GetWeapon(index)->WeaponType; + auto pEliteWeapon = pThis->GetEliteWeapon(index)->WeaponType; - this->CombatDamages.Y += (pEliteWeapon->Damage + pEliteWeapon->AmbientDamage); - eliteNum++; - } + if (!pEliteWeapon) + pEliteWeapon = pWeapon; + + WeaponCheck(pWeapon, false); + WeaponCheck(pEliteWeapon, true); } if (num > 0) @@ -727,6 +745,8 @@ void TechnoTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->RadarJamAffect.Read(exINI, pSection, "RadarJamAffect"); this->RadarJamIgnore.Read(exINI, pSection, "RadarJamIgnore"); this->MindControlRangeLimit.Read(exINI, pSection, "MindControlRangeLimit"); + this->MindControl_IgnoreSize.Read(exINI, pSection, "MindControl.IgnoreSize"); + this->MindControlSize.Read(exINI, pSection, "MindControlSize"); this->MindControlLink_VisibleToHouse.Read(exINI, pSection, "MindControlLink.VisibleToHouse"); this->FactoryPlant_Multiplier.Read(exINI, pSection, "FactoryPlant.Multiplier"); @@ -750,6 +770,7 @@ void TechnoTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->ReloadInTransport.Read(exINI, pSection, "ReloadInTransport"); this->ForbidParallelAIQueues.Read(exINI, pSection, "ForbidParallelAIQueues"); + this->IgnoreForBaseCenter.Read(exINI, pSection, "IgnoreForBaseCenter"); this->LaserTargetColor.Read(exINI, pSection, "LaserTargetColor"); this->AirstrikeLineColor.Read(exINI, pSection, "AirstrikeLineColor"); @@ -839,8 +860,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 +1003,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"); @@ -1112,6 +1133,8 @@ void TechnoTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) Debug::Log("[Developer warning][%s] Ammo.AutoConvertMinimumAmount is greater than Ammo.AutoConvertMaximumAmount, resulting in no conversion.\n", pSection); this->InfantryAutoDeploy.Read(exINI, pSection, "InfantryAutoDeploy"); + + this->TeamMember_ConsideredAs.Read(exINI, pSection, "TeamMember.ConsideredAs"); // Ares 0.2 this->RadarJamRadius.Read(exINI, pSection, "RadarJamRadius"); @@ -1385,6 +1408,8 @@ void TechnoTypeExt::ExtData::Serialize(T& Stm) .Process(this->UIDescription) .Process(this->LowSelectionPriority) .Process(this->MindControlRangeLimit) + .Process(this->MindControl_IgnoreSize) + .Process(this->MindControlSize) .Process(this->MindControlLink_VisibleToHouse) .Process(this->FactoryPlant_Multiplier) @@ -1420,6 +1445,7 @@ void TechnoTypeExt::ExtData::Serialize(T& Stm) .Process(this->InitialStrength) .Process(this->ReloadInTransport) .Process(this->ForbidParallelAIQueues) + .Process(this->IgnoreForBaseCenter) .Process(this->TintColorAirstrike) .Process(this->LaserTargetColor) .Process(this->AirstrikeLineColor) @@ -1510,8 +1536,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 +1668,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) @@ -1785,7 +1811,11 @@ void TechnoTypeExt::ExtData::Serialize(T& Stm) .Process(this->InfantryAutoDeploy) + .Process(this->TeamMember_ConsideredAs) + .Process(this->TurretResponse) + + .Process(this->AttackFriendlies) ; } void TechnoTypeExt::ExtData::LoadFromStream(PhobosStreamReader& Stm) diff --git a/src/Ext/TechnoType/Body.h b/src/Ext/TechnoType/Body.h index 4de978975e..63fc4381cd 100644 --- a/src/Ext/TechnoType/Body.h +++ b/src/Ext/TechnoType/Body.h @@ -1,17 +1,14 @@ #pragma once -#include - -#include #include #include +#include #include #include -#include -#include -#include #include #include +#include +#include #include #include #include @@ -46,6 +43,8 @@ class TechnoTypeExt Nullable DesignatorRange; Valueable FactoryPlant_Multiplier; Valueable MindControlRangeLimit; + Valueable MindControl_IgnoreSize; + Valueable MindControlSize; Valueable MindControlLink_VisibleToHouse; std::unique_ptr InterceptorType; @@ -71,6 +70,7 @@ class TechnoTypeExt Nullable InitialStrength; Valueable ReloadInTransport; Valueable ForbidParallelAIQueues; + Valueable IgnoreForBaseCenter; int TintColorAirstrike; Nullable LaserTargetColor; @@ -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; @@ -451,8 +451,12 @@ class TechnoTypeExt Nullable InfantryAutoDeploy; + ValueableVector TeamMember_ConsideredAs; + Nullable TurretResponse; + Vector2D AttackFriendlies; + ExtData(TechnoTypeClass* OwnerObject) : Extension(OwnerObject) , HealthBar_Hide { false } , HealthBar_HidePips { false } @@ -471,6 +475,8 @@ class TechnoTypeExt , DesignatorRange { } , FactoryPlant_Multiplier { 1.0 } , MindControlRangeLimit {} + , MindControl_IgnoreSize { true } + , MindControlSize { 1 } , MindControlLink_VisibleToHouse{ AffectedHouse::All } , InterceptorType { nullptr } @@ -496,6 +502,7 @@ class TechnoTypeExt , InitialStrength {} , ReloadInTransport { false } , ForbidParallelAIQueues { false } + , IgnoreForBaseCenter { false } , TintColorAirstrike { 0 } , LaserTargetColor {} , AirstrikeLineColor {} @@ -545,8 +552,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 +719,7 @@ class TechnoTypeExt , Tint_VisibleToHouses { AffectedHouse::All } , RevengeWeapon {} - , RevengeWeapon_AffectsHouses { AffectedHouse::All } + , RevengeWeapon_AffectsHouse { AffectedHouse::All } , AttachEffects {} @@ -855,7 +862,11 @@ class TechnoTypeExt , InfantryAutoDeploy {} + , TeamMember_ConsideredAs {} + , TurretResponse {} + + , AttackFriendlies { false,false } { } virtual ~ExtData() = default; diff --git a/src/Ext/TechnoType/Hooks.MatrixOp.cpp b/src/Ext/TechnoType/Hooks.MatrixOp.cpp index fa9eb373ca..7e313acdb7 100644 --- a/src/Ext/TechnoType/Hooks.MatrixOp.cpp +++ b/src/Ext/TechnoType/Hooks.MatrixOp.cpp @@ -1,19 +1,10 @@ -#include -#include -#include +#include "Body.h" + #include -#include -#include -#include #include -#include #include -#include #include -#include "Body.h" - - DEFINE_REFERENCE(double, Pixel_Per_Lepton, 0xB1D008) #pragma region FLH_Turrets diff --git a/src/Ext/TechnoType/Hooks.MultiWeapon.cpp b/src/Ext/TechnoType/Hooks.MultiWeapon.cpp index ceb5139206..c7d01b6110 100644 --- a/src/Ext/TechnoType/Hooks.MultiWeapon.cpp +++ b/src/Ext/TechnoType/Hooks.MultiWeapon.cpp @@ -1,5 +1,4 @@ #include "Body.h" -#include #include diff --git a/src/Ext/TechnoType/Hooks.Teleport.cpp b/src/Ext/TechnoType/Hooks.Teleport.cpp index 5fd4691e3d..66ce588bc9 100644 --- a/src/Ext/TechnoType/Hooks.Teleport.cpp +++ b/src/Ext/TechnoType/Hooks.Teleport.cpp @@ -1,11 +1,8 @@ #include "Body.h" -#include -#include #include #include #include -#include #define GET_LOCO(reg_Loco) \ GET(ILocomotion *, Loco, reg_Loco); \ diff --git a/src/Ext/TechnoType/Hooks.cpp b/src/Ext/TechnoType/Hooks.cpp index d873c710ac..b20dbd625e 100644 --- a/src/Ext/TechnoType/Hooks.cpp +++ b/src/Ext/TechnoType/Hooks.cpp @@ -1,7 +1,6 @@ #include "Body.h" #include #include -#include DEFINE_HOOK(0x73D223, UnitClass_DrawIt_OreGath, 0x6) { diff --git a/src/Ext/TerrainType/Body.cpp b/src/Ext/TerrainType/Body.cpp index b8d72c7f93..648e3bb436 100644 --- a/src/Ext/TerrainType/Body.cpp +++ b/src/Ext/TerrainType/Body.cpp @@ -1,12 +1,6 @@ #include "Body.h" -#include -#include -#include -#include - #include -#include TerrainTypeExt::ExtContainer TerrainTypeExt::ExtMap; diff --git a/src/Ext/TerrainType/Body.h b/src/Ext/TerrainType/Body.h index 4bb586ca98..36b3cf63ec 100644 --- a/src/Ext/TerrainType/Body.h +++ b/src/Ext/TerrainType/Body.h @@ -1,10 +1,8 @@ #pragma once #include -#include #include #include -#include class TerrainTypeExt { diff --git a/src/Ext/TerrainType/Hooks.Passable.cpp b/src/Ext/TerrainType/Hooks.Passable.cpp index 59110fa683..c2d251877a 100644 --- a/src/Ext/TerrainType/Hooks.Passable.cpp +++ b/src/Ext/TerrainType/Hooks.Passable.cpp @@ -1,11 +1,5 @@ #include "Body.h" -#include -#include -#include - -#include - constexpr bool IS_CELL_OCCUPIED(CellClass* pCell) { return pCell->OccupationFlags & 0x20 || pCell->OccupationFlags & 0x40 || pCell->OccupationFlags & 0x80 || pCell->GetInfantry(false); diff --git a/src/Ext/TerrainType/Hooks.cpp b/src/Ext/TerrainType/Hooks.cpp index c99e766b7f..7f89a92ab2 100644 --- a/src/Ext/TerrainType/Hooks.cpp +++ b/src/Ext/TerrainType/Hooks.cpp @@ -1,14 +1,6 @@ #include "Body.h" -#include -#include -#include -#include -#include -#include - #include -#include namespace TerrainTypeTemp { diff --git a/src/Ext/Tiberium/Body.h b/src/Ext/Tiberium/Body.h index 7f2750df05..ccb1406061 100644 --- a/src/Ext/Tiberium/Body.h +++ b/src/Ext/Tiberium/Body.h @@ -1,11 +1,8 @@ #pragma once #include -#include #include #include -#include -#include class TiberiumExt { diff --git a/src/Ext/Tiberium/Hooks.cpp b/src/Ext/Tiberium/Hooks.cpp index bda639d57f..35a67a64b9 100644 --- a/src/Ext/Tiberium/Hooks.cpp +++ b/src/Ext/Tiberium/Hooks.cpp @@ -1,10 +1,7 @@ #include "Body.h" -#include #include -#include - DEFINE_HOOK(0x47C210, CellClass_CellColor_TiberiumRadarColor, 0x6) { enum { ReturnFromFunction = 0x47C23F }; diff --git a/src/Ext/Trigger/Hooks.cpp b/src/Ext/Trigger/Hooks.cpp index 33e85a4683..67f8c3ec3f 100644 --- a/src/Ext/Trigger/Hooks.cpp +++ b/src/Ext/Trigger/Hooks.cpp @@ -1,7 +1,3 @@ -#include - -#include - #include DEFINE_HOOK(0x727064, TriggerTypeClass_HasLocalSetOrClearedEvent, 0x5) diff --git a/src/Ext/Unit/Hooks.Crushing.cpp b/src/Ext/Unit/Hooks.Crushing.cpp index acd03863d4..0ebf775979 100644 --- a/src/Ext/Unit/Hooks.Crushing.cpp +++ b/src/Ext/Unit/Hooks.Crushing.cpp @@ -1,11 +1,7 @@ #include #include -#include #include -#include -#include -#include DEFINE_HOOK(0x73B05B, UnitClass_PerCellProcess_TiltWhenCrushes, 0x6) { diff --git a/src/Ext/Unit/Hooks.DeployFire.cpp b/src/Ext/Unit/Hooks.DeployFire.cpp index c0048e13fc..8bf795c497 100644 --- a/src/Ext/Unit/Hooks.DeployFire.cpp +++ b/src/Ext/Unit/Hooks.DeployFire.cpp @@ -1,7 +1,4 @@ -#include - #include -#include DEFINE_HOOK(0x4C77E4, EventClass_Execute_DeployCommand, 0x6) { diff --git a/src/Ext/Unit/Hooks.DeploysInto.cpp b/src/Ext/Unit/Hooks.DeploysInto.cpp index 72c65faa8e..98815fdf2f 100644 --- a/src/Ext/Unit/Hooks.DeploysInto.cpp +++ b/src/Ext/Unit/Hooks.DeploysInto.cpp @@ -1,9 +1,7 @@ -#include #include #include #include -#include #include #pragma region AllowDeployControlledMCV diff --git a/src/Ext/Unit/Hooks.DisallowMoving.cpp b/src/Ext/Unit/Hooks.DisallowMoving.cpp index 837bab0df4..42f629e90b 100644 --- a/src/Ext/Unit/Hooks.DisallowMoving.cpp +++ b/src/Ext/Unit/Hooks.DisallowMoving.cpp @@ -1,9 +1,6 @@ // Issue #5 Permanently stationary units // Author: Starkku -#include "UnitClass.h" - -#include #include DEFINE_HOOK(0x740A93, UnitClass_Mission_Move_DisallowMoving, 0x6) diff --git a/src/Ext/Unit/Hooks.DrawIt.cpp b/src/Ext/Unit/Hooks.DrawIt.cpp index b2c44ed79e..a8fda02b47 100644 --- a/src/Ext/Unit/Hooks.DrawIt.cpp +++ b/src/Ext/Unit/Hooks.DrawIt.cpp @@ -1,6 +1,3 @@ -#include -#include - #include DEFINE_HOOK(0x73C7AC, UnitClass_DrawAsSHP_DrawTurret_TintFix, 0x6) diff --git a/src/Ext/Unit/Hooks.Jumpjet.cpp b/src/Ext/Unit/Hooks.Jumpjet.cpp index affc5b46b2..069eae18d5 100644 --- a/src/Ext/Unit/Hooks.Jumpjet.cpp +++ b/src/Ext/Unit/Hooks.Jumpjet.cpp @@ -1,8 +1,5 @@ #include -#include -#include -#include #include #include diff --git a/src/Ext/Unit/Hooks.SimpleDeployer.cpp b/src/Ext/Unit/Hooks.SimpleDeployer.cpp index 209add1ce1..a15829ec24 100644 --- a/src/Ext/Unit/Hooks.SimpleDeployer.cpp +++ b/src/Ext/Unit/Hooks.SimpleDeployer.cpp @@ -1,11 +1,9 @@ #include #include -#include #include #include #include -#include static __forceinline bool HasDeployingAnim(TechnoTypeClass* pType) { @@ -262,43 +260,12 @@ DEFINE_HOOK(0x54C58E, JumpjetLocomotionClass_Descending_PathfindingChecks, 0x7) return 0; } -// Disable DeployToLand=no forcing landing when idle due to what appears to be -// a code oversight and no need for DeployToLand=no to work in vanilla game. -DEFINE_HOOK(0x54BED4, JumpjetLocomotionClass_Hovering_DeployToLand, 0x7) -{ - enum { SkipGameCode = 0x54BEE0 }; - - GET(JumpjetLocomotionClass*, pThis, ESI); - GET(FootClass*, pLinkedTo, ECX); - - auto const pType = pLinkedTo->GetTechnoType(); - - if (!pType->BalloonHover || pType->DeployToLand) - pThis->State = JumpjetLocomotionClass::State::Descending; - - pLinkedTo->TryNextPlanningTokenNode(); - return SkipGameCode; -} +// Skip DeployToLand check for IsSimpleDeployer jumpjet units, the desired behaviour here +// should be same for both (hover in place if not deploying) +DEFINE_JUMP(LJMP, 0x54BDDE, 0x54BDF2); // Same as above but at a different state. -DEFINE_HOOK(0x54C2DF, JumpjetLocomotionClass_Cruising_DeployToLand, 0xA) -{ - enum { SkipGameCode = 0x54C4FD }; - - GET(JumpjetLocomotionClass*, pThis, ESI); - GET(FootClass*, pLinkedTo, ECX); - - auto const pType = pLinkedTo->GetTechnoType(); - - if (!pType->BalloonHover || pType->DeployToLand) - { - pThis->CurrentHeight = 0; - pThis->State = JumpjetLocomotionClass::State::Descending; - } - - pLinkedTo->TryNextPlanningTokenNode(); - return SkipGameCode; -} +DEFINE_JUMP(LJMP, 0x54C212, 0x54C22A); // Disable Ares hover locomotor bobbing processing DeployToLand hook. DEFINE_PATCH(0x513EAA, 0xA1, 0xE0, 0x71, 0x88, 0x00); diff --git a/src/Ext/Unit/Hooks.Sinking.cpp b/src/Ext/Unit/Hooks.Sinking.cpp index 26da765154..023fa66466 100644 --- a/src/Ext/Unit/Hooks.Sinking.cpp +++ b/src/Ext/Unit/Hooks.Sinking.cpp @@ -1,10 +1,4 @@ -#include - -#include -#include -#include - -#include +#include DEFINE_HOOK(0x7364DC, UnitClass_Update_SinkSpeed, 0x7) { @@ -35,8 +29,7 @@ DEFINE_HOOK(0x629C67, ParasiteClass_UpdateSquid_SinkableBySquid, 0x9) GET(ParasiteClass*, pThis, ESI); GET(FootClass*, pVictim, EDI); - const auto pVictimType = pVictim->GetTechnoType(); - const auto pVictimTypeExt = TechnoTypeExt::ExtMap.Find(pVictimType); + const auto pVictimTypeExt = TechnoExt::ExtMap.Find(pVictim)->TypeExtData; const auto pOwner = pThis->Owner; if (pVictimTypeExt->Sinkable_SquidGrab || pVictim->WhatAmI() != AbstractType::Unit) @@ -47,7 +40,7 @@ DEFINE_HOOK(0x629C67, ParasiteClass_UpdateSquid_SinkableBySquid, 0x9) } else { - auto damage = pVictimType->Strength; + auto damage = pVictimTypeExt->OwnerObject()->Strength; pVictim->ReceiveDamage(&damage, 0, RulesClass::Instance->C4Warhead, pOwner, true, false, pOwner->Owner); } diff --git a/src/Ext/VoxelAnim/Body.cpp b/src/Ext/VoxelAnim/Body.cpp index a50cf9e4eb..26d5ce5c78 100644 --- a/src/Ext/VoxelAnim/Body.cpp +++ b/src/Ext/VoxelAnim/Body.cpp @@ -1,7 +1,4 @@ #include "Body.h" -#include -#include -#include VoxelAnimExt::ExtContainer VoxelAnimExt::ExtMap; diff --git a/src/Ext/VoxelAnim/Body.h b/src/Ext/VoxelAnim/Body.h index 985025ab5b..d467e9f58a 100644 --- a/src/Ext/VoxelAnim/Body.h +++ b/src/Ext/VoxelAnim/Body.h @@ -2,14 +2,7 @@ #include -#include -#include -#include -#include -#include - -#include - +#include #include class VoxelAnimExt diff --git a/src/Ext/VoxelAnim/Hooks.cpp b/src/Ext/VoxelAnim/Hooks.cpp index da6ae397e7..498680292a 100644 --- a/src/Ext/VoxelAnim/Hooks.cpp +++ b/src/Ext/VoxelAnim/Hooks.cpp @@ -1,11 +1,6 @@ #include "Body.h" -#include - #include -#include -#include -#include DEFINE_HOOK(0x74A70E, VoxelAnimClass_AI_Additional, 0xC) { diff --git a/src/Ext/VoxelAnimType/Body.cpp b/src/Ext/VoxelAnimType/Body.cpp index b2baed23f7..07e880b6db 100644 --- a/src/Ext/VoxelAnimType/Body.cpp +++ b/src/Ext/VoxelAnimType/Body.cpp @@ -1,6 +1,5 @@ #include "Body.h" - VoxelAnimTypeExt::ExtContainer VoxelAnimTypeExt::ExtMap; void VoxelAnimTypeExt::ExtData::Initialize() { } diff --git a/src/Ext/VoxelAnimType/Body.h b/src/Ext/VoxelAnimType/Body.h index 3ae8246e99..406ca818ca 100644 --- a/src/Ext/VoxelAnimType/Body.h +++ b/src/Ext/VoxelAnimType/Body.h @@ -2,11 +2,7 @@ #include #include -#include -#include #include -#include -#include #include diff --git a/src/Ext/WarheadType/Body.cpp b/src/Ext/WarheadType/Body.cpp index 72ef93c89e..c95a3aae44 100644 --- a/src/Ext/WarheadType/Body.cpp +++ b/src/Ext/WarheadType/Body.cpp @@ -1,11 +1,6 @@ #include "Body.h" -#include -#include - -#include #include -#include WarheadTypeExt::ExtContainer WarheadTypeExt::ExtMap; @@ -80,7 +75,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 +151,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 +229,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,10 +272,10 @@ 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_Affects.Read(exINI, pSection, "KillWeapon.Affects"); - this->KillWeapon_OnFirer_Affects.Read(exINI, pSection, "KillWeapon.OnFirer.Affects"); + this->KillWeapon_AffectsHouse.Read(exINI, pSection, "KillWeapon.AffectsHouse"); + this->KillWeapon_OnFirer_AffectsHouse.Read(exINI, pSection, "KillWeapon.OnFirer.AffectsHouse"); + this->KillWeapon_AffectsTarget.Read(exINI, pSection, "KillWeapon.AffectsTarget"); + this->KillWeapon_OnFirer_AffectsTarget.Read(exINI, pSection, "KillWeapon.OnFirer.AffectsTarget"); this->ElectricAssaultLevel.Read(exINI, pSection, "ElectricAssaultLevel"); @@ -451,15 +446,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 +521,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,10 +576,10 @@ 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_Affects) - .Process(this->KillWeapon_OnFirer_Affects) + .Process(this->KillWeapon_AffectsHouse) + .Process(this->KillWeapon_OnFirer_AffectsHouse) + .Process(this->KillWeapon_AffectsTarget) + .Process(this->KillWeapon_OnFirer_AffectsTarget) .Process(this->ElectricAssaultLevel) diff --git a/src/Ext/WarheadType/Body.h b/src/Ext/WarheadType/Body.h index aace9f5887..159e6508ea 100644 --- a/src/Ext/WarheadType/Body.h +++ b/src/Ext/WarheadType/Body.h @@ -1,12 +1,9 @@ #pragma once -#include -#include -#include +#include #include #include #include -#include -#include +#include #include class WarheadTypeExt @@ -58,15 +55,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 +133,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,10 +180,10 @@ class WarheadTypeExt Valueable KillWeapon; Valueable KillWeapon_OnFirer; - Valueable KillWeapon_AffectsHouses; - Valueable KillWeapon_OnFirer_AffectsHouses; - Valueable KillWeapon_Affects; - Valueable KillWeapon_OnFirer_Affects; + Valueable KillWeapon_AffectsHouse; + Valueable KillWeapon_OnFirer_AffectsHouse; + Valueable KillWeapon_AffectsTarget; + Valueable KillWeapon_OnFirer_AffectsTarget; Valueable ElectricAssaultLevel; @@ -279,15 +276,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 +354,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,10 +432,10 @@ class WarheadTypeExt , KillWeapon {} , KillWeapon_OnFirer {} - , KillWeapon_AffectsHouses { AffectedHouse::All } - , KillWeapon_OnFirer_AffectsHouses { AffectedHouse::All } - , KillWeapon_Affects { AffectedTarget::All } - , KillWeapon_OnFirer_Affects { AffectedTarget::All } + , KillWeapon_AffectsHouse { AffectedHouse::All } + , KillWeapon_OnFirer_AffectsHouse { AffectedHouse::All } + , KillWeapon_AffectsTarget { AffectedTarget::All } + , KillWeapon_OnFirer_AffectsTarget { AffectedTarget::All } , ReverseEngineer { false } diff --git a/src/Ext/WarheadType/Detonate.cpp b/src/Ext/WarheadType/Detonate.cpp index 32f18249bb..a481bea63c 100644 --- a/src/Ext/WarheadType/Detonate.cpp +++ b/src/Ext/WarheadType/Detonate.cpp @@ -1,21 +1,9 @@ #include "Body.h" -#include -#include -#include -#include -#include -#include -#include -#include - #include -#include -#include #include #include #include -#include #include #pragma region CreateGap Calls @@ -81,7 +69,7 @@ void WarheadTypeExt::ExtData::Detonate(TechnoClass* pOwner, HouseClass* pHouse, if ((pHouse->IsControlledByCurrentPlayer() || pHouse->IsAlliedWith(pCurrent)) && !pCurrent->Defeated && !pCurrent->Visionary) { Sub_4ADEE0(0, 0); - MapClass::Instance.RevealArea2(const_cast(&coords), reveal, pHouse, 0, 0, 0, 0, 1); + MapClass::Instance.RevealArea2(const_cast(&coords), reveal, pHouse, 0, 0, 0, 1, 0); Sub_4ADCD0(0, 0); MapClass::Instance.sub_657CE0(); MapClass::Instance.MarkNeedsRedraw(2); @@ -486,16 +474,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/Ext/WarheadType/Hooks.cpp b/src/Ext/WarheadType/Hooks.cpp index ad2c724a6c..32c7507380 100644 --- a/src/Ext/WarheadType/Hooks.cpp +++ b/src/Ext/WarheadType/Hooks.cpp @@ -1,14 +1,7 @@ #include "Body.h" -#include -#include -#include - -#include #include -#include #include -#include #pragma region Detonation diff --git a/src/Ext/WeaponType/Body.cpp b/src/Ext/WeaponType/Body.cpp index 354e766ebb..5e06ff4722 100644 --- a/src/Ext/WeaponType/Body.cpp +++ b/src/Ext/WeaponType/Body.cpp @@ -1,7 +1,6 @@ #include "Body.h" #include #include -#include WeaponTypeExt::ExtContainer WeaponTypeExt::ExtMap; @@ -87,7 +86,7 @@ void WeaponTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->Bolt_Disable[idx].Read(exINI, pSection, tempBuffer); } - this->Bolt_ParticleSystem.Read(exINI, pSection, "Bolt.ParticleSystem"); + this->Bolt_ParticleSystem.Read(exINI, pSection, "Bolt.ParticleSystem"); this->Bolt_Arcs.Read(exINI, pSection, "Bolt.Arcs"); this->Bolt_Duration.Read(exINI, pSection, "Bolt.Duration"); this->Bolt_FollowFLH.Read(exINI, pSection, "Bolt.FollowFLH"); @@ -153,6 +152,13 @@ void WeaponTypeExt::ExtData::LoadFromINIFile(CCINIClass* const pINI) this->DelayedFire_OnlyOnInitialBurst.Read(exINI, pSection, "DelayedFire.OnlyOnInitialBurst"); this->DelayedFire_AnimOffset.Read(exINI, pSection, "DelayedFire.AnimOffset"); this->DelayedFire_AnimOnTurret.Read(exINI, pSection, "DelayedFire.AnimOnTurret"); + this->ExtraRange_TargetMoving.Read(exINI, GameStrings::General, "ExtraRange.TargetMoving"); + this->ExtraRange_FirerMoving.Read(exINI, GameStrings::General, "ExtraRange.FirerMoving"); + this->ExtraRange_Prefiring.Read(exINI, GameStrings::General, "ExtraRange.Prefiring"); + this->ExtraRange_Prefiring_IncludeBurst.Read(exINI, GameStrings::General, "ExtraRange.Prefiring.IncludeBurst"); + this->AttackFriendlies.Read(exINI, pSection, "AttackFriendlies"); + this->AttackCursorOnFriendlies.Read(exINI, pSection, "AttackCursorOnFriendlies"); + this->AttackNoThreatBuildings.Read(exINI, pSection, "AttackNoThreatBuildings"); // handle SkipWeaponPicking if (this->CanTarget != AffectedTarget::All || this->CanTargetHouses != AffectedHouse::All @@ -237,6 +243,13 @@ void WeaponTypeExt::ExtData::Serialize(T& Stm) .Process(this->DelayedFire_OnlyOnInitialBurst) .Process(this->DelayedFire_AnimOffset) .Process(this->DelayedFire_AnimOnTurret) + .Process(this->ExtraRange_TargetMoving) + .Process(this->ExtraRange_FirerMoving) + .Process(this->ExtraRange_Prefiring) + .Process(this->ExtraRange_Prefiring_IncludeBurst) + .Process(this->AttackFriendlies) + .Process(this->AttackCursorOnFriendlies) + .Process(this->AttackNoThreatBuildings) ; }; diff --git a/src/Ext/WeaponType/Body.h b/src/Ext/WeaponType/Body.h index 03d6fe37e0..f784b74d22 100644 --- a/src/Ext/WeaponType/Body.h +++ b/src/Ext/WeaponType/Body.h @@ -1,10 +1,4 @@ #pragma once -#include -#include -#include -#include -#include -#include #include #include @@ -91,6 +85,13 @@ class WeaponTypeExt Valueable DelayedFire_OnlyOnInitialBurst; Nullable DelayedFire_AnimOffset; Valueable DelayedFire_AnimOnTurret; + Nullable ExtraRange_TargetMoving; + Nullable ExtraRange_FirerMoving; + Nullable ExtraRange_Prefiring; + Nullable ExtraRange_Prefiring_IncludeBurst; + Nullable AttackFriendlies; + Nullable AttackCursorOnFriendlies; + Nullable AttackNoThreatBuildings; bool SkipWeaponPicking; @@ -164,6 +165,13 @@ class WeaponTypeExt , DelayedFire_OnlyOnInitialBurst { false } , DelayedFire_AnimOffset {} , DelayedFire_AnimOnTurret { true } + , ExtraRange_TargetMoving {} + , ExtraRange_FirerMoving {} + , ExtraRange_Prefiring {} + , ExtraRange_Prefiring_IncludeBurst {} + , AttackFriendlies {} + , AttackCursorOnFriendlies {} + , AttackNoThreatBuildings {} { } int GetBurstDelay(int burstIndex) const; diff --git a/src/Misc/FlyingStrings.cpp b/src/Misc/FlyingStrings.cpp index 331c393b6f..dcca47123c 100644 --- a/src/Misc/FlyingStrings.cpp +++ b/src/Misc/FlyingStrings.cpp @@ -3,9 +3,6 @@ #include #include #include -#include -#include -#include #include #include diff --git a/src/Misc/FlyingStrings.h b/src/Misc/FlyingStrings.h index 79c932d41f..88956f9a24 100644 --- a/src/Misc/FlyingStrings.h +++ b/src/Misc/FlyingStrings.h @@ -6,7 +6,6 @@ By AlexB and Joshy #pragma once #include -#include #include #include diff --git a/src/Misc/Hooks.AlphaImage.cpp b/src/Misc/Hooks.AlphaImage.cpp index 8569b68113..dca1d0dcfc 100644 --- a/src/Misc/Hooks.AlphaImage.cpp +++ b/src/Misc/Hooks.AlphaImage.cpp @@ -1,6 +1,3 @@ -#include -#include - #include #include diff --git a/src/Misc/Hooks.Ares.cpp b/src/Misc/Hooks.Ares.cpp index 34a35407e3..1c2f5e41af 100644 --- a/src/Misc/Hooks.Ares.cpp +++ b/src/Misc/Hooks.Ares.cpp @@ -1,13 +1,8 @@ -#include -#include - -#include #include #include #include #include -#include #include #include @@ -76,6 +71,9 @@ void Apply_Ares3_0_Patches() // Amphibious enter fix: Patch::Apply_LJMP(AresHelper::AresBaseAddress + 0x17536, AresHelper::AresBaseAddress + 0x1754D); + // SpawnSurvivor fix: + Patch::Apply_LJMP(AresHelper::AresBaseAddress + 0x445E0, GET_OFFSET(TechnoExt::EjectRandomly)); + // Redirect Ares' getCellSpreadItems to our implementation: Patch::Apply_CALL(AresHelper::AresBaseAddress + 0x62267, &Helpers::Alex::getCellSpreadItems); Patch::Apply_CALL(AresHelper::AresBaseAddress + 0x528C8, &Helpers::Alex::getCellSpreadItems); @@ -138,6 +136,9 @@ void Apply_Ares3_0p1_Patches() // Amphibious enter fix: Patch::Apply_LJMP(AresHelper::AresBaseAddress + 0x17C26, AresHelper::AresBaseAddress + 0x17C3D); + // SpawnSurvivor fix: + Patch::Apply_LJMP(AresHelper::AresBaseAddress + 0x450C0, GET_OFFSET(TechnoExt::EjectRandomly)); + // Redirect Ares' getCellSpreadItems to our implementation: Patch::Apply_CALL(AresHelper::AresBaseAddress + 0x62FB7, &Helpers::Alex::getCellSpreadItems); Patch::Apply_CALL(AresHelper::AresBaseAddress + 0x53578, &Helpers::Alex::getCellSpreadItems); diff --git a/src/Misc/Hooks.BugFixes.cpp b/src/Misc/Hooks.BugFixes.cpp index ca8ac8733a..0a66e80ef1 100644 --- a/src/Misc/Hooks.BugFixes.cpp +++ b/src/Misc/Hooks.BugFixes.cpp @@ -1,40 +1,14 @@ -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include #include -#include -#include #include #include #include -#include #include #include #include -#include -#include -#include - /* Allow usage of TileSet of 255 and above without making NE-SW broken bridges unrepairable @@ -2912,3 +2886,54 @@ DEFINE_HOOK(0x65DE82, TeamTypeClass_CreateTeamMembers_Veterancy, 0x6) // Fixed the issue where non-repairer units needed sensors to attack cloaked friendly units. DEFINE_JUMP(LJMP, 0x6FC278, 0x6FC289); + +#pragma region LogicClasss_AI +namespace LogicUpdateTemp +{ + int UpdateIndex = -1; +} + +DEFINE_HOOK(0x55B5FF, LogicClass_AI_UpdateObjects, 0x5) +{ + enum { SkipGameCode = 0x55B61B }; + + GET(LogicClass*, pLogic, EDI); + int& updateIdx = LogicUpdateTemp::UpdateIndex; + + for (updateIdx = 0; updateIdx < pLogic->Count; ++updateIdx) + { + const auto pObject = pLogic->Items[updateIdx]; + pObject->Update(); + } + + updateIdx = -1; + return SkipGameCode; +} + +// Fixed the bug that if object has been removed from LogicClass in Update(), next object will be skip. +DEFINE_HOOK(0x55BB09, LogicClass_RemoveObject_FixIndex, 0x6) +{ + int& updateIdx = LogicUpdateTemp::UpdateIndex; + + if (updateIdx == -1) + return 0; + + GET(int, findIdx, EAX); + + if (findIdx <= updateIdx) + --updateIdx; + + return 0; +} + +#pragma endregion + +//Jul 7, 2025 - Fridge: Cursor Refresh rate fix(from 60 to game render rate) +DEFINE_HOOK(0x7B8536, StartMouseThread_AdjustMouseInterval, 0xA) +{ + + // Original - Thread_Mouse_Args.Interval = 16ms + Game::MouseThread.Interval = 1; + + return 0x7B8540; +} diff --git a/src/Misc/Hooks.Crates.cpp b/src/Misc/Hooks.Crates.cpp index f57fdc4e39..4c546a9850 100644 --- a/src/Misc/Hooks.Crates.cpp +++ b/src/Misc/Hooks.Crates.cpp @@ -1,11 +1,5 @@ -#include -#include - -#include #include -#include - DEFINE_HOOK(0x56BD8B, MapClass_PlaceRandomCrate_Sampling, 0x5) { enum { SpawnCrate = 0x56BE7B, SkipSpawn = 0x56BE91 }; diff --git a/src/Misc/Hooks.Gamespeed.cpp b/src/Misc/Hooks.Gamespeed.cpp index 47a5013f74..9a64c6afc8 100644 --- a/src/Misc/Hooks.Gamespeed.cpp +++ b/src/Misc/Hooks.Gamespeed.cpp @@ -1,8 +1,7 @@ #include -#include +#include #include #include -#include namespace GameSpeedTemp { diff --git a/src/Misc/Hooks.INIInheritance.cpp b/src/Misc/Hooks.INIInheritance.cpp index 4c99dfd9e8..86bfa6d202 100644 --- a/src/Misc/Hooks.INIInheritance.cpp +++ b/src/Misc/Hooks.INIInheritance.cpp @@ -1,15 +1,9 @@ -#include -#include -#include -#include #include #include -#include #include #include -#include #include namespace INIInheritance diff --git a/src/Misc/Hooks.LaserDraw.cpp b/src/Misc/Hooks.LaserDraw.cpp index 0716a97063..aa9d88cfaf 100644 --- a/src/Misc/Hooks.LaserDraw.cpp +++ b/src/Misc/Hooks.LaserDraw.cpp @@ -1,9 +1,4 @@ #include - -#include -#include -#include -#include #include namespace LaserDrawTemp diff --git a/src/Misc/Hooks.LightEffects.cpp b/src/Misc/Hooks.LightEffects.cpp index 8d66e43367..0527925c1f 100644 --- a/src/Misc/Hooks.LightEffects.cpp +++ b/src/Misc/Hooks.LightEffects.cpp @@ -1,7 +1,6 @@ #include #include -#include namespace LightEffectsTemp { diff --git a/src/Misc/Hooks.Overlay.cpp b/src/Misc/Hooks.Overlay.cpp index 187949142f..1a0659fcee 100644 --- a/src/Misc/Hooks.Overlay.cpp +++ b/src/Misc/Hooks.Overlay.cpp @@ -1,8 +1,5 @@ #include #include -#include -#include -#include #include #include diff --git a/src/Misc/Hooks.PCX.cpp b/src/Misc/Hooks.PCX.cpp index bb8324aca5..e9c5b7b934 100644 --- a/src/Misc/Hooks.PCX.cpp +++ b/src/Misc/Hooks.PCX.cpp @@ -1,8 +1,4 @@ -#include -#include -#include #include -#include DEFINE_HOOK(0x6B9D9C, RGB_PCX_Loader, 0x7) { diff --git a/src/Misc/Hooks.Timers.cpp b/src/Misc/Hooks.Timers.cpp index 44b173a8c5..df650e5b11 100644 --- a/src/Misc/Hooks.Timers.cpp +++ b/src/Misc/Hooks.Timers.cpp @@ -1,11 +1,7 @@ -#include #include #include -#include -#include #include -#include namespace TimerValueTemp { diff --git a/src/Misc/Hooks.UI.cpp b/src/Misc/Hooks.UI.cpp index cf9699a3aa..241dff8c92 100644 --- a/src/Misc/Hooks.UI.cpp +++ b/src/Misc/Hooks.UI.cpp @@ -1,13 +1,8 @@ -#include - -#include #include -#include #include #include #include -#include #include #include #include @@ -15,7 +10,6 @@ #include #include -#include #include diff --git a/src/Misc/Hooks.VeinholeMonster.cpp b/src/Misc/Hooks.VeinholeMonster.cpp index 36f71e1133..908e38c522 100644 --- a/src/Misc/Hooks.VeinholeMonster.cpp +++ b/src/Misc/Hooks.VeinholeMonster.cpp @@ -1,13 +1,7 @@ #include -#include -#include -#include -#include -#include #include - /// /// Veinhole Monster /// diff --git a/src/Misc/MessageColumn.cpp b/src/Misc/MessageColumn.cpp index 010c2291d1..9e2c587351 100644 --- a/src/Misc/MessageColumn.cpp +++ b/src/Misc/MessageColumn.cpp @@ -1,8 +1,6 @@ #include "MessageColumn.h" #include -#include -#include #include #include diff --git a/src/Misc/MessageColumn.h b/src/Misc/MessageColumn.h index 152b8f7667..593c9ede5b 100644 --- a/src/Misc/MessageColumn.h +++ b/src/Misc/MessageColumn.h @@ -4,8 +4,6 @@ #include -#include - // -------------------------------------------------- class MessageToggleClass : public GadgetClass diff --git a/src/Misc/PhobosToolTip.cpp b/src/Misc/PhobosToolTip.cpp index 5ae67f4f71..aa30b9692c 100644 --- a/src/Misc/PhobosToolTip.cpp +++ b/src/Misc/PhobosToolTip.cpp @@ -1,18 +1,8 @@ -#include - #include "PhobosToolTip.h" -#include -#include -#include -#include - #include #include -#include -#include #include -#include #include #include diff --git a/src/Misc/PhobosToolTip.h b/src/Misc/PhobosToolTip.h index 1d054751a2..31c1a92852 100644 --- a/src/Misc/PhobosToolTip.h +++ b/src/Misc/PhobosToolTip.h @@ -1,16 +1,8 @@ #pragma once -#include -#include -#include - -#include - #include #include -#include - struct StripClass; class PhobosToolTip diff --git a/src/Misc/Selection.cpp b/src/Misc/Selection.cpp index b788ba5ee2..d2b938e4db 100644 --- a/src/Misc/Selection.cpp +++ b/src/Misc/Selection.cpp @@ -1,12 +1,5 @@ -#include "Phobos.h" -#include "Utilities/Macro.h" #include -#include "Ext/Techno/Body.h" -#include "Ext/TechnoType/Body.h" - -#include -#include -#include +#include class ExtSelection { diff --git a/src/Misc/SyncLogging.cpp b/src/Misc/SyncLogging.cpp index 5f2fab8f78..ac22f05000 100644 --- a/src/Misc/SyncLogging.cpp +++ b/src/Misc/SyncLogging.cpp @@ -1,12 +1,7 @@ -#include - -#include -#include -#include -#include +#include "SyncLogging.h" +#include #include -#include #include #include diff --git a/src/Misc/TextInput.cpp b/src/Misc/TextInput.cpp index f27feab829..250be9ad0f 100644 --- a/src/Misc/TextInput.cpp +++ b/src/Misc/TextInput.cpp @@ -1,4 +1,4 @@ -#include +#include // Allow message entry in Skirmish // DEFINE_JUMP(LJMP, 0x55E484, 0x55E48D); diff --git a/src/New/Entity/Ares/RadarJammerClass.cpp b/src/New/Entity/Ares/RadarJammerClass.cpp index cbb6db1081..01e006316e 100644 --- a/src/New/Entity/Ares/RadarJammerClass.cpp +++ b/src/New/Entity/Ares/RadarJammerClass.cpp @@ -1,8 +1,6 @@ #include "RadarJammerClass.h" #include -#include -#include void RadarJammerClass::Update() { diff --git a/src/New/Entity/Ares/RadarJammerClass.h b/src/New/Entity/Ares/RadarJammerClass.h index bd6239b95f..12b73449c4 100644 --- a/src/New/Entity/Ares/RadarJammerClass.h +++ b/src/New/Entity/Ares/RadarJammerClass.h @@ -1,9 +1,6 @@ #pragma once -#include -#include #include -#include class RadarJammerClass { diff --git a/src/New/Entity/AttachEffectClass.cpp b/src/New/Entity/AttachEffectClass.cpp index 62717dfa8b..b315154109 100644 --- a/src/New/Entity/AttachEffectClass.cpp +++ b/src/New/Entity/AttachEffectClass.cpp @@ -1,14 +1,8 @@ #include "AttachEffectClass.h" -#include "Memory.h" -#include -#include - -#include #include #include #include -#include std::vector AttachEffectClass::Array; @@ -615,7 +609,7 @@ int AttachEffectClass::Attach(TechnoClass* pTarget, HouseClass* pInvokerHouse, T return false; auto const pTargetExt = TechnoExt::ExtMap.Find(pTarget); - auto const pTargetType = pTarget->GetTechnoType(); + auto const pTargetType = pTargetExt->TypeExtData->OwnerObject(); int attachedCount = 0; bool markForRedraw = false; double ROFModifier = 1.0; @@ -687,13 +681,14 @@ 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)) return nullptr; int currentTypeCount = 0; + int currentSourceCount = 0; const bool cumulative = pType->Cumulative && checkCumulative; AttachEffectClass* match = nullptr; std::vector cumulativeMatches; @@ -713,19 +708,26 @@ AttachEffectClass* AttachEffectClass::CreateAndAttach(AttachEffectTypeClass* pTy AttachEffectTypeClass::HandleEvent(pTarget); return nullptr; } - else if (!attachParams.CumulativeRefreshSameSourceOnly || (attachEffect->Source == pSource && attachEffect->Invoker == pInvoker)) + else { - cumulativeMatches.push_back(attachEffect); + if (attachEffect->IsFromSource(pInvoker, pSource)) + currentSourceCount++; - if (!match || attachEffect->Duration < match->Duration) - match = attachEffect; + if (!attachParams.CumulativeRefreshSameSourceOnly || attachEffect->IsFromSource(pInvoker, pSource)) + { + cumulativeMatches.push_back(attachEffect); + + if (!match || attachEffect->Duration < match->Duration) + match = attachEffect; + } } } } if (cumulative) { - if (pType->Cumulative_MaxCount >= 0 && currentTypeCount >= pType->Cumulative_MaxCount) + if ((pType->Cumulative_MaxCount >= 0 && currentTypeCount >= pType->Cumulative_MaxCount) + || (attachParams.CumulativeSourceMaxCount >= 0 && currentSourceCount >= attachParams.CumulativeSourceMaxCount)) { if (attachParams.CumulativeRefreshAll) { @@ -953,7 +955,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) @@ -979,7 +981,7 @@ void AttachEffectClass::TransferAttachedEffects(TechnoClass* pSource, TechnoClas match = targetAttachEffect; break; } - else if (targetAttachEffect->Source == attachEffect->Source && targetAttachEffect->Invoker == attachEffect->Invoker) + else if (targetAttachEffect->IsFromSource(attachEffect->Invoker, attachEffect->Source)) { if (!match || targetAttachEffect->Duration < match->Duration) match = targetAttachEffect; diff --git a/src/New/Entity/BannerClass.cpp b/src/New/Entity/BannerClass.cpp index 7ecb6a2235..a1cf6d5b3e 100644 --- a/src/New/Entity/BannerClass.cpp +++ b/src/New/Entity/BannerClass.cpp @@ -2,10 +2,6 @@ #include -#include - -#include - std::vector> BannerClass::Array; BannerClass::BannerClass diff --git a/src/New/Entity/BannerClass.h b/src/New/Entity/BannerClass.h index 146800e9b1..3d588cb7e9 100644 --- a/src/New/Entity/BannerClass.h +++ b/src/New/Entity/BannerClass.h @@ -1,10 +1,6 @@ #pragma once -#include - -#include - -#include +#include class BannerTypeClass; diff --git a/src/New/Entity/LaserTrailClass.cpp b/src/New/Entity/LaserTrailClass.cpp index 0a76d93794..a136b88568 100644 --- a/src/New/Entity/LaserTrailClass.cpp +++ b/src/New/Entity/LaserTrailClass.cpp @@ -1,6 +1,5 @@ #include "LaserTrailClass.h" -#include #include // Draws LaserTrail if the conditions are suitable. diff --git a/src/New/Entity/LaserTrailClass.h b/src/New/Entity/LaserTrailClass.h index 3902c5ff85..58a31fd767 100644 --- a/src/New/Entity/LaserTrailClass.h +++ b/src/New/Entity/LaserTrailClass.h @@ -1,11 +1,7 @@ #pragma once -#include -#include - #include - class LaserTrailClass { public: diff --git a/src/New/Entity/ShieldClass.cpp b/src/New/Entity/ShieldClass.cpp index 1d747b6f3f..3e5e6d56df 100644 --- a/src/New/Entity/ShieldClass.cpp +++ b/src/New/Entity/ShieldClass.cpp @@ -1,17 +1,9 @@ #include "ShieldClass.h" #include -#include #include -#include #include -#include -#include -#include -#include -#include - std::vector ShieldClass::Array; ShieldClass::ShieldClass() diff --git a/src/New/Entity/ShieldClass.h b/src/New/Entity/ShieldClass.h index 62789d970a..2a2491c96f 100644 --- a/src/New/Entity/ShieldClass.h +++ b/src/New/Entity/ShieldClass.h @@ -1,8 +1,8 @@ #pragma once -#include -#include -#include +#include + +#include "SpecificStructures.h" class TechnoClass; class WarheadTypeClass; diff --git a/src/New/Type/Affiliated/CreateUnitTypeClass.cpp b/src/New/Type/Affiliated/CreateUnitTypeClass.cpp index 647247ffd6..49ef868ab8 100644 --- a/src/New/Type/Affiliated/CreateUnitTypeClass.cpp +++ b/src/New/Type/Affiliated/CreateUnitTypeClass.cpp @@ -1,7 +1,5 @@ #include "CreateUnitTypeClass.h" -#include - void CreateUnitTypeClass::LoadFromINI(CCINIClass* pINI, const char* pSection) { INI_EX exINI(pINI); diff --git a/src/New/Type/Affiliated/CreateUnitTypeClass.h b/src/New/Type/Affiliated/CreateUnitTypeClass.h index 643905adbd..3dbe467e4e 100644 --- a/src/New/Type/Affiliated/CreateUnitTypeClass.h +++ b/src/New/Type/Affiliated/CreateUnitTypeClass.h @@ -1,7 +1,6 @@ #pragma once -#include -#include +#include class CreateUnitTypeClass { diff --git a/src/New/Type/Affiliated/DroppodTypeClass.h b/src/New/Type/Affiliated/DroppodTypeClass.h index 644d6ab623..044a43c69f 100644 --- a/src/New/Type/Affiliated/DroppodTypeClass.h +++ b/src/New/Type/Affiliated/DroppodTypeClass.h @@ -1,6 +1,6 @@ #pragma once -#include +#include class DroppodTypeClass { diff --git a/src/New/Type/Affiliated/InterceptorTypeClass.cpp b/src/New/Type/Affiliated/InterceptorTypeClass.cpp index e22731fc9c..babeaa6557 100644 --- a/src/New/Type/Affiliated/InterceptorTypeClass.cpp +++ b/src/New/Type/Affiliated/InterceptorTypeClass.cpp @@ -1,8 +1,5 @@ #include "InterceptorTypeClass.h" -#include -#include - InterceptorTypeClass::InterceptorTypeClass(TechnoTypeClass* OwnedBy) : OwnerType { OwnedBy } , TargetingDelay { 1 } diff --git a/src/New/Type/Affiliated/InterceptorTypeClass.h b/src/New/Type/Affiliated/InterceptorTypeClass.h index 2e09f56a26..69b7ac5d32 100644 --- a/src/New/Type/Affiliated/InterceptorTypeClass.h +++ b/src/New/Type/Affiliated/InterceptorTypeClass.h @@ -1,8 +1,6 @@ #pragma once -#include -#include -#include +#include class InterceptorTypeClass { diff --git a/src/New/Type/Affiliated/PassengerDeletionTypeClass.cpp b/src/New/Type/Affiliated/PassengerDeletionTypeClass.cpp index 00b5c5de53..8426b1e616 100644 --- a/src/New/Type/Affiliated/PassengerDeletionTypeClass.cpp +++ b/src/New/Type/Affiliated/PassengerDeletionTypeClass.cpp @@ -1,8 +1,5 @@ #include "PassengerDeletionTypeClass.h" -#include -#include - std::pair PassengerDeletionTypeClass::CanParse(INI_EX exINI, const char* pSection) { Nullable rate; diff --git a/src/New/Type/Affiliated/PassengerDeletionTypeClass.h b/src/New/Type/Affiliated/PassengerDeletionTypeClass.h index 32a29cd89a..15b2feff47 100644 --- a/src/New/Type/Affiliated/PassengerDeletionTypeClass.h +++ b/src/New/Type/Affiliated/PassengerDeletionTypeClass.h @@ -1,8 +1,6 @@ #pragma once -#include -#include -#include +#include class PassengerDeletionTypeClass { diff --git a/src/New/Type/Affiliated/TiberiumEaterTypeClass.cpp b/src/New/Type/Affiliated/TiberiumEaterTypeClass.cpp index 9b988fff42..82cdb3ea87 100644 --- a/src/New/Type/Affiliated/TiberiumEaterTypeClass.cpp +++ b/src/New/Type/Affiliated/TiberiumEaterTypeClass.cpp @@ -1,8 +1,5 @@ #include "TiberiumEaterTypeClass.h" -#include -#include - void TiberiumEaterTypeClass::LoadFromINI(CCINIClass* pINI, const char* pSection) { INI_EX exINI(pINI); diff --git a/src/New/Type/Affiliated/TiberiumEaterTypeClass.h b/src/New/Type/Affiliated/TiberiumEaterTypeClass.h index 6762eee9d9..e148d02c35 100644 --- a/src/New/Type/Affiliated/TiberiumEaterTypeClass.h +++ b/src/New/Type/Affiliated/TiberiumEaterTypeClass.h @@ -1,8 +1,6 @@ #pragma once -#include -#include -#include +#include class TiberiumEaterTypeClass { 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/Affiliated/TypeConvertGroup.h b/src/New/Type/Affiliated/TypeConvertGroup.h index bb2d9ad3e2..79fd7c0cdd 100644 --- a/src/New/Type/Affiliated/TypeConvertGroup.h +++ b/src/New/Type/Affiliated/TypeConvertGroup.h @@ -1,6 +1,6 @@ #pragma once -#include +#include class TypeConvertGroup { diff --git a/src/New/Type/AttachEffectTypeClass.cpp b/src/New/Type/AttachEffectTypeClass.cpp index 0b8191e409..02bc5abb9e 100644 --- a/src/New/Type/AttachEffectTypeClass.cpp +++ b/src/New/Type/AttachEffectTypeClass.cpp @@ -1,5 +1,7 @@ #include "AttachEffectTypeClass.h" +#include + // Used to match groups names to AttachEffectTypeClass instances. Do not iterate due to undetermined order being prone to desyncs. std::unordered_map> AttachEffectTypeClass::GroupsMap; @@ -103,7 +105,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 +147,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 +184,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 +218,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) @@ -361,6 +363,7 @@ void AEAttachInfoTypeClass::LoadFromINI(CCINIClass* pINI, const char* pSection) INI_EX exINI(pINI); this->AttachTypes.Read(exINI, pSection, "AttachEffect.AttachTypes"); + this->CumulativeSourceMaxCount.Read(exINI, pSection, "AttachEffect.CumulativeSourceMaxCount"); this->CumulativeRefreshAll.Read(exINI, pSection, "AttachEffect.CumulativeRefreshAll"); this->CumulativeRefreshAll_OnAttach.Read(exINI, pSection, "AttachEffect.CumulativeRefreshAll.OnAttach"); this->CumulativeRefreshSameSourceOnly.Read(exINI, pSection, "AttachEffect.CumulativeRefreshSameSourceOnly"); @@ -394,6 +397,7 @@ AEAttachParams AEAttachInfoTypeClass::GetAttachParams(unsigned int index, bool s } else { + info.CumulativeSourceMaxCount = this->CumulativeSourceMaxCount; info.CumulativeRefreshAll = this->CumulativeRefreshAll; info.CumulativeRefreshAll_OnAttach = this->CumulativeRefreshAll_OnAttach; info.CumulativeRefreshSameSourceOnly = this->CumulativeRefreshSameSourceOnly; @@ -409,6 +413,7 @@ bool AEAttachInfoTypeClass::Serialize(T& stm) { return stm .Process(this->AttachTypes) + .Process(this->CumulativeSourceMaxCount) .Process(this->CumulativeRefreshAll) .Process(this->CumulativeRefreshAll_OnAttach) .Process(this->CumulativeRefreshSameSourceOnly) diff --git a/src/New/Type/AttachEffectTypeClass.h b/src/New/Type/AttachEffectTypeClass.h index b3d76711d3..b0759a97c0 100644 --- a/src/New/Type/AttachEffectTypeClass.h +++ b/src/New/Type/AttachEffectTypeClass.h @@ -3,7 +3,6 @@ #include #include -#include #include #include #include "LaserTrailTypeClass.h" @@ -54,7 +53,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 +87,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 +116,7 @@ class AttachEffectTypeClass final : public Enumerable , PenetratesForceShield {} , AffectTypes {} , IgnoreTypes {} - , AffectTargets { AffectedTarget::All } + , AffectsTarget { AffectedTarget::All } , Animation {} , CumulativeAnimations {} , CumulativeAnimations_RestartOnChange { true } @@ -151,13 +150,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 } @@ -210,6 +209,7 @@ struct AEAttachParams int Delay; int InitialDelay; int RecreationDelay; + int CumulativeSourceMaxCount; bool CumulativeRefreshAll; bool CumulativeRefreshAll_OnAttach; bool CumulativeRefreshSameSourceOnly; @@ -219,6 +219,7 @@ struct AEAttachParams , Delay { 0 } , InitialDelay { 0 } , RecreationDelay { -1 } + , CumulativeSourceMaxCount { -1 } , CumulativeRefreshAll { false } , CumulativeRefreshAll_OnAttach { false } , CumulativeRefreshSameSourceOnly { true } @@ -231,6 +232,7 @@ class AEAttachInfoTypeClass { public: ValueableVector AttachTypes; + Valueable CumulativeSourceMaxCount; Valueable CumulativeRefreshAll; Valueable CumulativeRefreshAll_OnAttach; Valueable CumulativeRefreshSameSourceOnly; @@ -251,6 +253,7 @@ class AEAttachInfoTypeClass AEAttachInfoTypeClass() : AttachTypes {} + , CumulativeSourceMaxCount { -1 } , CumulativeRefreshAll { false } , CumulativeRefreshAll_OnAttach { false } , CumulativeRefreshSameSourceOnly { true } diff --git a/src/New/Type/BannerTypeClass.cpp b/src/New/Type/BannerTypeClass.cpp index b0725016a3..2950b344d2 100644 --- a/src/New/Type/BannerTypeClass.cpp +++ b/src/New/Type/BannerTypeClass.cpp @@ -1,8 +1,5 @@ #include "BannerTypeClass.h" -#include -#include - template<> const char* Enumerable::GetMainSection() { diff --git a/src/New/Type/BannerTypeClass.h b/src/New/Type/BannerTypeClass.h index 54be6d3efd..8aeb921668 100644 --- a/src/New/Type/BannerTypeClass.h +++ b/src/New/Type/BannerTypeClass.h @@ -1,8 +1,7 @@ #pragma once -#include #include -#include +#include class BannerTypeClass final : public Enumerable { diff --git a/src/New/Type/DigitalDisplayTypeClass.cpp b/src/New/Type/DigitalDisplayTypeClass.cpp index 8fd33c3a67..e8057e252a 100644 --- a/src/New/Type/DigitalDisplayTypeClass.cpp +++ b/src/New/Type/DigitalDisplayTypeClass.cpp @@ -1,12 +1,6 @@ #include "DigitalDisplayTypeClass.h" -#include -#include - -#include - #include -#include template<> const char* Enumerable::GetMainSection() diff --git a/src/New/Type/DigitalDisplayTypeClass.h b/src/New/Type/DigitalDisplayTypeClass.h index 528b5ddb1f..6b544682b3 100644 --- a/src/New/Type/DigitalDisplayTypeClass.h +++ b/src/New/Type/DigitalDisplayTypeClass.h @@ -1,7 +1,5 @@ #pragma once #include -#include -#include #include #include diff --git a/src/New/Type/LaserTrailTypeClass.cpp b/src/New/Type/LaserTrailTypeClass.cpp index e1b00aa999..64d93d7bfd 100644 --- a/src/New/Type/LaserTrailTypeClass.cpp +++ b/src/New/Type/LaserTrailTypeClass.cpp @@ -1,8 +1,5 @@ #include "LaserTrailTypeClass.h" -#include -#include - template<> const char* Enumerable::GetMainSection() { diff --git a/src/New/Type/LaserTrailTypeClass.h b/src/New/Type/LaserTrailTypeClass.h index 8ce4979a17..a247048cd8 100644 --- a/src/New/Type/LaserTrailTypeClass.h +++ b/src/New/Type/LaserTrailTypeClass.h @@ -1,7 +1,7 @@ #pragma once #include -#include +#include class LaserTrailTypeClass final : public Enumerable { diff --git a/src/New/Type/RadTypeClass.cpp b/src/New/Type/RadTypeClass.cpp index 3126b28f1b..e3dca1bce6 100644 --- a/src/New/Type/RadTypeClass.cpp +++ b/src/New/Type/RadTypeClass.cpp @@ -1,6 +1,5 @@ #include "RadTypeClass.h" -#include #include template<> diff --git a/src/New/Type/RadTypeClass.h b/src/New/Type/RadTypeClass.h index 38efb2a4ff..7fb5336849 100644 --- a/src/New/Type/RadTypeClass.h +++ b/src/New/Type/RadTypeClass.h @@ -1,8 +1,7 @@ #pragma once #include -#include -#include +#include #include class WarheadTypeClass; diff --git a/src/New/Type/SelectBoxTypeClass.h b/src/New/Type/SelectBoxTypeClass.h index 1f0707e700..ef81a3f08e 100644 --- a/src/New/Type/SelectBoxTypeClass.h +++ b/src/New/Type/SelectBoxTypeClass.h @@ -2,7 +2,6 @@ #include #include -#include class SelectBoxTypeClass final : public Enumerable { diff --git a/src/New/Type/ShieldTypeClass.h b/src/New/Type/ShieldTypeClass.h index acd602d87e..da4574ef35 100644 --- a/src/New/Type/ShieldTypeClass.h +++ b/src/New/Type/ShieldTypeClass.h @@ -1,10 +1,8 @@ #pragma once #include -#include -#include -#include #include +#include class ShieldTypeClass final : public Enumerable { diff --git a/src/Utilities/Anchor.cpp b/src/Utilities/Anchor.cpp index 5a076745ee..860e721f6a 100644 --- a/src/Utilities/Anchor.cpp +++ b/src/Utilities/Anchor.cpp @@ -1,7 +1,5 @@ #include "Anchor.h" -#include - double Anchor::GetRelativeOffsetHorizontal() const { // Enum goes from 0 to 2 from left to right. Cast it and divide it diff --git a/src/Utilities/Anchor.h b/src/Utilities/Anchor.h index 2b16facff0..6bd2fc9308 100644 --- a/src/Utilities/Anchor.h +++ b/src/Utilities/Anchor.h @@ -1,5 +1,4 @@ #pragma once -#include #include #include diff --git a/src/Utilities/AresAddressInit.cpp b/src/Utilities/AresAddressInit.cpp index 98fe3b9cab..bfd7bca245 100644 --- a/src/Utilities/AresAddressInit.cpp +++ b/src/Utilities/AresAddressInit.cpp @@ -27,15 +27,10 @@ void AresFunctions::InitAres3_0() NOTE_ARES_FUN(CreateAresEBolt, 0x550F0); - if constexpr (AresFunctions::AresWasWrongAboutSpawnSurvivors) - { - Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x4C0EB, { 0x5C }); - Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x48C69, { 0x30 }); - } - else - { - NOTE_ARES_FUN(SpawnSurvivors, 0x464C0); - } + // Fixes for SpawnSurvivors + Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x4C0EB, { 0x5C }); + Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x48C69, { 0x30 }); + NOTE_ARES_FUN(SpawnSurvivors, 0x464C0); NOTE_ARES_FUN(ReverseEngineer, 0x022360); @@ -62,15 +57,10 @@ void AresFunctions::InitAres3_0p1() NOTE_ARES_FUN(CreateAresEBolt, 0x55DA0); - if constexpr (AresFunctions::AresWasWrongAboutSpawnSurvivors) - { - Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x4CD4B, { 0x5C }); - Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x498B9, { 0x30 }); - } - else - { - NOTE_ARES_FUN(SpawnSurvivors, 0x47030); - } + // Fixes for SpawnSurvivors + Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x4CD4B, { 0x5C }); + Patch::Apply_RAW(AresHelper::AresBaseAddress + 0x498B9, { 0x30 }); + NOTE_ARES_FUN(SpawnSurvivors, 0x47030); NOTE_ARES_FUN(ReverseEngineer, 0x022DE0); diff --git a/src/Utilities/AresFunctions.h b/src/Utilities/AresFunctions.h index 13780e1610..8210703656 100644 --- a/src/Utilities/AresFunctions.h +++ b/src/Utilities/AresFunctions.h @@ -31,7 +31,7 @@ class AresFunctions static EBolt* (__stdcall* CreateAresEBolt)(WeaponTypeClass* pWeapon); - static void(__stdcall* SpawnSurvivors)(FootClass* pThis, TechnoClass* pKiller, bool Select, bool IgnoreDefenses); + static void(__stdcall* SpawnSurvivors)(FootClass* pThis, TechnoClass* pKiller, bool Select, bool PreventEscape); static bool(__thiscall* ReverseEngineer)(void* pAresHouseExt, TechnoTypeClass* pType); @@ -46,10 +46,6 @@ class AresFunctions static void(__thiscall* AddPassengerFromTunnel)(void*, BuildingClass*, FootClass*); private: - static constexpr bool _maybe = false; - - static constexpr bool AresWasWrongAboutSpawnSurvivors = _maybe; - static void* _SWTypeExtMap; static AresSWTypeExtData* (__thiscall* _SWTypeExtMapFind)(void*, SuperWeaponTypeClass*); }; diff --git a/src/Utilities/AresHelper.h b/src/Utilities/AresHelper.h index 07837b8765..52e45a2d2f 100644 --- a/src/Utilities/AresHelper.h +++ b/src/Utilities/AresHelper.h @@ -1,6 +1,4 @@ #pragma once -#include -#include #include #include diff --git a/src/Utilities/Constructs.h b/src/Utilities/Constructs.h index 0ddd844b04..f87acf0763 100644 --- a/src/Utilities/Constructs.h +++ b/src/Utilities/Constructs.h @@ -51,8 +51,6 @@ class PhobosStreamReader; class PhobosStreamWriter; -#include "Enum.h" - class ConvertClass; template diff --git a/src/Utilities/GeneralUtils.cpp b/src/Utilities/GeneralUtils.cpp index 906e9c5e4f..a3b0f9711b 100644 --- a/src/Utilities/GeneralUtils.cpp +++ b/src/Utilities/GeneralUtils.cpp @@ -1,13 +1,12 @@ +#include "Constructs.h" #include "GeneralUtils.h" #include "Debug.h" #include -#include #include #include #include #include -#include #include "AresHelper.h" bool GeneralUtils::IsValidString(const char* str) diff --git a/src/Utilities/SavegameDef.h b/src/Utilities/SavegameDef.h index 5d9c419eff..44a3bfe8e4 100644 --- a/src/Utilities/SavegameDef.h +++ b/src/Utilities/SavegameDef.h @@ -3,6 +3,8 @@ // include this file whenever something is to be saved. #include "Savegame.h" +#include "Constructs.h" + #include #include #include @@ -14,7 +16,6 @@ #include #include #include -#include #include "Swizzle.h" #include "Debug.h" diff --git a/src/Utilities/SpawnerHelper.cpp b/src/Utilities/SpawnerHelper.cpp index e84808c8a8..09db194f66 100644 --- a/src/Utilities/SpawnerHelper.cpp +++ b/src/Utilities/SpawnerHelper.cpp @@ -1,6 +1,5 @@ #include "SpawnerHelper.h" -#include #include bool SpawnerHelper::IsSaveGameEventHooked() diff --git a/src/Utilities/TemplateDef.h b/src/Utilities/TemplateDef.h index 2b8a6022da..089a27499b 100644 --- a/src/Utilities/TemplateDef.h +++ b/src/Utilities/TemplateDef.h @@ -37,17 +37,21 @@ #include "Template.h" #include "INIParser.h" -#include "Enum.h" -#include "Constructs.h" +#include "EnumFunctions.h" #include "SavegameDef.h" +#include "Macro.h" #include #include #include #include #include +#include #include -#include +#include +#include +#include +#include #include #include #include