A Lot Of Stuff (#883)

This commit is contained in:
BIGZi0348
2025-01-13 21:21:18 +03:00
committed by GitHub
32 changed files with 251 additions and 57 deletions

View File

@@ -5,4 +5,4 @@ namespace Content.Server.Speech.Components;
/// </summary> /// </summary>
[RegisterComponent] [RegisterComponent]
public sealed partial class GnomeAccentComponent : Component public sealed partial class GnomeAccentComponent : Component
{} { }

View File

@@ -1,5 +1,4 @@
using Content.Server.Speech.Components; using Content.Server.Speech.Components;
using System.Text.RegularExpressions;
namespace Content.Server.Speech.EntitySystems; namespace Content.Server.Speech.EntitySystems;
@@ -22,25 +21,6 @@ public sealed class GnomeAccentSystem : EntitySystem
msg = _replacement.ApplyReplacements(msg, "gnome"); msg = _replacement.ApplyReplacements(msg, "gnome");
// Пиздец, а не код
msg = Regex.Replace(msg, @"(?<!\w)\bне", "ГНЕМ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bнет", "ГНЕМТ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bнахуй", "ГНАМХУЙ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bпидоры", "ГНОМЕРЫ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bхуесос", "ГНОХУСОМ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bебал", "ГНОМИЛ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bзаебал", "ЗАГНОМИЛ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bубил", "УГНОМИЛ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bубит", "УГНОМЛЕН", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bебнул", "УГНОМЛЕН", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bстрелял", "СТРЕГНОМИЛ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bзаколол", "СГНОМИЛ", RegexOptions.IgnoreCase);
msg = Regex.Replace(msg, @"(?<!\w)\bмой", "муй", RegexOptions.None);
msg = Regex.Replace(msg, @"(?<!\w)\bдруг", "бро", RegexOptions.None);
msg = Regex.Replace(msg, @"(?<!\w)\bдрузья", "друганы", RegexOptions.None);
return msg; return msg;
} }

View File

@@ -104,7 +104,7 @@ public sealed class ERTRecruitmentRule : StationEventSystem<ERTRecruitmentRuleCo
} }
*/ */
_recruitment.StartRecruitment(ERTRecruitmentRuleComponent.EventName); _recruitment.StartRecruitment(ERTRecruitmentRuleComponent.EventName, component.OverallPlaytime);
} }
protected override void Ended(EntityUid uid, ERTRecruitmentRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args) protected override void Ended(EntityUid uid, ERTRecruitmentRuleComponent component, GameRuleComponent gameRule, GameRuleEndedEvent args)

View File

@@ -16,6 +16,11 @@ public sealed partial class ERTRecruitmentRuleComponent : Component
/// </summary> /// </summary>
[DataField] public int MinPlayers = 3; [DataField] public int MinPlayers = 3;
/// <summary>
/// Minimal playtime to be eligible for recruitment.
/// </summary>
[DataField] public TimeSpan OverallPlaytime = TimeSpan.FromHours(10);
public static SoundSpecifier ERTYes = new SoundPathSpecifier("/Audio/Announcements/ert_yes.ogg"); public static SoundSpecifier ERTYes = new SoundPathSpecifier("/Audio/Announcements/ert_yes.ogg");
public static SoundSpecifier ERTNo = new SoundPathSpecifier("/Audio/Announcements/ert_no.ogg"); public static SoundSpecifier ERTNo = new SoundPathSpecifier("/Audio/Announcements/ert_no.ogg");

View File

