From 709b78080fbc523bf3c452fb847b052cffa48899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D1=80=D1=82?= <123451459+JustArt1m@users.noreply.github.com> Date: Wed, 19 Mar 2025 13:36:46 +0300 Subject: [PATCH] Weapon Sharpening System Update & Bread Slicing Fix (#915) * SharpeningUpdate * BreadSlicingFix Before that, bread slices could be cut endlessly into new bread slices. --------- Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com> --- .../Damage/Systems/DamageOtherOnHitSystem.cs | 17 ++++++++++++++--- .../EntitySystems/CP14SharpeningSystem.cs | 7 ++++++- .../Entities/Objects/Consumable/Food/dough.yml | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs b/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs index 2e4c30d697..19f6ff0b5e 100644 --- a/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs +++ b/Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs @@ -39,9 +39,15 @@ namespace Content.Server.Damage.Systems { //CrystallEdge Melee upgrade var damage = component.Damage; + var slashDamage = damage.DamageDict.GetValueOrDefault("Slash"); + var piercingDamage = damage.DamageDict.GetValueOrDefault("Piercing"); if (TryComp(uid, out var sharp)) - damage *= sharp.Sharpness; + { + damage.DamageDict["Slash"] = slashDamage * sharp.Sharpness; + damage.DamageDict["Piercing"] = piercingDamage * sharp.Sharpness; + damage.DamageDict["Blunt"] = (slashDamage + piercingDamage) / 2 * (1f - sharp.Sharpness); + } var dmg = _damageable.TryChangeDamage(args.Target, damage * _damageable.UniversalThrownDamageModifier, component.IgnoreResistances, origin: args.Component.Thrower); //CrystallEdge Melee upgrade end @@ -66,11 +72,16 @@ namespace Content.Server.Damage.Systems private void OnDamageExamine(EntityUid uid, DamageOtherOnHitComponent component, ref DamageExamineEvent args) { - //CP14 Sharpening damage apply var damage = component.Damage * _damageable.UniversalThrownDamageModifier; + var slashDamage = damage.DamageDict.GetValueOrDefault("Slash"); + var piercingDamage = damage.DamageDict.GetValueOrDefault("Piercing"); if (TryComp(uid, out var sharp)) - damage *= sharp.Sharpness; + { + damage.DamageDict["Slash"] = slashDamage * sharp.Sharpness; + damage.DamageDict["Piercing"] = piercingDamage * sharp.Sharpness; + damage.DamageDict["Blunt"] = (slashDamage + piercingDamage) / 2 * (1f - sharp.Sharpness); + } _damageExamine.AddDamageExamine(args.Message, damage, Loc.GetString("damage-throw")); //CP14 Sharpening damage apply end diff --git a/Content.Shared/_CP14/MeleeWeapon/EntitySystems/CP14SharpeningSystem.cs b/Content.Shared/_CP14/MeleeWeapon/EntitySystems/CP14SharpeningSystem.cs index dae5c81745..e5d58aeca3 100644 --- a/Content.Shared/_CP14/MeleeWeapon/EntitySystems/CP14SharpeningSystem.cs +++ b/Content.Shared/_CP14/MeleeWeapon/EntitySystems/CP14SharpeningSystem.cs @@ -127,7 +127,12 @@ public sealed class CP14SharpeningSystem : EntitySystem private void OnGetMeleeDamage(Entity sharpened, ref GetMeleeDamageEvent args) { - args.Damage *= sharpened.Comp.Sharpness; + var slashDamage = args.Damage.DamageDict.GetValueOrDefault("Slash"); + var piercingDamage = args.Damage.DamageDict.GetValueOrDefault("Piercing"); + + args.Damage.DamageDict["Slash"] = slashDamage * sharpened.Comp.Sharpness; + args.Damage.DamageDict["Piercing"] = piercingDamage * sharpened.Comp.Sharpness; + args.Damage.DamageDict["Blunt"] = (slashDamage + piercingDamage) / 2 * (1f - sharpened.Comp.Sharpness); } } diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/dough.yml b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/dough.yml index 933f03d169..33d2416c0f 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/dough.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/dough.yml @@ -59,7 +59,7 @@ - type: entity id: CP14FoodBreadSlice - parent: CP14FoodBread + parent: CP14FoodDoughMedium name: bread slice components: - type: Sprite