This commit is contained in:
Sir Warock 2026-05-10 11:43:47 +00:00 committed by GitHub
commit e703112f8b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 31 additions and 14 deletions

View File

@ -8,6 +8,7 @@ namespace Content.Shared.Armor;
/// <summary>
/// Used for clothing that reduces damage when worn.
/// </summary>
[AutoGenerateComponentState] // DeltaV - Give armor melee stamina resistance
[RegisterComponent, NetworkedComponent, Access(typeof(SharedArmorSystem))]
public sealed partial class ArmorComponent : Component
{
@ -30,11 +31,13 @@ public sealed partial class ArmorComponent : Component
[DataField]
public bool ShowArmorOnExamine = true;
// Start DeltaV - Give armor melee stamina resistance
/// <summary>
/// DeltaV - Gets the effective stamina melee damage coefficient, based on the armor's blunt protection.
/// </summary>
[ViewVariables]
public float StaminaMeleeDamageCoefficient => Modifiers.Coefficients.GetValueOrDefault("Blunt", 1.0f);
[DataField, AutoNetworkedField]
public float? StaminaMeleeDamageCoefficient;
// End DeltaV - Give armor melee stamina resistance
}
/// <summary>

View File

@ -25,8 +25,21 @@ public abstract class SharedArmorSystem : EntitySystem
SubscribeLocalEvent<ArmorComponent, InventoryRelayedEvent<DamageModifyEvent>>(OnDamageModify);
SubscribeLocalEvent<ArmorComponent, BorgModuleRelayedEvent<DamageModifyEvent>>(OnBorgDamageModify);
SubscribeLocalEvent<ArmorComponent, GetVerbsEvent<ExamineVerb>>(OnArmorVerbExamine);
SubscribeLocalEvent<ArmorComponent, MapInitEvent>(OnMapInit); // DeltaV - Give armor melee stamina resistance
}
// Start DeltaV - Give armor melee stamina resistance
private void OnMapInit(Entity<ArmorComponent> armor, ref MapInitEvent args)
{
if (armor.Comp.StaminaMeleeDamageCoefficient is not null)
return;
armor.Comp.StaminaMeleeDamageCoefficient = armor.Comp.Modifiers.Coefficients.GetValueOrDefault("Blunt", 1.0f);
Dirty(armor);
}
// End DeltaV - Give armor melee stamina resistance
/// <summary>
/// Get the total Damage reduction value of all equipment caught by the relay.
/// </summary>
@ -103,16 +116,16 @@ public abstract class SharedArmorSystem : EntitySystem
));
}
// Begin DeltaV Additions - Add melee stamina resistance information if it has any
if (!MathHelper.CloseTo(component.StaminaMeleeDamageCoefficient, 1.0f))
{
msg.PushNewline();
var reduction = (1 - component.StaminaMeleeDamageCoefficient) * 100;
msg.AddMarkupOrThrow(Loc.GetString("armor-stamina-melee-coefficient-value",
("value", MathF.Round(reduction, 1))
));
}
// End DeltaV
// Start DeltaV - Add melee stamina resistance information if it has any
if (component.StaminaMeleeDamageCoefficient == null || MathHelper.CloseTo(component.StaminaMeleeDamageCoefficient.Value, 1.0f))
return msg;
msg.PushNewline();
var reduction = (1 - component.StaminaMeleeDamageCoefficient) * 100;
msg.AddMarkupOrThrow(Loc.GetString("armor-stamina-melee-coefficient-value",
("value", MathF.Round(reduction.Value, 2))
));
// End DeltaV - Add melee stamina resistance information if it has any
return msg;
}

View File

@ -15,7 +15,7 @@ public sealed class StaminaMeleeResistanceSystem : EntitySystem
private void OnGetMeleeResistance(Entity<ArmorComponent> ent, ref InventoryRelayedEvent<BeforeStaminaDamageEvent> args)
{
if (args.Args.FromMelee)
args.Args.Value *= ent.Comp.StaminaMeleeDamageCoefficient;
if (args.Args.FromMelee && ent.Comp.StaminaMeleeDamageCoefficient.HasValue)
args.Args.Value *= ent.Comp.StaminaMeleeDamageCoefficient.Value;
}
}

View File

@ -171,6 +171,7 @@
Slash: 0.6
Piercing: 0.3
Heat: 0.9
staminaMeleeDamageCoefficient: 0.9 # DeltaV - Reduce Melee Stamina
- type: StaminaResistance # DeltaV
damageCoefficient: 0.6
- type: ExplosionResistance