From e552736422d5d6898b8bfeac65815fa57c44dcc2 Mon Sep 17 00:00:00 2001 From: Sir Warock <67167466+SirWarock@users.noreply.github.com> Date: Sat, 20 Dec 2025 02:37:11 +0100 Subject: [PATCH] Shield QoL + buff (#41326) * Add Damage Examine to Shields * Make Repairs repeat when not fully repaired * Make some Shields repairable * Please the Grammar Gods --- .../en-US/blocking/blocking-examine.ftl | 14 ++++++++ .../Prototypes/Damage/examine_messages.yml | 12 +++++++ .../Entities/Objects/Shields/shields.yml | 33 +++++++++++++++---- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/Resources/Locale/en-US/blocking/blocking-examine.ftl b/Resources/Locale/en-US/blocking/blocking-examine.ftl index 8afc0ef08f..19cf58d4c3 100644 --- a/Resources/Locale/en-US/blocking/blocking-examine.ftl +++ b/Resources/Locale/en-US/blocking/blocking-examine.ftl @@ -4,3 +4,17 @@ blocking-examinable-verb-message = Examine the protection values. blocking-fraction = It blocks [color=lightblue]{$value}%[/color] of incoming damage and: blocking-coefficient-value = - It takes [color=lightblue]{$value}%[/color] of [color=yellow]{$type}[/color] damage. blocking-reduction-value = - It takes [color=lightblue]{$value}[/color] less [color=yellow]{$type}[/color] damage. + +# Shown when examining the shield. Each entry represents the shield's health condition +comp-shield-damaged-1 = It looks fully intact. +comp-shield-damaged-2 = It has a few scratches. +comp-shield-damaged-3 = It has a few small holes and divots. +comp-shield-damaged-4 = [color=yellow]It has several holes and bent parts.[/color] +comp-shield-damaged-5 = [color=orange]It has deep cracks, several holes and parts of it have broken off.[/color] +comp-shield-damaged-6 = [color=red]It's been extremely brutalized and is nearly falling apart.[/color] + +# Shown when examining the e-shield. Each entry represents the e-shield's health condition +comp-eshield-damaged-1 = It looks fully intact. +comp-eshield-damaged-2 = [color=yellow]The battery light is yellow.[/color] +comp-eshield-damaged-3 = [color=orange]The battery light is orange, the hardlight flickers.[/color] +comp-eshield-damaged-4 = [color=red]The battery light is red, the hardlight can barely stay alight.[/color] diff --git a/Resources/Prototypes/Damage/examine_messages.yml b/Resources/Prototypes/Damage/examine_messages.yml index 91f838a436..fe551902b0 100644 --- a/Resources/Prototypes/Damage/examine_messages.yml +++ b/Resources/Prototypes/Damage/examine_messages.yml @@ -3,3 +3,15 @@ values: prefix: comp-window-damaged- count: 6 + +- type: localizedDataset + id: ShieldMessages + values: + prefix: comp-shield-damaged- + count: 6 + +- type: localizedDataset + id: EnergyShieldMessages + values: + prefix: comp-eshield-damaged- + count: 4 diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml index 188f4892b6..c82debbfc9 100644 --- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml @@ -32,6 +32,8 @@ Heat: 1 - type: Damageable damageContainer: Shield + - type: ExaminableDamage + messages: ShieldMessages - type: Destructible thresholds: - trigger: @@ -60,11 +62,28 @@ - type: StaticPrice price: 100 +- type: entity + name: base repairable shield + parent: BaseShield + id: BaseRepairableShield + description: A repairable shield! + abstract: true + components: + - type: Repairable # Negative values represent healing + damage: + groups: + Brute: -60 # 20 of each Brute Type - 20% of a basic shield HP + types: + Heat: -20 + fuelCost: 10 # 1/2 of a Welder for a full repair + doAfterDelay: 5 + allowSelfRepair: false + #Security Shields - type: entity name: riot shield - parent: [ BaseShield, BaseSecurityContraband ] + parent: [ BaseRepairableShield, BaseSecurityContraband ] id: RiotShield description: A large tower shield. Good for controlling crowds. components: @@ -85,7 +104,7 @@ - type: entity name: laser shield - parent: [ BaseShield, BaseSecurityContraband ] + parent: [ BaseRepairableShield, BaseSecurityContraband ] id: RiotLaserShield description: A shield built for withstanding lasers, but not much else. components: @@ -105,7 +124,7 @@ - type: entity name: ballistic shield - parent: [ BaseShield, BaseSecurityContraband ] + parent: [ BaseRepairableShield, BaseSecurityContraband ] id: RiotBulletShield description: A shield built for protecting against ballistics, but not much else. components: @@ -234,7 +253,7 @@ - type: entity name: makeshift shield - parent: BaseShield + parent: BaseRepairableShield id: MakeshiftShield description: A rundown looking shield, not good for much. components: @@ -343,7 +362,7 @@ - type: entity name: clockwork shield - parent: BaseShield + parent: BaseRepairableShield id: ClockworkShield description: Ratvar oyrffrf lbh jvgu uvf cebgrpgvba. components: @@ -492,6 +511,8 @@ - type: Appearance - type: Damageable damageContainer: Shield + - type: ExaminableDamage + messages: EnergyShieldMessages - type: Destructible thresholds: - trigger: @@ -533,7 +554,7 @@ - type: entity name: telescopic shield - parent: BaseShield + parent: BaseRepairableShield id: TelescopicShield description: An advanced riot shield made of lightweight materials that collapses for easy storage. components: -- 2.52.0