Fix two explosion bugs (#10909)

* Fix trigger LINQ error.

* divide by zero
This commit is contained in:
Leon Friedrich
2022-08-29 11:48:49 +12:00
committed by GitHub
parent 0ab4d832f5
commit de7bd0063a
2 changed files with 5 additions and 2 deletions

View File

@@ -158,7 +158,9 @@ public sealed partial class ExplosionSystem : EntitySystem
damagePerIntensity += value * Math.Max(0, ev.DamageCoefficient); damagePerIntensity += value * Math.Max(0, ev.DamageCoefficient);
} }
explosionTolerance[index] = (float) ((totalDamageTarget - damageable.TotalDamage) / damagePerIntensity); explosionTolerance[index] = damagePerIntensity > 0
? (float) ((totalDamageTarget - damageable.TotalDamage) / damagePerIntensity)
: float.MaxValue;
} }
return explosionTolerance; return explosionTolerance;

View File

@@ -126,7 +126,8 @@ namespace Content.Server.Explosion.EntitySystems
{ {
// Check if entity is bomb/mod. grenade/etc // Check if entity is bomb/mod. grenade/etc
if (_container.TryGetContainer(uid, "payload", out IContainer? container) && if (_container.TryGetContainer(uid, "payload", out IContainer? container) &&
TryComp(container.ContainedEntities.First(), out ChemicalPayloadComponent? chemicalPayloadComponent)) container.ContainedEntities.Count > 0 &&
TryComp(container.ContainedEntities[0], out ChemicalPayloadComponent? chemicalPayloadComponent))
{ {
// If a beaker is missing, the entity won't explode, so no reason to log it // If a beaker is missing, the entity won't explode, so no reason to log it
if (!TryComp(chemicalPayloadComponent?.BeakerSlotA.Item, out SolutionContainerManagerComponent? beakerA) || if (!TryComp(chemicalPayloadComponent?.BeakerSlotA.Item, out SolutionContainerManagerComponent? beakerA) ||