diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index 3675c214b1..b8d7389533 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -153,7 +153,7 @@ namespace Content.Server.Explosion.EntitySystems private void HandleFlashTrigger(EntityUid uid, FlashOnTriggerComponent component, TriggerEvent args) { // TODO Make flash durations sane ffs. - _flashSystem.FlashArea(uid, args.User, component.Range, component.Duration * 1000f, probability: component.Probability); + _flashSystem.FlashArea(uid, args.User, component.Range, component.Duration * 1000f, probability: component.Probability, forceStun: component.ForceStun); // WD edit args.Handled = true; } diff --git a/Content.Server/Flash/FlashSystem.cs b/Content.Server/Flash/FlashSystem.cs index 148c45c8a2..2e5a713192 100644 --- a/Content.Server/Flash/FlashSystem.cs +++ b/Content.Server/Flash/FlashSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Flash.Components; using Content.Server.Light.EntitySystems; using Content.Server.Popups; using Content.Server.Stunnable; +using Content.Shared._White.BuffedFlashGrenade; using Content.Shared.Charges.Components; using Content.Shared.Charges.Systems; using Content.Shared.Eye.Blinding.Components; @@ -38,6 +39,7 @@ namespace Content.Server.Flash [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!; + [Dependency] private readonly FlashSoundSuppressionSystem _flashSoundSuppressionSystem = default!; public override void Initialize() { @@ -152,7 +154,8 @@ namespace Content.Server.Flash } } - public void FlashArea(Entity source, EntityUid? user, float range, float duration, float slowTo = 0.8f, bool displayPopup = false, float probability = 1f, SoundSpecifier? sound = null) + // WD edit + public void FlashArea(Entity source, EntityUid? user, float range, float duration, float slowTo = 0.8f, bool displayPopup = false, float probability = 1f, SoundSpecifier? sound = null, bool forceStun = false) { var transform = Transform(source); var mapPosition = _transform.GetMapCoordinates(transform); @@ -175,6 +178,9 @@ namespace Content.Server.Flash // They shouldn't have flash removed in between right? Flash(entity, user, source, duration, slowTo, displayPopup); + + if (forceStun) // WD + _flashSoundSuppressionSystem.Stun(entity, duration); } _audio.PlayPvs(sound, source, AudioParams.Default.WithVolume(1f).WithMaxDistance(3f)); diff --git a/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs b/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs index 7658ca0ae5..3f174db29d 100644 --- a/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs +++ b/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs @@ -10,4 +10,5 @@ public sealed partial class FlashOnTriggerComponent : Component [DataField] public float Range = 1.0f; [DataField] public float Duration = 8.0f; [DataField] public float Probability = 1.0f; + [DataField] public bool ForceStun; // WD } diff --git a/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs b/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs index b414de944d..b81792167e 100644 --- a/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs +++ b/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs @@ -48,7 +48,11 @@ public abstract class SharedNightVisionSystem : EntitySystem return; component.IsActive = !component.IsActive; - _audio.PlayPredicted(component.ToggleSound, uid, uid); + + if (component.IsActive && component.ActivateSound != null) + _audio.PlayPredicted(component.ActivateSound, uid, uid); + else if (component.DeactivateSound != null) + _audio.PlayPredicted(component.DeactivateSound, uid, uid); args.Handled = true; diff --git a/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs b/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs index 08bc64675a..7c36bd2cbd 100644 --- a/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs +++ b/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs @@ -48,7 +48,11 @@ public abstract class SharedThermalVisionSystem : EntitySystem return; component.IsActive = !component.IsActive; - _audio.PlayPredicted(component.ToggleSound, uid, uid); + + if (component.IsActive && component.ActivateSound != null) + _audio.PlayPredicted(component.ActivateSound, uid, uid); + else if (component.DeactivateSound != null) + _audio.PlayPredicted(component.DeactivateSound, uid, uid); args.Handled = true; diff --git a/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionComponent.cs b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionComponent.cs new file mode 100644 index 0000000000..190af15af6 --- /dev/null +++ b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.BuffedFlashGrenade; + +[RegisterComponent, NetworkedComponent] +public sealed partial class FlashSoundSuppressionComponent : Component +{ + +} diff --git a/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionSystem.cs b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionSystem.cs new file mode 100644 index 0000000000..803538e9a3 --- /dev/null +++ b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionSystem.cs @@ -0,0 +1,17 @@ +using Content.Shared.Inventory.Events; +using Content.Shared.Stunnable; + +namespace Content.Shared._White.BuffedFlashGrenade; + +public sealed class FlashSoundSuppressionSystem : EntitySystem +{ + [Dependency] private readonly SharedStunSystem _stunSystem = default!; + + public void Stun(EntityUid target, float duration) + { + if (HasComp(target)) + return; + + _stunSystem.TryParalyze(target, TimeSpan.FromSeconds(duration / 1000f), true); + } +} diff --git a/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs b/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs index 104d6bcf0f..bd67e508e6 100644 --- a/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs +++ b/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs @@ -28,9 +28,11 @@ public sealed class ClothingGrantingSystem : EntitySystem if (_timing.ApplyingState) return; - if (!TryComp(uid, out var clothing)) return; + if (!TryComp(uid, out var clothing)) + return; - if (!clothing.Slots.HasFlag(args.SlotFlags)) return; + if (!clothing.Slots.HasFlag(args.SlotFlags)) + return; if (component.Components.Count > 8) { @@ -53,7 +55,7 @@ public sealed class ClothingGrantingSystem : EntitySystem } component.IsActive = true; - Dirty(component); + Dirty(uid, component); } private void OnCompUnequip(EntityUid uid, ClothingGrantComponentComponent component, GotUnequippedEvent args) @@ -68,7 +70,7 @@ public sealed class ClothingGrantingSystem : EntitySystem } component.IsActive = false; - Dirty(component); + Dirty(uid, component); } private void OnTagEquip(EntityUid uid, ClothingGrantTagComponent component, GotEquippedEvent args) @@ -81,7 +83,7 @@ public sealed class ClothingGrantingSystem : EntitySystem _tagSystem.AddTag(args.Equipee, component.Tag); component.IsActive = true; - Dirty(component); + Dirty(uid, component); } private void OnTagUnequip(EntityUid uid, ClothingGrantTagComponent component, GotUnequippedEvent args) @@ -91,6 +93,6 @@ public sealed class ClothingGrantingSystem : EntitySystem _tagSystem.RemoveTag(args.Equipee, component.Tag); component.IsActive = false; - Dirty(component); + Dirty(uid, component); } } diff --git a/Content.Shared/_White/Overlays/NightVisionComponent.cs b/Content.Shared/_White/Overlays/NightVisionComponent.cs index 3ffb5b860d..9c27c271a8 100644 --- a/Content.Shared/_White/Overlays/NightVisionComponent.cs +++ b/Content.Shared/_White/Overlays/NightVisionComponent.cs @@ -12,10 +12,13 @@ public sealed partial class NightVisionComponent : BaseNvOverlayComponent public override Color Color { get; set; } = Color.FromHex("#98FB98"); [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public bool IsActive = true; + public bool IsActive; [DataField] - public SoundSpecifier? ToggleSound = new SoundPathSpecifier("/Audio/Items/flashlight_pda.ogg"); + public SoundSpecifier? ActivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/activate.ogg"); + + [DataField] + public SoundSpecifier? DeactivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/deactivate.ogg"); [DataField] public EntProtoId? ToggleAction = "ToggleNightVision"; diff --git a/Content.Shared/_White/Overlays/ThermalVisionComponent.cs b/Content.Shared/_White/Overlays/ThermalVisionComponent.cs index cbd786d225..7e081a138b 100644 --- a/Content.Shared/_White/Overlays/ThermalVisionComponent.cs +++ b/Content.Shared/_White/Overlays/ThermalVisionComponent.cs @@ -15,7 +15,10 @@ public sealed partial class ThermalVisionComponent : BaseNvOverlayComponent public bool IsActive = true; [DataField] - public SoundSpecifier? ToggleSound = new SoundPathSpecifier("/Audio/Items/flashlight_pda.ogg"); + public SoundSpecifier? ActivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/activate.ogg"); + + [DataField] + public SoundSpecifier? DeactivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/deactivate.ogg"); [DataField] public EntProtoId? ToggleAction = "ToggleThermalVision"; diff --git a/Resources/Audio/White/Items/Goggles/activate.ogg b/Resources/Audio/White/Items/Goggles/activate.ogg new file mode 100644 index 0000000000..96cdb288fe Binary files /dev/null and b/Resources/Audio/White/Items/Goggles/activate.ogg differ diff --git a/Resources/Audio/White/Items/Goggles/deactivate.ogg b/Resources/Audio/White/Items/Goggles/deactivate.ogg new file mode 100644 index 0000000000..e1e8f4fd82 Binary files /dev/null and b/Resources/Audio/White/Items/Goggles/deactivate.ogg differ diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl index e7676f2a40..4d12d4c353 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl @@ -13,6 +13,9 @@ ent-ClothingHeadsetAltMedical = полноразмерная медицинск ent-ClothingHeadsetAltSecurity = полноразмерная охранная гарнитура .desc = { ent-ClothingHeadsetAlt.desc } .suffix = { "" } +ent-ClothingHeadsetAltSecurityCommand = { ent-ClothingHeadsetAltSecurity } + .desc = { ent-ClothingHeadsetAlt.desc } + .suffix = { "" } ent-ClothingHeadsetAltEngineering = полноразмерная инженерная гарнитура .desc = { ent-ClothingHeadsetAlt.desc } .suffix = { "" } diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml index 17f00d091f..dc1a0325e3 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml @@ -93,7 +93,7 @@ - id: ClothingHandsGlovesCombat - id: ClothingShoesBootsJack - id: ClothingEyesGlassesSecurity - - id: ClothingHeadsetAltSecurity + - id: ClothingHeadsetAltSecurityCommand - id: ClothingMaskGasSwat - id: ClothingOuterCoatHoSTrench diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 8ab18cbcb8..876150fe6f 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -324,5 +324,5 @@ - id: ClothingUniformJumpskirtInspector - id: ClothingUniformJumpskirtInspectorFormal - id: ClothingHandsGlovesInspector - - id: ClothingHeadsetAltSecurity + - id: ClothingHeadsetAltSecurityCommand - id: RubberStampInspector diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml index 9dd72691b5..0d1c1b8131 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml @@ -9,6 +9,9 @@ state: icon_alt - type: Clothing equippedPrefix: alt + - type: ClothingGrantComponent # WD + component: + - type: FlashSoundSuppression - type: entity parent: ClothingHeadsetAlt @@ -108,13 +111,28 @@ containers: key_slots: - EncryptionKeySecurity - - EncryptionKeyCommand - EncryptionKeyCommon - type: Sprite sprite: Clothing/Ears/Headsets/security.rsi - type: Clothing sprite: Clothing/Ears/Headsets/security.rsi +- type: entity # WD + parent: ClothingHeadsetAlt + id: ClothingHeadsetAltSecurityCommand + name: head of security's over-ear headset + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeySecurity + - EncryptionKeyCommand + - EncryptionKeyCommon + - type: Sprite + sprite: Clothing/Ears/Headsets/command.rsi + - type: Clothing + sprite: Clothing/Ears/Headsets/command.rsi + - type: entity parent: ClothingHeadsetAlt id: ClothingHeadsetAltScience diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index 3191f44b3f..d0b671151d 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -148,7 +148,6 @@ components: - type: FlashImmunity - type: EyeProtection - protectionTime: 5 - type: Tag tags: - Sunglasses @@ -167,7 +166,6 @@ sprite: Clothing/Eyes/Glasses/secglasses.rsi - type: FlashImmunity - type: EyeProtection - protectionTime: 5 - type: Construction graph: GlassesSecHUD node: glassesSec @@ -232,9 +230,9 @@ description: Thermals in the shape of glasses. components: - type: Sprite - sprite: Clothing/Eyes/Glasses/thermal.rsi + sprite: White/Clothing/Eyes/Glasses/thermal.rsi - type: Clothing - sprite: Clothing/Eyes/Glasses/thermal.rsi + sprite: White/Clothing/Eyes/Glasses/thermal.rsi - type: ClothingGrantComponent component: - type: ThermalVision diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index 31b659e492..95077cdf5c 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -61,6 +61,7 @@ - type: TemperatureProtection coefficient: 0.005 - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Engineering Hardsuit - type: entity @@ -80,6 +81,7 @@ highPressureMultiplier: 0.1 lowPressureMultiplier: 1000 - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Spationaut Hardsuit - type: entity @@ -183,6 +185,9 @@ Piercing: 0.9 Heat: 0.9 - type: FlashImmunity # WD edit + - type: ClothingGrantComponent # WD + component: + - type: FlashSoundSuppression #Brigmedic Hardsuit - type: entity @@ -210,6 +215,9 @@ - type: PressureProtection highPressureMultiplier: 0.6 lowPressureMultiplier: 1000 + - type: ClothingGrantComponent # WD + component: + - type: FlashSoundSuppression #Warden's Hardsuit - type: entity @@ -236,6 +244,9 @@ Piercing: 0.9 Heat: 0.9 - type: FlashImmunity # WD edit + - type: ClothingGrantComponent # WD + component: + - type: FlashSoundSuppression #Captain's Hardsuit - type: entity @@ -252,6 +263,9 @@ - type: PressureProtection highPressureMultiplier: 0.3 lowPressureMultiplier: 1000 + - type: ClothingGrantComponent # WD + component: + - type: FlashSoundSuppression #Inspector's Hardsuit - type: entity @@ -287,6 +301,7 @@ highPressureMultiplier: 0.08 lowPressureMultiplier: 1000 - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Chief Medical Officer's Hardsuit - type: entity @@ -349,6 +364,9 @@ Piercing: 0.9 Heat: 0.9 - type: FlashImmunity + - type: ClothingGrantComponent # WD + component: + - type: FlashSoundSuppression #Luxury Mining Hardsuit - type: entity @@ -368,6 +386,7 @@ - type: PointLight radius: 7 energy: 3 + - type: EyeProtection # WD edit #Head of Personnel's Hardsuit WD - type: entity @@ -410,8 +429,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Blood-red Medic Hardsuit - type: entity @@ -437,8 +456,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Syndicate Elite Hardsuit - type: entity @@ -466,8 +485,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Syndicate Commander Hardsuit - type: entity @@ -493,8 +512,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Cybersun Juggernaut Hardsuit - type: entity @@ -518,8 +537,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Wizard Hardsuit - type: entity @@ -546,8 +565,6 @@ Piercing: 0.9 Heat: 0.9 - type: WizardClothes - - type: FlashImmunity - - type: EyeProtection #Organic Space Suit - type: entity @@ -621,8 +638,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Chaplain Hardsuit - type: entity @@ -660,8 +677,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Medical Hardsuit - type: entity @@ -677,8 +694,8 @@ sprite: Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi - type: PointLight color: "#adffec" - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Security Hardsuit - type: entity @@ -701,8 +718,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Janitor Hardsuit - type: entity @@ -718,8 +735,8 @@ sprite: Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi - type: PointLight color: "#cbadff" - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #CBURN Hardsuit - type: entity @@ -759,8 +776,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Deathsquad Hardsuit - type: entity @@ -786,8 +803,8 @@ Heat: 0.80 Radiation: 0.80 Caustic: 0.95 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD - type: ShowHealthBars damageContainers: - Biological diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml index ba53e455c9..1379a25c89 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml @@ -4,6 +4,8 @@ id: DrinkCanBaseFull abstract: true components: + - type: Item + size: Tiny - type: Drink - type: Openable - type: Shakeable diff --git a/Resources/Prototypes/Entities/Objects/Tools/gps.yml b/Resources/Prototypes/Entities/Objects/Tools/gps.yml index 8ae34573ff..482ea96307 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gps.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gps.yml @@ -11,6 +11,7 @@ - state: active - type: Item sprite: Objects/Devices/gps.rsi + size: Tiny - type: HandheldGPS - type: Tag tags: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index 5b39fd357d..c58c7f7113 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -66,7 +66,8 @@ - type: Sprite sprite: Objects/Weapons/Grenades/flashbang.rsi - type: FlashOnTrigger - range: 7 + range: 5 + forceStun: true # WD - type: SoundOnTrigger sound: path: "/Audio/Effects/flash_bang.ogg" @@ -350,7 +351,7 @@ parent: GrenadeBase id: SmokeGrenade name: smoke grenade - description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. + description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. components: - type: Sprite sprite: Objects/Weapons/Grenades/smoke.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 0c547cae22..21097aac66 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -138,8 +138,8 @@ shader: unshaded - type: Flash - type: LimitedCharges - maxCharges: 5 - charges: 5 + maxCharges: 7 + charges: 7 - type: MeleeWeapon canHeavyAttack: false wideAnimationRotation: 180 @@ -148,7 +148,7 @@ Blunt: 0 # melee weapon to allow flashing individual targets angle: 10 - type: Item - size: Small + size: Tiny sprite: Objects/Weapons/Melee/flash.rsi - type: UseDelay - type: StaticPrice diff --git a/Resources/Prototypes/Loadouts/Jobs/Security/common.yml b/Resources/Prototypes/Loadouts/Jobs/Security/common.yml index 5a64004a35..ac569befe4 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Security/common.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Security/common.yml @@ -22,6 +22,14 @@ equipment: SecurityCommandHeadset - type: startingGear id: SecurityCommandHeadset + equipment: + ears: ClothingHeadsetAltSecurityCommand + +- type: itemLoadout + id: SecurityHeadsetFull + equipment: SecurityHeadsetFull +- type: startingGear + id: SecurityHeadsetFull equipment: ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 97a6baf8aa..aa255fe71c 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -161,7 +161,6 @@ id: CommonCommandHeadset name: loadout-group-ears loadouts: - - CommandHeadset - CommandHeadsetAlt # Civilian @@ -767,7 +766,6 @@ id: QuartermasterHeadset name: loadout-group-ears loadouts: - - QuartermasterHeadset - QuartermasterHeadsetAlt - type: loadoutGroup @@ -985,7 +983,6 @@ id: ChiefEngineerHeadset name: loadout-group-ears loadouts: - - ChiefEngineerHeadset - ChiefEngineerHeadsetAlt - type: loadoutGroup @@ -1224,7 +1221,6 @@ id: ResearchDirectorHeadset name: loadout-group-ears loadouts: - - ResearchDirectorHeadset - ResearchDirectorHeadsetAlt - type: loadoutGroup @@ -1604,6 +1600,12 @@ loadouts: - SecurityCommandHeadset +- type: loadoutGroup + id: CommonSecurityHeadsetFull + name: loadout-group-ears + loadouts: + - SecurityHeadsetFull + - type: loadoutGroup id: CommonSecurityBackpack name: loadout-group-backpack @@ -1636,10 +1638,9 @@ - CowboyWhite - type: loadoutGroup # WD - id: ChiefMedicalOfficerEars + id: ChiefMedicalOfficerHeadset name: loadout-group-ears loadouts: - - CMOHeadset - CMOHeadsetAlt - type: loadoutGroup @@ -2029,9 +2030,7 @@ id: InspectorBackpack name: loadout-group-backpack loadouts: - - InspectorBackpack - InspectorSatchel - - InspectorDuffel - CommonSatchelLeather - type: loadoutGroup # WD diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml index f14a9b5069..e2d7aba241 100644 --- a/Resources/Prototypes/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/role_loadouts.yml @@ -385,7 +385,7 @@ id: JobWarden groups: - WardenHead - - CommonSecurityCommandHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityCommandMask # WD - CommonSecurityNeck - WardenJumpsuit @@ -399,7 +399,7 @@ id: JobSeniorOfficer groups: - CommonSecurityHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityCommandMask # WD - CommonSecurityNeck - SeniorOfficerJumpsuit @@ -414,7 +414,7 @@ id: JobSecurityOfficer groups: - CommonSecurityHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityMask # WD - CommonSecurityNeck # WD - SecurityJumpsuit @@ -430,7 +430,7 @@ id: JobDetective groups: - DetectiveHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonMaskCigarette # WD - CommonSecurityNeck - DetectiveJumpsuit @@ -445,7 +445,7 @@ id: JobSecurityCadet groups: - CommonSecurityHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityNeck - SecurityCadetJumpsuit - CommonSecurityBackpack @@ -459,7 +459,7 @@ id: JobChiefMedicalOfficer groups: - ChiefMedicalOfficerHead - - ChiefMedicalOfficerEars # WD + - ChiefMedicalOfficerHeadset # WD - CommonMedicalMask # WD - ChiefMedicalOfficerNeck - ChiefMedicalOfficerJumpsuit diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml index ee1492b45e..1edef943a1 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml @@ -116,6 +116,7 @@ physicalDesc: reagent-physical-desc-saucey flavor: tomato color: "#731008" + slippery: false - type: reagent id: JuiceWatermelon diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index 5ece5e04a3..a53cb1c3dc 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -42,4 +42,4 @@ back: ClothingBackpackQuartermasterFilled shoes: ClothingShoesColorBrown id: QuartermasterPDA - ears: ClothingHeadsetQM + ears: ClothingHeadsetAltCargo diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index 6849bf25e3..bcd5a14890 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -43,4 +43,4 @@ back: ClothingBackpackChiefEngineerFilled shoes: ClothingShoesColorBrown id: CEPDA - ears: ClothingHeadsetCE + ears: ClothingHeadsetAltEngineering diff --git a/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml b/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml index e4fdf5d1c8..9f28aa1a09 100644 --- a/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml +++ b/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml @@ -28,6 +28,6 @@ back: ClothingBackpackFilled shoes: ClothingShoesBootsInspector id: InspectorPDA - ears: ClothingHeadsetAltSecurity + ears: ClothingHeadsetAltSecurityCommand inhand: - BriefcaseBrownFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index f659057461..74f023b60d 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -40,4 +40,4 @@ back: ClothingBackpackCMOFilled shoes: ClothingShoesColorBrown id: CMOPDA - ears: ClothingHeadsetCMO + ears: ClothingHeadsetAltMedical diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 9498e1a9e0..fddecee013 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -37,4 +37,4 @@ back: ClothingBackpackResearchDirectorFilled shoes: ClothingShoesColorBrown id: RnDPDA - ears: ClothingHeadsetRD + ears: ClothingHeadsetAltScience diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index 4fd6c14a98..d7d9776350 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -31,4 +31,4 @@ back: ClothingBackpackSecurityFilledDetective shoes: ClothingShoesBootsCombatFilled id: DetectivePDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index eb2f6dee42..5eebae74c7 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -45,4 +45,4 @@ back: ClothingBackpackHOSFilled shoes: ClothingShoesBootsCombatFilled id: HoSPDA - ears: ClothingHeadsetAltSecurity + ears: ClothingHeadsetAltSecurityCommand diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index c199f9bf06..e4bcb4c3c0 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -33,5 +33,5 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: SecurityCadetPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity pocket1: BookSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 3fb4fda7db..9e9e4d6569 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -30,4 +30,4 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: SecurityPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml index a519e086dd..7bac01133e 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml @@ -39,4 +39,4 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: SeniorOfficerPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index aaad42d38a..88acbf9e13 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -32,4 +32,4 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: WardenPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/_White/Actions/types.yml b/Resources/Prototypes/_White/Actions/types.yml index b5967a28b9..237c7bf44d 100644 --- a/Resources/Prototypes/_White/Actions/types.yml +++ b/Resources/Prototypes/_White/Actions/types.yml @@ -38,7 +38,7 @@ itemIconStyle: BigAction priority: -20 icon: - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi state: icon event: !type:ToggleNightVisionEvent diff --git a/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml b/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml index a46e119761..420cc163d9 100644 --- a/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml +++ b/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml @@ -6,9 +6,9 @@ description: Теперь ты видишь во тьме! components: - type: Sprite - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi - type: Clothing - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi - type: ClothingGrantComponent component: - type: NightVision diff --git a/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml b/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml index cb5494e9cf..4cd0e39620 100644 --- a/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml +++ b/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml @@ -41,7 +41,8 @@ component: - type: NightVision toggleAction: null - toggleSound: null + activateSound: null + deactivateSound: null color: White - type: ShowHealthBars damageContainers: diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES-off.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES-off.png new file mode 100644 index 0000000000..b63f30fc71 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES-off.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES.png new file mode 100644 index 0000000000..199c44122b Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/icon.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png rename to Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/icon.png diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png rename to Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-left.png diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png rename to Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-right.png diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/meta.json b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/meta.json new file mode 100644 index 0000000000..adb273a326 --- /dev/null +++ b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/meta.json @@ -0,0 +1,48 @@ +{ + "version": 1, + "license": null, + "copyright": null, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "equipped-EYES", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-EYES-off", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES.png new file mode 100644 index 0000000000..9bef0a8c05 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/icon.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/icon.png new file mode 100644 index 0000000000..3d5f8ef9b6 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/icon.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-left.png new file mode 100644 index 0000000000..bf67e35d40 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-right.png new file mode 100644 index 0000000000..4ede078291 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/meta.json similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json rename to Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/meta.json diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png deleted file mode 100644 index 7d15515f7a..0000000000 Binary files a/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png and /dev/null differ