Bomb suit explosion resistance (#15732)

This commit is contained in:
Slava0135
2023-05-03 08:23:07 +03:00
committed by GitHub
parent 372871c333
commit 2ab41e0f8c
6 changed files with 27 additions and 10 deletions

View File

@@ -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))
));
}
}