diff --git a/CREDITS.md b/CREDITS.md index ce467a5e43..e1f85a5f48 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -159,7 +159,7 @@ This page lists all the individual contributions to the project by their author. - Event 606: AttachEffect is attaching to a Techno - Linked superweapons - Unit & infantry auto-conversion on ammo change - - ScriptType action `Play speech` + - Restore the ScriptType action#24 `Play speech` from Tiberian Sun - **Starkku**: - Misc. minor bugfixes & improvements - AI script actions: @@ -438,9 +438,9 @@ This page lists all the individual contributions to the project by their author. - SHP turret vehicles support the use of `*tur.shp` files - Fix a bug where game will crash after loading if a techno with `AlphaImage` converts to a type without it, or an anim with `AlphaImage` changes to a type without it through `Next` - `EVA.Tag` already supports being set for specific countries, and `EVAIndex` is no longer reset after load game - - DeployFire supports buildings - - `OmniFire` supports buildings with `Turret=yes` - - Fixed an issue where setting a production building as `Primary` could cause it to enter an unload state + - `DeployFire` supports buildings + - Fix an issue where `OmniFire` was ineffective on buildings with `Turret=yes` + - Fix an issue where setting a production building as `Primary` could cause it to enter an unload state - SkipMapSelect Enhancement - **NetsuNegi**: - Forbidding parallel AI queues by type diff --git a/docs/AI-Scripting-and-Mapping.md b/docs/AI-Scripting-and-Mapping.md index 7893cb9cad..d0c54a4cb1 100644 --- a/docs/AI-Scripting-and-Mapping.md +++ b/docs/AI-Scripting-and-Mapping.md @@ -14,6 +14,7 @@ This page describes all AI scripting and mapping related additions and changes i - If a pre-placed building has a `NaturalParticleSystem`, it used to always be created when the game starts. This has been removed. - Superweapons used by AI for script actions `56 Chronoshift to Building`, `57 Chronoshift to a Target Type` and `10104 Chronoshift to Enemy Base` can now be explicitly set via `[General] -> AIChronoSphereSW` & `AIChronoWarpSW` respectively. If `AIChronoSphereSW` is set but `AIChronoWarpSW` is not, game will check former's `SW.PostDependent` for a second superweapon to use. Otherwise if not set, last superweapon listed in `[SuperWeaponTypes]` with `Type=ChronoSphere` or `Type=ChronoWarp` will be used, respectively. - Fixed AI team recruitment inconsistency causing underfilled teams. +- Restored the ScriptType action#24 `Play speech` from Tiberian Sun. ### Dynamic Team Delays @@ -167,19 +168,6 @@ ShowBriefing=true ; boolean ## Script Actions -### Below `10000` - -#### `24` Play speech - -- Restored functionality. -- Given a speech index, the game will play it. Just like action 24 from Tiberian Sun. - -In `aimd.ini`: -```ini -[SOMESCRIPTTYPE] ; ScriptType -x=24,n -``` - ### `10000-10999` Ingame Actions #### `10000-10049` Attack Actions diff --git a/docs/Fixed-or-Improved-Logics.md b/docs/Fixed-or-Improved-Logics.md index 84f690f5b8..99cd132375 100644 --- a/docs/Fixed-or-Improved-Logics.md +++ b/docs/Fixed-or-Improved-Logics.md @@ -324,6 +324,7 @@ This page describes all ingame logics that are fixed or improved in Phobos witho - Fixed incorrect shadow rendering positions for non-Aircraft units with `Locomotor=Fly`, and for Aircraft units being dragged by warheads with `IsLocomotor=yes`. - Fixed the issue that spawnee or slave would execute some player commands. - Fixed the bug that technos do not reset their link with the linked building when deactivated. +- Fixed an issue where `OmniFire` was ineffective on buildings with `Turret=yes`. - Fixed an issue where setting a production building as `Primary` could cause it to enter an unload state. ## Fixes / interactions with other extensions @@ -379,7 +380,7 @@ This page describes all ingame logics that are fixed or improved in Phobos witho - Allowed adding custom cruise missiles, so that Ares' `Missile.RaiseRate` is no longer meaningless. - Fixed the issue of Ares' EMP not suspending the production of AI factories. - Removed the restriction that prohibits InfantryTypes from using the InitialPayload logic. -- `ProjectileRange` now has weapon range modifiers applied to it if greater than 0 and unless `ProjectileRange.ApplyModifiers` is set to false on the WeaponType +- `ProjectileRange` now has weapon range modifiers applied to it if greater than 0 and unless `ProjectileRange.ApplyModifiers` is set to false on the WeaponType. ## Newly added global settings @@ -424,6 +425,20 @@ In `rulesmd.ini`: AutoRemoveEarliestBeacon=no ; boolean ``` +### Berzerk on allies + +- In vanilla, `Psychedelic` warheads is hardcoded to ignore allies' target. Now you can turn this off. + +In `rulesmd.ini`: +```ini +[CombatDamage] +AllowBerzerkOnAllies=false ; boolean +``` + +```{note} +No per-warhead setting because `AffectsAllies` etc. is respected. +``` + ### Chrono sparkle animation customization & improvements - It is now possible to customize the frame delay between instances of `[General] -> ChronoSparkle1` animations created on objects being warped by setting `[General] -> ChronoSparkleDisplayDelay`. @@ -662,34 +677,6 @@ AIAllToHunt=true ; boolean GatherWhenMCVDeploy=true ; boolean ``` -### Stop immediately if the target enters the range during ApproachTarget - -- In vanilla, the ApproachTarget will simply exit and do nothing if the target is in range. This will cause your units to approach the target unnecessarily. - - Now you can change this behavior by the following flag. - - The setting can be customized per techno type; if not set on a type, the global setting is used as the fallback. - - `AttackMove.StopWhenTargetAcquired` is read as a compatibility alias for `ApproachTarget.StopWhenInRange` (in both `[General]` and techno type sections). - -In `rulesmd.ini`: -```ini -[General] -ApproachTarget.StopWhenInRange=false ; boolean - -[SOMETECHNO] -ApproachTarget.StopWhenInRange= ; boolean, default to the same key in [General] -``` - -### Keep pursuing the target during ApproachTarget - -- Now you can make a unit approach its target with the target itself as the destination, just like ZEP, instead of a point on the arc around the target whose radius is the unit's own weapon range. - - If `ApproachTarget.StopWhenInRange` is set to `true`, the unit will stop as soon as the target enters its range and will not chase it further. - - `AttackMove.PursuitTarget` is read as a compatibility alias for `ApproachTarget.PursuitTarget`. - -In `rulesmd.ini`: -```ini -[SOMETECHNO] ; TechnoType -ApproachTarget.PursuitTarget= ; boolean, default to false -``` - ### Use 8-bit RGB parameters for `[ColorAdd]` - 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 more user-friendly 8-bit RGB (0-255) for input. @@ -1333,6 +1320,16 @@ Overpower.ChargeWeapon=1 ; integer, negative values mean that weapons can never Ares' [Battery Super Weapon](https://ares-developers.github.io/Ares-docs/new/superweapons/types/battery.html) won't be affected by this. ``` +### Customize reveal radius of `RevealToAll` + +- In vanilla, `RevealToAll` is hardcoded to reveal area in radius is `Sight`. Now you can customize it. + +In `rulesmd.ini`: +```ini +[SOMEBUILDING] ; BuildingType +RevealToAll.Radius= ; integer, defaults to [BuildingType] -> Sight +``` + ### Customize the initial facing of buildings - In vanilla, buildings always face due north (0). Now you can customize it. @@ -1352,6 +1349,18 @@ StartFacing.Random= ; boolean, defaults to [General] -> BuildingSt Unlike the identically named INI flag in Tiberian Sun, this flag uses a 256-point circle rather than an 8-point circle. ``` +### DeployFire supports buildings + +- Building types now also support using `DeployFire` and `DeployFireWeapon`. + - If a building has other configurations such as `Factory`, `GapGenerator`, or `Passengers`, it will prioritize executing those deployment actions instead. + - `DeployFireDelay` specifies the frame interval at which deployed weapons attempt to fire. If the weapon is unavailable due to `ROF`, `CanTarget`, or other reasons, the deployed weapon will not fire. + +In `rulesmd.ini`: +```ini +[SOMEBUILDING] ; BuildingType, with DeployFire=yes +DeployFireDelay= ; integer, default value ranges from 14 to 16 +``` + ### Disable `DamageSound` - Now you can disable `DamageSound` of a building. @@ -2231,6 +2240,18 @@ JumpjetRotateOnCrash= ; boolean, default to [JumpjetControls] -> JumpjetRot This may subject to further changes. ``` +### Keep pursuing the target during ApproachTarget + +- Now you can make a unit approach its target with the target itself as the destination, just like ZEP, instead of a point on the arc around the target whose radius is the unit's own weapon range. + - If `ApproachTarget.StopWhenInRange` is set to `true`, the unit will stop as soon as the target enters its range and will not chase it further. + - `AttackMove.PursuitTarget` is read as a compatibility alias for `ApproachTarget.PursuitTarget`. + +In `rulesmd.ini`: +```ini +[SOMETECHNO] ; TechnoType +ApproachTarget.PursuitTarget= ; boolean, default to false +``` + ### Kill spawns on low power - `Powered=yes` structures that spawn aircraft like Aircraft Carriers will stop targeting the enemy if low power. @@ -2312,12 +2333,26 @@ In `rulesmd.ini`: RadarInvisibleToHouse= ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all), default to enemy if RadarInvisible=true, none otherwise ``` +### Stop immediately if the target enters the range during ApproachTarget + +- In vanilla, the ApproachTarget will simply exit and do nothing if the target is in range. This will cause your units to approach the target unnecessarily. Now you can change this behavior by the following flag. + - `AttackMove.StopWhenTargetAcquired` is read as a compatibility alias for `ApproachTarget.StopWhenInRange` (in both `[General]` and techno type sections). + +In `rulesmd.ini`: +```ini +[General] +ApproachTarget.StopWhenInRange=false ; boolean + +[SOMETECHNO] ; TechnoType +ApproachTarget.StopWhenInRange= ; boolean, default to [General] -> ApproachTarget.StopWhenInRange +``` + ### Subterranean unit travel height and speed - It is now possible to control the height at which units with subterranean (Tunnel) `Locomotor` travel, globally or per TechnoType. - Subterranean movement speed is now also customizable, both globally and per TechnoType. If per-TechnoType value is negative, global value is used. - - This does not affect the speed at which the unit moves vertically when burrowing which is determined by `Speed` multiplied by `[General] -> TunnelSpeed`. - This speed value uses the same algorithm as `Speed`. The global default value `7.5` in the INI block is an approximation of the converted value of the vanilla internal value `19` (`7.5 ≈ 19 * 100 / 256`). + - This does not affect the speed at which the unit moves vertically when burrowing which is determined by `Speed` multiplied by `[General] -> TunnelSpeed`. In `rulesmd.ini`: ```ini @@ -2607,7 +2642,7 @@ TypeSelectUseIFVMode=true ; boolean ### Customizing crushing tilt and slowdown -- Vehicles with `Crusher=true` and `OmniCrusher=true` / `MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles / walls respectively. This now obeys `TiltsWhenCrushes` but can be customized individually for these two scenarios using `TiltsWhenCrusher.Vehicles` and `TiltsWhenCrusher.Overlays`, which both default to `TiltsWhenCrushes`. +- Vehicles with `Crusher=true` and `OmniCrusher=true` / `MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles / walls respectively. This now obeys `TiltsWhenCrushes` but can be customized individually for these two scenarios using `TiltsWhenCrushes.Vehicles` and `TiltsWhenCrushes.Overlays`, which both default to `TiltsWhenCrushes`. - `CrushForwardTiltPerFrame` determines how much the forward tilt is adjusted per frame when crushing overlays or vehicles. Defaults to -0.02 for vehicles using Ship locomotor crushing overlays, -0.050000001 for all other cases. - `CrushOverlayExtraForwardTilt` is additional forward tilt applied after an overlay has been crushed by the vehicle. - It is possible to customize the movement speed slowdown when `MovementZone=CrusherAll` vehicle crushes walls by setting `CrushSlowdownMultiplier`. @@ -2877,20 +2912,6 @@ AllowDamageOnSelf=false ; boolean AllowDamageOnSelf= ; boolean, default to [General] -> AllowDamageOnSelf ``` -### Berzerk on allies - -- In vanilla, `Psychedelic` warheads is hardcoded to ignore allies' target. Now you can turn this off. - -In `rulesmd.ini`: -```ini -[CombatDamage] -AllowBerzerkOnAllies=false ; boolean -``` - -```{note} -No per-warhead setting because `AffectsAllies` etc. is respected. -``` - ### Berzerk (`Psychedelic`) duration stacking customization - By default `Psychedelic` warheads override the current duration of the berzerk effect regardless of if the new duration is higher or lower than the current one. This can now be customized with `Psychedelic.StackingMode`, with both global setting under `[CombatDamage]` and per-Warhead customization. diff --git a/docs/New-or-Enhanced-Logics.md b/docs/New-or-Enhanced-Logics.md index b6fb539452..73e74da50d 100644 --- a/docs/New-or-Enhanced-Logics.md +++ b/docs/New-or-Enhanced-Logics.md @@ -272,6 +272,8 @@ RadHasInvoker=false ; boolean ```{warning} Due to performance concerns, unless any radiation type has `RadApplicationDelay.Building` set to above 0, all functionality related to it is completely disabled in game. This decision is made at earliest available opportunity (at end of initial scenario start or after loading saved game) and will **not** update with further scenario changes or save game loadings during same game session. + +Similarly, unless you really have a need, `UseGlobalRadApplicationDelay` should remain `true`, because not doing so will be very resource-intensive. ``` ### Laser Trails @@ -675,28 +677,6 @@ Adjacent.Disallowed.ProhibitDistance=0 ; integer, cell offset NoBuildAreaOnBuildup=false ; boolean ``` -### Customize reveal radius of `RevealToAll` - -- In vanilla, `RevealToAll` is hardcoded to reveal area in radius is `Sight`. Now you can customize it. - -In `rulesmd.ini`: -```ini -[SOMEBUILDING] ; BuildingType -RevealToAll.Radius= ; integer, defaults to [BuildingType] -> Sight -``` - -### DeployFire supports - -- Building types now also support using `DeployFire` and `DeployFireWeapon`. - - If a building has other configurations such as `Factory`, `GapGenerator`, or `Passengers`, it will prioritize executing those deployment actions instead. - - `DeployFireDelay` specifies the frame interval at which deployed weapons attempt to fire. If the weapon is unavailable due to `ROF`, `CanTarget`, or other reasons, the deployed weapon will not fire. - -In `rulesmd.ini`: -```ini -[SOMEBUILDING] ; BuildingType, with DeployFire=yes -DeployFireDelay= ; integer, default value ranges from 14 to 16 -``` - ### Destroyable pathfinding obstacles - It is possible to make buildings be considered pathfinding obstacles that can be destroyed by setting `IsDestroyableBlockage` to true. What this does is make the building be considered impassable and impenetrable pathfinding obstacle to every unit that is not flying or have appropriate `MovementZone` (ones that allow destroyable obstacles to be overcome, e.g `(Infantry|Amphibious)Destroyer`) akin to wall overlays and TerrainTypes. diff --git a/docs/Whats-New.md b/docs/Whats-New.md index 5159dc69b0..5ed4613f13 100644 --- a/docs/Whats-New.md +++ b/docs/Whats-New.md @@ -21,7 +21,7 @@ You can use the migration utility (can be found on [Phobos supplementaries repo] - Translucent RLE SHPs will now be drawn using a more precise and performant algorithm that has no green tint and banding. Can be disabled with `rulesmd.ini -> [General] -> FixTransparencyBlitters=no`. - Iron Curtain status is now preserved by default when converting between TechnoTypes via `DeploysInto` / `UndeploysInto`. This behavior can be turned off per-TechnoType and global basis using `[TechnoType]/[CombatDamage] -> IronCurtain.KeptOnDeploy=no`. - The obsolete `[General] -> WarpIn` has been enabled for the default anim type when technos are warping in. If you want to restore the vanilla behavior, use the same anim type as `[General] -> WarpOut`. -- Vehicles with `Crusher=true` + `OmniCrusher=true` / `MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles / walls respectively. This now obeys `TiltsWhenCrushes` but can be customized individually for these two scenarios using `TiltsWhenCrusher.Vehicles` and `TiltsWhenCrusher.Overlays`, which both default to `TiltsWhenCrushes`. +- Vehicles with `Crusher=true` + `OmniCrusher=true` / `MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles / walls respectively. This now obeys `TiltsWhenCrushes` but can be customized individually for these two scenarios using `TiltsWhenCrushes.Vehicles` and `TiltsWhenCrushes.Overlays`, which both default to `TiltsWhenCrushes`. - The default direction for aircraft landing on an airfield will use the direction specified by `[AudioVisual] -> PoseDir=` instead of the building's direction, which can be reverted by setting `AircraftDockingDir.DefaultToPoseDir=false`. ## Breaking changes @@ -648,19 +648,18 @@ HideShakeEffects=false ; boolean - [Change target Owner on warhead impact](New-or-Enhanced-Logics.md#change-target-owner-on-impact) (by Fryone) - [New hotkey to select the units within the current screen that are captured by non-permanent mind-controller](User-Interface.md#select-captured-units) (by TaranDahl) - Separately define the global default values of TerrainTypes' `IsPassable` and `CanBeBuiltOn` based on `SpawnsTiberium` (by Noble_Fish) -- [Customize reveal radius of `RevealToAll`](New-or-Enhanced-Logics.md#customize-reveal-radius-of-revealtoall) (by NetsuNegi) +- [Customize reveal radius of `RevealToAll`](Fixed-or-Improved-Logics.md#customize-reveal-radius-of-revealtoall) (by NetsuNegi) - [Set sidebar tab by selecting factory](User-Interface.md#set-sidebar-tab-by-selecting-factory) (by Fryone) - [Customize whether aircraft is a cargo plane](Fixed-or-Improved-Logics.md#customize-whether-aircraft-is-a-cargo-plane) (by TaranDahl) - Keep Syringe open until the game exits (by 11EJDE11, ported from Vinifera, original by ZivDero & secsome) - [Drop crates on death](New-or-Enhanced-Logics.md#drop-crates-on-death) (by FS-21) - [`600` Configure Drop Crate](AI-Scripting-and-Mapping.md#configure-drop-crate) (by FS-21) -- [DeployFire supports buildings](New-or-Enhanced-Logics.md#deployfire-supports) (by FlyStar) -- `OmniFire` supports buildings with `Turret=yes` (by FlyStar) +- [`DeployFire` supports buildings](Fixed-or-Improved-Logics.md#deployfire-supports-buildings) (By FlyStar) - [Automatic conversion based on health](New-or-Enhanced-Logics.md#automatic-conversion-based-on-health) (by obsidianus) - Add `ammo`, `health`, `mission`, `landtype` and `sequence` conditions to `DiscardOn` (by Noble_Fish) - [Berzerk / `Psychedelic` duration stacking customization](Fixed-or-Improved-Logics.md#berzerk-psychedelic-duration-stacking-customization) (by Starkku) -- ScriptType action `Play speech` (by FS-21) -- SkipMapSelect Enhancement (by FlyStar) +- Restored the ScriptType action#24 `Play speech` from Tiberian Sun (by FS-21) +- [SkipMapSelect Enhancement](AI-Scripting-and-Mapping.md#skipmapselect-enhancement) (by FlyStar) - [Allow the unit to stop immediately if the target enters the range during ApproachTarget](Fixed-or-Improved-Logics.md#stop-immediately-if-the-target-enters-the-range-during-approachtarget) (by TaranDahl) - [Allow the unit to keep pursuing the target during ApproachTarget](Fixed-or-Improved-Logics.md#keep-pursuing-the-target-during-approachtarget) (by TaranDahl) - [Customize whether warhead can prevent crew escape from techno](New-or-Enhanced-Logics.md#customize-whether-warhead-can-prevent-crew-escape-from-techno) (by NetsuNegi) @@ -752,6 +751,7 @@ HideShakeEffects=false ; boolean - Fixed incorrect shadow rendering positions for non-Aircraft units with `Locomotor=Fly`, and for Aircraft units being dragged by warheads with `IsLocomotor=yes` (by NetsuNegi) - Fixed the issue that spawnee or slave would execute some player commands (by TaranDahl) - Fixed the bug that technos do not reset their link with the linked building when deactivated (by NetsuNegi) +- Fixed an issue where `OmniFire` was ineffective on buildings with `Turret=yes` (by FlyStar) - Fixed an issue where setting a production building as `Primary` could cause it to enter an unload state (by FlyStar) #### Phobos fixes: 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 e3e66e95f1..6ba8c0a2ff 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: 2026-08-01 18:48+0800\n" +"POT-Creation-Date: 2026-08-09 00:50+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -98,6 +98,9 @@ msgstr "" msgid "Fixed AI team recruitment inconsistency causing underfilled teams." msgstr "修复了 AI 小队招募数量与生产计划不一致导致不足以建立小队的问题。" +msgid "Restored the ScriptType action#24 `Play speech` from Tiberian Sun." +msgstr "复原了《泰伯利亚之日》中的动作脚本 `24 - 播放语音`。" + msgid "Dynamic Team Delays" msgstr "动态 `TeamDelays`" @@ -293,6 +296,30 @@ msgstr "在 `uimd.ini`:" msgid "In `RA2MD.INI`:" msgstr "在 `RA2MD.INI`:" +msgid "SkipMapSelect Enhancement" +msgstr "" +"`SkipMapSelect` 增强" + +msgid "" +"Using `SkipMapSelect=yes` in the map file allows you to bypass the " +"restriction in mapselmd.ini—which requires that the player's faction in " +"the current campaign must match the faction in the next new campaign." +msgstr "" +"在地图文件中使用 `SkipMapSelect=yes` 可以绕过 `mapselmd.ini` 中的限制——该限制要求当前战役中玩家所属的阵营必须与下一个新战役中的阵营一致。" + +msgid "" +"You can use `NextScenario` and `AltNextScenario` to specify the map names" +" required to enter a new campaign, thereby forcing the game to proceed to" +" the next campaign." +msgstr "" +"你可以使用 `NextScenario` 和 `AltNextScenario` 来指定进入新战役所需的地图名称强制游戏进入下一个战役。" + +msgid "" +"Now, setting a local variable named `` will also" +" trigger `AltNextScenario`." +msgstr "" +"现在启用一个名为 `` 的局部变量也可以触发 `AltNextScenario`。" + msgid "Script Actions" msgstr "动作脚本" @@ -1409,32 +1436,25 @@ msgid "Invalid for non-vehicle objects." msgstr "非载具类对象无效。" msgid "`600` Configure Drop Crate" -msgstr "" -"`600` 配置掉落箱子行为" +msgstr "`600` 配置掉落箱子行为" msgid "Set or overwrite the `DropCrate` of the affected objects." -msgstr "" -"设置或覆盖受影响对象的 `DropCrate`。" +msgstr "设置或覆盖受影响对象的 `DropCrate`。" msgid "Only functions when used as attached triggers within objects." -msgstr "" -"仅通过关联标签附加到对象上时生效。" +msgstr "仅通过关联标签附加到对象上时生效。" msgid "*Behaviour*" -msgstr "" -"*行为*" +msgstr "*行为*" msgid "Use default Techno settings" -msgstr "" -"使用单位的默认设置" +msgstr "使用单位的默认设置" msgid "Clear `DropCrate` type" -msgstr "" -"清除 `DropCrate` 类型" +msgstr "清除 `DropCrate` 类型" msgid "Overwrite `DropCrate` type" -msgstr "" -"覆盖 `DropCrate` 类型" +msgstr "覆盖 `DropCrate` 类型" msgid "`606` Edit Hate-Value" msgstr "`606` 编辑仇恨值" @@ -1495,6 +1515,20 @@ msgstr "" "若该值小于 0 则使用 `[General] -> TeamDelays` 的值,或遭遇战中通过 [动态 `TeamDelays`](AI-" "Scripting-and-Mapping.md#dynamic-team-delays) 设置的值" +msgid "`611` Set Next Scenario" +msgstr "" +"`611` 设置下一战役关卡" + +msgid "Set the next campaign to load after winning the current one." +msgstr "" +"设置当前战役胜利后加载的下一关战役关卡。" + +msgid "" +"Works only in `Campaign Mode` and requires setting `[Basic] -> " +"SkipMapSelect=yes`." +msgstr "" +"仅战役模式且存在 `[Basic] -> SkipMapSelect=yes` 时生生效。" + msgid "`800-802` Display Banner" msgstr "`800-802` 显示横幅" diff --git a/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po b/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po index a2e88d1a86..23f45b1289 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: 2026-08-01 18:48+0800\n" +"POT-Creation-Date: 2026-08-09 20:48+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -459,12 +459,10 @@ msgid "`Pips.HideIfNoStrength` and `SelfHealing.EnabledBy` additions for shields msgstr "护盾新增功能 `Pips.HideIfNoStrength` 与 `SelfHealing.EnabledBy`" msgid "Map Action 600 for overwriting DropCrate behaviour in attached Technos" -msgstr "" -"用于覆盖附着单位 `DropCrate` 行为的触发结果 600" +msgstr "用于覆盖附着单位 `DropCrate` 行为的触发结果 600" msgid "`DropCrate` for setting what crate drop when Techno is destroyed" -msgstr "" -"用于设置单位被摧毁时掉落哪种箱子的 `DropCrate`" +msgstr "用于设置单位被摧毁时掉落哪种箱子的 `DropCrate`" msgid "Warhead activation target health thresholds enhancements" msgstr "目标血量作为弹头生效条件的进一步改进" @@ -478,6 +476,9 @@ msgstr "联动超武" msgid "Unit & infantry auto-conversion on ammo change" msgstr "基于弹药量的自动变形" +msgid "Restore the ScriptType action#24 `Play speech` from Tiberian Sun" +msgstr "复原了《泰伯利亚之日》中的动作脚本 `24 - 播放语音`" + msgid "**Starkku**:" msgstr "**Starkku**:" @@ -907,6 +908,12 @@ msgstr "动画使用气候/地块色盘的开关" msgid "Tank Bunker improvements" msgstr "坦克碉堡改进" +msgid "`ProjectileRange` weapon range modifiers interaction fix" +msgstr "`ProjectileRange` 应用武器射程修正的交互修复" + +msgid "Berzerk duration stacking behaviour customization" +msgstr "狂暴/ `Psychedelic` 持续时间叠加的自定义" + msgid "**Morton (MortonPL)**:" msgstr "**Morton (MortonPL)**:" @@ -1346,6 +1353,22 @@ msgid "" "`EVAIndex` is no longer reset after load game" msgstr "`EVA.Tag` 已经支持在国家层面设置并且 `EVAIndex` 不再在读档后重置" +msgid "`DeployFire` supports buildings" +msgstr "`DeployFire` 支持建筑" + +msgid "" +"Fix an issue where `OmniFire` was ineffective on buildings with " +"`Turret=yes`" +msgstr "修复了 `OmniFire` 在 `Turret=yes` 的建筑上无效的问题" + +msgid "" +"Fix an issue where setting a production building as `Primary` could cause" +" it to enter an unload state" +msgstr "修复了设置一个生产建筑为 `主要` 时可能导致其进入卸载状态的问题" + +msgid "SkipMapSelect Enhancement" +msgstr "`SkipMapSelect` 增强" + msgid "**NetsuNegi**:" msgstr "**NetsuNegi**:" @@ -1848,8 +1871,7 @@ msgid "" " when deactivated" msgstr "修复了单位失灵时不会重置其与相链接建筑链接状态的 Bug" -msgid "" -"Customize whether warhead can prevent crew escape from techno" +msgid "Customize whether warhead can prevent crew escape from techno" msgstr "自定义弹头是否阻止生还者逃出" msgid "**Apollo** - Translucent SHP drawing patches" @@ -2486,6 +2508,11 @@ msgid "" "InitialPayload logic" msgstr "移除了禁止步兵使用初始载员逻辑的限制" +msgid "" +"Add `ammo`, `health`, `mission`, `landtype` and `sequence` conditions to " +"`DiscardOn`" +msgstr "为 `DiscardOn` 添加 `ammo`、`health`、`mission`、`landtype` 和 `sequence` 条件" + msgid "**Ollerus**:" msgstr "**Ollerus**:" @@ -2933,6 +2960,16 @@ msgstr "修正子机或奴隶会执行部分玩家指令的问题" msgid "Customize whether aircraft is a cargo plane" msgstr "自定义飞机是否是cargo plane" +msgid "" +"Allow the unit to stop immediately if the target enters the range during " +"ApproachTarget" +msgstr "" +"允许单位在接近目标期间若目标进入射程则立即停止" + +msgid "Allow the unit to keep pursuing the target during ApproachTarget" +msgstr "" +"允许单位在接近目标期间持续追踪目标" + msgid "**solar-III (凤九歌)**" msgstr "**solar-III(凤九歌)**" @@ -3138,3 +3175,6 @@ msgid "" "position is clamped to the visible area" msgstr "为 `BannerType` 添加了 `ClampToScreen` 标签以控制横幅位置是否被限制在可视化区域内" +msgid "**obsidianus** - Automatic conversion based on health" +msgstr "**obsidianus** - 自动根据血量变形" + 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 816d0d4b7d..f16987f8f9 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: 2026-07-31 10:01+0800\n" +"POT-Creation-Date: 2026-08-09 20:54+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1669,6 +1669,16 @@ msgid "" "building when deactivated." msgstr "修复了单位失灵时不会重置其与相链接建筑链接状态的 Bug。" +msgid "" +"Fixed an issue where `OmniFire` was ineffective on buildings with " +"`Turret=yes`." +msgstr "修复了 `OmniFire` 在 `Turret=yes` 的建筑上无效的问题。" + +msgid "" +"Fixed an issue where setting a production building as `Primary` could " +"cause it to enter an unload state." +msgstr "修复了设置一个生产建筑为 `主要` 时可能导致其进入卸载状态的问题。" + msgid "Fixes / interactions with other extensions" msgstr "修复或与其他扩展的交互" @@ -1922,8 +1932,15 @@ msgstr "修复了 Ares 的 EMP 不会使 AI 工厂暂停生产的问题。" msgid "" "Removed the restriction that prohibits InfantryTypes from using the " "InitialPayload logic." +msgstr "移除了禁止步兵使用初始载员逻辑的限制。" + +msgid "" +"`ProjectileRange` now has weapon range modifiers applied to it if greater" +" than 0 and unless `ProjectileRange.ApplyModifiers` is set to false on " +"the WeaponType." msgstr "" -"移除了禁止步兵使用初始载员逻辑的限制。" +"`ProjectileRange` 大于 0 时现在会应用武器射程修正,除非在武器上设置 " +"`ProjectileRange.ApplyModifiers` 为 false。" msgid "Newly added global settings" msgstr "新增的全局设定" @@ -1971,6 +1988,17 @@ msgstr "" msgid "`[General] -> AutoRemoveEarliestBeacon` controls this behavior." msgstr "`[General] -> AutoRemoveEarliestBeacon` 控制此行为。" +msgid "Berzerk on allies" +msgstr "友军狂暴效果" + +msgid "" +"In vanilla, `Psychedelic` warheads is hardcoded to ignore allies' target." +" Now you can turn this off." +msgstr "在原版中,`Psychedelic` 弹头硬编码忽略友军目标。现在你可以关闭这个。" + +msgid "No per-warhead setting because `AffectsAllies` etc. is respected." +msgstr "没有弹头微观语句,因为生效与否仍会遵守 `AffectsAllies` 等设置。" + msgid "Chrono sparkle animation customization & improvements" msgstr "超时空闪光动画的自定义与改进" @@ -2357,18 +2385,6 @@ msgstr "另一个硬编码行为是,当 AI 部署 MCV 时,它会将所有部 msgid "`[General] -> GatherWhenMCVDeploy` controls this behavior." msgstr "`[General] -> GatherWhenMCVDeploy` 控制这一行为。" -msgid "Stop immediately if the target enters the range during ApproachTarget" -msgstr "" - -msgid "" -"In vanilla, the ApproachTarget will simply exit and do nothing if the " -"target is in range. This will cause your units to approach the target " -"unnecessarily." -msgstr "" - -msgid "Now you can change this behavior by the following flag." -msgstr "" - msgid "Use 8-bit RGB parameters for `[ColorAdd]`" msgstr "为 `[ColorAdd]` 使用 8 位 RGB 参数" @@ -3452,6 +3468,14 @@ msgstr "" "Ares 的 [电池超武](https://ares-developers.github.io/Ares-" "docs/new/superweapons/types/battery.html) 不受此影响。" +msgid "Customize reveal radius of `RevealToAll`" +msgstr "自定义 `RevealToAll` 揭示范围" + +msgid "" +"In vanilla, `RevealToAll` is hardcoded to reveal area in radius is " +"`Sight`. Now you can customize it." +msgstr "在原版中,`RevealToAll` 硬编码揭示半径为 `Sight` 的区域。现在你可以自定义了。" + msgid "Customize the initial facing of buildings" msgstr "自定义建筑初始方向" @@ -3463,6 +3487,26 @@ msgid "" "256-point circle rather than an 8-point circle." msgstr "不同于《泰伯利亚之日》中的同名语句,此处语句使用 256 分圆而不是 8 分圆。" +msgid "DeployFire supports buildings" +msgstr "`DeployFire` 支持建筑" + +msgid "Building types now also support using `DeployFire` and `DeployFireWeapon`." +msgstr "现在建筑同样支持使用 `DeployFire` 和 `DeployFireWeapon`。" + +msgid "" +"If a building has other configurations such as `Factory`, `GapGenerator`," +" or `Passengers`, it will prioritize executing those deployment actions " +"instead." +msgstr "如果建筑拥有例如 `Factory`、`GapGenerator` 或 `Passengers` 的其他配置,它将优先执行这些部署动作。" + +msgid "" +"`DeployFireDelay` specifies the frame interval at which deployed weapons " +"attempt to fire. If the weapon is unavailable due to `ROF`, `CanTarget`, " +"or other reasons, the deployed weapon will not fire." +msgstr "" +"`DeployFireDelay` 指定部署武器尝试开火的帧间隔。如果由于 `ROF`、`CanTarget` " +"或其他原因导致武器不可用,部署武器同样不会开火。" + msgid "Disable `DamageSound`" msgstr "禁用 `DamageSound`" @@ -3700,7 +3744,8 @@ msgid "" "map file/editor support, see [Increased Overlay Limit](AI-Scripting-and-" "Mapping.md#increased-overlay-limit)." msgstr "" -"游戏现在支持超过 255 种不同的覆盖物,最多可达 65535 种。有关地图文件/编辑器的支持,见 [更高的覆盖物数量上限](AI-Scripting-and-Mapping.md#increased-overlay-limit)。" +"游戏现在支持超过 255 种不同的覆盖物,最多可达 65535 种。有关地图文件/编辑器的支持,见 [更高的覆盖物数量上限](AI-" +"Scripting-and-Mapping.md#increased-overlay-limit)。" msgid "`ZAdjust` for OverlayTypes" msgstr "覆盖物的 Z 深校正值" @@ -4790,6 +4835,29 @@ msgstr "即将坠毁的 Jumpjet 会开始不可控地改变其朝向,现在可 msgid "This may subject to further changes." msgstr "这可能会在未来进一步更改。" +msgid "Keep pursuing the target during ApproachTarget" +msgstr "" +"在接近目标期间持续追踪目标" + +msgid "" +"Now you can make a unit approach its target with the target itself as the" +" destination, just like ZEP, instead of a point on the arc around the " +"target whose radius is the unit's own weapon range." +msgstr "" +"现在你可以让一个单位以目标自身而不再是以目标为中心半径为自身武器射程的弧线上一点为目的地来接近目标,就像 `[ZEP]` 那样。" + +msgid "" +"If `ApproachTarget.StopWhenInRange` is set to `true`, the unit will stop " +"as soon as the target enters its range and will not chase it further." +msgstr "" +"如果 `ApproachTarget.StopWhenInRange` 设为 `true`,单位会在目标进入其射程后立即停止而不会继续追击。" + +msgid "" +"`AttackMove.PursuitTarget` is read as a compatibility alias for " +"`ApproachTarget.PursuitTarget`." +msgstr "" +"`AttackMove.PursuitTarget` 被读取为一个 `ApproachTarget.PursuitTarget` 的兼容别名。" + msgid "Kill spawns on low power" msgstr "断电时击杀子机" @@ -4931,6 +4999,24 @@ msgid "" "current player. Now you can change this behavior." msgstr "在原版游戏中 `RadarInvisible` 仅对当前非友军的玩家有效,现在你可以更改这一行为。" +msgid "Stop immediately if the target enters the range during ApproachTarget" +msgstr "" +"接近目标期间若目标进入射程则立即停止" + +msgid "" +"In vanilla, the ApproachTarget will simply exit and do nothing if the " +"target is in range. This will cause your units to approach the target " +"unnecessarily. Now you can change this behavior by the following flag." +msgstr "" +"在原版中,目标处于射程内时接近目标的处理会直接退出且什么也不做。这会导致你的单位不必要地接近目标。现在你可以使用下面的标签更改这一行为。" + +msgid "" +"`AttackMove.StopWhenTargetAcquired` is read as a compatibility alias for " +"`ApproachTarget.StopWhenInRange` (in both `[General]` and techno type " +"sections)." +msgstr "" +"`AttackMove.StopWhenTargetAcquired` 被读取为一个 `ApproachTarget.StopWhenInRange` 的兼容别名(`[General]` 和单位微观部分都是如此)。" + msgid "Subterranean unit travel height and speed" msgstr "潜地单位移动高度和速度" @@ -4940,19 +5026,24 @@ msgid "" msgstr "现在可以控制拥有潜地(Tunnel)`Locomotor` 的单位移动的高度,可以在全局和每个科技类型上定义。" msgid "" -"Subterranean movement speed is now also customizable, both globally and per TechnoType. If per-TechnoType value is negative, global value is used." -msgstr "" -"潜地移动速度现在也可以自定义,同样拥有全局和微观标签。如果微观标签的值为负数则使用全局值。" +"Subterranean movement speed is now also customizable, both globally and " +"per TechnoType. If per-TechnoType value is negative, global value is " +"used." +msgstr "潜地移动速度现在也可以自定义,同样拥有全局和微观标签。如果微观标签的值为负数则使用全局值。" msgid "" -"This does not affect the speed at which the unit moves vertically when burrowing which is determined by `Speed` multiplied by `[General] -> TunnelSpeed`." +"This speed value uses the same algorithm as `Speed`. The global default " +"value `7.5` in the INI block is an approximation of the converted value " +"of the vanilla internal value `19` (`7.5 ≈ 19 * 100 / 256`)." msgstr "" -"这不会影响单位在潜地时的垂直移动速度。该速度由 `Speed` * `[General] -> TunnelSpeed` 决定。" +"该速度值使用与 `Speed` 相同的算法,INI 块中的全局默认值 `7.5` 是原版程序内部值 `19` 换算值的近似(`7.5 ≈ 19 *" +" 100 / 256`)。" msgid "" -"This speed value uses the same algorithm as `Speed`. The global default value `7.5` in the INI block is an approximation of the converted value of the vanilla internal value `19` (`7.5 ≈ 19 * 100 / 256`)." -msgstr "" -"该速度值使用与 `Speed` 相同的算法,INI 块中的全局默认值 `7.5` 是原版程序内部值 `19` 换算值的近似(`7.5 ≈ 19 * 100 / 256`)。" +"This does not affect the speed at which the unit moves vertically when " +"burrowing which is determined by `Speed` multiplied by `[General] -> " +"TunnelSpeed`." +msgstr "这不会影响单位在潜地时的垂直移动速度。该速度由 `Speed` * `[General] -> TunnelSpeed` 决定。" msgid "" "`SubterraneanHeight` expects negative values to be used and may behave " @@ -5345,12 +5436,12 @@ msgid "" "`MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles /" " walls respectively. This now obeys `TiltsWhenCrushes` but can be " "customized individually for these two scenarios using " -"`TiltsWhenCrusher.Vehicles` and `TiltsWhenCrusher.Overlays`, which both " +"`TiltsWhenCrushes.Vehicles` and `TiltsWhenCrushes.Overlays`, which both " "default to `TiltsWhenCrushes`." msgstr "" "拥有 `Crusher=true` 和 `OmniCrusher=true` / `MovementZone=CrusherAll` " "的载具在碾压载具/围墙时原版被硬编码进行倾斜。现在这遵守 `TiltsWhenCrushes`,并且可以对 " -"`TiltsWhenCrusher.Vehicles` 和 `TiltsWhenCrusher.Overlays` " +"`TiltsWhenCrushes.Vehicles` 和 `TiltsWhenCrushes.Overlays` " "对两种情况分别进行定义,它们都默认为 `TiltsWhenCrushes`。" msgid "" @@ -5742,16 +5833,26 @@ msgid "" "belonging to same house as the firer, including itself." msgstr "注意尽管 `Psychedelic=true` 的效果与杀伤相关但由于其不会影响任何包括开火者在内所有与开火者同一所属的对象因此仍然无法生效。" -msgid "Berzerk on allies" -msgstr "友军狂暴效果" +msgid "Berzerk (`Psychedelic`) duration stacking customization" +msgstr "狂暴( `Psychedelic`)持续时间叠加的自定义" msgid "" -"In vanilla, `Psychedelic` warheads is hardcoded to ignore allies' target." -" Now you can turn this off." -msgstr "在原版中,`Psychedelic` 弹头硬编码忽略友军目标。现在你可以关闭这个。" +"By default `Psychedelic` warheads override the current duration of the " +"berzerk effect regardless of if the new duration is higher or lower than " +"the current one. This can now be customized with " +"`Psychedelic.StackingMode`, with both global setting under " +"`[CombatDamage]` and per-Warhead customization." +msgstr "" +"默认情况下 `Psychedelic` 弹头会覆盖狂暴效果的当前持续时间,无论新持续时间比当前值高还是低。现在这可以通过 " +"`Psychedelic.StackingMode` 自定义,既有 `[CombatDamage]` 下的全局设置,也有每个弹头的独立设置。" -msgid "No per-warhead setting because `AffectsAllies` etc. is respected." -msgstr "没有弹头微观语句,因为生效与否仍会遵守 `AffectsAllies` 等设置。" +msgid "" +"`min`/`subtract`/`multiply`/`divide` stacking mode will make berzerk " +"effect can't be applied on the target when there's not an existing one. " +"Pay attention to that when setting them as global default values." +msgstr "" +"`min`/`subtract`/`multiply`/`divide` " +"叠加模式将导致目标上不存在狂暴效果时无法对其施加狂暴效果。将它们设为全局默认值时请要注意这点。" msgid "Combat light customizations" msgstr "自定义战斗闪光" 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 9878b5d8fa..d073303cea 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: 2026-08-02 22:22+0800\n" +"POT-Creation-Date: 2026-08-09 00:50+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -151,6 +151,51 @@ msgstr "" msgid "`invokerdie`: Discard when the invoker of the effect is destroyed." msgstr "`invokerdie`:当 AE 的调用者被摧毁时弃用。" +msgid "" +"`ammo`: Discard when the ammo of the object the effect is attached to is " +"within the interval `[DiscardOn.Ammo.MinimumAmount, " +"DiscardOn.Ammo.MaximumAmount]` (set to `-1` to ignore either bound)." +msgstr "" +"`ammo`:当 AE 所附加对象的弹药处于 `[DiscardOn.Ammo.MinimumAmount, " +"DiscardOn.Ammo.MaximumAmount]` 区间时弃用(被设为 `-1` 的边界会被忽略)。" + +msgid "" +"`health`: Discard when the health percentage of the object the effect is " +"attached to is within the interval `(DiscardOn.Health.AbovePercent, " +"DiscardOn.Health.BelowPercent]` (set to `-1` to ignore either bound)." +msgstr "" +"`health`:当 AE 所附加对象的血量比例处于 `(DiscardOn.Health.AbovePercent, " +"DiscardOn.Health.BelowPercent]` 区间时弃用(被设为 `-1` 的边界会被忽略)。" + +msgid "" +"`mission`: Discard when the current mission of the object the effect is " +"attached to matches any one in the `DiscardOn.Missions` list (or " +"`DiscardOn.AIMissions` for AI-controlled objects, if set)." +msgstr "" +"`mission`:当 AE 所附加对象当前任务与 `DiscardOn.Missions`(对 AI 控制的对象来说是 " +"`DiscardOn.AIMissions`)列表中任意任务匹配时弃用。" + +msgid "" +"`landtype`: Discard when the land type of the cell where the object the " +"effect is attached to is currently located matches any land type in the " +"`DiscardOn.LandTypes` list." +msgstr "`landtype`:当 AE 所附加对象当前所在单元格的土地类型与 `DiscardOn.LandTypes` 列表中任意土地类型匹配时弃用。" + +msgid "" +"`sequence`: Discard when the infantry to which the effect is attached is " +"playing a sequence that matches any one in the `DiscardOn.Sequences` " +"list." +msgstr "`sequence`:当 AE 所附加步兵正在播放的序列与 `DiscardOn.Sequences` 列表中任意序列匹配时弃用。" + +msgid "" +"`DiscardOn.Sequences.Immediate` defines whether the `sequence` discard " +"condition triggers immediately while the infantry is playing a matching " +"sequence, or only when the infantry starts playing its next sequence " +"after finishing that sequence." +msgstr "" +"`DiscardOn.Sequences.Immediate` 定义了 `sequence` " +"丢弃条件是在步兵当前播放的序列与列表中的任意序列匹配时立即触发还是仅在步兵完成该序列后开始播放下一个序列时触发。" + msgid "" "`DiscardOn.MoveBasedOnDestination` defines whether to determine the " "movement state according to the presence or absence of a destination. It " @@ -348,14 +393,12 @@ msgstr "" msgid "" "`ArmorMultiplier.Chance` can be used to set the chance of whether the " "armor multiplier will take effect or not when taking damage." -msgstr "" -"`ArmorMultiplier.Chance` 可用于设置在受伤时护甲倍率生效的概率。" +msgstr "`ArmorMultiplier.Chance` 可用于设置在受伤时护甲倍率生效的概率。" msgid "" "`ArmorMultiplier.AffectsHouse` can be used to set which houses the armor " "multiplier will take effect." -msgstr "" -"`ArmorMultiplier.AffectsHouse` 可用于设置护甲倍率生效概率对哪些所属方生效。" +msgstr "`ArmorMultiplier.AffectsHouse` 可用于设置护甲倍率生效概率对哪些所属方生效。" msgid "" "`ArmorMultiplier.HitAnim` can be used to set the animation that'll be " @@ -364,7 +407,9 @@ msgid "" "`ArmorMultiplier.Chance` or `ArmorMultiplier.AffectsHouse` settings. If " "more than one animation is listed, a random one is selected." msgstr "" -"`ArmorMultiplier.HitAnim` 可用于设置在受伤时播放的动画。如果由于 `ArmorMultiplier.Allow/DisallowWarheads`、`ArmorMultiplier.Chance` 或 `ArmorMultiplier.AffectsHouse` 设置导致护甲倍率未生效则不显示该动画。如果列出了多个动画,则将随机选择一个。" +"`ArmorMultiplier.HitAnim` 可用于设置在受伤时播放的动画。如果由于 " +"`ArmorMultiplier.Allow/DisallowWarheads`、`ArmorMultiplier.Chance` 或 " +"`ArmorMultiplier.AffectsHouse` 设置导致护甲倍率未生效则不显示该动画。如果列出了多个动画,则将随机选择一个。" msgid "" "If `ROFMultiplier.ApplyOnCurrentTimer` is set to true, `ROFMultiplier` is" @@ -777,6 +822,9 @@ msgstr "" "的辐射类型否则与之相关的所有功能在游戏内都将被完全禁用。这在其最早的可用时机(地图初始场景启动结束或存档加载后)就会进行判定,并且 **不会** " "随着后续场景的改变或存档的加载而更新。" +msgid "Similarly, unless you really have a need, `UseGlobalRadApplicationDelay` should remain `true`, because not doing so will be very resource-intensive." +msgstr "同样地,除非你真的有需求,`UseGlobalRadApplicationDelay` 最好保持为 `true`,因为不这么做将非常占用资源。" + msgid "Laser Trails" msgstr "激光尾焰" @@ -1710,14 +1758,6 @@ msgid "" "displaying its buildup animation." msgstr "如果 `NoBuildAreaOnBuildup` 设为 true 则任何建筑类型都不能当其在播放建造动画时在其附近建造。" -msgid "Customize reveal radius of `RevealToAll`" -msgstr "自定义 `RevealToAll` 揭示范围" - -msgid "" -"In vanilla, `RevealToAll` is hardcoded to reveal area in radius is " -"`Sight`. Now you can customize it." -msgstr "在原版中,`RevealToAll` 硬编码揭示半径为 `Sight` 的区域。现在你可以自定义了。" - msgid "Destroyable pathfinding obstacles" msgstr "可摧毁的寻路障碍" @@ -3586,19 +3626,28 @@ msgid "Automatic conversion based on health" msgstr "自动根据血量变形" msgid "Units can now be converted into another unit by health percentage." -msgstr "单位可以现在可以基于HP变为其他单位" +msgstr "单位可以现在可以基于生命值百分比变为其他单位。" -msgid "`Convert.Health.AbovePercent` determines the minimal health percentage at which a unit converts automatically." -msgstr "`Convert.Health.AbovePercent`决定了触发单位自动变身的最小HP值" +msgid "" +"`Convert.Health.AbovePercent` determines the minimal health percentage at" +" which a unit converts automatically." +msgstr "`Convert.Health.AbovePercent` 决定了触发单位自动变身的最小生命值百分比。" -msgid "`Convert.Health.BelowPercent` determines the maximum health percentage at which a unit converts automatically." -msgstr "`Convert.Health.BelowPercent`决定了触发单位自动变身的最大HP值" +msgid "" +"`Convert.Health.BelowPercent` determines the maximum health percentage at" +" which a unit converts automatically." +msgstr "`Convert.Health.BelowPercent` 决定了触发单位自动变身的最大生命值百分比。" -msgid "`Convert.Health` 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 "`Convert.Health` 指定变身后的单位. 类型需要和原单位相同 (步兵 → 步兵, 载具 → 载具 或 飞机 → 飞机)" +msgid "" +"`Convert.Health` 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 "`Convert.Health` 指定变形成哪个新单位。该单位必须与原单位同属一类(载具变载具,步兵变步兵,战机变战机)。" -msgid "Setting a negative number will disable the HP check, and when both checks are disabled, conversion will not occur." -msgstr "设置为负值会关闭对应的HP检查,当两项检查都被关闭则不会触发变身." +msgid "" +"Setting a negative number will disable the HP check, and when both checks" +" are disabled, conversion will not occur." +msgstr "设置为负值会关闭对应的生命值检查,当两项检查都被关闭则不会触发变身。" msgid "Automatic passenger deletion" msgstr "自动删除乘客" @@ -5175,6 +5224,12 @@ msgid "" "the TechnoType." msgstr "若 `TiberiumEater.AnimMove` 设为 true 则动画会跟随单位移动。" +msgid "" +"If `TiberiumEater.UnderEMP` is set to true, the eating will be processed " +"when the TechnoType is under EMP or deactivated." +msgstr "" +"如果 `TiberiumEater.UnderEMP` 设为 true 则在单位受 EMP 影响或瘫痪时继续执行吃矿操作。" + msgid "Weapons fired on warping in / out" msgstr "武器在传送时开火" diff --git a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po index a680f6ab04..9c8d5f810c 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: 2026-08-02 22:22+0800\n" +"POT-Creation-Date: 2026-08-09 20:48+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -141,12 +141,12 @@ msgid "" "`MovementZone=CrusherAll` were hardcoded to tilt when crushing vehicles /" " walls respectively. This now obeys `TiltsWhenCrushes` but can be " "customized individually for these two scenarios using " -"`TiltsWhenCrusher.Vehicles` and `TiltsWhenCrusher.Overlays`, which both " +"`TiltsWhenCrushes.Vehicles` and `TiltsWhenCrushes.Overlays`, which both " "default to `TiltsWhenCrushes`." msgstr "" "拥有 `Crusher=true` 和 `OmniCrusher=true`/`MovementZone=CrusherAll` " "的载具类型硬编码在其碾压载具/围墙时会掀起而倾斜。现在此行为遵循 `TiltsWhenCrushes` 设置,但可以使用 " -"`TiltsWhenCrusher.Vehicles` 和 `TiltsWhenCrusher.Overlays` " +"`TiltsWhenCrushes.Vehicles` 和 `TiltsWhenCrushes.Overlays` " "分别定义这两种情况,它们都默认为 `TiltsWhenCrushes`。" msgid "" @@ -171,6 +171,14 @@ msgstr "这是一份用于让你只需替换新版本而无需了解你所跳过 msgid "Version TBD (develop branch nightly builds)" msgstr "待定版本(开发分支自动构建版本)" +msgid "" +"`ProjectileRange` (Ares feature) now has weapon range modifiers applied " +"to it if greater than 0 and unless `ProjectileRange.ApplyModifiers` is " +"set to false on the WeaponType." +msgstr "" +"`ProjectileRange`(Ares 功能)大于 0 时现在会应用武器射程修正,除非在武器上设置 " +"`ProjectileRange.ApplyModifiers` 为 false。" + msgid "" "`Splits.TargetCellRange` < 0 now applies special behaviour where the " "projectile does not consider nearby cells as additional targets if there " @@ -384,35 +392,29 @@ msgid "" "correctly set default values. The ones where fixing this issue changes " "behaviour are (old wrong default -> new fixed default):" msgstr "" -"某些 `Interceptor` 和 `PassengerDeletion` 相关语句没有正确默认值。修复该问题导致的行为变更如下(旧有错误默认值→修复后的新默认值):" +"某些 `Interceptor` 和 `PassengerDeletion` " +"相关语句没有正确默认值。修复该问题导致的行为变更如下(旧有错误默认值→修复后的新默认值):" msgid "`Interceptor.CanTargetHouses`: `none` -> `enemies`" -msgstr "" -"`Interceptor.CanTargetHouses`:`none`→`enemies`" +msgstr "`Interceptor.CanTargetHouses`:`none`→`enemies`" msgid "`PassengerDeletion.Rate.SizeMultiply`: `false` -> `true`" -msgstr "" -"`PassengerDeletion.Rate.SizeMultiply`:`false`→`true`" +msgstr "`PassengerDeletion.Rate.SizeMultiply`:`false`→`true`" msgid "`PassengerDeletion.CostMultiplier`: `0.0` -> `1.0`" -msgstr "" -"`PassengerDeletion.CostMultiplier`:`0.0`→`1.0`" +msgstr "`PassengerDeletion.CostMultiplier`:`0.0`→`1.0`" msgid "`PassengerDeletion.AllowedHouses`: `none` -> `all`" -msgstr "" -"`PassengerDeletion.AllowedHouses`:`none`→`all`" +msgstr "`PassengerDeletion.AllowedHouses`:`none`→`all`" msgid "`PassengerDeletion.SoylentMultiplier`: `0.0` -> `1.0`" -msgstr "" -"`PassengerDeletion.SoylentMultiplier`:`0.0`→`1.0`" +msgstr "`PassengerDeletion.SoylentMultiplier`:`0.0`→`1.0`" msgid "`PassengerDeletion.SoylentAllowedHouses`: `none` -> `enemies`" -msgstr "" -"`PassengerDeletion.SoylentAllowedHouses`:`none`→`enemies`" +msgstr "`PassengerDeletion.SoylentAllowedHouses`:`none`→`enemies`" msgid "`PassengerDeletion.DisplaySoylentOffset`: `none` -> `all`" -msgstr "" -"`PassengerDeletion.DisplaySoylentOffset`:`none`→`all`" +msgstr "`PassengerDeletion.DisplaySoylentOffset`:`none`→`all`" msgid "Changes compared to inter-version builds / pre-releases" msgstr "相较于版本间构建/预发布版本的更改" @@ -442,9 +444,13 @@ msgstr "" "Crit.AffectsAbovePercent`." msgid "" -"`AttackMove.StopWhenTargetAcquired` and `AttackMove.PursuitTarget` have been replaced by a new design; please use `ApproachTarget.StopWhenInRange`." +"`AttackMove.StopWhenTargetAcquired` and `AttackMove.PursuitTarget` have " +"been replaced by new designs; please use `ApproachTarget.StopWhenInRange`" +" and `ApproachTarget.PursuitTarget` instead. The old key is still read as" +" a compatibility alias." msgstr "" -"`AttackMove.StopWhenTargetAcquired` 与 `AttackMove.PursuitTarget` 已被新的设计替代,请使用 `ApproachTarget.StopWhenInRange`。" +"`AttackMove.StopWhenTargetAcquired` 与 `AttackMove.PursuitTarget` " +"已被新的设计替代,请使用 `ApproachTarget.StopWhenInRange`。" msgid "0.4" msgstr "0.4" @@ -1340,11 +1346,13 @@ msgid "" msgstr "添加了 `DebrisMinimums` 语句以将碎片数量控制在一定范围内(by CrimRecya)" msgid "" -"[Several attackmove related enhancement](New-or-Enhanced-Logics.md" -"#attack-move-behavior-when-target-acquired) (by TaranDahl)" +"[Attack move - follow](New-or-Enhanced-Logics.md#attack-move-follow) and " +"[attack move - without weapon](New-or-Enhanced-Logics.md#attack-move-" +"without-weapon) (by TaranDahl)" msgstr "" -"[几个移动攻击相关的增强](New-or-Enhanced-Logics.md#attack-move-behavior-when-target-" -"acquired)(by TaranDahl)" +"移动攻击 - 跟随 " +"和 [移动攻击 - 无武器单位](New-or-Enhanced-Logics.md#attack-move-without-weapon) " +"地下单位(by TaranDahl)" msgid "Ground line for select box (by NetsuNegi)" msgstr "为选择框添加了投影线(by NetsuNegi)" @@ -2351,10 +2359,10 @@ msgstr "" "Noble_Fish)" msgid "" -"[Customize reveal radius of `RevealToAll`](New-or-Enhanced-Logics.md" +"[Customize reveal radius of `RevealToAll`](Fixed-or-Improved-Logics.md" "#customize-reveal-radius-of-revealtoall) (by NetsuNegi)" msgstr "" -"[自定义 `RevealToAll` 揭示范围](New-or-Enhanced-Logics.md#customize-reveal-" +"[自定义 `RevealToAll` 揭示范围](Fixed-or-Improved-Logics.md#customize-reveal-" "radius-of-revealtoall)(by NetsuNegi)" msgid "" @@ -2389,9 +2397,67 @@ msgstr "" "FS-21)" msgid "" -"[Customize whether warhead can prevent crew escape from techno](New-or-Enhanced-Logics.md#customize-whether-warhead-can-prevent-crew-escape-from-techno) (by NetsuNegi)" +"[`DeployFire` supports buildings](Fixed-or-Improved-Logics.md#deployfire-" +"supports-buildings) (By FlyStar)" +msgstr "" +"[`DeployFire` 支持建筑](Fixed-or-Improved-Logics.md#deployfire-supports)(By " +"FlyStar)" + +msgid "" +"[Automatic conversion based on health](New-or-Enhanced-Logics.md" +"#automatic-conversion-based-on-health) (by obsidianus)" +msgstr "" +"[自动根据血量变形](New-or-Enhanced-Logics.md#automatic-conversion-based-on-" +"health)(by obsidianus)" + +msgid "" +"Add `ammo`, `health`, `mission`, `landtype` and `sequence` conditions to " +"`DiscardOn` (by Noble_Fish)" +msgstr "" +"为 `DiscardOn` 添加 `ammo`、`health`、`mission`、`landtype` 和 `sequence` 条件(by " +"Noble_Fish)" + +msgid "" +"[Berzerk / `Psychedelic` duration stacking customization](Fixed-or-" +"Improved-Logics.md#berzerk-psychedelic-duration-stacking-customization) " +"(by Starkku)" +msgstr "" +"[狂暴/ `Psychedelic` 持续时间叠加的自定义](Fixed-or-Improved-Logics.md#berzerk-" +"psychedelic-duration-stacking-customization) (by Starkku)" + +msgid "" +"Restored the ScriptType action#24 `Play speech` from Tiberian Sun (by " +"FS-21)" +msgstr "复原了《泰伯利亚之日》中的动作脚本 `24 - 播放语音`(by FS-21)" + +msgid "" +"[SkipMapSelect Enhancement](AI-Scripting-and-Mapping.md#skipmapselect-" +"enhancement) (by FlyStar)" +msgstr "" +"[`SkipMapSelect` 增强](AI-Scripting-and-Mapping.md#skipmapselect-" +"enhancement) (by FlyStar)" + +msgid "" +"[Allow the unit to stop immediately if the target enters the range during" +" ApproachTarget](Fixed-or-Improved-Logics.md#stop-immediately-if-the-" +"target-enters-the-range-during-approachtarget) (by TaranDahl)" +msgstr "" +"[允许单位在接近目标期间若目标进入射程则立即停止](Fixed-or-Improved-Logics.md#stop-immediately-if-the-target-enters-the-range-during-approachtarget)(by TaranDahl)" + +msgid "" +"[Allow the unit to keep pursuing the target during ApproachTarget](Fixed-" +"or-Improved-Logics.md#keep-pursuing-the-target-during-approachtarget) (by" +" TaranDahl)" +msgstr "" +"[允许单位在接近目标期间持续追踪目标](Fixed-or-Improved-Logics.md#keep-pursuing-the-target-during-approachtarget) (by TaranDahl)" + +msgid "" +"[Customize whether warhead can prevent crew escape from techno](New-or-" +"Enhanced-Logics.md#customize-whether-warhead-can-prevent-crew-escape-" +"from-techno) (by NetsuNegi)" msgstr "" -"[自定义弹头是否阻止生还者逃出](New-or-Enhanced-Logics.md#customize-whether-warhead-can-prevent-crew-escape-from-techno)(by NetsuNegi)" +"[自定义弹头是否阻止生还者逃出](New-or-Enhanced-Logics.md#customize-whether-warhead-can-" +"prevent-crew-escape-from-techno)(by NetsuNegi)" msgid "Vanilla fixes:" msgstr "原版问题修复:" @@ -2863,6 +2929,16 @@ msgid "" "building when deactivated (by NetsuNegi)" msgstr "修复了单位失灵时不会重置其与相链接建筑链接状态的 Bug(by NetsuNegi)" +msgid "" +"Fixed an issue where `OmniFire` was ineffective on buildings with " +"`Turret=yes` (by FlyStar)" +msgstr "修复了 `OmniFire` 在 `Turret=yes` 的建筑上无效的问题(by FlyStar)" + +msgid "" +"Fixed an issue where setting a production building as `Primary` could " +"cause it to enter an unload state (by FlyStar)" +msgstr "修复了设置一个生产建筑为 `主要` 时可能导致其进入卸载状态的问题(by FlyStar)" + msgid "Phobos fixes:" msgstr "Phobos 过往版本问题修复:" @@ -3058,8 +3134,7 @@ msgstr "修复降落方向设为超出 256 的值时不能正确换算的 Bug( msgid "" "Fixed a bug with some keys relating to `Interceptor` and " "`PassengerDeletion` not having correct default values (by Starkku)" -msgstr "" -"修复了某些 `Interceptor` 和 `PassengerDeletion` 相关语句没有正确默认值的 Bug(by Starkku)" +msgstr "修复了某些 `Interceptor` 和 `PassengerDeletion` 相关语句没有正确默认值的 Bug(by Starkku)" msgid "Fixes / interactions with other extensions:" msgstr "其他扩展引擎相关的修复/交互:" @@ -3238,6 +3313,14 @@ msgid "" "InitialPayload logic (by Noble_Fish)" msgstr "移除了禁止步兵使用初始载员逻辑的限制(by Noble_Fish)" +msgid "" +"`ProjectileRange` now has weapon range modifiers applied to it if greater" +" than 0 and unless `ProjectileRange.ApplyModifiers` is set to false on " +"the WeaponType (by Starkku)" +msgstr "" +"`ProjectileRange` 大于 0 时现在会应用武器射程修正,除非在武器上设置 " +"`ProjectileRange.ApplyModifiers` 为 false(by Starkku)" + msgid "0.4.0.3" msgstr "0.4.0.3"