@@ -11,6 +11,12 @@ using Robust.Server.GameObjects;
using Robust.Server.Player; using Robust.Server.Player;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Random; using Robust.Shared.Random;
using Content.Shared.Roles;
using Content.Server.Roles;
using Content.Shared.Roles.Jobs;
using Content.Server.Station.Systems;
using Robust.Shared.Prototypes;
using Content.Server.Players.PlayTimeTracking;
namespace Content.Server._White.GhostRecruitment; namespace Content.Server._White.GhostRecruitment;
@@ -23,18 +29,26 @@ public sealed class GhostRecruitmentSystem : EntitySystem
[Dependency] private readonly MindSystem _mind = default!; [Dependency] private readonly MindSystem _mind = default!;
[Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly SharedRoleSystem _roleSystem = default!;
[Dependency] private readonly StationSpawningSystem _spawningSystem = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IPlayTimeTrackingManager _playTimeTracking = default!;
private readonly Dictionary<ICommonSession, GhostRecruitmentEuiAccept> _openUis = new(); private readonly Dictionary<ICommonSession, GhostRecruitmentEuiAccept> _openUis = new();
/// <summary> /// <summary>
/// starts recruiting ghosts, showing them a menu with a choice to recruit. /// starts recruiting ghosts, showing them a menu with a choice to recruit.
/// </summary> /// </summary>
/// <param name="recruitmentName">name of recruitment. <see cref="GhostRecruitmentSpawnPointComponent"/></param> /// <param name="recruitmentName">Name of recruitment. <see cref="GhostRecruitmentSpawnPointComponent"/></param>
public void StartRecruitment(string recruitmentName) /// <param name="overallPlaytime">Minimal playtime to be eligible for recruitment.</param>
public void StartRecruitment(string recruitmentName, TimeSpan? overallPlaytime)
{ {
var query = EntityQueryEnumerator<GhostComponent, ActorComponent>(); var query = EntityQueryEnumerator<GhostComponent, ActorComponent>();
while (query.MoveNext(out var uid, out _, out var actorComponent)) while (query.MoveNext(out var uid, out _, out var actorComponent))
{ {
if (overallPlaytime != null && _playTimeTracking.GetOverallPlaytime(actorComponent.PlayerSession) < overallPlaytime)
continue;
OpenEui(uid, recruitmentName, actorComponent); OpenEui(uid, recruitmentName, actorComponent);
} }
} }
@@ -121,13 +135,20 @@ public sealed class GhostRecruitmentSystem : EntitySystem
if (!entityUid.HasValue) if (!entityUid.HasValue)
return; return;
var mind = actorComponent.PlayerSession.GetMind(); var userId = actorComponent.PlayerSession.UserId;
var entityName = EntityManager.GetComponent<MetaDataComponent>((EntityUid) entityUid).EntityName;
if (!mind.HasValue) var newMind = _mind.CreateMind(userId, entityName);
return;
_mind.TransferTo(mind.Value, entityUid.Value); var job = new JobComponent { Prototype = component.JobId };
_mind.UnVisit(mind.Value);
_roleSystem.MindAddRole(newMind, job);
_mind.SetUserId(newMind, userId);
_mind.TransferTo(newMind, entityUid);
_prototypeManager.TryIndex(job.Prototype, out var jobProto);
if (jobProto != null)
_spawningSystem.SetPdaAndIdCardData((EntityUid) entityUid, entityName, jobProto, null);
} }
private EntityUid? Spawn(EntityUid spawnerUid, GhostRecruitmentSpawnPointComponent? component = null) private EntityUid? Spawn(EntityUid spawnerUid, GhostRecruitmentSpawnPointComponent? component = null)

View File

