var comp = Comp<DamageableComponent>();
var damageType = Server.ResolveDependency<IPrototypeManager>().Index<DamageTypePrototype>("Blunt");
var damage = new DamageSpecifier(damageType, FixedPoint2.New(10));
- Assert.That(comp.Damage.Total, Is.EqualTo(FixedPoint2.Zero));
+ Assert.That(comp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero));
await Server.WaitPost(() => sys.TryChangeDamage(SEntMan.GetEntity(Target), damage, ignoreResistances: true));
await RunTicks(5);
- Assert.That(comp.Damage.Total, Is.GreaterThan(FixedPoint2.Zero));
+ Assert.That(comp.Damage.GetTotal(), Is.GreaterThan(FixedPoint2.Zero));
// Repair the entity
await Interact(Weld);
- Assert.That(comp.Damage.Total, Is.EqualTo(FixedPoint2.Zero));
+ Assert.That(comp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero));
// Validate that we can still deconstruct the entity (i.e., that welding deconstruction is not blocked).
await Interact(
Assert.That(damageResult, Is.Not.Null,
"Received null damageResult when attempting to damage restock box.");
- Assert.That((int) damageResult!.Total, Is.GreaterThan(0),
+ Assert.That((int) damageResult!.GetTotal(), Is.GreaterThan(0),
"Box damage result was not greater than 0.");
#pragma warning restore NUnit2045
});
}
/// <summary>
- /// Wake up if we take an instance of more than 2 damage.
+ /// Wake up on taking an instance of damage at least the value of WakeThreshold.
/// </summary>
private void OnDamageChanged(EntityUid uid, SleepingComponent component, DamageChangedEvent args)
{
if (!args.DamageIncreased || args.DamageDelta == null)
return;
- if (args.DamageDelta.Total >= component.WakeThreshold)
+ if (args.DamageDelta.GetTotal() >= component.WakeThreshold)
TryWaking(uid, component);
}
// Does the calculation of how much bleed rate should be added/removed, then applies it
var oldBleedAmount = component.BleedAmount;
- var total = bloodloss.Total;
+ var total = bloodloss.GetTotal();
var totalFloat = total.Float();
TryModifyBleedAmount(uid, totalFloat, component);
-using Content.Shared.Damage;
+using Content.Shared.Damage;
using Content.Shared.Damage.ForceSay;
using Content.Shared.FixedPoint;
using Content.Shared.Mobs;
private void OnDamageChanged(EntityUid uid, DamageForceSayComponent component, DamageChangedEvent args)
{
- if (args.DamageDelta == null || !args.DamageIncreased || args.DamageDelta.Total < component.DamageThreshold)
+ if (args.DamageDelta == null || !args.DamageIncreased || args.DamageDelta.GetTotal() < component.DamageThreshold)
return;
if (component.ValidDamageGroups != null)
// Log damage only for mobs. Useful for when people throw spears at each other, but also avoids log-spam when explosions send glass shards flying.
if (dmg != null && HasComp<MobStateComponent>(args.Target))
- _adminLogger.Add(LogType.ThrowHit, $"{ToPrettyString(args.Target):target} received {dmg.Total:damage} damage from collision");
+ _adminLogger.Add(LogType.ThrowHit, $"{ToPrettyString(args.Target):target} received {dmg.GetTotal():damage} damage from collision");
if (dmg is { Empty: false })
{
if (args.DamageDelta != null)
{
var damageTotal = args.Damageable.TotalDamage;
- var damageDelta = args.DamageDelta.Total;
+ var damageDelta = args.DamageDelta.GetTotal();
var msg = component.Type switch
{
-using Content.Server.NPC.HTN;
+using Content.Server.NPC.HTN;
using Content.Shared.Damage;
using Content.Shared.FixedPoint;
using Content.Shared.Mobs;
{
foreach (var key in component.LifetimeDamage.Keys)
{
- component.LifetimeDamage[key] -= args.DamageDelta.Total;
+ component.LifetimeDamage[key] -= args.DamageDelta.GetTotal();
}
return;
var source = GetKillSource(args.Origin);
var damage = component.LifetimeDamage.GetValueOrDefault(source);
- component.LifetimeDamage[source] = damage + args.DamageDelta.Total;
+ component.LifetimeDamage[source] = damage + args.DamageDelta.GetTotal();
}
private void OnMobStateChanged(EntityUid uid, KillTrackerComponent component, MobStateChangedEvent args)
var burnMsg = Loc.GetString("powered-light-component-burn-hand");
_popupSystem.PopupEntity(burnMsg, uid, userUid);
- _adminLogger.Add(LogType.Damaged, $"{ToPrettyString(args.User):user} burned their hand on {ToPrettyString(args.Target):target} and received {damage.Total:damage} damage");
+ _adminLogger.Add(LogType.Damaged, $"{ToPrettyString(args.User):user} burned their hand on {ToPrettyString(args.Target):target} and received {damage.GetTotal():damage} damage");
_audio.PlayEntity(light.BurnHandSound, Filter.Pvs(uid), uid, true);
args.Handled = true;
if (healed == null && healing.BloodlossModifier != 0)
return;
- var total = healed?.Total ?? FixedPoint2.Zero;
+ var total = healed?.GetTotal() ?? FixedPoint2.Zero;
// Re-verify that we can heal the damage.
{
if (TryComp<MeleeWeaponComponent>(targetUid, out var melee))
{
- return melee.Damage.Total.Float() * melee.AttackRate / 100f;
+ return melee.Damage.GetTotal().Float() * melee.AttackRate / 100f;
}
return 0f;
_adminLogger.Add(LogType.BulletHit,
HasComp<ActorComponent>(target) ? LogImpact.Extreme : LogImpact.High,
- $"Projectile {ToPrettyString(uid):projectile} shot by {ToPrettyString(component.Shooter!.Value):user} hit {otherName:target} and dealt {modifiedDamage.Total:damage} damage");
+ $"Projectile {ToPrettyString(uid):projectile} shot by {ToPrettyString(component.Shooter!.Value):user} hit {otherName:target} and dealt {modifiedDamage.GetTotal():damage} damage");
}
if (!deleted)
if (!HasComp<CorporealComponent>(uid) || args.DamageDelta == null)
return;
- var essenceDamage = args.DamageDelta.Total.Float() * component.DamageToEssenceCoefficient * -1;
+ var essenceDamage = args.DamageDelta.GetTotal().Float() * component.DamageToEssenceCoefficient * -1;
ChangeEssenceAmount(uid, essenceDamage, component);
}
values.Add(new[]
{
proto.ID,
- (comp.Damage.Total * comp.AttackRate).ToString(),
+ (comp.Damage.GetTotal() * comp.AttackRate).ToString(),
comp.AttackRate.ToString(CultureInfo.CurrentCulture),
- comp.Damage.Total.ToString(),
+ comp.Damage.GetTotal().ToString(),
comp.Range.ToString(CultureInfo.CurrentCulture),
});
}
component.DispenseOnHitChance == null || args.DamageDelta == null)
return;
- if (args.DamageIncreased && args.DamageDelta.Total >= component.DispenseOnHitThreshold &&
+ if (args.DamageIncreased && args.DamageDelta.GetTotal() >= component.DispenseOnHitThreshold &&
_random.Prob(component.DispenseOnHitChance.Value))
{
if (component.DispenseOnHitCooldown > 0f)
if (user != null)
{
Logs.Add(LogType.HitScanHit,
- $"{ToPrettyString(user.Value):user} hit {hitName:target} using hitscan and dealt {dmg.Total:damage} damage");
+ $"{ToPrettyString(user.Value):user} hit {hitName:target} using hitscan and dealt {dmg.GetTotal():damage} damage");
}
else
{
Logs.Add(LogType.HitScanHit,
- $"{hitName:target} hit by hitscan dealing {dmg.Total:damage} damage");
+ $"{hitName:target} hit by hitscan dealing {dmg.GetTotal():damage} damage");
}
}
}
// 3. Nothing
var playedSound = false;
- if (!forceWeaponSound && modifiedDamage != null && modifiedDamage.Total > 0 && TryComp<RangedDamageSoundComponent>(otherEntity, out var rangedSound))
+ if (!forceWeaponSound && modifiedDamage != null && modifiedDamage.GetTotal() > 0 && TryComp<RangedDamageSoundComponent>(otherEntity, out var rangedSound))
{
var type = SharedMeleeWeaponSystem.GetHighestDamageSound(modifiedDamage, ProtoManager);
[IncludeDataField(customTypeSerializer: typeof(DamageSpecifierDictionarySerializer), readOnly: true)]
public Dictionary<string, FixedPoint2> DamageDict { get; set; } = new();
- [JsonIgnore]
- [Obsolete("Use GetTotal()")]
- public FixedPoint2 Total => GetTotal();
-
/// <summary>
/// Returns a sum of the damage values.
/// </summary>
if (meleeUid == user)
{
AdminLogger.Add(LogType.MeleeHit, LogImpact.Medium,
- $"{ToPrettyString(user):actor} melee attacked (light) {ToPrettyString(target.Value):subject} using their hands and dealt {damageResult.Total:damage} damage");
+ $"{ToPrettyString(user):actor} melee attacked (light) {ToPrettyString(target.Value):subject} using their hands and dealt {damageResult.GetTotal():damage} damage");
}
else
{
AdminLogger.Add(LogType.MeleeHit, LogImpact.Medium,
- $"{ToPrettyString(user):actor} melee attacked (light) {ToPrettyString(target.Value):subject} using {ToPrettyString(meleeUid):tool} and dealt {damageResult.Total:damage} damage");
+ $"{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);
}
}
- if (damageResult?.Total > FixedPoint2.Zero)
+ if (damageResult?.GetTotal() > FixedPoint2.Zero)
{
DoDamageEffect(targets, user, targetXform);
}
else
{
AdminLogger.Add(LogType.MeleeHit, LogImpact.Medium,
- $"{ToPrettyString(user):actor} melee attacked (heavy) {ToPrettyString(entity):subject} using {ToPrettyString(meleeUid):tool} and dealt {damageResult.Total:damage} damage");
+ $"{ToPrettyString(user):actor} melee attacked (heavy) {ToPrettyString(entity):subject} using {ToPrettyString(meleeUid):tool} and dealt {damageResult.GetTotal():damage} damage");
}
}
}
// Check that it properly split up the groups into types
FixedPoint2 damage;
- Assert.That(damageSpec.Total, Is.EqualTo(FixedPoint2.New(8)));
+ Assert.That(damageSpec.GetTotal(), Is.EqualTo(FixedPoint2.New(8)));
Assert.That(damageSpec.DamageDict.TryGetValue("Blunt", out damage));
Assert.That(damage, Is.EqualTo(FixedPoint2.New(2)));
Assert.That(damageSpec.DamageDict.TryGetValue("Piercing", out damage));
// check that integer multiplication works
damageSpec = damageSpec * 2;
- Assert.That(damageSpec.Total, Is.EqualTo(FixedPoint2.New(16)));
+ Assert.That(damageSpec.GetTotal(), Is.EqualTo(FixedPoint2.New(16)));
Assert.That(damageSpec.DamageDict.TryGetValue("Blunt", out damage));
Assert.That(damage, Is.EqualTo(FixedPoint2.New(4)));
Assert.That(damageSpec.DamageDict.TryGetValue("Piercing", out damage));
Assert.That(damage, Is.EqualTo(FixedPoint2.New(4.4)));
Assert.That(damageSpec.DamageDict.TryGetValue("Radiation", out damage));
Assert.That(damage, Is.EqualTo(FixedPoint2.New(13.2)));
- Assert.That(damageSpec.Total, Is.EqualTo(FixedPoint2.New(8.8 + 8.8 + 4.4 + 13.2)));
+ Assert.That(damageSpec.GetTotal(), Is.EqualTo(FixedPoint2.New(8.8 + 8.8 + 4.4 + 13.2)));
// check that integer division works
damageSpec = damageSpec / 2;