;#@>wXi1Xv}wJDhQg#m2LQd1
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
Z{kT65Jzel|`M;>-Z+o;iR#cM${||7Ja3cT!
literal 0
HcmV?d00001
diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl
index 26cd4f8315..88cd0be397 100644
--- a/Resources/Locale/en-US/research/technologies.ftl
+++ b/Resources/Locale/en-US/research/technologies.ftl
@@ -53,6 +53,8 @@ research-technology-advanced-anomaly-research = Advanced Anomaly Research
research-technology-rped = Rapid Part Exchange
research-technology-super-parts = Super Parts
research-technology-deterrence = Deterrence Technologies
+research-technology-night-vision = Night vision
+research-technology-thermal-vision = Thermal vision
research-technology-janitorial-equipment = Janitorial Equipment
research-technology-laundry-tech = Laundry Tech
diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl
index 7eaacc5026..214a259296 100644
--- a/Resources/Locale/en-US/store/uplink-catalog.ftl
+++ b/Resources/Locale/en-US/store/uplink-catalog.ftl
@@ -329,6 +329,12 @@ uplink-hardsuit-syndieelite-desc = An elite version of the blood-red hardsuit, w
uplink-clothing-outer-hardsuit-juggernaut-name = Cybersun Juggernaut Suit
uplink-clothing-outer-hardsuit-juggernaut-desc = Hyper resilient armor made of materials tested in the Tau chromosphere facility. The only thing that's going to be slowing you down is this suit... and tasers.
+uplink-night-vision-name = Night vision goggles
+uplink-night-vision-desc = They allow you to see in the dark, all while looking like normal sunglasses!
+
+uplink-thermal-vision-name = Thermal vision goggles
+uplink-thermal-vision-desc = They allow you to see living creatures regardless of obstacles, all while looking like normal sunglasses!
+
# Misc
uplink-cyberpen-name = Cybersun Pen
uplink-cyberpen-desc = Cybersun's legal department pen, invaluable for forging documents and escaping prisons. Smells vaguely of hard-light and war profiteering.
diff --git a/Resources/Locale/ru-RU/prototypes/actions/types.ftl b/Resources/Locale/ru-RU/prototypes/actions/types.ftl
index 4a9364816a..c14186ba7d 100644
--- a/Resources/Locale/ru-RU/prototypes/actions/types.ftl
+++ b/Resources/Locale/ru-RU/prototypes/actions/types.ftl
@@ -48,3 +48,12 @@ ent-ActionToggleEyes = Открыть/закрыть глаза
.desc = Закройте глаза, чтобы защитить их, или откройте, чтобы насладиться яркими цветами.
ent-ActionToggleWagging = action-name-toggle-wagging
.desc = action-description-toggle-wagging
+
+ent-ToggleNightVision = Переключить ночное зрение
+ .desc = Переключает ночное зрение.
+
+ent-ToggleThermalVision = Переключить тепловизионное зрение
+ .desc = Переключает тепловизионное зрение.
+
+ent-PulseThermalVision = Подать термальный импульт
+ .desc = Временно активируйте тепловизионное зрение.
diff --git a/Resources/Locale/ru-RU/prototypes/entities/clothing/eyes/goggles.ftl b/Resources/Locale/ru-RU/prototypes/entities/clothing/eyes/goggles.ftl
new file mode 100644
index 0000000000..050e373c86
--- /dev/null
+++ b/Resources/Locale/ru-RU/prototypes/entities/clothing/eyes/goggles.ftl
@@ -0,0 +1,23 @@
+# Night Vision Goggles
+ent-ClothingEyesNightVisionGoggles = ПНВ
+ .desc = Усовершенствованный дисплей, который обеспечивает видимость в полной темноте.
+ent-ClothingEyesNightVisionSecurityGoggles = ПНВ службы безопасности
+ .desc = { ent-ClothingEyesNightVisionGoggles.desc }
+ent-ClothingEyesNightVisionMedicalGoggles = ПНВ медицинский
+ .desc = { ent-ClothingEyesNightVisionGoggles.desc }
+ent-ClothingEyesNightVisionDiagnosticGoggles = ПНВ диагностический
+ .desc = { ent-ClothingEyesNightVisionGoggles.desc }
+ent-ClothingEyesNightVisionGogglesSyndie = { ent-ClothingEyesNightVisionGoggles }
+ .desc = { ent-ClothingEyesNightVisionGoggles.desc }
+ent-ClothingEyesNightVisionGogglesNukie = { ent-ClothingEyesNightVisionGoggles }
+ .desc = { ent-ClothingEyesNightVisionGoggles.desc }
+
+# Thermal Vision Goggles
+ent-ClothingEyesThermalVisionGoggles = ПТВ
+ .desc = Термальность - это как отношения, важно не только наличие тепла, но и его распределение.
+ent-ClothingEyesThermalVisionMonocle = термонокль
+ .desc = Видение сквозь стены ещё никогда не было таким нежным и личностным.
+ent-ClothingEyesThermalVisionGogglesSyndie = { ent-ClothingEyesThermalVisionGoggles }
+ .desc = { ent-ClothingEyesThermalVisionGoggles.desc }
+ent-ClothingEyesThermalVisionGogglesNukie = { ent-ClothingEyesThermalVisionGoggles }
+ .desc = { ent-ClothingEyesThermalVisionGoggles.desc }
diff --git a/Resources/Locale/ru-RU/entities/objects/tools/empflashlight.ftl b/Resources/Locale/ru-RU/prototypes/objects/tools/empflashlight.ftl
similarity index 100%
rename from Resources/Locale/ru-RU/entities/objects/tools/empflashlight.ftl
rename to Resources/Locale/ru-RU/prototypes/objects/tools/empflashlight.ftl
diff --git a/Resources/Locale/ru-RU/research/techologies.ftl b/Resources/Locale/ru-RU/research/techologies.ftl
new file mode 100644
index 0000000000..54f3899255
--- /dev/null
+++ b/Resources/Locale/ru-RU/research/techologies.ftl
@@ -0,0 +1,2 @@
+research-technology-night-vision = Ночное видение
+research-technology-thermal-vision = Термальное видение
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/store/uplink-catalog.ftl b/Resources/Locale/ru-RU/store/uplink-catalog.ftl
index 47083e83a4..1f7ec3d6e9 100644
--- a/Resources/Locale/ru-RU/store/uplink-catalog.ftl
+++ b/Resources/Locale/ru-RU/store/uplink-catalog.ftl
@@ -341,6 +341,13 @@ uplink-hardsuit-syndieelite-desc = Элитная версия кроваво-к
uplink-clothing-outer-hardsuit-juggernaut-name = Костюм джаггернаута Cybersun
uplink-clothing-outer-hardsuit-juggernaut-desc = Сверхпрочная броня из материалов, испытанных в хромосферном комплексе Тау. Единственное, что будет замедлять вас - это сам костюм... и тазеры.
+
+uplink-night-vision-name = Прибор ночного видения
+uplink-night-vision-desc = Позволяет вам видеть в темноте, при этом выглядя как обычные солнцезащитные очки!
+
+uplink-thermal-vision-name = Прибор термального видения
+uplink-thermal-vision-desc = Позволяет вам видеть живых существ независимо от преград, при этом выглядя как обычные солнцезащитные очки!
+
# Misc
uplink-cyberpen-name = Ручка Cybersun
uplink-cyberpen-desc = Ручка юридического отдела "Cybersun". Бесценная для подделки документов и побегов из тюрем. Смутно пахнет хардлайтом и наживой на ВПК.
@@ -443,4 +450,4 @@ uplink-hypodart-name = Гиподротик
uplink-hypodart-desc = Неприметный на первый взгляд дротик с увеличенным резервуаром для химических веществ. Он вмещает в себя до 7 ед. реагентов и мгновенно впрыскивает их при попадании в цель. Изначально пуст.
uplink-helmet-name = Шлем спецназа
-uplink-helmet-desc = Чрезвычайно прочный шлем, обычно используемый военизированными формированиями. Он украшен гнусным рисунком в красную и черную полоску.
\ No newline at end of file
+uplink-helmet-desc = Чрезвычайно прочный шлем, обычно используемый военизированными формированиями. Он украшен гнусным рисунком в красную и черную полоску.
diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml
index 21a2882897..0a57157f1b 100644
--- a/Resources/Prototypes/Actions/types.yml
+++ b/Resources/Prototypes/Actions/types.yml
@@ -405,3 +405,42 @@
event:
!type:FabricateActionEvent
fabrication: FoodGumball
+
+- type: entity
+ id: ToggleNightVision
+ name: Switch night vision
+ description: Switches night vision.
+ categories: [ HideSpawnMenu ]
+ components:
+ - type: InstantAction
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Clothing/Eyes/Goggles/nightvision.rsi
+ state: icon
+ event: !type:ToggleNightVisionEvent
+
+- type: entity
+ id: ToggleThermalVision
+ name: Switch Thermal vision
+ description: Switches Thermal vision.
+ categories: [ HideSpawnMenu ]
+ components:
+ - type: InstantAction
+ itemIconStyle: BigAction
+ priority: -20
+ icon:
+ sprite: Clothing/Eyes/Goggles/thermal.rsi
+ state: icon
+ event: !type:ToggleThermalVisionEvent
+
+- type: entity
+ id: PulseThermalVision
+ parent: ToggleThermalVision
+ name: Pulse Thermal Vision
+ description: Activate thermal vision temporarily.
+ categories: [ HideSpawnMenu ]
+ components:
+ - type: InstantAction
+ useDelay: 4
+
diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml
index bf3776e6a9..65916a84b9 100644
--- a/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml
+++ b/Resources/Prototypes/Catalog/Fills/Lockers/misc.yml
@@ -44,7 +44,7 @@
prob: 0.2
- !type:EntSelector
id: WeaponFlareGun
- prob: 0.1
+ prob: 0.05
- !type:EntSelector
id: BoxMRE
prob: 0.1
@@ -165,6 +165,10 @@
- !type:EntSelector
id: WeaponSniperMosin
weight: 2
+ - !type:EntSelector
+ id: ClothingEyesNightVisionGogglesSyndie
+ - !type:EntSelector
+ id: ClothingEyesThermalVisionGogglesSyndie
- type: entityTable
id: MaintenanceLockerLoot
diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml
index 7f9088a3d0..cc0e0bb0f3 100644
--- a/Resources/Prototypes/Catalog/uplink_catalog.yml
+++ b/Resources/Prototypes/Catalog/uplink_catalog.yml
@@ -1532,6 +1532,78 @@
components:
- SurplusBundle
+- type: listing
+ id: UplinkNightGoggles
+ name: uplink-night-vision-name
+ description: uplink-night-vision-desc
+ productEntity: ClothingEyesNightVisionGogglesSyndie
+ discountCategory: rareDiscounts
+ discountDownTo:
+ Telecrystal: 1
+ cost:
+ Telecrystal: 3
+ categories:
+ - UplinkWearables
+ conditions:
+ - !type:StoreWhitelistCondition
+ blacklist:
+ tags:
+ - NukeOpsUplink
+
+- type: listing
+ id: UplinkNightGogglesNukie
+ name: uplink-night-vision-name
+ description: uplink-night-vision-desc
+ productEntity: ClothingEyesNightVisionGogglesNukie
+ discountCategory: rareDiscounts
+ discountDownTo:
+ Telecrystal: 1
+ cost:
+ Telecrystal: 3
+ categories:
+ - UplinkWearables
+ conditions:
+ - !type:StoreWhitelistCondition
+ whitelist:
+ tags:
+ - NukeOpsUplink
+
+- type: listing
+ id: UplinkThermalGoggles
+ name: uplink-thermal-vision-name
+ description: uplink-thermal-vision-desc
+ productEntity: ClothingEyesThermalVisionGogglesSyndie
+ discountCategory: rareDiscounts
+ discountDownTo:
+ Telecrystal: 1
+ cost:
+ Telecrystal: 3
+ categories:
+ - UplinkWearables
+ conditions:
+ - !type:StoreWhitelistCondition
+ blacklist:
+ tags:
+ - NukeOpsUplink
+
+- type: listing
+ id: UplinkThermalGogglesNukie
+ name: uplink-thermal-vision-name
+ description: uplink-thermal-vision-desc
+ productEntity: ClothingEyesThermalVisionGogglesNukie
+ discountCategory: rareDiscounts
+ discountDownTo:
+ Telecrystal: 1
+ cost:
+ Telecrystal: 3
+ categories:
+ - UplinkWearables
+ conditions:
+ - !type:StoreWhitelistCondition
+ whitelist:
+ tags:
+ - NukeOpsUplink
+
# Tools
- type: listing
diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml
index f0fdfa0a07..14474cf2ae 100644
--- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml
+++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml
@@ -233,6 +233,7 @@
- type: Clothing
sprite: Clothing/Eyes/Glasses/ninjavisor.rsi
- type: FlashImmunity
+ - type: NightVision
- type: entity #Fake goggles, the latest in anti-valid hunting technology
parent: ClothingEyesBase
diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/goggles.yml b/Resources/Prototypes/Entities/Clothing/Eyes/goggles.yml
new file mode 100644
index 0000000000..4348c87227
--- /dev/null
+++ b/Resources/Prototypes/Entities/Clothing/Eyes/goggles.yml
@@ -0,0 +1,114 @@
+# Night Vision Goggles
+
+- type: entity
+ parent: ClothingEyesBase
+ id: ClothingEyesNightVisionGoggles
+ name: night vision goggles
+ description: An advanced heads-up display which provides id data and vision in complete darkness.
+ components:
+ - type: Sprite
+ sprite: Clothing/Eyes/Goggles/nightvision.rsi
+ - type: Clothing
+ sprite: Clothing/Eyes/Goggles/nightvision.rsi
+ - type: NightVision
+ - type: IdentityBlocker
+ coverage: EYES
+
+- type: entity
+ parent: [ClothingEyesNightVisionGoggles, ShowSecurityIcons]
+ id: ClothingEyesNightVisionSecurityGoggles
+ name: night vision security goggles
+ components:
+ - type: Sprite
+ sprite: Clothing/Eyes/Goggles/security_nightvision.rsi
+ - type: Clothing
+ sprite: Clothing/Eyes/Goggles/security_nightvision.rsi
+
+- type: entity
+ parent: [ClothingEyesNightVisionGoggles, ClothingEyesHudMedical]
+ id: ClothingEyesNightVisionMedicalGoggles
+ name: night vision medical goggles
+ components:
+ - type: Sprite
+ sprite: Clothing/Eyes/Goggles/medical_nightvision.rsi
+ - type: Clothing
+ sprite: Clothing/Eyes/Goggles/medical_nightvision.rsi
+
+- type: entity
+ parent: [ClothingEyesNightVisionGoggles, ClothingEyesHudDiagnostic]
+ id: ClothingEyesNightVisionDiagnosticGoggles
+ name: night vision diagnostic goggles
+ components:
+ - type: Sprite
+ sprite: Clothing/Eyes/Goggles/diagnostic_nightvision.rsi
+ - type: Clothing
+ sprite: Clothing/Eyes/Goggles/diagnostic_nightvision.rsi
+
+- type: entity
+ parent: ClothingEyesNightVisionGoggles
+ id: ClothingEyesNightVisionGogglesSyndie
+ suffix: "Chameleon"
+ components:
+ - type: ChameleonClothing
+ slot: [eyes]
+ default: ClothingEyesNightVisionGoggles
+ - type: UserInterface
+ interfaces:
+ enum.ChameleonUiKey.Key:
+ type: ChameleonBoundUserInterface
+
+- type: entity
+ parent: [ClothingEyesNightVisionGogglesSyndie, ShowSecurityIcons]
+ id: ClothingEyesNightVisionGogglesNukie
+ suffix: "Chameleon, NukeOps"
+ components:
+ - type: ShowSyndicateIcons
+
+# Thermal Vision Goggles
+
+- type: entity
+ parent: ClothingEyesBase
+ id: ClothingEyesThermalVisionGoggles
+ name: thermal vision goggles
+ description: Thermals in the shape of glasses.
+ components:
+ - type: Sprite
+ sprite: Clothing/Eyes/Goggles/thermal.rsi
+ - type: Clothing
+ sprite: Clothing/Eyes/Goggles/thermal.rsi
+ - type: ThermalVision
+ pulseTime: 2
+ toggleAction: PulseThermalVision
+ - type: IdentityBlocker
+ coverage: EYES
+
+- type: entity
+ parent: ClothingEyesThermalVisionGoggles
+ id: ClothingEyesThermalVisionMonocle
+ name: thermonocle
+ description: Never before has seeing through walls felt so gentlepersonly.
+ components:
+ - type: Sprite
+ sprite: Clothing/Eyes/Goggles/monocle_thermal.rsi
+ - type: Clothing
+ sprite: Clothing/Eyes/Goggles/monocle_thermal.rsi
+
+- type: entity
+ parent: ClothingEyesThermalVisionGoggles
+ id: ClothingEyesThermalVisionGogglesSyndie
+ suffix: "Chameleon"
+ components:
+ - type: ChameleonClothing
+ slot: [eyes]
+ default: ClothingEyesThermalVisionGoggles
+ - type: UserInterface
+ interfaces:
+ enum.ChameleonUiKey.Key:
+ type: ChameleonBoundUserInterface
+
+- type: entity
+ parent: [ClothingEyesThermalVisionGogglesSyndie, ShowSecurityIcons]
+ id: ClothingEyesThermalVisionGogglesNukie
+ suffix: "Chameleon, NukeOps"
+ components:
+ - type: ShowSyndicateIcons
diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml
index ed184845bf..6f28812549 100644
--- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml
+++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml
@@ -799,6 +799,9 @@
- type: FlashSoundSuppression
maxRange: 0
# WD EDIT END
+ - type: ThermalVision
+ color: "#98EEFB"
+ lightRadius: 15
#MISC. HARDSUITS
#Clown Hardsuit
diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
index b8ff03abca..ada65ad33f 100644
--- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
+++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml
@@ -126,6 +126,7 @@
cell_slot:
name: power-cell-slot-component-slot-name-default
- type: Body
+ thermalVisibility: false
- type: StatusEffects
allowed:
- Stun
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
index d981061993..bf921c0885 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
@@ -70,6 +70,12 @@
barkType: mouse
minTime: 10 # Mice like to squeak, I think. You can always put your pet mouse to sleep if it gets annoying
maxTime: 160
+ - type: NightVision
+ isActive: true
+ toggleAction: null
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
- type: entity
name: bee
@@ -1793,6 +1799,12 @@
Taco: RatTaco
Burger: RatBurger
Skewer: RatSkewer
+ - type: NightVision
+ isActive: true
+ toggleAction: null
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
# WD EDIT START
- type: Destructible
thresholds:
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
index d241173f2e..356615d2e9 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml
@@ -88,6 +88,12 @@
interfaces:
enum.SurgeryUIKey.Key:
type: SurgeryBui
+ - type: NightVision
+ isActive: true
+ toggleAction: null
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
- type: entity
parent: BaseMobCarp
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
index abe602037f..9e4f72bb0c 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
@@ -132,6 +132,12 @@
interfaces:
enum.SurgeryUIKey.Key:
type: SurgeryBui
+ - type: NightVision
+ isActive: true
+ toggleAction: null
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
- type: entity
id: MobRatKingBuff
@@ -317,6 +323,12 @@
- type: FireVisuals
sprite: Mobs/Effects/onfire.rsi
normalState: Mouse_burning
+ - type: NightVision
+ isActive: true
+ toggleAction: null
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
- type: weightedRandomEntity
id: RatKingLoot
diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
index 7358d07236..db8287e13e 100644
--- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
+++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml
@@ -140,6 +140,12 @@
- Xeno
understands:
- Xeno
+ - type: ThermalVision
+ isActive: true
+ lightRadius: 15
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
- type: entity
name: Praetorian
diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
index fc87201b09..09791e6c7d 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml
@@ -38,6 +38,7 @@
bodyType: Kinematic
- type: Body
prototype: Aghost
+ thermalVisibility: false
- type: Access
groups:
- AllAccess
diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
index 0f24313712..4c03c6c688 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml
@@ -140,6 +140,11 @@
tags:
- CannotSuicide
- DoorBumpOpener
+ - type: NightVision
+ isActive: true
+ color: "#808080"
+ activateSound: null
+ deactivateSound: null
- type: entity
parent: BaseMobDragon
diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml
index 7c65b89a76..b8de17a55f 100644
--- a/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml
+++ b/Resources/Prototypes/Entities/Mobs/Player/silicon_base.yml
@@ -233,6 +233,7 @@
- type: Body
prototype: IPC
requiredLegs: 2
+ thermalVisibility: false
- type: Ensnareable
sprite: Objects/Misc/ensnare.rsi
- type: Speech
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 8ffa9e608c..d2924ad074 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -362,6 +362,9 @@
- AnimalTranslator
- MofficTranslatorImplanter
- MofficTranslator
+ - ClothingEyesNightVisionGoggles
+ - ClothingEyesNightVisionDiagnosticGoggles
+ - ClothingEyesThermalVisionGoggles
- RCDAmmo #DeltaV
- RCD #EE
# Shitmed Change
@@ -911,6 +914,7 @@
- WeaponDisablerSMG
- WeaponLaserCannon
- WeaponLaserCarbine
+ - ClothingEyesNightVisionSecurityGoggles
- ClothingHeadHelmetInsulated # Nyanotrasen - Insulative headgear
- ClothingHeadCage # Nyanotrasen - Insulative headgear
- ShockCollar # Nyanotrasen - Shock Collar
@@ -1059,6 +1063,7 @@
- ClothingEyesHudMedical # Nyano
- ChemicalPayload # Nyano
- SyringeCryostasis
+ - ClothingEyesNightVisionMedicalGoggles
# Shitmed Change
- EnergyScalpel
- EnergyCautery
diff --git a/Resources/Prototypes/Procedural/salvage_loot.yml b/Resources/Prototypes/Procedural/salvage_loot.yml
index 7e7ddf6ff9..1b941cd1a2 100644
--- a/Resources/Prototypes/Procedural/salvage_loot.yml
+++ b/Resources/Prototypes/Procedural/salvage_loot.yml
@@ -106,6 +106,10 @@
- proto: WeaponTeslaGun
prob: 0.1
cost: 2
+ - proto: ClothingEyesNightVisionGoggles
+ cost: 8
+ - proto: ClothingEyesGlassesThermal
+ cost: 8
# Mob loot table
diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml
index 2b0d6fa44f..56e1739817 100644
--- a/Resources/Prototypes/Recipes/Lathes/devices.yml
+++ b/Resources/Prototypes/Recipes/Lathes/devices.yml
@@ -234,3 +234,33 @@
Steel: 500
Glass: 400
Gold: 100
+
+- type: latheRecipe
+ id: ClothingEyesNightVisionGoggles
+ result: ClothingEyesNightVisionGoggles
+ completetime: 2
+ materials:
+ Steel: 200
+ Glass: 100
+ Silver: 100
+ Gold: 100
+
+- type: latheRecipe
+ id: ClothingEyesNightVisionDiagnosticGoggles
+ result: ClothingEyesNightVisionDiagnosticGoggles
+ completetime: 2
+ materials:
+ Steel: 200
+ Glass: 100
+ Silver: 100
+ Gold: 100
+
+- type: latheRecipe
+ id: ClothingEyesThermalVisionGoggles
+ result: ClothingEyesThermalVisionGoggles
+ completetime: 2
+ materials:
+ Steel: 200
+ Glass: 100
+ Silver: 100
+ Gold: 100
diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml
index ba8f596d21..29f3fed247 100644
--- a/Resources/Prototypes/Recipes/Lathes/medical.yml
+++ b/Resources/Prototypes/Recipes/Lathes/medical.yml
@@ -250,4 +250,15 @@
completetime: 2
materials:
Steel: 100
- Plastic: 100
\ No newline at end of file
+ Plastic: 100
+
+- type: latheRecipe
+ id: ClothingEyesNightVisionMedicalGoggles
+ result: ClothingEyesNightVisionMedicalGoggles
+ completetime: 7
+ materials:
+ Steel: 300
+ Glass: 300
+ Silver: 100
+ Gold: 100
+ Plasma: 200
diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml
index 1d9bdcfeb0..ed37e3abeb 100644
--- a/Resources/Prototypes/Recipes/Lathes/security.yml
+++ b/Resources/Prototypes/Recipes/Lathes/security.yml
@@ -995,4 +995,14 @@
completetime: 2
materials:
Plastic: 15
- Uranium: 10
\ No newline at end of file
+ Uranium: 10
+
+- type: latheRecipe
+ id: ClothingEyesNightVisionSecurityGoggles
+ result: ClothingEyesNightVisionSecurityGoggles
+ completetime: 5
+ materials:
+ Steel: 500
+ Glass: 300
+ Silver: 100
+ Gold: 100
diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml
index 423ec0f84d..cf6493847a 100644
--- a/Resources/Prototypes/Research/experimental.yml
+++ b/Resources/Prototypes/Research/experimental.yml
@@ -167,6 +167,33 @@
- MedicalScannerMachineCircuitboard
- MetempsychoticMachineCircuitboard
+- type: technology
+ id: NightVisionTech
+ name: research-technology-night-vision
+ icon:
+ sprite: Clothing/Eyes/Goggles/nightvision.rsi
+ state: icon
+ discipline: Experimental
+ tier: 2
+ cost: 10000
+ recipeUnlocks:
+ - ClothingEyesNightVisionGoggles
+ - ClothingEyesNightVisionSecurityGoggles
+ - ClothingEyesNightVisionMedicalGoggles
+ - ClothingEyesNightVisionDiagnosticGoggles
+
+- type: technology
+ id: ThermalVisionTech
+ name: research-technology-thermal-vision
+ icon:
+ sprite: Clothing/Eyes/Goggles/thermal.rsi
+ state: icon
+ discipline: Experimental
+ tier: 2
+ cost: 10000
+ recipeUnlocks:
+ - ClothingEyesThermalVisionGoggles
+
# Tier 3
- type: technology
diff --git a/Resources/Prototypes/Shaders/shaders.yml b/Resources/Prototypes/Shaders/shaders.yml
index 108b9f778b..96c51d1a98 100644
--- a/Resources/Prototypes/Shaders/shaders.yml
+++ b/Resources/Prototypes/Shaders/shaders.yml
@@ -127,4 +127,9 @@
- type: shader
id: Ethereal
kind: source
- path: "/Textures/Shaders/ethereal.swsl"
\ No newline at end of file
+ path: "/Textures/Shaders/ethereal.swsl"
+
+- type: shader
+ id: NightVision
+ kind: source
+ path: "/Textures/Shaders/nightvision.swsl"
diff --git a/Resources/Prototypes/WhiteDream/Entities/Clothing/Cult/armor.yml b/Resources/Prototypes/WhiteDream/Entities/Clothing/Cult/armor.yml
index 04279d51d2..bdbb4bac46 100644
--- a/Resources/Prototypes/WhiteDream/Entities/Clothing/Cult/armor.yml
+++ b/Resources/Prototypes/WhiteDream/Entities/Clothing/Cult/armor.yml
@@ -113,6 +113,12 @@
sprite: Clothing/Eyes/Misc/blindfold.rsi
- type: FlashImmunity
- type: EyeProtection
+ - type: NightVision
+ isActive: true
+ toggleAction: null
+ activateSound: null
+ deactivateSound: null
+ color: White
- type: ShowHealthBars
damageContainers:
- Biological
@@ -120,5 +126,3 @@
- type: ShowHealthIcons
damageContainers:
- Biological
- # TODO: ADD NIGHT VISION
-
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/equipped-EYES-off.png b/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/equipped-EYES-off.png
new file mode 100644
index 0000000000000000000000000000000000000000..b63f30fc713a739b08ea1070559e2d3b6abf3f6d
GIT binary patch
literal 452
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R53
zr;B4q#hkaZ9K8-ZNVLvZ2+=sg&GN=-_pVLq1q&5k=x)-e5L(!M$7$j6723PGU#)W5
z#>Fc#EA)*#M@!aG&dIJ7@0$-8IDayh|E%7wZ
z^T!=~_Ut$ULtZq`>HPbLKH)0w_^@&grxzQ>o$a;58P>sLRUl^pFqX^AoC_sf|-
zH%2Ayz4<4?T9&WSOzL5xS@Ej(Dhux2*`~2dY(w&WnfHDSyN;9=|6h33dcn>2wQv7Q
z)v`MDu{6kVGFS>R6sa&g@nASHkpbcsG>L}w?5&9rY>pRx?sqz^_N1~;=k%T{AC(Rm
zG2dQv;OyJEoDS0?dVgL{4!!Iyw=mT1fxtA;7qilMCvVtaXE^hK>f#Gp@*kwHG1Z^^
z*m`w?mzopr
E058M1eEv^N50mYoN%&OG`A^vbtyPxmWzq$#J@{|EG+Kx&SYsS@l)(mYpr|D^}r1WthR3
zz}CqJ^9SI^ZW7tZ~s)iJ6OzpY?r&ODX!rS;WqlUYpY+5+P9
p=YUjt?g>1!-^SjYoDg~=zRyZNy+M4FAu!c4c)I$ztaD0e0swobG`0W$
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/icon.png b/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..8bcf7105c2ba36f66beaadf560b76a9e095f924d
GIT binary patch
literal 306
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl
z_H+M9WCil21AIbU?VJO24Q(VOltLquw`VCWjnv%JYH?##2vA-%W$|wy#aR;M7yKUz
z7=ryPgg}A?9+AZi419+{nDKc2iWHz=x2KC^h=u>#37&k+iaacL-zNV2-+ei4zDJ)Sg7qp~XuIk%3Jr6%9C9(X0nn1$i0KY~V>9=9~Sid|BymH<$dA6Q|OX1S@O)G`n
z`d78ixbDkXrrP|x``z2M%J-f0R4;o?D*hsWD6~k)WQhu=vS@I^?xt5)|0Ev}`lWu9
mpGBE_+J{c}7k{*`{9<~wS!TBVg?x}(89ZJ6T-G@yGywp$pK%)i
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/inhand-left.png b/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..04fff80e4df5f5bfe6b670cf9f68368e945a073a
GIT binary patch
literal 233
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`NC)_YxB_Vj
z2_;=a8$0KKGkM1Mnl&CTboqZO@&Et-xdI8oKxxjBAirP+ARi3OnPy)B3Z{FyIEF;D
zzP)yk?|=dabHI`X|Ne{TZ+A86ev>k7-|S;TdqP_}Ufh?N@s8pCxopE;;RRtO^-kZd
z{2adSo4^0Qd9w|pXvFOLue+Qj#rWKnl$5MImaWkFymHZ|6YAYw9~Q1S!l|RxzKdax
XEW^!ZZ4OI-Rx)_H`njxgN@xNA_h(vM
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Goggles/diagnostic_nightvision.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..d80344136fca4bab3f4e25ae0dc66b77c694904f
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`NC)_YxB_Vj
z2_;=a8$0KKGkM1Mnl&CTboqZO@&Et-xdI8oKxxjBAirP+ARi3OnPy)B3Z{6vIEF;D
zzP)D6cR+!M`GSD@fxrHD`gG+r6SJS1Cr`epFc#EA)*#M@!aG&dIJ7@0$-8IDayh|E%7wZ
z^T!=~_Ut$ULtZq`>HPbLKH)0w_^@&grxzQ>o$a;58P>sLRUl^pFqX^AoC_sf|-
zH%2Ayz4<4?T9&WSOzL5xS@Ej(Dhux2*`~2dY(w&WnfHDSyN;9=|6h33dcn>2wQv7Q
z)v`MDu{6kVGFS>R6sa&g@nASHkpbcsG>L}w?5&9rY>pRx?sqz^_N1~;=k%T{AC(Rm
zG2dQv;OyJEoDS0?dVgL{4!!Iyw=mT1fxtA;7qilMCvVtaXE^hK>f#Gp@*kwHG1Z^^
z*m`w?mzopr
E058M1eEubw%a%8SRV``369S$#*7XdTVcwJeySGVP{uof;WesA9Xp4}yl?V0)a8riu=ZSN^NYA_$*
zVK8RMS-@~T|Blw9@9)lqW%T=hc^@59VJ0NybpE`i<$I$>-;{t(|)JLu#4Yk?Wi4-^IPQH)NcE46?QpOx&`Immzifrw`A4D{Q3IHv_|*&@uT(i|2=KG>teny<`1qntKR$e<VqPDJP
z-Os{8H|xtU{_OBqx*G6@tLs(G^Q)Hi8B8)^Yz>kOX$&(M6G&!ElTrBh{@>TFqHkh+
zs_ODiGFHj+JK4DI4iV^fIDcN((xG&1gGQXmL;vTeuJ1JX^5@PZ<|EDh;&}_caa{n$
r3g3kztwR5v|J?aglY?{z+-K~|lbbFZd?FT@UKu=H{an^LB{Ts5{kAk(
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/medical_nightvision.rsi/icon.png b/Resources/Textures/Clothing/Eyes/Goggles/medical_nightvision.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..52522c080e85e6a1a893ba5bbd642663d48252d5
GIT binary patch
literal 306
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl
z_H+M9WCil21AIbU?VJO24Q(VOltLqu6?*rG<*v6}zd!KWS)hE+0@uAjinAohFZe$c
zFa-No2!R9(JR*x382Ao@Fyrz36)8Z$Zci7-5DWje6Fm8t6?s_hzD@l3zx#69e2+kp
zr&gs0E@(-&T-CR6dLDjIN@Do~HGzc30e+1#(r?4|v3_|Nc;&oh@@zc^m%^p*n^p?D
z^{;B3aov}(OttxW_q(@imG3+0sb2P)RQyH$P-u~o$r2S#Wzpb--A%8q{z*O{^h^CH
mKZ`Q=v=5!`FaBs>`Ni~Vv&?M!3;7_oGI+ZBxvXk44ofy`glX(f`NC)_YxB_Vj
z2_;=a8$0I!m8JJ&``&Bq-~9de&6{l)MI&a{f8FIQDaPlnq@-l!v22CT=aq{#olx)g`mk`t5l$Vg_FW8n
XWEpNQYjaovw35No)z4*}Q$iB}O9Nb-
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/medical_nightvision.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Goggles/medical_nightvision.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9c17318b4ee395b57eb4efab8c1756143523406
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`NC)_YxB_Vj
z2_;=a8$0I!m8JJ&``Q#W5tJ
z_3brlz5@z8%ohaI5B&AN)2A!1nV9|5JbCg(B^Q_f%oRV@G8f0K%`jMhv?RyjtK8Z9
zymw!(c4WQwZ1uMbJfHpqc>nl!m_blbP&O*Jzvt>V53`=z%DK1XeoF7KwR^#IC55(qv;yP#7H2K0>|A0A0-$kw5
z6(>6%PgxXLE_MH0&uDSA^2;w6CjS(dyMFz}EUxa^+^kEtwA@JEP`!Klx|IbtQZ3@*
z5@)S%nsj@A$JhBsxO_f`YMd5g_+WDX#%~@If5u~W1}lOWWNV#0zSJ?Bb%S5y!8Ht%
z^X0jgJ8*cK|Fu8z>$kn*HU??_17Zn}8E-J<*f2yl^s*;#Z}`ZN!)PYgpnKpL^9I%%
z6%0s<3^UFs&){3oxRc@5XO3q~Up{lpKfhiJ$jocIwQIsZsdpPr7yJrv=bXXKz+nHG
zqg>iDa?f$jjC1TumaXOP{I*>xVgFoCg9WcYUXhurTPl}Q$oeHe{_y=LTmjX;11wnA
iBp0z}JR-(1pLx$LUT)lx{@o84UkskEelF{r5}E*W3du_V
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/equipped-EYES.png b/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/equipped-EYES.png
new file mode 100644
index 0000000000000000000000000000000000000000..dc4d9e775b88d077723af637c09a002db51a84a7
GIT binary patch
literal 410
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TRv
zr;B4q#hkad7J4}+%CvoSkGx>ER!MJtRLSXk4T)z~B*Y5rnRRfJd4g4f^o^X;&51@C
zg1nC|>ieYq`}g$ee>?Gl2Y>bz^EL04os`ZnNu0~T?&a3<{?ocGpM(Rd8>hbvy#2C%
zb8*43r#~3Cu3|iOw!B^Y-ZS3ji-!BxGkAqEPnoQ5{(tL@XTNIZpX3b+Wq$K5tzLfb
z^~%diVK3Y_*zg)SuMB87|D0{>AqKl?;cuV4UJxYF@aX0ALk!>Aw0By5;aI+a{R<
zX@b=(kqt$^1nZBVW^!2@sKU6&Z@&tsz)sgmEFE(mc`&)8F@U^^iM}(RDDYh>5>Rvo
P7}yM+u6{1-oD!M<%d4uQ
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/icon.png b/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0aaa8ae9aa3c281302ad194b0a2b7b1a30f4d21
GIT binary patch
literal 298
zcmV+_0oDGAP)qE$6}EuNQ7bkzjg&GExgwG!?EerK=fwVrJ$Az(jfTU#
wGaKHE%iEaGi#ILUo+rw;(+U14XZUA%0jaqLSXS!5lK=n!07*qoM6N<$f=#%29{>OV
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/meta.json
new file mode 100644
index 0000000000..ad770fb0f8
--- /dev/null
+++ b/Resources/Textures/Clothing/Eyes/Goggles/monocle_thermal.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/BlueMoon-Labs/MOLOT-BlueMoon-Station/blob/master/icons/obj/clothing/glasses.dmi",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "equipped-EYES",
+ "directions": 4
+ },
+ {
+ "name": "equipped-EYES-off",
+ "directions": 4
+ },
+ {
+ "name": "icon"
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/equipped-EYES-off.png b/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/equipped-EYES-off.png
new file mode 100644
index 0000000000000000000000000000000000000000..b63f30fc713a739b08ea1070559e2d3b6abf3f6d
GIT binary patch
literal 452
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R53
zr;B4q#hkaZ9K8-ZNVLvZ2+=sg&GN=-_pVLq1q&5k=x)-e5L(!M$7$j6723PGU#)W5
z#>Fc#EA)*#M@!aG&dIJ7@0$-8IDayh|E%7wZ
z^T!=~_Ut$ULtZq`>HPbLKH)0w_^@&grxzQ>o$a;58P>sLRUl^pFqX^AoC_sf|-
zH%2Ayz4<4?T9&WSOzL5xS@Ej(Dhux2*`~2dY(w&WnfHDSyN;9=|6h33dcn>2wQv7Q
z)v`MDu{6kVGFS>R6sa&g@nASHkpbcsG>L}w?5&9rY>pRx?sqz^_N1~;=k%T{AC(Rm
zG2dQv;OyJEoDS0?dVgL{4!!Iyw=mT1fxtA;7qilMCvVtaXE^hK>f#Gp@*kwHG1Z^^
z*m`w?mzopr
E058M1eE(56?F=2Egz13RyoeI)BL=X2J-)z>E(+4Mi&
z``V*l_3ymve|Dv^z9`%Mw14qp2|nd*k7}x7qyA(GUV8htZvRHt70;F*_3u~oEMBed
zc=@ya`}foLpF8*H{L!QK+xJGq_L{$b{qgAoh3vYphFATszgRt0$cz7$X)W>QUfjM)
zHn+*EeunSf9vxt6U-fzB{M|eH4KM$1*!^2~mj_6geB4wJioOZ>O~p_I#bo`3qqpU10zeil#S_HtVs`1;xNlV{^+F!)a;-)*Vv
z9_pv%`j1~e@5I(HFMj*XIL4O_ET3xre)(gS${z7^i_rAFr(ZtZ!tp)7e)nc!-+71a
zWm^nyJbiXu*V^INqLwYJBK$dwzVi>;*CsMs?$5i)_+t9slT10*VS)*8>L**f|I28rn!mD1}BQ
zi!9KSsclyt1T!`qZMy~(>
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/inhand-left.png b/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..995b37471b38d3dbcef1e91888c4ed58239b2d29
GIT binary patch
literal 385
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVD#{GaSW+oe0ytS)}a8AV;?79
zTDrUS+Q#IAP0lZsthSWoxw9WU{v!DYhg1B5>~=oQcTG*fg=?A>V|Tglb68?=^-eYO
z#s71CKGf`de*CKH@t#%&CJu!LG~z%Yr^~+Gxjp%tUSD5r^X>EFvzGg-|4-4(F^q^Z
znq&F=?YHVp)rX(%y813!_Xwq1POdh~sI^pF2$AHG+EHSOm8{6o=W#kb{d*H*u;
zS^a$a*}YN)E5Bwqi(qjds&fl0m=50K3wI1TBe%n+zhXZBibaLCi>F;y-d9lL*MH>|
rOUn$om3QkIfC6>yPr#m?k;`yJy1Mbjqo4nPLCfIj>gTe~DWM4fU$Cme
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3efa67f837fbc9cc5851d2ec09ce705d1bc7652
GIT binary patch
literal 410
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU`+IMaSW+oe0ytS)}a82qaV*-
zI(paX^^L%Q0*zQNYmK?LH#R>={vl!4^nkmhv>;%Yc+?A(J}Zr~mvWYk+>A$OyLd19
z_g={GyV~0qbm+$>=7ys&Nlh=Q<
zJ!dO^ygOUHQG3Fv|Ldli?To*f`uzN=uk8ZK*JtUR*PLIZwZ3S#ynd*fZk_a9R-vmW
zsw=~TEKR3G|E%SZ_IKFwA|qhSyU$x~P2=DG{(Shi#ZG}pxv9aGQ=@<0?f6!7|K*OY
zQ`GdIZ7#TX)%Rz{DfjNVPVE`;cFGM5OdJaMh-%K9T5Fl-U7qDhM|P%(6`OryKf<{%
z{5<>ZPQmAGm2;F^RICj@-Ef>4WXl*eqeQ*!+LOX1|M&}1Z*)FXu}}gTEi?as)UL{^
V#;mG;OXk;vd$@?2>@%NsSE%B
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/meta.json
new file mode 100644
index 0000000000..987b20b9af
--- /dev/null
+++ b/Resources/Textures/Clothing/Eyes/Goggles/nightvision.rsi/meta.json
@@ -0,0 +1,48 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation",
+ "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/Clothing/Eyes/Goggles/security_nightvision.rsi/equipped-EYES-off.png b/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/equipped-EYES-off.png
new file mode 100644
index 0000000000000000000000000000000000000000..b63f30fc713a739b08ea1070559e2d3b6abf3f6d
GIT binary patch
literal 452
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R53
zr;B4q#hkaZ9K8-ZNVLvZ2+=sg&GN=-_pVLq1q&5k=x)-e5L(!M$7$j6723PGU#)W5
z#>Fc#EA)*#M@!aG&dIJ7@0$-8IDayh|E%7wZ
z^T!=~_Ut$ULtZq`>HPbLKH)0w_^@&grxzQ>o$a;58P>sLRUl^pFqX^AoC_sf|-
zH%2Ayz4<4?T9&WSOzL5xS@Ej(Dhux2*`~2dY(w&WnfHDSyN;9=|6h33dcn>2wQv7Q
z)v`MDu{6kVGFS>R6sa&g@nASHkpbcsG>L}w?5&9rY>pRx?sqz^_N1~;=k%T{AC(Rm
zG2dQv;OyJEoDS0?dVgL{4!!Iyw=mT1fxtA;7qilMCvVtaXE^hK>f#Gp@*kwHG1Z^^
z*m`w?mzopr
E058M1eEetl7au2E?VTg*
ze>mZH*ynBOiwY7il
zzuUfh`upeu-;V$Mee*l}lzn#luGCr0NffO&X8b^?^`Wi1k8LvP6cPi(H{m>BR
zVK9aSHSvrMZx~*tf8TFe(;D0D`F{E|*#~b<+br?kvUrvSOV$1@Zy4U5f8~E^vf7`Q
zQ9t$gm({Lg$^wbL{BT*=Jm5PQkN?fTmo_nf`RKy=|5IINoj42WE|71vlDK?Fdg*##
Pl4S67^>bP0l+XkKzim56
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/icon.png b/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..80ae69d53bada105ba124e8045888bb0cc92f94b
GIT binary patch
literal 505
zcmVPx$vq?ljR9J=Wls`x#K@^8SgJ6*&m?l@?Zl_Ff8e
zy@BhkEG+E=K@y0akb^`a5scXEs=Myispg7vf*Z5DL5nMHzG|5_^WN|G-p+tRp-}wq
zOa%oSjfQWmQmu(`>#k$-YyYPwZ?RbP%`+V&U>v2=x=80V04&q+6*o@Ey9Ja=>jDT(
zEcaEaHL>?&J85+P^s2LHk0(Mce_0-(;%JG
zSX^9qb?)Ku3F&-mXIH#g!0MOp!gXw#Ohig)xWg6Vy_kHU`
zf&|Fq<#vnZ%Nyc}6s}`a&~-M?jw!cWSf)WXlO&r-(yZ5U9ea4*G7XN74gyVv{)ClI
zll=Su9fxlngK{KBJdq+lH{j$}qoA*_d3H=+MCpE*9Xba>i-&dqpf92T-1TQTnfja9
zb!;}GUpduc0OaQe^dd3Oxk-vcNCzy_;PBIDXt(G^VqAQjC;dEM>9kp|vzA)|4bR*s
vCG-}Idw8TfdEZAFbszK+DijKZ;-B*e%6-anRB9Xj00000NkvXXu0mjf^S9-c
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/inhand-left.png b/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..02b00b1591eea9b0c895e3a2a40ac644df2afe07
GIT binary patch
literal 233
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`NC)_YxB_Vj
z2_;=a8$0KKVsYJBqH=r0gl}8${Qv)7Ep<;nP@1zO$S;@y$Oi*+rrB43g6W6>n>+WF+O)CB_%75Wh-<(uUxe0gnGBvhlMMSaO!Ba?_$^^
W%W!j9o5K>Il?k44ofy`glX(f`u%tWsIx;Y9
z?C1WI$O`032l#}z+BpZz5|z_6v?&(Xm5@-{BPRU+|Nq+-JV5!=^5?$*DbA80zhIys
z7%&9;R|tUw3p^r=85sBugD~Uq{1quc!9GtH$B+p3x6`bJ4k&Q23i^Ker`{*=*xdNh
z63>s@0=RB0mld&NVq{@r5#X>F5||mY)-a@ae%B4Fb6>g2rezoG<15a3zWAYuyXUlK
z=E(RtTqmNtf>-*eTYvqX|LTC>J8c061qX&k29ODp7u>Zi`SSPfyM@Ua`Q`kw$>p1?
oU(9$^Hht<@`ST7RA_Wey_TQ^(H(6x73g|KhPgg&ebxsLQ0D|>x_W%F@
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/meta.json
new file mode 100644
index 0000000000..2b65c68fe8
--- /dev/null
+++ b/Resources/Textures/Clothing/Eyes/Goggles/security_nightvision.rsi/meta.json
@@ -0,0 +1,48 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/BlueMoon-Labs/MOLOT-BlueMoon-Station/blob/master/icons/obj/clothing/glasses.dmi",
+ "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/Clothing/Eyes/Goggles/thermal.rsi/equipped-EYES.png b/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/equipped-EYES.png
new file mode 100644
index 0000000000000000000000000000000000000000..9bef0a8c05f0ca0e150da1e9b81aebb13b8dadd7
GIT binary patch
literal 524
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=1yvytB`&GO$wiq3C7Jno3=9=>
zRF7M8H5dr69j}nF@vcztmTUGcLZM@bZhhV_L6f^To+GC)ukuUkvCh+_+)$V*aYbQomVd
z3Im?al0?L61)98Q1L
z)#F>sdhq7KjZ2(YT=?OrFX4Ca{>(`+c|}Fb9R5u#KDTbBl&-^KhAj-eOf7jQHtF#1
z{C9t4d)|k8(ccUI#O#}Q&3d|_)#1}Q)9TlSZM*xH?^>P|Z}zsRYx2E|CRDSr8yMfN
zS#$PGj%DfLb4$XH>{x5(@Z$8}R*(CP;eAXOm`u1FxG!ihz-%B|faSlOKEG4N`?p{J
z=Kd?*S5b7>yJPO6-xqG5SG%+QJzJs7|0w@SOK$ya_{4n40aY>v4(UjYnXdl9N2msQpJGL%i!ti=d#Wzp$Py!<<~I)
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/icon.png b/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d5f8ef9b65ccfe2ed64fbc2d10c725c5fad51d2
GIT binary patch
literal 510
zcmV~YL`2emQAsH<`}Ol@aPemfRt!=?oD8Bs
z_Iz7&h65FI{vYZ{A?OH_900N$L{IK-!7zBCTjc*0Kwsw;*8IP9^%BFvci$Q2H-Gux
zR9k@85kxs)>deJpi)|epQTQ;>tT~TiYH$(*15|v)ig}D6#~!fX$nb)p0I%5u9RQ2#
z_wU}|RFn3~A4t9htI^O2@kk}_Q@h%{p%Af$|gDeMy
z0!0o0fy>j@!r35SKRIv_%m&diTpTEBLGldK&Vt#*SWeIZAVX4t@pvN37|h?^vy>s{
zBOhFT3d1J`R|kCt784yX-vVekwj4sX13&;|pfWW3iAriPteAv@xb1_FVDPUrWmc)9n>XTSEY{`*wGJ@BP4Y`g2W{
z@4IJdS4$$NUAC-T6)(0v=IQU!-9o0C?{~LXu3q)Z-*x{E`|_1p%PfD!?BaNAaVzNkM_opU
zgBm^@;?~~-AyO{a$J#D)zw?~=-)Xhw?t3cy`g2}!MkH6I6yIl9=FY(2cjgU8R89XJ
TA;as_K-xWB{an^LB{Ts51B{c1
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ede078291d212cabdf7a4d5731153a85f0963c1
GIT binary patch
literal 325
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC3<1aSW-L^Y)gZUvq-Qv5(vN
zVoi8@dM9^JHV&WAyO49uUdR4NymLM>y%4l$l5Q?cQFwc)^;u?9W)7>Pko}kc-ZOqE
zoOia1sNe;f2?Rgl(_(WE8?3oLJ^$Ojn>Szm+*gzr=`xV)W7BD
z7WgIbUuIddqrert>EU)yL*kx>{X1yh{dh-RsxpJvySiOlcf;n
zfXIf6JpYn!l?xpXT`Q~zopr06im!bN~PV
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/meta.json
new file mode 100644
index 0000000000..205508acfa
--- /dev/null
+++ b/Resources/Textures/Clothing/Eyes/Goggles/thermal.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-EYES",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Shaders/nightvision.swsl b/Resources/Textures/Shaders/nightvision.swsl
new file mode 100644
index 0000000000..8a3e7706ad
--- /dev/null
+++ b/Resources/Textures/Shaders/nightvision.swsl
@@ -0,0 +1,38 @@
+light_mode unshaded;
+
+uniform sampler2D SCREEN_TEXTURE;
+uniform highp vec3 tint; // Colour of the tint
+uniform highp float luminance_threshold; // number between 0 and 1
+uniform highp float noise_amount; // number between 0 and 1
+
+lowp float rand (lowp vec2 n) {
+ return 0.5 + 0.5 * fract (sin (dot (n.xy, vec2 (12.9898, 78.233)))* 43758.5453);
+}
+
+void fragment() {
+
+ highp vec4 color = zTextureSpec(SCREEN_TEXTURE, FRAGCOORD.xy * SCREEN_PIXEL_SIZE);
+
+ // convert color to grayscale using luminance
+ highp float grey = dot(color.rgb, vec3(0.298, 0.5882, 0.1137));
+
+ // calculate local threshold
+ highp float threshold = grey * luminance_threshold;
+
+ // amplify low luminance parts
+ if (grey < threshold) {
+ grey += (threshold - grey) * 0.5;
+ if (grey > 1.0) {
+ grey = 1.0;
+ }
+ }
+
+ // apply night vision color tint
+ color.rgb = mix(color.rgb, tint, grey);
+
+ // add some noise for realism
+ lowp float noise = rand(FRAGCOORD.xy + TIME) * noise_amount / 10.0;
+ color.rgb += noise;
+
+ COLOR = color;
+}