combined MeleeHitEvent and ItemMeleeDamageEvent (#11628)

Co-authored-by: CommieFlowers <rasmus.cedergren@hotmail.com>
This commit is contained in:
rolfero
2022-11-03 13:01:08 +01:00
committed by GitHub
parent 6c834c5371
commit e3579c99f5
10 changed files with 32 additions and 53 deletions

View File

@@ -68,7 +68,8 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
if (!args.CanInteract || !args.CanAccess || component.HideFromExamine)
return;
var getDamage = new ItemMeleeDamageEvent(component.Damage);
var getDamage = new MeleeHitEvent(new List<EntityUid>(), args.User, component.Damage);
getDamage.IsHit = false;
RaiseLocalEvent(uid, getDamage);
var damageSpec = GetDamage(component);
@@ -140,11 +141,6 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
if (hitEvent.Handled)
return;
var itemDamage = new ItemMeleeDamageEvent(damage);
RaiseLocalEvent(component.Owner, itemDamage);
var modifiers = itemDamage.ModifiersList;
modifiers.AddRange(hitEvent.ModifiersList);
var targets = new List<EntityUid>(1)
{
ev.Target.Value
@@ -160,7 +156,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
// For stuff that cares about it being attacked.
RaiseLocalEvent(ev.Target.Value, new AttackedEvent(component.Owner, user, targetXform.Coordinates));
var modifiedDamage = DamageSpecifier.ApplyModifierSets(damage + hitEvent.BonusDamage + itemDamage.BonusDamage, hitEvent.ModifiersList);
var modifiedDamage = DamageSpecifier.ApplyModifierSets(damage + hitEvent.BonusDamage, hitEvent.ModifiersList);
var damageResult = _damageable.TryChangeDamage(ev.Target, modifiedDamage, origin:user);
if (damageResult != null && damageResult.Total > FixedPoint2.Zero)
@@ -251,11 +247,6 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
if (hitEvent.Handled)
return;
var itemDamage = new ItemMeleeDamageEvent(damage);
RaiseLocalEvent(component.Owner, itemDamage);
var modifiers = itemDamage.ModifiersList;
modifiers.AddRange(hitEvent.ModifiersList);
_interaction.DoContactInteraction(user, ev.Weapon);
// For stuff that cares about it being attacked.
@@ -270,7 +261,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
RaiseLocalEvent(target, new AttackedEvent(component.Owner, user, Transform(target).Coordinates));
}
var modifiedDamage = DamageSpecifier.ApplyModifierSets(damage + hitEvent.BonusDamage + itemDamage.BonusDamage, hitEvent.ModifiersList);
var modifiedDamage = DamageSpecifier.ApplyModifierSets(damage + hitEvent.BonusDamage, hitEvent.ModifiersList);
var appliedDamage = new DamageSpecifier();
foreach (var entity in targets)
@@ -555,6 +546,9 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
private void OnChemicalInjectorHit(EntityUid owner, MeleeChemicalInjectorComponent comp, MeleeHitEvent args)
{
if (!args.IsHit)
return;
if (!_solutions.TryGetSolution(owner, comp.Solution, out var solutionContainer))
return;