diff --git a/Content.Client/UserInterface/StatsWindow.xaml b/Content.Client/UserInterface/StatsWindow.xaml
index 9cda4e41c6..8a287b4aa7 100644
--- a/Content.Client/UserInterface/StatsWindow.xaml
+++ b/Content.Client/UserInterface/StatsWindow.xaml
@@ -5,7 +5,7 @@
-
+
diff --git a/Content.Server/UserInterface/StatValuesCommand.cs b/Content.Server/UserInterface/StatValuesCommand.cs
index d64984b574..263dfa8b9e 100644
--- a/Content.Server/UserInterface/StatValuesCommand.cs
+++ b/Content.Server/UserInterface/StatValuesCommand.cs
@@ -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 StructuralDamageType = "Structural";
+
private StatValuesEuiMessage GetMelee()
{
var values = new List();
var meleeName = _entManager.ComponentFactory.GetComponentName();
+ var increaseDamageName = _entManager.ComponentFactory.GetComponentName();
foreach (var proto in _proto.EnumeratePrototypes())
{
@@ -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()
+ Title = Loc.GetString("stat-melee-values"),
+ Headers = new List
{
- "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,
};
diff --git a/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs b/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs
index 86afe1897b..52b087c5b9 100644
--- a/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs
+++ b/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs
@@ -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!;
}
diff --git a/Resources/Locale/en-US/commands/stat-values-command.ftl b/Resources/Locale/en-US/commands/stat-values-command.ftl
index 67a211adab..16b365897c 100644
--- a/Resources/Locale/en-US/commands/stat-values-command.ftl
+++ b/Resources/Locale/en-US/commands/stat-values-command.ftl
@@ -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