Fix showvalue Ui for melee weapons (#38703)

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
This commit is contained in:
Nemanja
2025-08-06 18:01:49 -04:00
committed by GitHub
parent dc3eb188cd
commit 66daa1e6db
4 changed files with 46 additions and 11 deletions

View 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,
};