Bomb suit explosion resistance (#15732)
This commit is contained in:
@@ -80,6 +80,8 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
|
||||
SubscribeLocalEvent<RoundRestartCleanupEvent>(OnReset);
|
||||
|
||||
SubscribeLocalEvent<ExplosionResistanceComponent, ArmorExamineEvent>(OnArmorExamine);
|
||||
|
||||
// Handled by ExplosionSystem.Processing.cs
|
||||
SubscribeLocalEvent<MapChangedEvent>(OnMapChanged);
|
||||
|
||||
@@ -93,7 +95,7 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
private void OnReset(RoundRestartCleanupEvent ev)
|
||||
{
|
||||
_explosionQueue.Clear();
|
||||
if (_activeExplosion !=null)
|
||||
if (_activeExplosion != null)
|
||||
QueueDel(_activeExplosion.VisualEnt);
|
||||
_activeExplosion = null;
|
||||
_nodeGroupSystem.PauseUpdating = false;
|
||||
@@ -111,8 +113,8 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
private void OnGetResistance(EntityUid uid, ExplosionResistanceComponent component, GetExplosionResistanceEvent args)
|
||||
{
|
||||
args.DamageCoefficient *= component.DamageCoefficient;
|
||||
if (component.Resistances.TryGetValue(args.ExplotionPrototype, out var resistance))
|
||||
args.DamageCoefficient *= resistance;
|
||||
if (component.Modifiers.TryGetValue(args.ExplotionPrototype, out var modifier))
|
||||
args.DamageCoefficient *= modifier;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -204,7 +206,7 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
return MathF.Cbrt(3 * totalIntensity / (slope * MathF.PI));
|
||||
}
|
||||
|
||||
return r0 * (MathF.Sqrt(12 * totalIntensity/ v0 - 3) / 6 + 0.5f);
|
||||
return r0 * (MathF.Sqrt(12 * totalIntensity / v0 - 3) / 6 + 0.5f);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -348,4 +350,12 @@ public sealed partial class ExplosionSystem : EntitySystem
|
||||
_recoilSystem.KickCamera(uid, -delta.Normalized * effect);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnArmorExamine(EntityUid uid, ExplosionResistanceComponent component, ref ArmorExamineEvent args)
|
||||
{
|
||||
args.Msg.PushNewline();
|
||||
args.Msg.AddMarkup(Loc.GetString("explosion-resistance-coefficient-value",
|
||||
("value", MathF.Round((1f - component.DamageCoefficient) * 100, 1))
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user