Station event component and system tweaks (#28331)

* Make anomaly, artifact and gifts events announcement sound optional

* Requested changes + Added new "GameRuleAfterAddedEvent" for StationEventSystem

We need to call "Add" in "StationEventSystem" after others GameRule's in case if we need to change StationEventComponent variables.

* Fix margins

* Makes use of GameRuleComponent.Delay and remove station system handling of delays plus small cleanup

* Fix merge

---------

Co-authored-by: AJCM <AJCM@tutanota.com>
This commit is contained in:
MilenVolf 2024-06-01 23:34:58 +03:00 committed by deltanedas
parent 92fc8da526
commit 11f6eba901
15 changed files with 201 additions and 249 deletions

View File

@ -841,7 +841,7 @@ public sealed partial class ChatSystem : SharedChatSystem
recipients.Add(player, new ICChatRecipientData(-1, true));
}
RaiseLocalEvent(new ExpandICChatRecipientstEvent(source, voiceGetRange, recipients));
RaiseLocalEvent(new ExpandICChatRecipientsEvent(source, voiceGetRange, recipients));
return recipients;
}
@ -886,7 +886,7 @@ public sealed partial class ChatSystem : SharedChatSystem
/// This event is raised before chat messages are sent out to clients. This enables some systems to send the chat
/// messages to otherwise out-of view entities (e.g. for multiple viewports from cameras).
/// </summary>
public record ExpandICChatRecipientstEvent(EntityUid Source, float VoiceRange, Dictionary<ICommonSession, ChatSystem.ICChatRecipientData> Recipients)
public record ExpandICChatRecipientsEvent(EntityUid Source, float VoiceRange, Dictionary<ICommonSession, ChatSystem.ICChatRecipientData> Recipients)
{
}

View File

@ -24,6 +24,12 @@ public sealed partial class StationEventComponent : Component
[DataField]
public string? EndAnnouncement;
[DataField]
public Color StartAnnouncementColor = Color.Gold;
[DataField]
public Color EndAnnouncementColor = Color.Gold;
[DataField]
public SoundSpecifier? StartAudio;
@ -42,12 +48,6 @@ public sealed partial class StationEventComponent : Component
[DataField]
public int ReoccurrenceDelay = 30;
/// <summary>
/// How long after being added does the event start
/// </summary>
[DataField]
public TimeSpan StartDelay = TimeSpan.Zero;
/// <summary>
/// How long the event lasts.
/// </summary>
@ -75,13 +75,6 @@ public sealed partial class StationEventComponent : Component
[DataField]
public int? MaxOccurrences;
/// <summary>
/// When the station event starts.
/// </summary>
[DataField("startTime", customTypeSerializer: typeof(TimeOffsetSerializer))]
[AutoPausedField]
public TimeSpan StartTime;
/// <summary>
/// When the station event ends.
/// </summary>

View File

@ -11,11 +11,14 @@ public sealed class AnomalySpawnRule : StationEventSystem<AnomalySpawnRuleCompon
protected override void Added(EntityUid uid, AnomalySpawnRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args)
{
base.Added(uid, component, gameRule, args);
if (!TryComp<StationEventComponent>(uid, out var stationEvent))
return;
var str = Loc.GetString("anomaly-spawn-event-announcement",
("sighting", Loc.GetString($"anomaly-spawn-sighting-{RobustRandom.Next(1, 6)}")));
ChatSystem.DispatchGlobalAnnouncement(str, colorOverride: Color.FromHex("#18abf5"));
stationEvent.StartAnnouncement = str;
base.Added(uid, component, gameRule, args);
}
protected override void Started(EntityUid uid, AnomalySpawnRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)

View File