@@ -16,6 +16,7 @@ using Robust.Shared.Network;
using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Components;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.Manager;
using Robust.Shared.Timing;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
namespace Content.Shared.Polymorph.Systems; namespace Content.Shared.Polymorph.Systems;
@@ -36,7 +37,6 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
[Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedTransformSystem _xform = default!; [Dependency] private readonly SharedTransformSystem _xform = default!;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
@@ -44,6 +44,7 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
SubscribeLocalEvent<ChameleonDisguiseComponent, InteractHandEvent>(OnDisguiseInteractHand, before: [typeof(SharedItemSystem)]); SubscribeLocalEvent<ChameleonDisguiseComponent, InteractHandEvent>(OnDisguiseInteractHand, before: [typeof(SharedItemSystem)]);
SubscribeLocalEvent<ChameleonDisguiseComponent, DamageChangedEvent>(OnDisguiseDamaged); SubscribeLocalEvent<ChameleonDisguiseComponent, DamageChangedEvent>(OnDisguiseDamaged);
SubscribeLocalEvent<ChameleonDisguiseComponent, ComponentShutdown>(OnDisguiseShutdown); SubscribeLocalEvent<ChameleonDisguiseComponent, ComponentShutdown>(OnDisguiseShutdown);
SubscribeLocalEvent<ChameleonDisguiseComponent, GotEquippedHandEvent>(OnPickup); // WD
SubscribeLocalEvent<ChameleonProjectorComponent, AfterInteractEvent>(OnInteract); SubscribeLocalEvent<ChameleonProjectorComponent, AfterInteractEvent>(OnInteract);
SubscribeLocalEvent<ChameleonProjectorComponent, GetVerbsEvent<UtilityVerb>>(OnGetVerbs); SubscribeLocalEvent<ChameleonProjectorComponent, GetVerbsEvent<UtilityVerb>>(OnGetVerbs);
@@ -62,11 +63,19 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
args.Handled = true; args.Handled = true;
} }
/// <summary>
/// WD. Horrible fix, but functional.
/// </summary>
private void OnPickup(Entity<ChameleonDisguiseComponent> ent, ref GotEquippedHandEvent args)
{
Timer.Spawn(100, () => TryReveal(ent.Comp.User));
}
private void OnDisguiseDamaged(Entity<ChameleonDisguiseComponent> ent, ref DamageChangedEvent args) private void OnDisguiseDamaged(Entity<ChameleonDisguiseComponent> ent, ref DamageChangedEvent args)
{ {
// anything that would damage both like an explosion gets doubled // anything that would damage both like an explosion gets doubled
// feature? projector makes your atoms weaker or some bs // feature? projector makes your atoms weaker or some bs
if (args.DamageDelta is {} damage) if (args.DamageDelta is { } damage)
_damageable.TryChangeDamage(ent.Comp.User, damage); _damageable.TryChangeDamage(ent.Comp.User, damage);
} }
@@ -81,7 +90,7 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
private void OnInteract(Entity<ChameleonProjectorComponent> ent, ref AfterInteractEvent args) private void OnInteract(Entity<ChameleonProjectorComponent> ent, ref AfterInteractEvent args)
{ {
if (args.Handled || !args.CanReach || args.Target is not {} target) if (args.Handled || !args.CanReach || args.Target is not { } target)
return; return;
args.Handled = true; args.Handled = true;
@@ -126,7 +135,7 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
private void OnToggleNoRot(Entity<ChameleonProjectorComponent> ent, ref DisguiseToggleNoRotEvent args) private void OnToggleNoRot(Entity<ChameleonProjectorComponent> ent, ref DisguiseToggleNoRotEvent args)
{ {
if (ent.Comp.Disguised is not {} uid) if (ent.Comp.Disguised is not { } uid)
return; return;
var xform = Transform(uid); var xform = Transform(uid);
@@ -137,7 +146,7 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
private void OnToggleAnchored(Entity<ChameleonProjectorComponent> ent, ref DisguiseToggleAnchoredEvent args) private void OnToggleAnchored(Entity<ChameleonProjectorComponent> ent, ref DisguiseToggleAnchoredEvent args)
{ {
if (ent.Comp.Disguised is not {} uid) if (ent.Comp.Disguised is not { } uid)
return; return;
var xform = Transform(uid); var xform = Transform(uid);
@@ -249,7 +258,7 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
/// </summary> /// </summary>
public void RevealProjector(Entity<ChameleonProjectorComponent> ent) public void RevealProjector(Entity<ChameleonProjectorComponent> ent)
{ {
if (ent.Comp.Disguised is {} user) if (ent.Comp.Disguised is { } user)
TryReveal(user); TryReveal(user);
} }
@@ -261,7 +270,7 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
/// <remarks> /// <remarks>
/// This would probably be a good thing to add to engine in the future. /// This would probably be a good thing to add to engine in the future.
/// </remarks> /// </remarks>
protected bool CopyComp<T>(Entity<ChameleonDisguiseComponent> ent) where T: Component, new() protected bool CopyComp<T>(Entity<ChameleonDisguiseComponent> ent) where T : Component, new()
{ {
if (!GetSrcComp<T>(ent.Comp, out var src)) if (!GetSrcComp<T>(ent.Comp, out var src))
return true; return true;
@@ -277,13 +286,13 @@ public abstract class SharedChameleonProjectorSystem : EntitySystem
/// <summary> /// <summary>
/// Try to get a single component from the source entity/prototype. /// Try to get a single component from the source entity/prototype.
/// </summary> /// </summary>
private bool GetSrcComp<T>(ChameleonDisguiseComponent comp, [NotNullWhen(true)] out T? src) where T: Component private bool GetSrcComp<T>(ChameleonDisguiseComponent comp, [NotNullWhen(true)] out T? src) where T : Component
{ {
src = null; src = null;
if (TryComp(comp.SourceEntity, out src)) if (TryComp(comp.SourceEntity, out src))
return true; return true;
if (comp.SourceProto is not {} protoId) if (comp.SourceProto is not { } protoId)
return false; return false;
if (!_proto.TryIndex<EntityPrototype>(protoId, out var proto)) if (!_proto.TryIndex<EntityPrototype>(protoId, out var proto))

View File

@@ -6,11 +6,14 @@ namespace Content.Shared._White.GhostRecruitment;
[RegisterComponent] [RegisterComponent]
public sealed partial class GhostRecruitmentSpawnPointComponent : Component public sealed partial class GhostRecruitmentSpawnPointComponent : Component
{ {
[DataField("prototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>),required:true)] [DataField("prototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>), required: true)]
public string EntityPrototype = default!; public string EntityPrototype = default!;
[DataField("recruitmentName")] [DataField("recruitmentName")]
public string RecruitmentName = "default"; public string RecruitmentName = "default";
[DataField("priority")] public int Priority = 5; [DataField("priority")] public int Priority = 5;
[DataField]
public string JobId = "Passenger";
} }

View File

@@ -0,0 +1,64 @@
accent-gnome-words-1 = не
accent-gnome-words-replace-1 = гнем
accent-gnome-words-2 = нет
accent-gnome-words-replace-2 = гнемт
accent-gnome-words-3 = нахуй
accent-gnome-words-replace-3 = гнамхуй
accent-gnome-words-4 = пидор
accent-gnome-words-replace-4 = гномер
accent-gnome-words-5 = пидоры
accent-gnome-words-replace-5 = гномеры
accent-gnome-words-6 = пидору
accent-gnome-words-replace-6 = гномеру
accent-gnome-words-7 = пидорам
accent-gnome-words-replace-7 = гномерам
accent-gnome-words-8 = хуесос
accent-gnome-words-replace-8 = гнохусос
accent-gnome-words-9 = хуесосы
accent-gnome-words-replace-9 = гнохусосы
accent-gnome-words-10 = хуесосу
accent-gnome-words-replace-10 = гнохусосу
accent-gnome-words-11 = хуесосам
accent-gnome-words-replace-11 = гнохусосам
accent-gnome-words-12 = ебал
accent-gnome-words-replace-12 = гномил
accent-gnome-words-13 = заебал
accent-gnome-words-replace-13 = загномил
accent-gnome-words-14 = убил
accent-gnome-words-replace-14 = угномил
accent-gnome-words-15 = убили
accent-gnome-words-replace-15 = угномили
accent-gnome-words-16 = убит
accent-gnome-words-replace-16 = угномлен
accent-gnome-words-17 = убиты
accent-gnome-words-replace-17 = угномлены
accent-gnome-words-18 = ебнул
accent-gnome-words-replace-18 = угномил
accent-gnome-words-19 = ебнули
accent-gnome-words-replace-19 = угномили
accent-gnome-words-20 = ёбнул
accent-gnome-words-replace-20 = угномил
accent-gnome-words-21 = ёбнули
accent-gnome-words-replace-21 = угномили
accent-gnome-words-22 = стрелял
accent-gnome-words-replace-22 = стрегномил
accent-gnome-words-23 = стреляли
accent-gnome-words-replace-23 = стрегномили
accent-gnome-words-24 = заколол
accent-gnome-words-replace-24 = сгномил
accent-gnome-words-25 = закололи
accent-gnome-words-replace-25 = сгномили
accent-gnome-words-26 = мой
accent-gnome-words-replace-26 = муй
accent-gnome-words-27 = мое
accent-gnome-words-replace-27 = муе
accent-gnome-words-28 = моё
accent-gnome-words-replace-28 = муё
accent-gnome-words-29 = друг
accent-gnome-words-replace-29 = бро
accent-gnome-words-30 = друзья
accent-gnome-words-replace-30 = друганы
accent-gnome-words-31 = пиздец
accent-gnome-words-replace-31 = гномздец
accent-gnome-words-32 = пизда
accent-gnome-words-replace-32 = гномзда

View File

@@ -4,7 +4,7 @@ ent-ClothingUnderwearBottomBoxersWhite = боксеры
.desc = Белые. .desc = Белые.
ent-ClothingUnderwearBottomBoxersCap = капитанские боксеры ent-ClothingUnderwearBottomBoxersCap = капитанские боксеры
.desc = Боксеры капитана. .desc = Боксеры капитана.
ent-ClothingUnderwearBottomBoxersInspector = кожанные трусы инспектора ent-ClothingUnderwearBottomBoxersInspector = кожаные трусы инспектора
.desc = Обтягивающие кожаные трусы инспектора на подтяжках, весьма экстравагантно... но зачем? .desc = Обтягивающие кожаные трусы инспектора на подтяжках, весьма экстравагантно... но зачем?
ent-ClothingUnderwearBottomBoxersCE = боксеры старшего инженера ent-ClothingUnderwearBottomBoxersCE = боксеры старшего инженера
.desc = Боксеры старшего инженера. .desc = Боксеры старшего инженера.

View File

@@ -165,7 +165,7 @@
- id: ClothingEyesGlassesSunglasses - id: ClothingEyesGlassesSunglasses
- id: ClothingUniformJumpsuitCentcomOfficial - id: ClothingUniformJumpsuitCentcomOfficial
- id: ClothingShoesBootsJack - id: ClothingShoesBootsJack
- id: ClothingHandsGlovesColorBlack - id: ClothingHandsGlovesColorBlackSecurity # WD
- id: ClothingHeadsetAltCentComFake - id: ClothingHeadsetAltCentComFake
- id: Paper - id: Paper
- id: Pen - id: Pen

View File

@@ -65,7 +65,7 @@
prob: 0.5 prob: 0.5
- id: ClothingEyesGlassesSecurity - id: ClothingEyesGlassesSecurity
- id: ClothingHeadsetAltSecurity # WD - id: ClothingHeadsetAltSecurity # WD
- id: ClothingHandsGlovesColorBlack - id: ClothingHandsGlovesColorBlackSecurity # WD
- id: ClothingShoesBootsJack - id: ClothingShoesBootsJack
- id: WeaponMeleeNeedle - id: WeaponMeleeNeedle
prob: 0.1 prob: 0.1

View File

@@ -17,7 +17,7 @@
ClothingNeckTieDet: 2 ClothingNeckTieDet: 2
ClothingShoesLeather: 2 ClothingShoesLeather: 2
ClothingShoesColorBrown: 2 ClothingShoesColorBrown: 2
ClothingHandsGlovesColorBlack: 2 ClothingHandsGlovesColorBlackSecurity: 2 # WD
ClothingHandsGlovesLatex: 2 ClothingHandsGlovesLatex: 2
CigPackGreen: 4 CigPackGreen: 4
SmokingPipeFilledTobacco: 1 SmokingPipeFilledTobacco: 1

View File

@@ -19,7 +19,7 @@
ClothingUniformJumpskirtSec: 4 ClothingUniformJumpskirtSec: 4
ClothingUniformJumpsuitSecGrey: 4 ClothingUniformJumpsuitSecGrey: 4
ClothingUniformJumpsuitSecBlue: 4 ClothingUniformJumpsuitSecBlue: 4
ClothingHandsGlovesColorBlack: 4 ClothingHandsGlovesColorBlackSecurity: 4 # WD
ClothingShoesBootsJack: 4 ClothingShoesBootsJack: 4
ClothingShoesBootsCombat: 4 ClothingShoesBootsCombat: 4
ClothingHeadHatBeretSecurity: 3 ClothingHeadHatBeretSecurity: 3

View File

@@ -135,7 +135,7 @@
- WeaponDisabler - WeaponDisabler
- ClothingOuterArmorBulletproof - ClothingOuterArmorBulletproof
- FlashlightSeclite - FlashlightSeclite
- ClothingHandsGlovesColorBlack - ClothingHandsGlovesColorBlackSecurity # WD
- ClothingHeadHelmetBasic - ClothingHeadHelmetBasic
- Handcuffs - Handcuffs
- Zipties - Zipties

View File

@@ -822,6 +822,7 @@
stealGroup: AnimalTropico stealGroup: AnimalTropico
# WD
- type: entity #WHY MUST YOU THROW ERRORS HOW DARE YOU - type: entity #WHY MUST YOU THROW ERRORS HOW DARE YOU
name: Gnome #this thing is covered in comments, its for my sanity, ignore them please. name: Gnome #this thing is covered in comments, its for my sanity, ignore them please.
parent: [BaseSimpleMob, MobCombat, MobAtmosExposed] parent: [BaseSimpleMob, MobCombat, MobAtmosExposed]
@@ -995,6 +996,5 @@
collection: GnomesDeathCollection collection: GnomesDeathCollection
canOtherHearDeathSound: True canOtherHearDeathSound: True
- type: Thieving - type: Thieving
stripTimeReduction: 4 stripTimeReduction: 2.5
- type: Pacified - type: Pacified

View File

@@ -23,6 +23,7 @@
- type: Fiber - type: Fiber
fiberMaterial: fibers-nanomachines fiberMaterial: fibers-nanomachines
- type: FingerprintMask - type: FingerprintMask
- type: Insulated
- type: MagneticGloves - type: MagneticGloves
glovesActiveTime: 60 glovesActiveTime: 60
glovesCooldown: 60 glovesCooldown: 60

View File

@@ -173,6 +173,16 @@
equipment: equipment:
gloves: ClothingHandsGlovesColorBlack gloves: ClothingHandsGlovesColorBlack
- type: itemLoadout # WD
id: GlovesColorBlackSecurity
equipment: GlovesColorBlackSecurity
- type: startingGear
id: GlovesColorBlackSecurity
equipment:
gloves: ClothingHandsGlovesColorBlackSecurity
- type: itemLoadout - type: itemLoadout
id: GlovesColorWhite id: GlovesColorWhite
equipment: GlovesColorWhite equipment: GlovesColorWhite

View File

@@ -745,6 +745,14 @@
- GlovesColorBlack - GlovesColorBlack
- GlovesFingerless - GlovesFingerless
- type: loadoutGroup # WD
id: CommonGlovesSecurity
name: loadout-group-gloves
minLimit: 0
loadouts:
- GlovesColorBlackSecurity
- GlovesFingerless
- type: loadoutGroup - type: loadoutGroup
id: CommonShoes id: CommonShoes
name: loadout-group-shoes name: loadout-group-shoes
@@ -1584,7 +1592,7 @@
minLimit: 0 minLimit: 0
loadouts: loadouts:
- GlovesLatex - GlovesLatex
- GlovesColorBlack - GlovesColorBlackSecurity # WD
- GlovesForensic - GlovesForensic
- type: loadoutGroup - type: loadoutGroup

View File

@@ -481,7 +481,7 @@
- CommonSecurityCommandMask # WD - CommonSecurityCommandMask # WD
- HeadofSecurityNeck - HeadofSecurityNeck
- HeadofSecurityJumpsuit - HeadofSecurityJumpsuit
- CommonGloves # WD - CommonGlovesSecurity # WD
- CommonSecurityBelt # WD - CommonSecurityBelt # WD
- CommonSecurityBackpack - CommonSecurityBackpack
- CommonSecurityShoes - CommonSecurityShoes
@@ -502,7 +502,7 @@
- CommonSecurityNeck - CommonSecurityNeck
- WardenJumpsuit - WardenJumpsuit
- CommonSecurityBackpack - CommonSecurityBackpack
- CommonGloves # WD - CommonGlovesSecurity # WD
- CommonSecurityBelt # WD - CommonSecurityBelt # WD
- CommonSecurityShoes - CommonSecurityShoes
- WardenPDA - WardenPDA
@@ -523,7 +523,7 @@
- CommonSecurityBackpack - CommonSecurityBackpack
- SecurityOuterClothing - SecurityOuterClothing
- CommonSecurityBelt # WD - CommonSecurityBelt # WD
- CommonGloves # WD - CommonGlovesSecurity # WD
- CommonSecurityShoes - CommonSecurityShoes
- SeniorOfficerPDA - SeniorOfficerPDA
- CommonSecurityJobTrinkets # WD - CommonSecurityJobTrinkets # WD
@@ -560,7 +560,7 @@
- CommonSecurityBackpack - CommonSecurityBackpack
- SecurityOuterClothing - SecurityOuterClothing
- CommonSecurityBelt # WD - CommonSecurityBelt # WD
- CommonGloves # WD - CommonGlovesSecurity # WD
- CommonSecurityShoes - CommonSecurityShoes
- SecurityPDA - SecurityPDA
- CommonSecurityJobTrinkets # WD - CommonSecurityJobTrinkets # WD
@@ -596,7 +596,7 @@
- CommonSecurityNeck - CommonSecurityNeck
- SecurityCadetJumpsuit - SecurityCadetJumpsuit
- CommonSecurityBackpack - CommonSecurityBackpack
- CommonGloves # WD - CommonGlovesSecurity # WD
- CommonSecurityShoes - CommonSecurityShoes
- SecurityCadetPDA - SecurityCadetPDA
- CommonSecurityJobTrinkets # WD - CommonSecurityJobTrinkets # WD

View File

@@ -20,7 +20,7 @@
shoes: ClothingShoesBootsCombatFilled shoes: ClothingShoesBootsCombatFilled
head: ClothingHeadHatCentcom head: ClothingHeadHatCentcom
eyes: ClothingEyesGlassesSunglasses eyes: ClothingEyesGlassesSunglasses
gloves: ClothingHandsGlovesColorBlack gloves: ClothingHandsGlovesColorBlackSecurity # WD
outerClothing: ClothingOuterArmorBasic outerClothing: ClothingOuterArmorBasic
id: CentcomPDA id: CentcomPDA
ears: ClothingHeadsetAltCentCom ears: ClothingHeadsetAltCentCom

View File

@@ -1,7 +1,7 @@
- type: cargoProduct - type: cargoProduct
id: ArmoryKLMG id: ArmoryKLMG
icon: icon:
sprite: _Honk/Objects/Weapons/Guns/LMGs/klmg-icons.rsi sprite: White/_Honk/Objects/Weapons/Guns/LMGs/klmg-icons.rsi
state: icon state: icon
product: CrateArmoryKLMG product: CrateArmoryKLMG
cost: 14000 cost: 14000

View File

@@ -133,3 +133,39 @@
accent-bomzh-words-130: accent-bomzh-words-replace-130 accent-bomzh-words-130: accent-bomzh-words-replace-130
accent-bomzh-words-131: accent-bomzh-words-replace-131 accent-bomzh-words-131: accent-bomzh-words-replace-131
accent-bomzh-words-132: accent-bomzh-words-replace-132 accent-bomzh-words-132: accent-bomzh-words-replace-132
- type: accent
id: gnome
wordReplacements:
accent-gnome-words-1: accent-gnome-words-replace-1
accent-gnome-words-2: accent-gnome-words-replace-2
accent-gnome-words-3: accent-gnome-words-replace-3
accent-gnome-words-4: accent-gnome-words-replace-4
accent-gnome-words-5: accent-gnome-words-replace-5
accent-gnome-words-6: accent-gnome-words-replace-6
accent-gnome-words-7: accent-gnome-words-replace-7
accent-gnome-words-8: accent-gnome-words-replace-8
accent-gnome-words-9: accent-gnome-words-replace-9
accent-gnome-words-10: accent-gnome-words-replace-10
accent-gnome-words-11: accent-gnome-words-replace-11
accent-gnome-words-12: accent-gnome-words-replace-12
accent-gnome-words-13: accent-gnome-words-replace-13
accent-gnome-words-14: accent-gnome-words-replace-14
accent-gnome-words-15: accent-gnome-words-replace-15
accent-gnome-words-16: accent-gnome-words-replace-16
accent-gnome-words-17: accent-gnome-words-replace-17
accent-gnome-words-18: accent-gnome-words-replace-18
accent-gnome-words-19: accent-gnome-words-replace-19
accent-gnome-words-20: accent-gnome-words-replace-20
accent-gnome-words-21: accent-gnome-words-replace-21
accent-gnome-words-22: accent-gnome-words-replace-22
accent-gnome-words-23: accent-gnome-words-replace-23
accent-gnome-words-24: accent-gnome-words-replace-24
accent-gnome-words-25: accent-gnome-words-replace-25
accent-gnome-words-26: accent-gnome-words-replace-26
accent-gnome-words-27: accent-gnome-words-replace-27
accent-gnome-words-28: accent-gnome-words-replace-28
accent-gnome-words-29: accent-gnome-words-replace-29
accent-gnome-words-30: accent-gnome-words-replace-30
accent-gnome-words-31: accent-gnome-words-replace-31
accent-gnome-words-32: accent-gnome-words-replace-32

View File

@@ -0,0 +1,17 @@
- type: entity
parent: ClothingHandsGlovesColorBlack
id: ClothingHandsGlovesColorBlackSecurity
name: офицерские перчатки
description: Кожаные чёрные перчатки, которые немного спасут вас от поджаривания.
components:
- type: Sprite
sprite: White/Clothing/Hands/Gloves/blacksecurity.rsi
- type: Clothing
sprite: White/Clothing/Hands/Gloves/blacksecurity.rsi
- type: Fiber
fiberMaterial: fibers-leather
fiberColor: fibers-black
- type: Item
sprite: White/Clothing/Hands/Gloves/blacksecurity.rsi
- type: Insulated
coefficient: 0.5

View File

@@ -17,6 +17,7 @@
prototype: RandomHumanoidSpawnerERTLeader prototype: RandomHumanoidSpawnerERTLeader
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 1 priority: 1
jobId: ERTLeader
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -31,6 +32,7 @@
prototype: RandomHumanoidSpawnerERTLeaderEVA prototype: RandomHumanoidSpawnerERTLeaderEVA
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 1 priority: 1
jobId: ERTLeader
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -44,6 +46,7 @@
- type: GhostRecruitmentSpawnPoint - type: GhostRecruitmentSpawnPoint
prototype: RandomHumanoidSpawnerERTJanitor prototype: RandomHumanoidSpawnerERTJanitor
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
jobId: ERTJanitor
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -57,6 +60,7 @@
- type: GhostRecruitmentSpawnPoint - type: GhostRecruitmentSpawnPoint
prototype: RandomHumanoidSpawnerERTJanitorEVA prototype: RandomHumanoidSpawnerERTJanitorEVA
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
jobId: ERTJanitor
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -71,6 +75,7 @@
prototype: RandomHumanoidSpawnerERTEngineer prototype: RandomHumanoidSpawnerERTEngineer
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 2 priority: 2
jobId: ERTEngineer
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -85,6 +90,7 @@
prototype: RandomHumanoidSpawnerERTEngineerEVA prototype: RandomHumanoidSpawnerERTEngineerEVA
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 2 priority: 2
jobId: ERTEngineer
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -99,6 +105,7 @@
prototype: RandomHumanoidSpawnerERTSecurity prototype: RandomHumanoidSpawnerERTSecurity
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 2 priority: 2
jobId: ERTSecurity
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -113,6 +120,7 @@
prototype: RandomHumanoidSpawnerERTSecurityEVA prototype: RandomHumanoidSpawnerERTSecurityEVA
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 2 priority: 2
jobId: ERTSecurity
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -127,6 +135,7 @@
prototype: RandomHumanoidSpawnerERTMedical prototype: RandomHumanoidSpawnerERTMedical
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 2 priority: 2
jobId: ERTMedical
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green
@@ -141,6 +150,7 @@
prototype: RandomHumanoidSpawnerERTMedicalEVA prototype: RandomHumanoidSpawnerERTMedicalEVA
recruitmentName: ERTRecruitment recruitmentName: ERTRecruitment
priority: 2 priority: 2
jobId: ERTMedical
- type: Sprite - type: Sprite
layers: layers:
- state: green - state: green

View File

@@ -14,7 +14,7 @@
Piercing: 18 Piercing: 18
Heat: 18 Heat: 18
soundHit: soundHit:
path: /Audio/Weapons/smash.ogg path: /Audio/Weapons/eblade1.ogg
- type: DamageOtherOnHit - type: DamageOtherOnHit
damage: damage:
types: types:

View File

@@ -39,7 +39,7 @@
prob: 0.5 prob: 0.5
- id: ClothingEyesGlassesSecurity - id: ClothingEyesGlassesSecurity
- id: ClothingHeadsetAltSecurity - id: ClothingHeadsetAltSecurity
- id: ClothingHandsGlovesColorBlack - id: ClothingHandsGlovesColorBlackSecurity # WD
- id: ClothingShoesBootsJack - id: ClothingShoesBootsJack
- id: WeaponMeleeNeedle - id: WeaponMeleeNeedle
prob: 0.1 prob: 0.1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View File

@@ -0,0 +1,30 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped-HAND",
"directions": 4
},
{
"name": "equipped-HAND-body-slim",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}