From 0978e11a0fdf6dcb550f4bc7473eb708d28306e8 Mon Sep 17 00:00:00 2001 From: NetsuNegi39 Date: Thu, 6 Aug 2026 21:09:33 +0800 Subject: [PATCH 1/8] init --- CREDITS.md | 1 + docs/New-or-Enhanced-Logics.md | 8 +++++ docs/Whats-New.md | 1 + docs/locale/zh_CN/LC_MESSAGES/CREDITS.po | 4 +++ .../LC_MESSAGES/New-or-Enhanced-Logics.po | 4 +++ docs/locale/zh_CN/LC_MESSAGES/Whats-New.po | 5 +++ src/Ext/Techno/Body.cpp | 1 + src/Ext/Techno/Body.h | 3 ++ src/Ext/Techno/Hooks.ReceiveDamage.cpp | 3 ++ src/Ext/Techno/Hooks.cpp | 34 +++++++++++++++++++ src/Ext/WarheadType/Body.cpp | 4 +++ src/Ext/WarheadType/Body.h | 2 ++ 12 files changed, 70 insertions(+) diff --git a/CREDITS.md b/CREDITS.md index 4120d2999a..de88efd4bf 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -562,6 +562,7 @@ This page lists all the individual contributions to the project by their author. - Customize crash spin multiplier - Customize reveal radius of `RevealToAll` - Fix the bug that technos do not reset their link with the linked building when deactivated + - Customize whether warhead can prevent crew escape from techno - **Apollo** - Translucent SHP drawing patches - **ststl**: - Customizable `ShowTimer` priority of superweapons diff --git a/docs/New-or-Enhanced-Logics.md b/docs/New-or-Enhanced-Logics.md index a18296bab9..22050abc37 100644 --- a/docs/New-or-Enhanced-Logics.md +++ b/docs/New-or-Enhanced-Logics.md @@ -3289,6 +3289,14 @@ UnlimboDetonate.KeepSelected=true ; boolean `UnlimboDetonate` cannot be used in conjunction with `Parasite`. ``` +### Customize whether warhead can prevent crew escape from techno + +In `rulesmd.ini`: +```ini +[SOMEWARHEAD] ; WarheadType +PreventCrew=false ; boolean +``` + ## Weapons ### Allow Laser drawing position update diff --git a/docs/Whats-New.md b/docs/Whats-New.md index 929fbfad66..d59a862f5d 100644 --- a/docs/Whats-New.md +++ b/docs/Whats-New.md @@ -657,6 +657,7 @@ HideShakeEffects=false ; boolean - 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) +- Customize whether warhead can prevent crew escape from techno (by NetsuNegi) #### Vanilla fixes: - Fixed sidebar not updating queued unit numbers when adding or removing units when the production is on hold (by CrimRecya) diff --git a/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po b/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po index 751fddc91b..a2e88d1a86 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po +++ b/docs/locale/zh_CN/LC_MESSAGES/CREDITS.po @@ -1848,6 +1848,10 @@ msgid "" " when deactivated" msgstr "修复了单位失灵时不会重置其与相链接建筑链接状态的 Bug" +msgid "" +"Customize whether warhead can prevent crew escape from techno" +msgstr "自定义弹头是否阻止生还者逃出" + msgid "**Apollo** - Translucent SHP drawing patches" msgstr "**Apollo** - 半透明 SHP 绘制补丁" 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 65d2b46054..8cf1084103 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 @@ -6559,6 +6559,10 @@ msgstr "`UnlimboDetonate.KeepSelected` 允许单位进出 Limbo 状态前保留 msgid "`UnlimboDetonate` cannot be used in conjunction with `Parasite`." msgstr "`UnlimboDetonate` 不能与 `Parasite` 共用。" +msgid "" +"Customize whether warhead can prevent crew escape from techno" +msgstr "自定义弹头是否阻止生还者逃出" + msgid "Weapons" msgstr "武器" diff --git a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po index 9f29d7f7a5..2aa12b4777 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po +++ b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po @@ -2383,6 +2383,11 @@ msgstr "" "[`600` 配置掉落箱子行为](AI-Scripting-and-Mapping.md#configure-drop-crate)(by " "FS-21)" +msgid "" +"Customize whether warhead can prevent crew escape from techno (by NetsuNegi)" +msgstr "" +"自定义弹头是否阻止生还者逃出(by NetsuNegi)" + msgid "Vanilla fixes:" msgstr "原版问题修复:" diff --git a/src/Ext/Techno/Body.cpp b/src/Ext/Techno/Body.cpp index 0273fc42f3..4f96cec61c 100644 --- a/src/Ext/Techno/Body.cpp +++ b/src/Ext/Techno/Body.cpp @@ -1206,6 +1206,7 @@ void TechnoExt::Serialize(T& Stm) .Process(this->LastTargetCrd) .Process(this->LastTargetCrdClearTimer) .Process(this->ShouldBeDead) + .Process(this->PreventCrew) ; } diff --git a/src/Ext/Techno/Body.h b/src/Ext/Techno/Body.h index 9fad2304f5..d3476d01a6 100644 --- a/src/Ext/Techno/Body.h +++ b/src/Ext/Techno/Body.h @@ -86,6 +86,8 @@ class TechnoExt : public RadioExt, public Detach::Listener int DropCrate; // Drop crate on death, modified by map action Powerup DropCrateType; + bool PreventCrew; + TechnoExt(TechnoClass* OwnerObject) : RadioExt(OwnerObject) , TypeExtData { nullptr } , Shield {} @@ -134,6 +136,7 @@ class TechnoExt : public RadioExt, public Detach::Listener , ShouldBeDead { false } , DropCrate { -1 } , DropCrateType { Powerup::Money } + , PreventCrew { false } { } void OnEarlyUpdate(); diff --git a/src/Ext/Techno/Hooks.ReceiveDamage.cpp b/src/Ext/Techno/Hooks.ReceiveDamage.cpp index 1d2be6a02c..222eec3172 100644 --- a/src/Ext/Techno/Hooks.ReceiveDamage.cpp +++ b/src/Ext/Techno/Hooks.ReceiveDamage.cpp @@ -256,6 +256,9 @@ DEFINE_HOOK(0x702672, TechnoClass_ReceiveDamage_RevengeWeapon, 0x5) if (pSource) TechnoExt::ApplyRevengeWeapon(pThis, pSource, pWarhead); + if (WarheadTypeExt::Fetch(pWarhead)->PreventCrew) + TechnoExt::Fetch(pThis)->PreventCrew = true; + return 0; } diff --git a/src/Ext/Techno/Hooks.cpp b/src/Ext/Techno/Hooks.cpp index fdb073d74d..25b96d3405 100644 --- a/src/Ext/Techno/Hooks.cpp +++ b/src/Ext/Techno/Hooks.cpp @@ -2375,3 +2375,37 @@ void DeactivateTemp::TechnoClassFake::_Deactivate() } } DEFINE_FUNCTION_JUMP(LJMP, 0x70FC90, DeactivateTemp::TechnoClassFake::_Deactivate) + +#pragma region Crew + +namespace CrewTemp +{ + class TechnoClassFake final : public TechnoClass + { + int _GetCrewCount() const + { + const auto pThis = static_cast(this); + const auto pExt = TechnoExt::Fetch(pThis); + const auto GetCrewCount = reinterpret_cast(0x6F3950); + return pExt->PreventCrew ? 0 : GetCrewCount(pThis); + } + }; + + class BuildingClassFake final : public BuildingClass + { + int _GetCrewCount() const + { + const auto pThis = static_cast(this); + const auto pExt = TechnoExt::Fetch(pThis); + const auto GetCrewCount = reinterpret_cast(0x451330); + return pExt->PreventCrew ? 0 : GetCrewCount(pThis); + } + }; +} + +DEFINE_FUNCTION_JUMP(VTABLE, 0x7E2574, CrewTemp::TechnoClassFake::_GetCrewCount) // AircraftClass +DEFINE_FUNCTION_JUMP(VTABLE, 0x7EB328, CrewTemp::TechnoClassFake::_GetCrewCount) // InfantryClass +DEFINE_FUNCTION_JUMP(VTABLE, 0x7F5F40, CrewTemp::TechnoClassFake::_GetCrewCount) // UnitClass +DEFINE_FUNCTION_JUMP(VTABLE, 0x7E418C, CrewTemp::BuildingClassFake::_GetCrewCount) // BuildingClass + +#pragma endregion diff --git a/src/Ext/WarheadType/Body.cpp b/src/Ext/WarheadType/Body.cpp index 9226fc2fb7..21ce032230 100644 --- a/src/Ext/WarheadType/Body.cpp +++ b/src/Ext/WarheadType/Body.cpp @@ -445,6 +445,8 @@ void WarheadTypeExt::LoadFromINIFile(CCINIClass* const pINI) this->Psychedelic_StackingMode.Read(exINI, pSection, "Psychedelic.StackingMode"); + this->PreventCrew.Read(exINI, pSection, "PreventCrew"); + // Convert.From & Convert.To TypeConvertGroup::Parse(this->Convert_Pairs, exINI, pSection, AffectedHouse::All); @@ -793,6 +795,8 @@ void WarheadTypeExt::Serialize(T& Stm) .Process(this->Psychedelic_StackingMode) + .Process(this->PreventCrew) + // Ares tags .Process(this->AffectsEnemies) .Process(this->AffectsOwner) diff --git a/src/Ext/WarheadType/Body.h b/src/Ext/WarheadType/Body.h index 569a772fb6..17564b70cf 100644 --- a/src/Ext/WarheadType/Body.h +++ b/src/Ext/WarheadType/Body.h @@ -266,6 +266,8 @@ class WarheadTypeExt final : public AbstractTypeExt Nullable Psychedelic_StackingMode; + Valueable PreventCrew { false }; + // Ares tags // http://ares-developers.github.io/Ares-docs/new/warheads/general.html Valueable AffectsEnemies; From 9e321a87eb7d3490f04eefaa36ceaf59cbb85317 Mon Sep 17 00:00:00 2001 From: NetsuNegi39 Date: Fri, 7 Aug 2026 07:43:43 +0800 Subject: [PATCH 2/8] update YR++ --- YRpp | 2 +- src/Ext/Techno/Hooks.cpp | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/YRpp b/YRpp index 73d408fd53..d13ca812ce 160000 --- a/YRpp +++ b/YRpp @@ -1 +1 @@ -Subproject commit 73d408fd53312b2519609764760c6c030e1891aa +Subproject commit d13ca812ced13c9dad1bce4c34061d6786ddbfc2 diff --git a/src/Ext/Techno/Hooks.cpp b/src/Ext/Techno/Hooks.cpp index 25b96d3405..ff843cdf02 100644 --- a/src/Ext/Techno/Hooks.cpp +++ b/src/Ext/Techno/Hooks.cpp @@ -2386,8 +2386,7 @@ namespace CrewTemp { const auto pThis = static_cast(this); const auto pExt = TechnoExt::Fetch(pThis); - const auto GetCrewCount = reinterpret_cast(0x6F3950); - return pExt->PreventCrew ? 0 : GetCrewCount(pThis); + return pExt->PreventCrew ? 0 : pThis->TechnoClass::GetCrewCount(); } }; @@ -2397,8 +2396,7 @@ namespace CrewTemp { const auto pThis = static_cast(this); const auto pExt = TechnoExt::Fetch(pThis); - const auto GetCrewCount = reinterpret_cast(0x451330); - return pExt->PreventCrew ? 0 : GetCrewCount(pThis); + return pExt->PreventCrew ? 0 : pThis->BuildingClass::GetCrewCount(); } }; } From 701570ec7c33554d510b1e43544af45a79a4769a Mon Sep 17 00:00:00 2001 From: NetsuNegi39 Date: Fri, 7 Aug 2026 10:39:29 +0800 Subject: [PATCH 3/8] add `KillPassengers` --- docs/New-or-Enhanced-Logics.md | 1 + src/Ext/Techno/Hooks.ReceiveDamage.cpp | 7 ++++++- src/Ext/WarheadType/Body.cpp | 2 ++ src/Ext/WarheadType/Body.h | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/New-or-Enhanced-Logics.md b/docs/New-or-Enhanced-Logics.md index 22050abc37..f89cc5eaf7 100644 --- a/docs/New-or-Enhanced-Logics.md +++ b/docs/New-or-Enhanced-Logics.md @@ -3295,6 +3295,7 @@ In `rulesmd.ini`: ```ini [SOMEWARHEAD] ; WarheadType PreventCrew=false ; boolean +KillPassengers=false ; boolean ``` ## Weapons diff --git a/src/Ext/Techno/Hooks.ReceiveDamage.cpp b/src/Ext/Techno/Hooks.ReceiveDamage.cpp index 222eec3172..e6d1dff160 100644 --- a/src/Ext/Techno/Hooks.ReceiveDamage.cpp +++ b/src/Ext/Techno/Hooks.ReceiveDamage.cpp @@ -256,9 +256,14 @@ DEFINE_HOOK(0x702672, TechnoClass_ReceiveDamage_RevengeWeapon, 0x5) if (pSource) TechnoExt::ApplyRevengeWeapon(pThis, pSource, pWarhead); - if (WarheadTypeExt::Fetch(pWarhead)->PreventCrew) + const auto pWHExt = WarheadTypeExt::Fetch(pWarhead); + + if (pWHExt->PreventCrew) TechnoExt::Fetch(pThis)->PreventCrew = true; + if (pWHExt->KillPassengers) + pThis->KillPassengers(pSource); + return 0; } diff --git a/src/Ext/WarheadType/Body.cpp b/src/Ext/WarheadType/Body.cpp index 21ce032230..4ce7a9a38e 100644 --- a/src/Ext/WarheadType/Body.cpp +++ b/src/Ext/WarheadType/Body.cpp @@ -446,6 +446,7 @@ void WarheadTypeExt::LoadFromINIFile(CCINIClass* const pINI) this->Psychedelic_StackingMode.Read(exINI, pSection, "Psychedelic.StackingMode"); this->PreventCrew.Read(exINI, pSection, "PreventCrew"); + this->KillPassengers.Read(exINI, pSection, "KillPassengers"); // Convert.From & Convert.To TypeConvertGroup::Parse(this->Convert_Pairs, exINI, pSection, AffectedHouse::All); @@ -796,6 +797,7 @@ void WarheadTypeExt::Serialize(T& Stm) .Process(this->Psychedelic_StackingMode) .Process(this->PreventCrew) + .Process(this->KillPassengers) // Ares tags .Process(this->AffectsEnemies) diff --git a/src/Ext/WarheadType/Body.h b/src/Ext/WarheadType/Body.h index 17564b70cf..dc217904c4 100644 --- a/src/Ext/WarheadType/Body.h +++ b/src/Ext/WarheadType/Body.h @@ -267,6 +267,7 @@ class WarheadTypeExt final : public AbstractTypeExt Nullable Psychedelic_StackingMode; Valueable PreventCrew { false }; + Valueable KillPassengers { false }; // Ares tags // http://ares-developers.github.io/Ares-docs/new/warheads/general.html From 75a16e8d44139b87e8da3a209d8262848b276114 Mon Sep 17 00:00:00 2001 From: NetsuNegi39 Date: Fri, 7 Aug 2026 22:26:44 +0800 Subject: [PATCH 4/8] rename `KillPassengers` to `PreventPassengerEscape` --- src/Ext/Techno/Hooks.ReceiveDamage.cpp | 2 +- src/Ext/WarheadType/Body.cpp | 4 ++-- src/Ext/WarheadType/Body.h | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Ext/Techno/Hooks.ReceiveDamage.cpp b/src/Ext/Techno/Hooks.ReceiveDamage.cpp index e6d1dff160..5f1bf7d46c 100644 --- a/src/Ext/Techno/Hooks.ReceiveDamage.cpp +++ b/src/Ext/Techno/Hooks.ReceiveDamage.cpp @@ -261,7 +261,7 @@ DEFINE_HOOK(0x702672, TechnoClass_ReceiveDamage_RevengeWeapon, 0x5) if (pWHExt->PreventCrew) TechnoExt::Fetch(pThis)->PreventCrew = true; - if (pWHExt->KillPassengers) + if (pWHExt->PreventPassengerEscape) pThis->KillPassengers(pSource); return 0; diff --git a/src/Ext/WarheadType/Body.cpp b/src/Ext/WarheadType/Body.cpp index 4ce7a9a38e..b8ecd42527 100644 --- a/src/Ext/WarheadType/Body.cpp +++ b/src/Ext/WarheadType/Body.cpp @@ -446,7 +446,7 @@ void WarheadTypeExt::LoadFromINIFile(CCINIClass* const pINI) this->Psychedelic_StackingMode.Read(exINI, pSection, "Psychedelic.StackingMode"); this->PreventCrew.Read(exINI, pSection, "PreventCrew"); - this->KillPassengers.Read(exINI, pSection, "KillPassengers"); + this->PreventPassengerEscape.Read(exINI, pSection, "PreventPassengerEscape"); // Convert.From & Convert.To TypeConvertGroup::Parse(this->Convert_Pairs, exINI, pSection, AffectedHouse::All); @@ -797,7 +797,7 @@ void WarheadTypeExt::Serialize(T& Stm) .Process(this->Psychedelic_StackingMode) .Process(this->PreventCrew) - .Process(this->KillPassengers) + .Process(this->PreventPassengerEscape) // Ares tags .Process(this->AffectsEnemies) diff --git a/src/Ext/WarheadType/Body.h b/src/Ext/WarheadType/Body.h index dc217904c4..0d4f9ca149 100644 --- a/src/Ext/WarheadType/Body.h +++ b/src/Ext/WarheadType/Body.h @@ -266,8 +266,8 @@ class WarheadTypeExt final : public AbstractTypeExt Nullable Psychedelic_StackingMode; - Valueable PreventCrew { false }; - Valueable KillPassengers { false }; + Valueable PreventCrew; + Valueable PreventPassengerEscape; // Ares tags // http://ares-developers.github.io/Ares-docs/new/warheads/general.html @@ -559,6 +559,9 @@ class WarheadTypeExt final : public AbstractTypeExt , Taunt { false } , Psychedelic_StackingMode {} + + , PreventCrew { false } + , PreventPassengerEscape { false } { } void ApplyConvert(HouseClass* pHouse, TechnoClass* pTarget); From e3e99c4d0fdefbb329a08e288ebe6895e91b34bd Mon Sep 17 00:00:00 2001 From: NetsuNegi39 Date: Fri, 7 Aug 2026 22:55:34 +0800 Subject: [PATCH 5/8] add `PreventOccupantEscape` --- docs/New-or-Enhanced-Logics.md | 3 ++- src/Ext/Techno/Hooks.ReceiveDamage.cpp | 19 ++++++++++++++++++- src/Ext/WarheadType/Body.cpp | 2 ++ src/Ext/WarheadType/Body.h | 2 ++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/docs/New-or-Enhanced-Logics.md b/docs/New-or-Enhanced-Logics.md index f89cc5eaf7..22253f3517 100644 --- a/docs/New-or-Enhanced-Logics.md +++ b/docs/New-or-Enhanced-Logics.md @@ -3295,7 +3295,8 @@ In `rulesmd.ini`: ```ini [SOMEWARHEAD] ; WarheadType PreventCrew=false ; boolean -KillPassengers=false ; boolean +PreventPassengerEscape=false ; boolean +PreventOccupantEscape=false ; boolean ``` ## Weapons diff --git a/src/Ext/Techno/Hooks.ReceiveDamage.cpp b/src/Ext/Techno/Hooks.ReceiveDamage.cpp index 5f1bf7d46c..99e11f71c8 100644 --- a/src/Ext/Techno/Hooks.ReceiveDamage.cpp +++ b/src/Ext/Techno/Hooks.ReceiveDamage.cpp @@ -248,8 +248,8 @@ DEFINE_HOOK(0x702603, TechnoClass_ReceiveDamage_Explodes, 0x6) DEFINE_HOOK(0x702672, TechnoClass_ReceiveDamage_RevengeWeapon, 0x5) { GET(TechnoClass*, pThis, ESI); - GET_STACK(TechnoClass*, pSource, STACK_OFFSET(0xC4, 0x10)); GET_STACK(WarheadTypeClass*, pWarhead, STACK_OFFSET(0xC4, 0xC)); + GET_STACK(TechnoClass*, pSource, STACK_OFFSET(0xC4, 0x10)); TechnoExt::ApplyKillWeapon(pThis, pSource, pWarhead); @@ -267,6 +267,23 @@ DEFINE_HOOK(0x702672, TechnoClass_ReceiveDamage_RevengeWeapon, 0x5) return 0; } +DEFINE_HOOK(0x442635, BuildingClass_ReceiveDamage_PreventOccupantEscape, 0x6) +{ + enum { SkipClearOccupants = 0x442640 }; + + GET_STACK(WarheadTypeClass*, pWarhead, STACK_OFFSET(0x9C, 0xC)); + + if (WarheadTypeExt::Fetch(pWarhead)->PreventOccupantEscape) + { + GET(BuildingClass*, pThis, ESI); + GET_STACK(TechnoClass*, pSource, STACK_OFFSET(0x9C, 0x10)); + pThis->KillOccupants(pSource); + return SkipClearOccupants; + } + + return 0; +} + DEFINE_HOOK(0x518434, InfantryClass_ReceiveDamage_SkipDeathAnim, 0x7) { enum { SkipDeathAnim = 0x5185F1 }; diff --git a/src/Ext/WarheadType/Body.cpp b/src/Ext/WarheadType/Body.cpp index b8ecd42527..4f4c72a668 100644 --- a/src/Ext/WarheadType/Body.cpp +++ b/src/Ext/WarheadType/Body.cpp @@ -447,6 +447,7 @@ void WarheadTypeExt::LoadFromINIFile(CCINIClass* const pINI) this->PreventCrew.Read(exINI, pSection, "PreventCrew"); this->PreventPassengerEscape.Read(exINI, pSection, "PreventPassengerEscape"); + this->PreventOccupantEscape.Read(exINI, pSection, "PreventOccupantEscape"); // Convert.From & Convert.To TypeConvertGroup::Parse(this->Convert_Pairs, exINI, pSection, AffectedHouse::All); @@ -798,6 +799,7 @@ void WarheadTypeExt::Serialize(T& Stm) .Process(this->PreventCrew) .Process(this->PreventPassengerEscape) + .Process(this->PreventOccupantEscape) // Ares tags .Process(this->AffectsEnemies) diff --git a/src/Ext/WarheadType/Body.h b/src/Ext/WarheadType/Body.h index 0d4f9ca149..b9ceb2c112 100644 --- a/src/Ext/WarheadType/Body.h +++ b/src/Ext/WarheadType/Body.h @@ -268,6 +268,7 @@ class WarheadTypeExt final : public AbstractTypeExt Valueable PreventCrew; Valueable PreventPassengerEscape; + Valueable PreventOccupantEscape; // Ares tags // http://ares-developers.github.io/Ares-docs/new/warheads/general.html @@ -562,6 +563,7 @@ class WarheadTypeExt final : public AbstractTypeExt , PreventCrew { false } , PreventPassengerEscape { false } + , PreventOccupantEscape { false } { } void ApplyConvert(HouseClass* pHouse, TechnoClass* pTarget); From 451921c2e014768d163fcbfd219528e3010f6af8 Mon Sep 17 00:00:00 2001 From: Noble_Fish <1065703286@qq.com> Date: Sat, 8 Aug 2026 21:54:50 +0800 Subject: [PATCH 6/8] update --- docs/Whats-New.md | 1 + docs/locale/zh_CN/LC_MESSAGES/Whats-New.po | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/Whats-New.md b/docs/Whats-New.md index c994ccdcf9..f4e7dbde51 100644 --- a/docs/Whats-New.md +++ b/docs/Whats-New.md @@ -660,6 +660,7 @@ HideShakeEffects=false ; boolean - [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) +- [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) #### Vanilla fixes: - Fixed sidebar not updating queued unit numbers when adding or removing units when the production is on hold (by CrimRecya) diff --git a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po index 2aa12b4777..27ce772f5b 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po +++ b/docs/locale/zh_CN/LC_MESSAGES/Whats-New.po @@ -2384,9 +2384,9 @@ msgstr "" "FS-21)" msgid "" -"Customize whether warhead can prevent crew escape from techno (by NetsuNegi)" +"[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 "" -"自定义弹头是否阻止生还者逃出(by NetsuNegi)" +"[自定义弹头是否阻止生还者逃出](New-or-Enhanced-Logics.md#customize-whether-warhead-can-prevent-crew-escape-from-techno)(by NetsuNegi)" msgid "Vanilla fixes:" msgstr "原版问题修复:" From cb832c4ac123c59f1d43b7cde64cb61c419cf5b8 Mon Sep 17 00:00:00 2001 From: Noble_Fish <1065703286@qq.com> Date: Sat, 8 Aug 2026 22:02:39 +0800 Subject: [PATCH 7/8] update YRpp --- YRpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/YRpp b/YRpp index d13ca812ce..3d5e21f096 160000 --- a/YRpp +++ b/YRpp @@ -1 +1 @@ -Subproject commit d13ca812ced13c9dad1bce4c34061d6786ddbfc2 +Subproject commit 3d5e21f0964d89a6327ee67fd98c94739083e5c9 From 05965e0e09fd899eeae2f1f7cf1e5f76bfc92730 Mon Sep 17 00:00:00 2001 From: Coronia <2217891145@qq.com> Date: Sat, 8 Aug 2026 22:26:04 +0800 Subject: [PATCH 8/8] update YRpp --- YRpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/YRpp b/YRpp index 3d5e21f096..8531d82713 160000 --- a/YRpp +++ b/YRpp @@ -1 +1 @@ -Subproject commit 3d5e21f0964d89a6327ee67fd98c94739083e5c9 +Subproject commit 8531d82713dab0b2d3f1bd9bf24209474b49a69a