@ -1,3 +1,4 @@
using Content.Server.GameTicking.Components;
using Content.Server.StationEvents.Components;
using Content.Shared.GameTicking.Components;
using Robust.Shared.Random;
@ -8,11 +9,14 @@ public sealed class BluespaceArtifactRule : StationEventSystem<BluespaceArtifact
{
protected override void Added(EntityUid uid, BluespaceArtifactRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args)
{
base.Added(uid, component, gameRule, args);
if (!TryComp<StationEventComponent>(uid, out var stationEvent))
return;
var str = Loc.GetString("bluespace-artifact-event-announcement",
("sighting", Loc.GetString(RobustRandom.Pick(component.PossibleSighting))));
ChatSystem.DispatchGlobalAnnouncement(str, colorOverride: Color.FromHex("#18abf5"));
stationEvent.StartAnnouncement = str;
base.Added(uid, component, gameRule, args);
}
protected override void Started(EntityUid uid, BluespaceArtifactRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)

View File

@ -1,3 +1,4 @@
using Content.Server.GameTicking.Components;
using Content.Server.Power.Components;
using Content.Server.Power.EntitySystems;
using Content.Server.StationEvents.Components;
@ -13,10 +14,14 @@ public sealed class BreakerFlipRule : StationEventSystem<BreakerFlipRuleComponen
protected override void Added(EntityUid uid, BreakerFlipRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args)
{
base.Added(uid, component, gameRule, args);
if (!TryComp<StationEventComponent>(uid, out var stationEvent))
return;
var str = Loc.GetString("station-event-breaker-flip-announcement", ("data", Loc.GetString(Loc.GetString($"random-sentience-event-data-{RobustRandom.Next(1, 6)}"))));
ChatSystem.DispatchGlobalAnnouncement(str, playSound: false, colorOverride: Color.Gold);
stationEvent.StartAnnouncement = str;
base.Added(uid, component, gameRule, args);
}
protected override void Started(EntityUid uid, BreakerFlipRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)

View File

@ -17,11 +17,14 @@ public sealed class CargoGiftsRule : StationEventSystem<CargoGiftsRuleComponent>
protected override void Added(EntityUid uid, CargoGiftsRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args)
{
base.Added(uid, component, gameRule, args);
if (!TryComp<StationEventComponent>(uid, out var stationEvent))
return;
var str = Loc.GetString(component.Announce,
("sender", Loc.GetString(component.Sender)), ("description", Loc.GetString(component.Description)), ("dest", Loc.GetString(component.Dest)));
ChatSystem.DispatchGlobalAnnouncement(str, colorOverride: Color.FromHex("#18abf5"));
stationEvent.StartAnnouncement = str;
base.Added(uid, component, gameRule, args);
}
/// <summary>

View File

@ -2,7 +2,6 @@
using Content.Server.StationEvents.Components;
using Content.Shared.GameTicking.Components;
using JetBrains.Annotations;
using Robust.Shared.Player;
using Robust.Shared.Random;
namespace Content.Server.StationEvents.Events;
@ -14,15 +13,16 @@ public sealed class FalseAlarmRule : StationEventSystem<FalseAlarmRuleComponent>
protected override void Started(EntityUid uid, FalseAlarmRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args)
{
base.Started(uid, component, gameRule, args);
if (!TryComp<StationEventComponent>(uid, out var stationEvent))
return;
var allEv = _event.AllEvents().Select(p => p.Value).ToList();
var picked = RobustRandom.Pick(allEv);
if (picked.StartAnnouncement != null)
{
ChatSystem.DispatchGlobalAnnouncement(Loc.GetString(picked.StartAnnouncement), playSound: false, colorOverride: Color.Gold);
}
Audio.PlayGlobal(picked.StartAudio, Filter.Broadcast(), true);
stationEvent.StartAnnouncement = picked.StartAnnouncement;
stationEvent.StartAudio = picked.StartAudio;
stationEvent.StartAnnouncementColor = picked.StartAnnouncementColor;
base.Started(uid, component, gameRule, args);
}
}

View File

