Cleanup mimic event (#23705)
* Cleanup mimic event Now it won't be forced on dev map or mapping mode. * Minor cleanup
This commit is contained in:
37
Content.Server/Antag/MobReplacementRuleSystem.cs
Normal file
37
Content.Server/Antag/MobReplacementRuleSystem.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using Content.Server.Antag.Mimic;
|
||||
using Content.Server.GameTicking.Rules;
|
||||
using Content.Server.GameTicking.Rules.Components;
|
||||
using Content.Shared.VendingMachines;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.Antag;
|
||||
|
||||
public sealed class MobReplacementRuleSystem : GameRuleSystem<MobReplacementRuleComponent>
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
|
||||
protected override void Started(EntityUid uid, MobReplacementRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)
|
||||
{
|
||||
base.Started(uid, component, gameRule, args);
|
||||
|
||||
var query = AllEntityQuery<VendingMachineComponent, TransformComponent>();
|
||||
var spawns = new List<(EntityUid Entity, EntityCoordinates Coordinates)>();
|
||||
|
||||
while (query.MoveNext(out var vendingUid, out _, out var xform))
|
||||
{
|
||||
if (!_random.Prob(component.Chance))
|
||||
continue;
|
||||
|
||||
spawns.Add((vendingUid, xform.Coordinates));
|
||||
}
|
||||
|
||||
foreach (var entity in spawns)
|
||||
{
|
||||
var coordinates = entity.Coordinates;
|
||||
Del(entity.Entity);
|
||||
|
||||
Spawn(component.Proto, coordinates);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user