Shock collar
(cherry picked from commit e34770d7e5399195b8f762e545eddab8a3c2dd4f)
This commit is contained in:
15
Content.Server/White/ShockClothing/ShockClothingComponent.cs
Normal file
15
Content.Server/White/ShockClothing/ShockClothingComponent.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using Content.Shared.DeviceLinking;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
|
||||
namespace Content.Server.White.ShockClothing;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class ShockClothingComponent : Component
|
||||
{
|
||||
[DataField("triggerPort", customTypeSerializer: typeof(PrototypeIdSerializer<SinkPortPrototype>))]
|
||||
public string TriggerPort = "Trigger";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("zapSound")]
|
||||
public SoundSpecifier? ZapSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Hits/taser_hit.ogg");
|
||||
}
|
||||
42
Content.Server/White/ShockClothing/ShockClothingSystem.cs
Normal file
42
Content.Server/White/ShockClothing/ShockClothingSystem.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using Content.Server.DeviceLinking.Events;
|
||||
using Content.Server.DeviceLinking.Systems;
|
||||
using Content.Server.Electrocution;
|
||||
using Robust.Server.Containers;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
|
||||
namespace Content.Server.White.ShockClothing;
|
||||
|
||||
public sealed class ShockClothingSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly DeviceLinkSystem _deviceLink = default!;
|
||||
[Dependency] private readonly ElectrocutionSystem _electrocution = default!;
|
||||
[Dependency] private readonly ContainerSystem _containerSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ShockClothingComponent, ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<ShockClothingComponent, SignalReceivedEvent>(OnSignalReceived);
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, ShockClothingComponent component, ComponentInit args)
|
||||
{
|
||||
_deviceLink.EnsureSinkPorts(uid, component.TriggerPort);
|
||||
}
|
||||
|
||||
private void OnSignalReceived(EntityUid uid, ShockClothingComponent component, ref SignalReceivedEvent args)
|
||||
{
|
||||
if (args.Port != component.TriggerPort)
|
||||
return;
|
||||
|
||||
_audio.PlayPvs(component.ZapSound, uid);
|
||||
|
||||
if (!_containerSystem.TryGetContainingContainer(uid, out var container))
|
||||
return;
|
||||
|
||||
_electrocution.TryDoElectrocution(container.Owner, uid, 0, TimeSpan.FromSeconds(5), true,
|
||||
ignoreInsulation: true);
|
||||
}
|
||||
}
|
||||
23
Resources/Locale/ru-RU/white/collars.ftl
Normal file
23
Resources/Locale/ru-RU/white/collars.ftl
Normal file
@@ -0,0 +1,23 @@
|
||||
ent-CollarCyan = голубой ошейник
|
||||
|
||||
ent-CollarYellow = желтый ошейник
|
||||
|
||||
ent-CollarGreen = зеленый ошейник
|
||||
|
||||
ent-CollarRed = красный ошейник
|
||||
|
||||
ent-CollarLatex = латексный ошейник
|
||||
|
||||
ent-CollarOrange = оранжевый ошейник
|
||||
|
||||
ent-CollarWhite = белый ошейник
|
||||
|
||||
ent-CollarPurple = фиолетовый ошейник
|
||||
|
||||
ent-CollarBlack = черный ошейник
|
||||
|
||||
ent-CollarTealblack = черный ошейник
|
||||
|
||||
ent-CollarSpike = шипованный ошейник
|
||||
|
||||
ent-CollarShock = шоковый ошейник
|
||||
@@ -10,9 +10,23 @@
|
||||
ClothingHeadHatCatEars: 6
|
||||
ClothingHeadHatBunny: 6
|
||||
DildoHuman: 3
|
||||
DildoKnocked: 3
|
||||
DildoPlain: 3
|
||||
DildoFlared: 3
|
||||
DildoAvian: 3
|
||||
DildoDragon: 3
|
||||
DildoCanine: 3
|
||||
DildoEquine: 3
|
||||
DildoTentacle: 3
|
||||
CollarCyan: 3
|
||||
CollarYellow: 3
|
||||
CollarGreen: 3
|
||||
CollarRed: 3
|
||||
CollarLatex: 3
|
||||
CollarOrange: 3
|
||||
CollarWhite: 3
|
||||
CollarPurple: 3
|
||||
CollarBlack: 3
|
||||
CollarTealblack: 3
|
||||
CollarSpike: 3
|
||||
CollarShock: 6
|
||||
Darkholme: 3
|
||||
Gladiator: 3
|
||||
Sexyclown: 3
|
||||
|
||||
@@ -1,20 +1,172 @@
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: Choker
|
||||
name: Choker
|
||||
id: CollarCyan
|
||||
name: cyan collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/choker.rsi
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_cyan
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/choker.rsi
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_cyan-equipped
|
||||
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: Petcollar
|
||||
name: Petcollar
|
||||
id: CollarYellow
|
||||
name: yellow collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/petcollar.rsi
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_yellow
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/petcollar.rsi
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_yellow-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarGreen
|
||||
name: green collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_green
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_green-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarRed
|
||||
name: red collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_red
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_red-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarLatex
|
||||
name: latex collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_latex
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_latex-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarOrange
|
||||
name: orange collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_orange
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_orange-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarWhite
|
||||
name: white collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_white
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_white-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarPurple
|
||||
name: purple collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_purple
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_purple-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarBlack
|
||||
name: black collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_black
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_black-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarTealblack
|
||||
name: tealblack collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_tealblack
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_tealblack-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarSpike
|
||||
name: spike collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: collar_spike
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: collar_spike-equipped
|
||||
|
||||
- type: entity
|
||||
parent: ClothingNeckBase
|
||||
id: CollarShock
|
||||
name: shock collar
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
state: shockcollar
|
||||
- type: Clothing
|
||||
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||
clothingVisuals:
|
||||
neck:
|
||||
- state: shockcollar-equipped
|
||||
- type: ShockClothing
|
||||
- type: DeviceLinkSink
|
||||
ports:
|
||||
- Trigger
|
||||
|
||||
Reference in New Issue
Block a user