@ -29,10 +29,10 @@ namespace Content.Server.StationEvents.Events
component.LeakGas = RobustRandom.Pick(component.LeakableGases);
// Was 50-50 on using normal distribution.
var totalGas = RobustRandom.Next(component.MinimumGas, component.MaximumGas);
var startAfter = stationEvent.StartDelay;
component.MolesPerSecond = RobustRandom.Next(component.MinimumMolesPerSecond, component.MaximumMolesPerSecond);
stationEvent.EndTime = _timing.CurTime + TimeSpan.FromSeconds(totalGas / component.MolesPerSecond + startAfter.TotalSeconds);
if (gameRule.Delay is {} startAfter)
stationEvent.EndTime = _timing.CurTime + TimeSpan.FromSeconds(totalGas / component.MolesPerSecond + startAfter.Next(RobustRandom));
}
// Look technically if you wanted to guarantee a leak you'd do this in announcement but having the announcement

View File

@ -1,14 +1,11 @@
using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Chat.Systems;
using Content.Server.GameTicking.Rules;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Station.Systems;
using Content.Server.StationEvents.Components;
using Content.Shared.Database;
using Content.Shared.GameTicking.Components;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Map;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
@ -20,7 +17,6 @@ namespace Content.Server.StationEvents.Events;
public abstract class StationEventSystem<T> : GameRuleSystem<T> where T : IComponent
{
[Dependency] protected readonly IAdminLogManager AdminLogManager = default!;
[Dependency] protected readonly IMapManager MapManager = default!;
[Dependency] protected readonly IPrototypeManager PrototypeManager = default!;
[Dependency] protected readonly ChatSystem ChatSystem = default!;
[Dependency] protected readonly SharedAudioSystem Audio = default!;
@ -43,16 +39,12 @@ public abstract class StationEventSystem<T> : GameRuleSystem<T> where T : ICompo
if (!TryComp<StationEventComponent>(uid, out var stationEvent))
return;
AdminLogManager.Add(LogType.EventAnnounced, $"Event added / announced: {ToPrettyString(uid)}");
if (stationEvent.StartAnnouncement != null)
{
ChatSystem.DispatchGlobalAnnouncement(Loc.GetString(stationEvent.StartAnnouncement), playSound: false, colorOverride: Color.Gold);
}
ChatSystem.DispatchGlobalAnnouncement(Loc.GetString(stationEvent.StartAnnouncement), playSound: false, colorOverride: stationEvent.StartAnnouncementColor);
Audio.PlayGlobal(stationEvent.StartAudio, Filter.Broadcast(), true);
stationEvent.StartTime = Timing.CurTime + stationEvent.StartDelay;
}
/// <inheritdoc/>
@ -86,9 +78,7 @@ public abstract class StationEventSystem<T> : GameRuleSystem<T> where T : ICompo
AdminLogManager.Add(LogType.EventStopped, $"Event ended: {ToPrettyString(uid)}");
if (stationEvent.EndAnnouncement != null)
{
ChatSystem.DispatchGlobalAnnouncement(Loc.GetString(stationEvent.EndAnnouncement), playSound: false, colorOverride: Color.Gold);
}
ChatSystem.DispatchGlobalAnnouncement(Loc.GetString(stationEvent.EndAnnouncement), playSound: false, colorOverride: stationEvent.EndAnnouncementColor);
Audio.PlayGlobal(stationEvent.EndAudio, Filter.Broadcast(), true);
}
@ -108,11 +98,7 @@ public abstract class StationEventSystem<T> : GameRuleSystem<T> where T : ICompo
if (!GameTicker.IsGameRuleAdded(uid, ruleData))
continue;
if (!GameTicker.IsGameRuleActive(uid, ruleData) && Timing.CurTime >= stationEvent.StartTime)
{
GameTicker.StartGameRule(uid, ruleData);
}
else if (stationEvent.EndTime != null && Timing.CurTime >= stationEvent.EndTime && GameTicker.IsGameRuleActive(uid, ruleData))
if (stationEvent.EndTime != null && Timing.CurTime >= stationEvent.EndTime && GameTicker.IsGameRuleActive(uid, ruleData))
{
GameTicker.EndGameRule(uid, ruleData);
}

