]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix showvalue Ui for melee weapons (#38703)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Wed, 6 Aug 2025 22:01:49 +0000 (18:01 -0400)
committerGitHub <noreply@github.com>
Wed, 6 Aug 2025 22:01:49 +0000 (15:01 -0700)
Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
Content.Client/UserInterface/StatsWindow.xaml
Content.Server/UserInterface/StatValuesCommand.cs
Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs
Resources/Locale/en-US/commands/stat-values-command.ftl

index 9cda4e41c6f6cd19e4f8ec0ecac112fdb324f338..8a287b4aa77806cbd5f095b91cd5863407bcc85f 100644 (file)
@@ -5,7 +5,7 @@
         <ScrollContainer HorizontalExpand="True"
                          VerticalExpand="True"
                          SizeFlagsStretchRatio="6">
-            <GridContainer Name="Values"/>
+            <GridContainer Name="Values" HSeparationOverride="0" VSeparationOverride="15"/>
         </ScrollContainer>
     </BoxContainer>
 </DefaultWindow>
index d64984b5744ced3e118687ffd377801eaff2e155..263dfa8b9e96c49fa911cafa0fb3132cd0928891 100644 (file)
@@ -6,10 +6,12 @@ using Content.Server.EUI;
 using Content.Server.Item;
 using Content.Server.Power.Components;
 using Content.Shared.Administration;
+using Content.Shared.Damage.Prototypes;
 using Content.Shared.Item;
 using Content.Shared.Research.Prototypes;
 using Content.Shared.UserInterface;
 using Content.Shared.Weapons.Melee;
+using Content.Shared.Wieldable.Components;
 using Robust.Shared.Console;
 using Robust.Shared.Prototypes;
 
@@ -170,10 +172,13 @@ public sealed class StatValuesCommand : IConsoleCommand
         return state;
     }
 
+    private static readonly ProtoId<DamageTypePrototype> StructuralDamageType = "Structural";
+
     private StatValuesEuiMessage GetMelee()
     {
         var values = new List<string[]>();
         var meleeName = _entManager.ComponentFactory.GetComponentName<MeleeWeaponComponent>();
+        var increaseDamageName = _entManager.ComponentFactory.GetComponentName<IncreaseDamageOnWieldComponent>();
 
         foreach (var proto in _proto.EnumeratePrototypes<EntityPrototype>())
         {
@@ -186,26 +191,45 @@ public sealed class StatValuesCommand : IConsoleCommand
 
             var comp = (MeleeWeaponComponent) meleeComp.Component;
 
-            // TODO: Wielded damage
             // TODO: Esword damage
 
+            var structuralDamage = comp.Damage.DamageDict.GetValueOrDefault(StructuralDamageType);
+            var baseDamage = comp.Damage.GetTotal() - comp.Damage.DamageDict.GetValueOrDefault(StructuralDamageType);
+
+            var wieldedStructuralDamage = "-";
+            var wieldedDamage = "-";
+            if (proto.Components.TryGetValue(increaseDamageName, out var increaseDamageComp))
+            {
+                var comp2 = (IncreaseDamageOnWieldComponent) increaseDamageComp.Component;
+
+                wieldedStructuralDamage = (structuralDamage + comp2.BonusDamage.DamageDict.GetValueOrDefault(StructuralDamageType)).ToString();
+                wieldedDamage = (baseDamage + comp2.BonusDamage.GetTotal() - comp2.BonusDamage.DamageDict.GetValueOrDefault(StructuralDamageType)).ToString();
+            }
+
             values.Add(new[]
             {
                 proto.ID,
-                (comp.Damage.GetTotal() * comp.AttackRate).ToString(),
-                comp.AttackRate.ToString(CultureInfo.CurrentCulture),
-                comp.Damage.GetTotal().ToString(),
-                comp.Range.ToString(CultureInfo.CurrentCulture),
+                baseDamage.ToString(),
+                wieldedDamage,
+                comp.AttackRate.ToString("0.00", CultureInfo.CurrentCulture),
+                (comp.AttackRate * baseDamage).Float().ToString("0.00", CultureInfo.CurrentCulture),
+                structuralDamage.ToString(),
+                wieldedStructuralDamage,
             });
         }
 
-        var state = new StatValuesEuiMessage()
+        var state = new StatValuesEuiMessage
         {
-            Title = "Cargo sell prices",
-            Headers = new List<string>()
+            Title = Loc.GetString("stat-melee-values"),
+            Headers = new List<string>
             {
-                "ID",
-                "Price",
+                Loc.GetString("stat-melee-id"),
+                Loc.GetString("stat-melee-base-damage"),
+                Loc.GetString("stat-melee-wield-damage"),
+                Loc.GetString("stat-melee-attack-rate"),
+                Loc.GetString("stat-melee-dps"),
+                Loc.GetString("stat-melee-structural-damage"),
+                Loc.GetString("stat-melee-structural-wield-damage"),
             },
             Values = values,
         };
index 86afe1897b05f6b0fccfd4943fd11e3721063e06..52b087c5b96a0d37fdfe90d7893ec4395fb8d79a 100644 (file)
@@ -6,5 +6,6 @@ namespace Content.Shared.Wieldable.Components;
 public sealed partial class IncreaseDamageOnWieldComponent : Component
 {
     [DataField("damage", required: true)]
+    [Access(Other = AccessPermissions.ReadExecute)]
     public DamageSpecifier BonusDamage = default!;
 }
index 67a211adabe5e310be2aa9cf4ed0707cc6e46872..16b365897cc84658b3fa7d533c08c7b784556e75 100644 (file)
@@ -8,6 +8,16 @@ stat-cargo-values = Cargo sell prices
 stat-cargo-id = ID
 stat-cargo-price = Price
 
+# Melee
+stat-melee-values = Melee weapon damage
+stat-melee-id = ID
+stat-melee-base-damage = Base damage
+stat-melee-wield-damage = Wielded damage
+stat-melee-attack-rate = Attack rate
+stat-melee-dps = DPS
+stat-melee-structural-damage = Structure damage
+stat-melee-structural-wield-damage = Wielded structure damage
+
 # Lathe
 stat-lathe-values = Lathe sell prices
 stat-lathe-id = ID