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
|
ClothingHeadHatCatEars: 6
|
||||||
ClothingHeadHatBunny: 6
|
ClothingHeadHatBunny: 6
|
||||||
DildoHuman: 3
|
DildoHuman: 3
|
||||||
DildoKnocked: 3
|
DildoAvian: 3
|
||||||
DildoPlain: 3
|
DildoDragon: 3
|
||||||
DildoFlared: 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
|
Darkholme: 3
|
||||||
Gladiator: 3
|
Gladiator: 3
|
||||||
Sexyclown: 3
|
Sexyclown: 3
|
||||||
|
|||||||
@@ -1,20 +1,172 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
parent: ClothingNeckBase
|
parent: ClothingNeckBase
|
||||||
id: Choker
|
id: CollarCyan
|
||||||
name: Choker
|
name: cyan collar
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: White/Clothing/Neck/choker.rsi
|
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||||
|
state: collar_cyan
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: White/Clothing/Neck/choker.rsi
|
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||||
|
clothingVisuals:
|
||||||
|
neck:
|
||||||
|
- state: collar_cyan-equipped
|
||||||
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: ClothingNeckBase
|
parent: ClothingNeckBase
|
||||||
id: Petcollar
|
id: CollarYellow
|
||||||
name: Petcollar
|
name: yellow collar
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: White/Clothing/Neck/petcollar.rsi
|
sprite: White/Clothing/Neck/lewd_neck.rsi
|
||||||
|
state: collar_yellow
|
||||||
- type: Clothing
|
- 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