| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using Content.Server.Antag.Mimic;
- using Content.Server.GameTicking.Rules;
- using Content.Server.GameTicking.Rules.Components;
- using Content.Shared.GameTicking.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);
- }
- }
- }
|