$"{ToPrettyString(user):actor} melee attacked (light) {ToPrettyString(target.Value):subject} using {ToPrettyString(meleeUid):tool} and dealt {damageResult.GetTotal():damage} damage");
}
- PlayHitSound(target.Value, user, GetHighestDamageSound(modifiedDamage, _protoManager), hitEvent.HitSoundOverride, component.HitSound);
- }
- else
- {
- if (hitEvent.HitSoundOverride != null)
- {
- Audio.PlayPredicted(hitEvent.HitSoundOverride, meleeUid, user);
- }
- else if (!GetDamage(meleeUid, user, component).Any() && component.HitSound != null)
- {
- Audio.PlayPredicted(component.HitSound, meleeUid, user);
- }
- else
- {
- Audio.PlayPredicted(component.NoDamageSound, meleeUid, user);
- }
}
+ PlayHitSound(target.Value, user, GetHighestDamageSound(modifiedDamage, _protoManager), hitEvent.HitSoundOverride, component.HitSound, component.NoDamageSound);
+
if (damageResult?.GetTotal() > FixedPoint2.Zero)
{
DoDamageEffect(targets, user, targetXform);
if (entities.Count != 0)
{
- if (appliedDamage.GetTotal() > FixedPoint2.Zero)
- {
- var target = entities.First();
- PlayHitSound(target, user, GetHighestDamageSound(appliedDamage, _protoManager), hitEvent.HitSoundOverride, component.HitSound);
- }
- else
- {
- if (hitEvent.HitSoundOverride != null)
- {
- Audio.PlayPredicted(hitEvent.HitSoundOverride, meleeUid, user);
- }
- else
- {
- Audio.PlayPredicted(component.NoDamageSound, meleeUid, user);
- }
- }
+ var target = entities.First();
+ PlayHitSound(target, user, GetHighestDamageSound(appliedDamage, _protoManager), hitEvent.HitSoundOverride, component.HitSound, component.NoDamageSound);
}
if (appliedDamage.GetTotal() > FixedPoint2.Zero)
return true;
}
- public void PlayHitSound(EntityUid target, EntityUid? user, string? type, SoundSpecifier? hitSoundOverride, SoundSpecifier? hitSound)
+ public void PlayHitSound(EntityUid target, EntityUid? user, string? type, SoundSpecifier? hitSoundOverride, SoundSpecifier? hitSound, SoundSpecifier? noDamageSound)
{
var playedSound = false;
Audio.PlayPredicted(hitSound, coords, user, AudioParams.Default.WithVariation(DamagePitchVariation));
playedSound = true;
}
+ else if (noDamageSound != null)
+ {
+ Audio.PlayPredicted(noDamageSound, coords, user, AudioParams.Default.WithVariation(DamagePitchVariation));
+ playedSound = true;
+ }
}
// Fallback to generic sounds.