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