From ea30709cde31273fc20e79b5f91f73986f269886 Mon Sep 17 00:00:00 2001 From: AJCM-git <60196617+AJCM-git@users.noreply.github.com> Date: Thu, 8 Oct 2020 11:59:20 -0400 Subject: [PATCH] Bolts down event and minor tweaks (#2053) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * initial commit * I have to switch to master * oops * i need to merge master * finishing touches * updating submodule * bye Co-authored-by: VĂ­ctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> --- Content.Server/Chat/ChatManager.cs | 2 +- .../Components/Doors/AirlockComponent.cs | 2 +- .../StationEvents/StationEventSystem.cs | 2 +- Content.Server/StationEvents/BoltsDown.cs | 79 +++++++++++++++++++ .../StationEvents/PowerGridCheck.cs | 4 +- .../StationEvents/RadiationStorm.cs | 2 +- Content.Server/StationEvents/StationEvent.cs | 2 +- Resources/Prototypes/Catalog/Fills/belt.yml | 11 +++ 8 files changed, 97 insertions(+), 7 deletions(-) create mode 100644 Content.Server/StationEvents/BoltsDown.cs diff --git a/Content.Server/Chat/ChatManager.cs b/Content.Server/Chat/ChatManager.cs index a550199dc6..6550d58fb5 100644 --- a/Content.Server/Chat/ChatManager.cs +++ b/Content.Server/Chat/ChatManager.cs @@ -76,7 +76,7 @@ namespace Content.Server.Chat var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Radio; msg.Message = message; - msg.MessageWrap = "Station: {0}"; + msg.MessageWrap = "Centcom Announcement:\n{0}"; _netManager.ServerSendToAll(msg); } diff --git a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs index 4b9eb8deb4..9ec0148d28 100644 --- a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs @@ -57,7 +57,7 @@ namespace Content.Server.GameObjects.Components.Doors private bool _boltsDown; [ViewVariables(VVAccess.ReadWrite)] - private bool BoltsDown + public bool BoltsDown { get => _boltsDown; set diff --git a/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs b/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs index 0ff87fdfdd..1d517c441c 100644 --- a/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/StationEvents/StationEventSystem.cs @@ -31,7 +31,7 @@ namespace Content.Server.GameObjects.EntitySystems.StationEvents private List _stationEvents = new List(); - private const float MinimumTimeUntilFirstEvent = 600; + private const float MinimumTimeUntilFirstEvent = 300; /// /// How long until the next check for an event runs diff --git a/Content.Server/StationEvents/BoltsDown.cs b/Content.Server/StationEvents/BoltsDown.cs new file mode 100644 index 0000000000..c7d2c362d4 --- /dev/null +++ b/Content.Server/StationEvents/BoltsDown.cs @@ -0,0 +1,79 @@ +using JetBrains.Annotations; +using Content.Server.GameObjects.Components.Doors; +using Content.Server.GameObjects.Components.GUI; +using Content.Server.GameObjects.Components.Items.Storage; +using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.GameObjects.Components.Damage; +using Robust.Server.GameObjects.EntitySystems; +using Robust.Server.Interfaces.Player; +using Robust.Shared.Audio; +using Robust.Shared.GameObjects.Systems; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.Random; +using Robust.Shared.IoC; +using Robust.Shared.Localization; + +namespace Content.Server.StationEvents +{ + [UsedImplicitly] + public sealed class BoltsDown : StationEvent + { + public override string Name => "BoltsDown"; + public override StationEventWeight Weight => StationEventWeight.Low; + public override int? MaxOccurrences => 1; + private float _elapsedTime; + private int _eventDuration; + protected override string StartAnnouncement => Loc.GetString( + "The clover hat hackers turned the bolts of all the airlocks in the station down. We have dispatched high quality hacking equipment at every crewmember location so that this productive shift can continue"); + protected override string EndAnnouncement => Loc.GetString( + "Our cybersecurity team has dealt with the problem and restarted all the airlocks bolts in the station. Have a nice shift."); + public override void Startup() + { + base.Startup(); + EntitySystem.Get().PlayGlobal("/Audio/Effects/alert.ogg", AudioParams.Default.WithVolume(-10f)); + _eventDuration = IoCManager.Resolve().Next(120, 180); + + var componentManager = IoCManager.Resolve(); + foreach (var component in componentManager.EntityQuery()) component.BoltsDown = true; + + var playerManager = IoCManager.Resolve(); + foreach (var player in playerManager.GetAllPlayers()) + { + var inventory = player.AttachedEntity.GetComponent(); + if (player.AttachedEntity == null) return; + if (inventory.TryGetSlotItem(EquipmentSlotDefines.Slots.BELT, out ItemComponent item) + && item.Owner.Prototype.ID == "UtilityBeltClothingFilledEvent") return; + if (player.AttachedEntity.TryGetComponent(out var damageable) + && damageable.CurrentDamageState == DamageState.Dead) return; + + var entityManager = IoCManager.Resolve(); + var playerPos = player.AttachedEntity.Transform.Coordinates; + entityManager.SpawnEntity("UtilityBeltClothingFilledEvent", playerPos); + } + } + public override void Shutdown() + { + base.Shutdown(); + EntitySystem.Get().PlayGlobal("/Audio/Effects/alert.ogg", AudioParams.Default.WithVolume(-10f)); + + var componentManager = IoCManager.Resolve(); + foreach (var component in componentManager.EntityQuery()) component.BoltsDown = false; + } + public override void Update(float frameTime) + { + if (!Running) + { + return; + } + + _elapsedTime += frameTime; + + if (_elapsedTime < _eventDuration) + { + return; + } + + Running = false; + } + } +} \ No newline at end of file diff --git a/Content.Server/StationEvents/PowerGridCheck.cs b/Content.Server/StationEvents/PowerGridCheck.cs index 5292776b8b..8a961c2d5c 100644 --- a/Content.Server/StationEvents/PowerGridCheck.cs +++ b/Content.Server/StationEvents/PowerGridCheck.cs @@ -19,7 +19,7 @@ namespace Content.Server.StationEvents public override StationEventWeight Weight => StationEventWeight.Normal; - public override int? MaxOccurrences => 3; + public override int? MaxOccurrences => 2; protected override string StartAnnouncement => Loc.GetString( "Abnormal activity detected in the station's powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration."); @@ -47,7 +47,7 @@ namespace Content.Server.StationEvents _announced = false; _elapsedTime = 0.0f; - _failDuration = IoCManager.Resolve().Next(30, 120); + _failDuration = IoCManager.Resolve().Next(60, 120); var componentManager = IoCManager.Resolve(); foreach (PowerReceiverComponent component in componentManager.EntityQuery()) diff --git a/Content.Server/StationEvents/RadiationStorm.cs b/Content.Server/StationEvents/RadiationStorm.cs index f79434083a..c57ce8bcd0 100644 --- a/Content.Server/StationEvents/RadiationStorm.cs +++ b/Content.Server/StationEvents/RadiationStorm.cs @@ -35,7 +35,7 @@ namespace Content.Server.StationEvents /// /// How long until the radiation storm starts /// - private const float StartupTime = 10; + private const float StartupTime = 5; /// /// How long the radiation storm has been running for diff --git a/Content.Server/StationEvents/StationEvent.cs b/Content.Server/StationEvents/StationEvent.cs index b99c1ced5b..244cd2a3ff 100644 --- a/Content.Server/StationEvents/StationEvent.cs +++ b/Content.Server/StationEvents/StationEvent.cs @@ -31,7 +31,7 @@ namespace Content.Server.StationEvents /// In minutes, when is the first time this event can start /// /// - public virtual int EarliestStart { get; } = 20; + public virtual int EarliestStart { get; } = 5; /// /// How many players need to be present on station for the event to run diff --git a/Resources/Prototypes/Catalog/Fills/belt.yml b/Resources/Prototypes/Catalog/Fills/belt.yml index f2f7350d40..12f5fc37db 100644 --- a/Resources/Prototypes/Catalog/Fills/belt.yml +++ b/Resources/Prototypes/Catalog/Fills/belt.yml @@ -12,3 +12,14 @@ - name: Welder - name: Multitool - name: ApcExtensionCableStack + +- type: entity + id: UtilityBeltClothingFilledEvent + parent: UtilityBeltClothing + suffix: Filled + components: + - type: StorageFill + contents: + - name: Crowbar + - name: Screwdriver + - name: Multitool