Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Content.Server._Pirate.BatteryLocking;

[RegisterComponent]
public sealed partial class BatterySlotRequiresLockComponent : Component
{
[DataField("cellSlotId"), ViewVariables(VVAccess.ReadWrite)]
public string ItemSlot = string.Empty;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Lock;

namespace Content.Server._Pirate.BatteryLocking;

public sealed class BatterySlotRequiresLockSystem : EntitySystem

{
[Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!;

/// <inheritdoc/>
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<BatterySlotRequiresLockComponent, LockToggledEvent>(LockToggled);

}
private void LockToggled(EntityUid uid, BatterySlotRequiresLockComponent component, LockToggledEvent args)
{
if (!TryComp<LockComponent>(uid, out var lockComp) || !TryComp<ItemSlotsComponent>(uid, out var itemslots))
return;
if (!_itemSlotsSystem.TryGetSlot(uid, component.ItemSlot, out var slot, itemslots))
return;
_itemSlotsSystem.SetLock(uid, slot, lockComp.Locked, itemslots);
}
}
53 changes: 53 additions & 0 deletions Content.Server/_Pirate/EmitBuzzOnCrit/EmitBuzzOnCritSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using Content.Server.Popups;
using Content.Shared._Pirate.EmitBuzzOnCrit;
using Content.Shared.Audio;
using Content.Shared.Body.Components;
using Content.Shared.Mobs.Systems;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Random;
using Robust.Shared.Timing;

namespace Content.Server._Pirate.EmitBuzzOnCrit;

/// <summary>
/// This handles the buzzing popup and sound of a silicon based race when it goes into critical health.
/// </summary>
public sealed class EmitBuzzOnCritSystem : EntitySystem
{
[Dependency] private readonly MobStateSystem _mobState = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly IRobustRandom _robustRandom = default!;

public override void Update(float frameTime)
{
base.Update(frameTime);

var query = EntityQueryEnumerator<EmitBuzzOnCritComponent, BodyComponent>();

while (query.MoveNext(out var uid, out var emitBuzzOnCritComponent, out var body))
{
if (_mobState.IsDead(uid))
continue;
if (!_mobState.IsCritical(uid))
continue;

emitBuzzOnCritComponent.AccumulatedFrametime += frameTime;

if (emitBuzzOnCritComponent.AccumulatedFrametime < emitBuzzOnCritComponent.CycleDelay)
continue;
emitBuzzOnCritComponent.AccumulatedFrametime -= emitBuzzOnCritComponent.CycleDelay;


// start buzzing
if (_gameTiming.CurTime >= emitBuzzOnCritComponent.LastBuzzPopupTime + emitBuzzOnCritComponent.BuzzPopupCooldown)
{
emitBuzzOnCritComponent.LastBuzzPopupTime = _gameTiming.CurTime;
_popupSystem.PopupEntity(Loc.GetString("silicon-behavior-buzz"), uid);
_audio.PlayPvs(emitBuzzOnCritComponent.Sound, uid, AudioHelpers.WithVariation(0.05f, _robustRandom));
}
}
}

}
26 changes: 26 additions & 0 deletions Content.Shared/_Pirate/EmitBuzzOnCrit/EmitBuzzOnCritComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.ComponentModel.DataAnnotations;
using Robust.Shared.Audio;

namespace Content.Shared._Pirate.EmitBuzzOnCrit;

/// <summary>
/// This is used for controlling the cadence of the buzzing emitted by EmitBuzzOnCritSystem.
/// This component is used by mechanical species that can get to critical health.
/// </summary>
[RegisterComponent]
public sealed partial class EmitBuzzOnCritComponent : Component
{
[DataField("buzzPopupCooldown")]
public TimeSpan BuzzPopupCooldown { get; private set; } = TimeSpan.FromSeconds(8);

[ViewVariables]
public TimeSpan LastBuzzPopupTime;

[DataField("cycleDelay")]
public float CycleDelay = 2.0f;

public float AccumulatedFrametime;

[DataField("sound")]
public SoundSpecifier Sound = new SoundCollectionSpecifier("buzzes");
}
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz1.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz2.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz3.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz4.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz5.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz6.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz7.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz8.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Effects/Buzzes/buzz9.ogg
Binary file not shown.
Binary file added Resources/Audio/_Pirate/Voice/IPC/cry_robot_1.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
4 changes: 3 additions & 1 deletion Resources/Locale/uk-UA/body/behavior/behavior.ftl
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
lung-behavior-gasp = Задихається
lung-behavior-gasp = Задихається

silicon-behavior-buzz = Бззззз...
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
boardName: "ipc-board-name"
layoutId: IPC
- type: SSDIndicator
- type: EmitBuzzOnCrit
# - type: UnblockableSpeech

- type: entity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,9 +314,9 @@
speechSounds: Pai
- type: Vocal
sounds:
Male: MaleHuman
Female: FemaleHuman
Unsexed: MaleHuman
Male: UnisexSilicon
Female: UnisexSilicon
Unsexed: UnisexSilicon
- type: MeleeWeapon
hidden: true
soundHit:
Expand Down
6 changes: 6 additions & 0 deletions Resources/Prototypes/Voice/speech_emote_sounds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,12 @@
path: /Audio/Items/bikehorn.ogg
Ping:
path: /Audio/Effects/Cargo/ping.ogg
Scream:
path: /Audio/_Pirate/Voice/IPC/robot-scream.ogg
Laugh:
path: /Audio/_Pirate/Voice/IPC/robot-laugh_3.ogg
Crying:
path: /Audio/_Pirate/Voice/IPC/cry_robot_1.ogg

# body emotes
- type: emoteSounds
Expand Down
12 changes: 12 additions & 0 deletions Resources/Prototypes/_Pirate/SoundCollections/buzzes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
- type: soundCollection
id: buzzes
files:
- /Audio/_Pirate/Effects/Buzzes/buzz1.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz2.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz3.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz4.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz5.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz6.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz7.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz8.ogg
- /Audio/_Pirate/Effects/Buzzes/buzz9.ogg