View File

@ -17,10 +17,10 @@ public sealed class SurveillanceCameraMicrophoneSystem : EntitySystem
SubscribeLocalEvent<SurveillanceCameraMicrophoneComponent, ComponentInit>(OnInit);
SubscribeLocalEvent<SurveillanceCameraMicrophoneComponent, ListenEvent>(RelayEntityMessage);
SubscribeLocalEvent<SurveillanceCameraMicrophoneComponent, ListenAttemptEvent>(CanListen);
SubscribeLocalEvent<ExpandICChatRecipientstEvent>(OnExpandRecipients);
SubscribeLocalEvent<ExpandICChatRecipientsEvent>(OnExpandRecipients);
}
private void OnExpandRecipients(ExpandICChatRecipientstEvent ev)
private void OnExpandRecipients(ExpandICChatRecipientsEvent ev)
{
var xformQuery = GetEntityQuery<TransformComponent>();
var sourceXform = Transform(ev.Source);

View File

@ -1,4 +1,4 @@
anomaly-spawn-event-announcement = Our readings have detected a dangerous interspacial anomaly. Please inform the research team of { $sighting }.
anomaly-spawn-event-announcement = Our readings have detected a dangerous interspacial anomaly. Please inform the research team about { $sighting }.
anomaly-spawn-sighting-1 = low pulsating sounds heard throughout the station
anomaly-spawn-sighting-2 = strange sources of light

View File

@ -1,7 +1,6 @@
- type: entity
id: XenoVents
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
startAnnouncement: station-event-xeno-vent-start-announcement
@ -33,7 +32,6 @@
- type: entity
id: MothroachSpawn
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
earliestStart: 15
@ -48,7 +46,6 @@
- type: entity
id: ListeningPost
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
earliestStart: 15
@ -101,7 +98,6 @@
- type: MidRoundAntagRule
#- type: entity
# noSpawn: true
# parent: BaseMidRoundAntag
# id: RatKingSpawn
# components:

View File

@ -1,15 +1,29 @@
- type: entity
id: CargoGiftsBase
parent: BaseGameRule
abstract: true
components:
- type: GameRule
delay:
min: 10
max: 10
- type: StationEvent
startColor: "#18abf5"
startAudio:
path: /Audio/Announcements/announce.ogg
- type: CargoGiftsRule
sender: cargo-gift-default-sender
- type: entity
id: GiftsPizzaPartySmall
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 5
startDelay: 10
duration: 120
earliestStart: 20
- type: CargoGiftsRule
description: cargo-gift-pizza-small
sender: cargo-gift-default-sender
dest: cargo-gift-dest-bar
gifts:
FoodPizza: 1 # 4 pizzas
@ -21,180 +35,162 @@
id: GiftsPizzaPartyLarge
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 2
startDelay: 10
duration: 240
earliestStart: 20
minimumPlayers: 40
- type: CargoGiftsRule
description: cargo-gift-pizza-large
sender: cargo-gift-default-sender
dest: cargo-gift-dest-bar
gifts:
FoodPizzaLarge: 1 # 16 pizzas
FoodBarSupply: 1
FoodSoftdrinksLarge: 1
- type: StationEvent
weight: 2
duration: 240
earliestStart: 20
minimumPlayers: 40
- type: CargoGiftsRule
description: cargo-gift-pizza-large
dest: cargo-gift-dest-bar
gifts:
FoodPizzaLarge: 1 # 16 pizzas
FoodBarSupply: 1
FoodSoftdrinksLarge: 1
- type: entity
id: GiftsEngineering
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 5
startDelay: 10
duration: 240
earliestStart: 30
minimumPlayers: 10
- type: CargoGiftsRule
description: cargo-gift-eng
sender: cargo-gift-default-sender
dest: cargo-gift-dest-eng
gifts:
EngineeringCableBulk: 1
AirlockKit: 1
MaterialSteel: 1
MaterialPlasteel: 1
MaterialGlass: 1
CrateVendingMachineRestockEngineering: 1
- type: StationEvent
weight: 5
duration: 240
earliestStart: 30
minimumPlayers: 10
- type: CargoGiftsRule
description: cargo-gift-eng
dest: cargo-gift-dest-eng
gifts:
EngineeringCableBulk: 1
AirlockKit: 1
MaterialSteel: 1
MaterialPlasteel: 1
MaterialGlass: 1
CrateVendingMachineRestockEngineering: 1
- type: entity
id: GiftsVendingRestock
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 4
startDelay: 10
duration: 120
minimumPlayers: 40
earliestStart: 30
- type: CargoGiftsRule
description: cargo-gift-vending
sender: cargo-gift-default-sender
dest: cargo-gift-dest-supp
gifts:
CrateVendingMachineRestockHotDrinks: 3
CrateVendingMachineRestockBooze: 1
CrateVendingMachineRestockNutriMax: 1
CrateVendingMachineRestockRobustSoftdrinks: 2
CrateVendingMachineRestockVendomat: 1
CrateVendingMachineRestockGetmoreChocolateCorp: 1
- type: StationEvent
weight: 4
duration: 120
minimumPlayers: 40
earliestStart: 30
- type: CargoGiftsRule
description: cargo-gift-vending
dest: cargo-gift-dest-supp
gifts:
CrateVendingMachineRestockHotDrinks: 3
CrateVendingMachineRestockBooze: 1
CrateVendingMachineRestockNutriMax: 1
CrateVendingMachineRestockRobustSoftdrinks: 2
CrateVendingMachineRestockVendomat: 1
CrateVendingMachineRestockGetmoreChocolateCorp: 1
- type: entity
id: GiftsJanitor
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 6
startDelay: 10
duration: 120
minimumPlayers: 30
earliestStart: 20
- type: CargoGiftsRule
description: cargo-gift-cleaning
sender: cargo-gift-default-sender
dest: cargo-gift-dest-janitor
gifts:
ServiceJanitorial: 2
ServiceLightsReplacement: 2
ServiceJanitorBiosuit: 1
- type: StationEvent
weight: 6
duration: 120
minimumPlayers: 30
earliestStart: 20
- type: CargoGiftsRule
description: cargo-gift-cleaning
dest: cargo-gift-dest-janitor
gifts:
ServiceJanitorial: 2
ServiceLightsReplacement: 2
ServiceJanitorBiosuit: 1
- type: entity
id: GiftsMedical
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 8
startDelay: 10
duration: 120
earliestStart: 20
minimumPlayers: 30
- type: CargoGiftsRule
description: cargo-gift-medical-supply
sender: cargo-gift-default-sender
dest: cargo-gift-dest-med
gifts:
MedicalSupplies: 1
MedicalChemistrySupplies: 1
EmergencyBruteKit: 1
EmergencyAdvancedKit: 1
MedicalBiosuit: 1
- type: StationEvent
weight: 8
duration: 120
earliestStart: 20
minimumPlayers: 30
- type: CargoGiftsRule
description: cargo-gift-medical-supply
dest: cargo-gift-dest-med
gifts:
MedicalSupplies: 1
MedicalChemistrySupplies: 1
EmergencyBruteKit: 1
EmergencyAdvancedKit: 1
MedicalBiosuit: 1
- type: entity
id: GiftsSpacingSupplies
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 4
startDelay: 10
duration: 120
earliestStart: 10
minimumPlayers: 40
- type: CargoGiftsRule
description: cargo-gift-space-protection
sender: cargo-gift-default-sender
dest: cargo-gift-dest-supp
gifts:
EmergencyInternalsLarge: 2
EmergencyInflatablewall: 1
EmergencyAdvancedKit: 1
MedicalBiosuit: 1
EmergencyO2Kit: 1
- type: StationEvent
weight: 4
duration: 120
earliestStart: 10
minimumPlayers: 40
- type: CargoGiftsRule
description: cargo-gift-space-protection
dest: cargo-gift-dest-supp
gifts:
EmergencyInternalsLarge: 2
EmergencyInflatablewall: 1
EmergencyAdvancedKit: 1
MedicalBiosuit: 1
EmergencyO2Kit: 1
- type: entity
id: GiftsFireProtection
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 4
startDelay: 10
duration: 120
earliestStart: 20
minimumPlayers: 40
- type: CargoGiftsRule
description: cargo-gift-fire-protection
sender: cargo-gift-default-sender
dest: cargo-gift-dest-supp
gifts:
EmergencyFire: 2
EmergencyBurnKit: 1
EmergencyBruteKit: 1
- type: StationEvent
weight: 4
duration: 120
earliestStart: 20
minimumPlayers: 40
- type: CargoGiftsRule
description: cargo-gift-fire-protection
dest: cargo-gift-dest-supp
gifts:
EmergencyFire: 2
EmergencyBurnKit: 1
EmergencyBruteKit: 1
- type: entity
id: GiftsSecurityGuns
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 3
startDelay: 10
duration: 120
earliestStart: 20
minimumPlayers: 50
- type: CargoGiftsRule
description: cargo-gift-security-guns
sender: cargo-gift-default-sender
dest: cargo-gift-dest-sec
gifts:
SecurityArmor: 3
ArmorySmg: 1
ArmoryShotgun: 1
ArmoryLaser: 1
- type: StationEvent
weight: 3
duration: 120
earliestStart: 20
minimumPlayers: 50
- type: CargoGiftsRule
description: cargo-gift-security-guns
dest: cargo-gift-dest-sec
gifts:
SecurityArmor: 3
ArmorySmg: 1
ArmoryShotgun: 1
ArmoryLaser: 1
- type: entity
id: GiftsSecurityRiot
parent: CargoGiftsBase
components:
- type: StationEvent
weight: 4
startDelay: 10
duration: 120
earliestStart: 20
minimumPlayers: 50
- type: CargoGiftsRule
description: cargo-gift-security-riot
sender: cargo-gift-default-sender
dest: cargo-gift-dest-sec
gifts:
SecurityRiot: 2
SecurityRestraints: 2
SecurityNonLethal: 2
- type: StationEvent
weight: 4
duration: 120
earliestStart: 20
minimumPlayers: 50
- type: CargoGiftsRule
description: cargo-gift-security-riot
dest: cargo-gift-dest-sec
gifts:
SecurityRiot: 2
SecurityRestraints: 2
SecurityNonLethal: 2

View File

@ -33,8 +33,11 @@
parent: BaseStationEventShortDelay
components:
- type: StationEvent
weight: 12 # DeltaV - was 10
startDelay: 30
startAnnouncementColor: "#18abf5"
startAudio:
path: /Audio/Announcements/announce.ogg
weight: 12 # DeltaV - was 8
startDelay: 30 # DeltaV
duration: 35
- type: AnomalySpawnRule
@ -42,9 +45,15 @@
id: BluespaceArtifact
parent: BaseStationEventShortDelay
components:
- type: GameRule
delay:
min: 30
max: 30
- type: StationEvent
weight: 5
startDelay: 30
startAnnouncementColor: "#18abf5"
startAudio:
path: /Audio/Announcements/announce.ogg
weight: 8
duration: 35
- type: BluespaceArtifactRule
@ -213,10 +222,7 @@
startAudio:
path: /Audio/Announcements/gas_leak.ogg # DeltaV - custom announcer
endAnnouncement: station-event-gas-leak-end-announcement
earliestStart: 10
minimumPlayers: 5
weight: 10
startDelay: 20
weight: 10 # DeltaV - was 8
- type: GasLeakRule
- type: entity
@ -226,8 +232,7 @@
- type: StationEvent
earliestStart: 15
minimumPlayers: 10 # DeltaV - Was 15
weight: 5
startDelay: 50
weight: 5 # DeltaV - was 7
duration: 240
- type: KudzuGrowthRule
@ -246,7 +251,6 @@
params:
volume: -4
duration: null #ending is handled by MeteorSwarmRule
startDelay: 30
- type: MeteorSwarmRule
- type: entity
@ -257,10 +261,8 @@
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
startDelay: 10
earliestStart: 20 #DeltaV - was 30
minimumPlayers: 25 #DeltaV - was 30
weight: 5
earliestStart: 20 #DeltaV - was 15
weight: 5 # DeltaV - was 6
duration: 50
- type: VentCrittersRule
entries:
@ -309,8 +311,7 @@
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
startDelay: 10
weight: 5
weight: 5 # DeltaV - was 6
duration: 50
- type: VentCrittersRule
entries:
@ -331,7 +332,6 @@
path: /Audio/Announcements/power_off.ogg
params:
volume: -4
startDelay: 24
duration: 60
maxDuration: 120
- type: PowerGridCheckRule
@ -375,7 +375,6 @@
earliestStart: 20 # DeltaV - was 15
minimumPlayers: 15
weight: 7.5 # DeltaV - was 5
startDelay: 50
duration: 60
- type: VentClogRule
@ -387,30 +386,6 @@
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
startDelay: 10
earliestStart: 15
minimumPlayers: 15
weight: 5
duration: 60
- type: VentCrittersRule
entries:
- id: MobMouse
prob: 0.02
- id: MobMouse1
prob: 0.02
- id: MobMouse2
prob: 0.02
- type: entity
id: SlimesSpawn
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
startDelay: 10
earliestStart: 20
minimumPlayers: 15
weight: 5
@ -432,7 +407,6 @@
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
startDelay: 10
earliestStart: 20
minimumPlayers: 15
weight: 5
@ -450,10 +424,9 @@
startAnnouncement: station-event-vent-creatures-start-announcement
startAudio:
path: /Audio/Announcements/attention.ogg
startDelay: 10
earliestStart: 45 # DeltaV - was 20
minimumPlayers: 30 # DeltaV - was 15
weight: 1
minimumPlayers: 30 # DeltaV - was 20
weight: 1 # DeltaV - was 1.5
duration: 60
- type: VentCrittersRule
entries:

View File

@ -2,7 +2,6 @@
- type: entity
id: NoosphericStorm
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
startAnnouncement: station-event-noospheric-storm-announcement
@ -16,7 +15,6 @@
- type: entity
id: BaseGlimmerEvent
parent: BaseGameRule
noSpawn: true
components:
- type: StationEvent
# Favor glimmer events just a little more than regular events.
@ -27,7 +25,6 @@
- type: entity
id: MundaneDischarge
parent: BaseGlimmerEvent
noSpawn: true
components:
- type: GlimmerEvent
maximumGlimmer: 300
@ -38,7 +35,6 @@
- type: entity
id: NoosphericZap
parent: BaseGlimmerEvent
noSpawn: true
components:
- type: GlimmerEvent
- type: NoosphericZapRule
@ -46,7 +42,6 @@
- type: entity
id: NoosphericFry
parent: BaseGlimmerEvent
noSpawn: true
components:
- type: GlimmerEvent
minimumGlimmer: 300
@ -57,7 +52,6 @@
- type: entity
id: PsionicCatGotYourTongue
parent: BaseGlimmerEvent
noSpawn: true
components:
- type: GlimmerEvent
minimumGlimmer: 500
@ -69,7 +63,6 @@
- type: entity
id: MassMindSwap
parent: BaseGlimmerEvent
noSpawn: true
components:
- type: GlimmerEvent
minimumGlimmer: 900