From 903ade8c667d389fc2d8ca6f1d962f396f0d807c Mon Sep 17 00:00:00 2001
From: bobhat <59947126+b0bhat@users.noreply.github.com>
Date: Sun, 26 May 2024 09:45:15 -0700
Subject: [PATCH] Add night vision helmet attachments (#73869)
* night vision helmt attachment finally works!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* Added infared, far nvg effect
* Added attachment flag, new nvg stats
* c++ formatting and adjust old light amp
* Added nvg distributions, adjusted light amp/ir goggle distributions
* Added crappier gnv effect, fixed minimap typo, changed nvg materials
* change night vision checking to update method, fixed typos
* revert harcoded nv
* Enchantment nv effect, reworked stats and behavior
* Check fixes
* cleanup
* cleanup
* Fixed filthy issue, balance
---
data/json/enchantments.json | 24 +++
data/json/flags.json | 6 +
.../itemgroups/Clothing_Gear/clothing.json | 67 ++++---
data/json/itemgroups/Clothing_Gear/gear.json | 25 +++
data/json/itemgroups/military.json | 14 +-
data/json/items/armor/head_attachments.json | 176 ++++++++++++++++++
data/json/items/armor/helmets.json | 40 ++--
data/json/items/tool_armor.json | 15 +-
.../mapgen/military/mil_base/mil_base_z0.json | 7 +-
data/json/professions.json | 5 +-
tools/spell_checker/dictionary.txt | 3 +
11 files changed, 314 insertions(+), 68 deletions(-)
diff --git a/data/json/enchantments.json b/data/json/enchantments.json
index a2f77df25ce80..c9b3673d82be9 100644
--- a/data/json/enchantments.json
+++ b/data/json/enchantments.json
@@ -43,6 +43,30 @@
"condition": "ALWAYS",
"values": [ { "value": "FOOTSTEP_NOISE", "multiply": 3 } ]
},
+ {
+ "type": "enchantment",
+ "id": "nvg_good",
+ "name": { "str": "Night Vision Goggles" },
+ "description": "You are wearing night vision goggles which allow you to see quite well in the dark.",
+ "condition": "ACTIVE",
+ "values": [ { "value": "NIGHT_VIS", "add": 12 } ]
+ },
+ {
+ "type": "enchantment",
+ "id": "nvg_normal",
+ "name": { "str": "Night Vision Goggles" },
+ "description": "You are wearing night vision goggles which allow you to see in the dark.",
+ "condition": "ACTIVE",
+ "values": [ { "value": "NIGHT_VIS", "add": 9 } ]
+ },
+ {
+ "type": "enchantment",
+ "id": "nvg_bad",
+ "name": { "str": "Night Vision Goggles" },
+ "description": "You are wearing night vision goggles which allow you to poorly see in the dark.",
+ "condition": "ACTIVE",
+ "values": [ { "value": "NIGHT_VIS", "add": 5 } ]
+ },
{
"id": "ench_climate_control_warm",
"type": "enchantment",
diff --git a/data/json/flags.json b/data/json/flags.json
index e139f1437c43f..1844187cecf0b 100644
--- a/data/json/flags.json
+++ b/data/json/flags.json
@@ -353,6 +353,12 @@
"info": "This item is attachable in the front of hard hats and helmets to protect your eyes or face.",
"restriction": "Item must be some kind of face shield"
},
+ {
+ "id": "HELMET_FRONT_ATTACHMENT",
+ "type": "json_flag",
+ "info": "This item is attachable in the front of military helmets.",
+ "restriction": "Item must be some kind of frontal helmet attachment"
+ },
{
"id": "HELMET_EAR_ATTACHMENT",
"type": "json_flag",
diff --git a/data/json/itemgroups/Clothing_Gear/clothing.json b/data/json/itemgroups/Clothing_Gear/clothing.json
index cf2e83a3d10b2..f4acddd872c7a 100644
--- a/data/json/itemgroups/Clothing_Gear/clothing.json
+++ b/data/json/itemgroups/Clothing_Gear/clothing.json
@@ -286,18 +286,16 @@
{ "group": "clothing_military" },
{ "item": "elbow_pads", "prob": 10 },
{ "item": "knee_pads", "prob": 85 },
- { "item": "helmet_army", "prob": 80 },
+ {
+ "distribution": [ { "group": "army_helmet_nvg", "prob": 15 }, { "item": "helmet_army", "prob": 85 } ],
+ "prob": 80
+ },
{ "item": "gloves_tactical", "prob": 60 },
{ "group": "military_ballistic_vest", "prob": 90 },
{ "group": "molle_backpacks_and_accessories", "prob": 85 },
{ "group": "clothing_tactical_leg", "prob": 15 },
{
- "distribution": [
- { "group": "clothing_glasses", "prob": 60 },
- { "item": "glasses_bal", "prob": 30 },
- { "item": "goggles_nv", "prob": 5, "charges": [ 0, 100 ] },
- { "item": "goggles_ir", "prob": 5, "charges": [ 0, 100 ] }
- ],
+ "distribution": [ { "group": "clothing_glasses", "prob": 60 }, { "item": "glasses_bal", "prob": 30 } ],
"prob": 20
},
{ "group": "clothing_watch", "prob": 5 }
@@ -312,18 +310,16 @@
{ "group": "clothing_military" },
{ "item": "elbow_pads", "prob": 10 },
{ "item": "knee_pads", "prob": 85 },
- { "item": "helmet_army", "prob": 80 },
+ {
+ "distribution": [ { "group": "army_helmet_nvg", "prob": 20 }, { "item": "helmet_army", "prob": 80 } ],
+ "prob": 80
+ },
{ "item": "gloves_tactical", "prob": 60 },
{ "group": "military_ballistic_vest_pristine", "prob": 90 },
{ "group": "molle_backpacks_and_accessories", "prob": 85 },
{ "group": "clothing_tactical_leg", "prob": 15 },
{
- "distribution": [
- { "group": "clothing_glasses", "prob": 60 },
- { "item": "glasses_bal", "prob": 30 },
- { "item": "goggles_nv", "prob": 5, "charges": [ 50, 100 ] },
- { "item": "goggles_ir", "prob": 5, "charges": [ 50, 100 ] }
- ],
+ "distribution": [ { "group": "clothing_glasses", "prob": 60 }, { "item": "glasses_bal", "prob": 30 } ],
"prob": 20
},
{ "group": "clothing_watch", "prob": 5 }
@@ -337,18 +333,16 @@
{ "group": "clothing_military" },
{ "item": "elbow_pads", "prob": 10 },
{ "item": "knee_pads", "prob": 85 },
- { "item": "helmet_army", "prob": 80 },
+ {
+ "distribution": [ { "group": "army_helmet_nvg", "prob": 10 }, { "item": "helmet_army", "prob": 90 } ],
+ "prob": 80
+ },
{ "item": "gloves_tactical", "prob": 60 },
{ "group": "military_ballistic_vest", "prob": 100 },
{ "group": "molle_backpacks_and_accessories", "prob": 85 },
{ "group": "clothing_tactical_leg", "prob": 15 },
{
- "distribution": [
- { "group": "clothing_glasses", "prob": 60 },
- { "item": "glasses_bal", "prob": 30 },
- { "item": "goggles_nv", "prob": 5, "charges": [ 0, 100 ] },
- { "item": "goggles_ir", "prob": 5, "charges": [ 0, 100 ] }
- ],
+ "distribution": [ { "group": "clothing_glasses", "prob": 60 }, { "item": "glasses_bal", "prob": 30 } ],
"prob": 20
},
{ "group": "clothing_watch", "prob": 5 }
@@ -363,18 +357,16 @@
{ "group": "clothing_military" },
{ "item": "elbow_pads", "prob": 10 },
{ "item": "knee_pads", "prob": 85 },
- { "item": "helmet_army", "prob": 80 },
+ {
+ "distribution": [ { "group": "army_helmet_nvg", "prob": 20 }, { "item": "helmet_army", "prob": 80 } ],
+ "prob": 80
+ },
{ "item": "gloves_tactical", "prob": 60 },
{ "group": "military_ballistic_vest_heavy", "prob": 90 },
{ "group": "molle_backpacks_and_accessories", "prob": 85 },
{ "group": "clothing_tactical_leg", "prob": 15 },
{
- "distribution": [
- { "group": "clothing_glasses", "prob": 60 },
- { "item": "glasses_bal", "prob": 30 },
- { "item": "goggles_nv", "prob": 5, "charges": [ 0, 100 ] },
- { "item": "goggles_ir", "prob": 5, "charges": [ 0, 100 ] }
- ],
+ "distribution": [ { "group": "clothing_glasses", "prob": 60 }, { "item": "glasses_bal", "prob": 30 } ],
"prob": 20
},
{ "group": "clothing_watch", "prob": 5 }
@@ -389,18 +381,19 @@
{ "group": "clothing_military_winter" },
{ "item": "elbow_pads", "prob": 10 },
{ "item": "knee_pads", "prob": 85 },
- { "collection": [ { "item": "helmet_army" }, { "item": "helmet_liner" } ], "prob": 80 },
+ {
+ "collection": [
+ { "distribution": [ { "group": "army_helmet_nvg", "prob": 15 }, { "item": "helmet_army", "prob": 85 } ] },
+ { "item": "helmet_liner" }
+ ],
+ "prob": 80
+ },
{ "collection": [ { "item": "gloves_liner", "prob": 60 }, { "item": "winter_gloves_army" } ], "prob": 80 },
{ "group": "military_ballistic_vest", "prob": 90 },
{ "group": "molle_backpacks_and_accessories", "prob": 85 },
{ "group": "clothing_tactical_leg", "prob": 15 },
{
- "distribution": [
- { "group": "clothing_glasses", "prob": 60 },
- { "item": "glasses_bal", "prob": 30 },
- { "item": "goggles_nv", "prob": 5, "charges": [ 0, 100 ] },
- { "item": "goggles_ir", "prob": 5, "charges": [ 0, 100 ] }
- ],
+ "distribution": [ { "group": "clothing_glasses", "prob": 60 }, { "item": "glasses_bal", "prob": 30 } ],
"prob": 20
},
{ "group": "clothing_watch", "prob": 5 }
@@ -2953,6 +2946,7 @@
[ "chestguard_hard", 20 ],
[ "armguard_hard", 20 ],
[ "legguard_hard", 15 ],
+ { "group": "army_helmet_nvg", "prob": 1 },
[ "helmet_army", 40 ],
[ "helmet_liner", 10 ],
[ "beret", 50 ],
@@ -2970,6 +2964,9 @@
[ "duffelbag", 15 ],
{ "item": "goggles_nv", "prob": 1, "charges": [ 0, 100 ] },
{ "item": "goggles_ir", "prob": 1, "charges": [ 0, 100 ] },
+ { "item": "military_nvg", "prob": 1, "charges": [ 0, 100 ] },
+ { "item": "advanced_gpnvg", "prob": 1, "charges": [ 0, 100 ] },
+ { "item": "enhanced_nvg", "prob": 1, "charges": [ 0, 100 ] },
[ "optical_cloak", 1 ],
{ "item": "holo_cloak", "prob": 1, "charges": [ 0, 1000 ] },
{ "item": "mess_kit", "prob": 9 },
diff --git a/data/json/itemgroups/Clothing_Gear/gear.json b/data/json/itemgroups/Clothing_Gear/gear.json
index f3848aa9f410d..019c47e4948e4 100644
--- a/data/json/itemgroups/Clothing_Gear/gear.json
+++ b/data/json/itemgroups/Clothing_Gear/gear.json
@@ -36,6 +36,31 @@
{ "item": "teargas_sprayer", "prob": 25, "charges": [ 1, 10 ] }
]
},
+ {
+ "type": "item_group",
+ "id": "army_helmet_nvg",
+ "subtype": "collection",
+ "entries": [ { "item": "helmet_army", "contents-group": "nvg_distribution" } ]
+ },
+ {
+ "type": "item_group",
+ "id": "tac_helmet_nvg",
+ "subtype": "collection",
+ "entries": [ { "item": "tac_helmet", "contents-group": "nvg_distribution" } ]
+ },
+ {
+ "type": "item_group",
+ "id": "nvg_distribution",
+ "items": [
+ {
+ "distribution": [
+ { "item": "military_nvg", "prob": 60, "charges": [ 0, 100 ] },
+ { "item": "advanced_gpnvg", "prob": 30, "charges": [ 0, 100 ] },
+ { "item": "enhanced_nvg", "prob": 10, "charges": [ 0, 100 ] }
+ ]
+ }
+ ]
+ },
{
"id": "gear_medical",
"type": "item_group",
diff --git a/data/json/itemgroups/military.json b/data/json/itemgroups/military.json
index 0437eed9b94f8..8fb0394f82be9 100644
--- a/data/json/itemgroups/military.json
+++ b/data/json/itemgroups/military.json
@@ -552,20 +552,16 @@
{ "item": "resonance_measurement_device", "prob": 10 },
{ "item": "elbow_pads", "prob": 80 },
{ "item": "knee_pads", "prob": 85 },
- { "item": "tac_helmet", "prob": 100 },
+ {
+ "distribution": [ { "group": "tac_helmet_nvg", "prob": 60 }, { "item": "tac_helmet", "prob": 40 } ],
+ "prob": 100
+ },
{ "item": "mask_gas", "prob": 100 },
{ "item": "gloves_tactical", "prob": 80 },
{ "group": "xedra_ballistic_vest_heavy_pristine", "prob": 100 },
{ "group": "clothing_tactical_leg", "prob": 80 },
{ "group": "clothing_watch", "prob": 45 },
- {
- "distribution": [
- { "item": "glasses_bal", "prob": 30 },
- { "item": "goggles_nv", "prob": 30, "charges": [ 50, 100 ] },
- { "item": "goggles_ir", "prob": 30, "charges": [ 50, 100 ] }
- ],
- "prob": 100
- },
+ { "item": "glasses_bal", "prob": 30 },
{ "group": "xedra_gun" },
{ "group": "cop_melee" },
{ "group": "cop_holster_field" }
diff --git a/data/json/items/armor/head_attachments.json b/data/json/items/armor/head_attachments.json
index 5c57bcd06374f..0d97494f1e035 100644
--- a/data/json/items/armor/head_attachments.json
+++ b/data/json/items/armor/head_attachments.json
@@ -206,6 +206,182 @@
"flags": [ "HELMET_FACE_SHIELD", "CANT_WEAR", "OUTER" ],
"armor": [ { "encumbrance": 4, "coverage": 100, "covers": [ "eyes", "mouth" ] } ]
},
+ {
+ "id": "military_nvg",
+ "type": "TOOL_ARMOR",
+ "category": "armor",
+ "name": { "str_sp": "night vision goggles" },
+ "description": "Last generation double-tube night vision device, designed to be mounted to a helmet. Currently raised up and out of the way.",
+ "weight": "680 g",
+ "volume": "1200 ml",
+ "price": "10000 USD",
+ "price_postapoc": "150 USD",
+ "material": [ "plastic", "steel", "glass" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "to_hit": -3,
+ "charges_per_use": 1,
+ "ammo": "battery",
+ "use_action": {
+ "type": "transform",
+ "msg": "You activate your %s.",
+ "target": "military_nvg_on",
+ "active": true,
+ "need_charges": 1,
+ "need_charges_msg": "The %s's batteries are dead."
+ },
+ "material_thickness": 1,
+ "pocket_data": [
+ {
+ "pocket_type": "MAGAZINE_WELL",
+ "rigid": true,
+ "flag_restriction": [ "BATTERY_LIGHT" ],
+ "default_magazine": "light_plus_battery_cell"
+ }
+ ],
+ "relic_data": { "passive_effects": [ { "id": "nvg_good" } ] },
+ "flags": [ "HELMET_FRONT_ATTACHMENT", "CANT_WEAR", "OUTER", "ELECTRONIC", "MUNDANE" ],
+ "armor": [ { "covers": [ "head" ], "encumbrance": 8, "coverage": 70, "specifically_covers": [ "head_forehead" ] } ]
+ },
+ {
+ "id": "military_nvg_on",
+ "type": "TOOL_ARMOR",
+ "copy-from": "military_nvg",
+ "name": { "str_sp": "night vision goggles (on)" },
+ "description": "Last generation double-tube night vision device, designed to be mounted to a helmet. Very limited field of view while activated. It is turned on, and continually draining batteries. Use it to turn it off.",
+ "//": "AN/PVS-7",
+ "power_draw": "140 mW",
+ "revert_to": "military_nvg",
+ "use_action": {
+ "ammo_scale": 0,
+ "type": "transform",
+ "menu_text": "Turn off",
+ "msg": "Your %s deactivates.",
+ "target": "military_nvg"
+ },
+ "armor": [ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 20 } ]
+ },
+ {
+ "id": "advanced_gpnvg",
+ "type": "TOOL_ARMOR",
+ "category": "armor",
+ "name": { "str_sp": "panoramic night vision goggles" },
+ "description": "Advanced GPNVG with four image intensifier tubes, allowing for a large field of view at night, designed to be mounted to a helmet. Currently raised up and out of the way.",
+ "weight": "765 g",
+ "volume": "1600 ml",
+ "price": "47000 USD",
+ "price_postapoc": "300 USD",
+ "material": [ "plastic", "steel", "glass" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "to_hit": -3,
+ "charges_per_use": 1,
+ "ammo": "battery",
+ "use_action": {
+ "type": "transform",
+ "msg": "You activate your %s.",
+ "target": "advanced_gpnvg_on",
+ "active": true,
+ "need_charges": 1,
+ "need_charges_msg": "The %s's batteries are dead."
+ },
+ "material_thickness": 1,
+ "pocket_data": [
+ {
+ "pocket_type": "MAGAZINE_WELL",
+ "rigid": true,
+ "flag_restriction": [ "BATTERY_MEDIUM" ],
+ "default_magazine": "medium_plus_battery_cell"
+ }
+ ],
+ "relic_data": { "passive_effects": [ { "id": "nvg_normal" } ] },
+ "flags": [ "HELMET_FRONT_ATTACHMENT", "CANT_WEAR", "OUTER", "ELECTRONIC", "MUNDANE" ],
+ "armor": [
+ { "covers": [ "head" ], "encumbrance": 12, "coverage": 80, "specifically_covers": [ "head_forehead", "head_crown" ] }
+ ]
+ },
+ {
+ "id": "advanced_gpnvg_on",
+ "type": "TOOL_ARMOR",
+ "copy-from": "advanced_gpnvg",
+ "name": { "str_sp": "panoramic night vision goggles (on)" },
+ "description": "Advanced GPNVG with four image intensifier tubes, allowing for a large field of view at night, designed to be mounted to a helmet. It is turned on, and continually draining batteries. Use it to turn it off.",
+ "//": "GPNVG-18",
+ "power_draw": "180 mW",
+ "revert_to": "advanced_gpnvg",
+ "use_action": {
+ "ammo_scale": 0,
+ "type": "transform",
+ "menu_text": "Turn off",
+ "msg": "Your %s deactivates.",
+ "target": "advanced_gpnvg"
+ },
+ "armor": [
+ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 15 },
+ { "covers": [ "head" ], "encumbrance": 3, "coverage": 80, "specifically_covers": [ "head_crown" ] }
+ ]
+ },
+ {
+ "id": "enhanced_nvg",
+ "type": "TOOL_ARMOR",
+ "category": "armor",
+ "name": { "str_sp": "enhanced night vision goggles" },
+ "description": "New and rare high-resolution thermal NVG device, designed to be mounted to a helmet. Lets you see in the dark, and detects heat signatures emitted by (un)living organisms. Currently raised up and out of the way.",
+ "weight": "720 g",
+ "volume": "1400 ml",
+ "price": "10000 USD",
+ "price_postapoc": "350 USD",
+ "material": [ "plastic", "steel", "glass" ],
+ "symbol": "[",
+ "color": "dark_gray",
+ "to_hit": -3,
+ "charges_per_use": 1,
+ "ammo": "battery",
+ "use_action": {
+ "type": "transform",
+ "msg": "You activate your %s.",
+ "target": "enhanced_nvg_on",
+ "active": true,
+ "need_charges": 1,
+ "need_charges_msg": "The %s's batteries are dead."
+ },
+ "material_thickness": 1,
+ "pocket_data": [
+ {
+ "pocket_type": "MAGAZINE_WELL",
+ "rigid": true,
+ "flag_restriction": [ "BATTERY_MEDIUM" ],
+ "default_magazine": "medium_plus_battery_cell"
+ }
+ ],
+ "relic_data": { "passive_effects": [ { "id": "nvg_normal" } ] },
+ "flags": [ "HELMET_FRONT_ATTACHMENT", "CANT_WEAR", "OUTER", "ELECTRONIC", "MUNDANE" ],
+ "armor": [
+ { "covers": [ "head" ], "encumbrance": 10, "coverage": 70, "specifically_covers": [ "head_forehead", "head_crown" ] }
+ ]
+ },
+ {
+ "id": "enhanced_nvg_on",
+ "type": "TOOL_ARMOR",
+ "copy-from": "enhanced_nvg",
+ "name": { "str_sp": "enhanced night vision goggles (on)" },
+ "description": "New and rare high-resolution thermal NVG device, designed to be mounted to a helmet. Lets you see in the dark, and detects heat signatures emitted by (un)living organisms. It is turned on, and continually draining batteries. Use it to turn it off.",
+ "extend": { "flags": [ "IR_EFFECT" ] },
+ "//": "AN/PSQ-42",
+ "power_draw": "250 W",
+ "revert_to": "enhanced_nvg",
+ "use_action": {
+ "ammo_scale": 0,
+ "type": "transform",
+ "menu_text": "Turn off",
+ "msg": "Your %s deactivates.",
+ "target": "enhanced_nvg"
+ },
+ "armor": [
+ { "covers": [ "eyes" ], "coverage": 100, "encumbrance": 10 },
+ { "covers": [ "head" ], "encumbrance": 3, "coverage": 80, "specifically_covers": [ "head_crown" ] }
+ ]
+ },
{
"id": "nape_protector",
"type": "ARMOR",
diff --git a/data/json/items/armor/helmets.json b/data/json/items/armor/helmets.json
index 0d0e9c507e31b..fae93625ad67a 100644
--- a/data/json/items/armor/helmets.json
+++ b/data/json/items/armor/helmets.json
@@ -196,11 +196,12 @@
"pocket_type": "CONTAINER",
"ablative": true,
"volume_encumber_modifier": 0,
- "max_contains_volume": "500 ml",
- "max_contains_weight": "500 g",
+ "max_contains_volume": "2 L",
+ "max_contains_weight": "2 kg",
"moves": 250,
- "description": "Pocket for a face shield or a shield visor.",
- "flag_restriction": [ "HELMET_FACE_SHIELD" ]
+ "description": "Pocket for a face shield, or a front night vision attachment.",
+ "flag_restriction": [ "HELMET_FACE_SHIELD", "HELMET_FRONT_ATTACHMENT" ],
+ "inherits_flags": false
},
{
"pocket_type": "CONTAINER",
@@ -363,6 +364,19 @@
"environmental_protection": 2,
"techniques": [ "WBLOCK_1" ],
"flags": [ "VARSIZE", "WATERPROOF", "STURDY", "SUN_GLASSES", "PADDED" ],
+ "pocket_data": [
+ {
+ "pocket_type": "CONTAINER",
+ "ablative": true,
+ "volume_encumber_modifier": 0,
+ "max_contains_volume": "2 L",
+ "max_contains_weight": "2 kg",
+ "moves": 250,
+ "description": "Pocket for a front night vision attachment.",
+ "flag_restriction": [ "HELMET_FRONT_ATTACHMENT" ],
+ "inherits_flags": false
+ }
+ ],
"melee_damage": { "bash": 2 }
},
{
@@ -403,11 +417,12 @@
"pocket_type": "CONTAINER",
"ablative": true,
"volume_encumber_modifier": 0,
- "max_contains_volume": "500 ml",
- "max_contains_weight": "500 g",
+ "max_contains_volume": "2 L",
+ "max_contains_weight": "2 kg",
"moves": 250,
- "description": "Pocket for a face shield or a shield visor.",
- "flag_restriction": [ "HELMET_FACE_SHIELD" ]
+ "description": "Pocket for a face shield, or a front night vision attachment.",
+ "flag_restriction": [ "HELMET_FACE_SHIELD", "HELMET_FRONT_ATTACHMENT" ],
+ "inherits_flags": false
},
{
"pocket_type": "CONTAINER",
@@ -2857,11 +2872,12 @@
"pocket_type": "CONTAINER",
"ablative": true,
"volume_encumber_modifier": 0,
- "max_contains_volume": "500 ml",
- "max_contains_weight": "500 g",
+ "max_contains_volume": "2 L",
+ "max_contains_weight": "2 kg",
"moves": 250,
- "description": "Pocket for a face shield or a shield visor.",
- "flag_restriction": [ "HELMET_FACE_SHIELD" ]
+ "description": "Pocket for a face shield, or a front night vision attachment.",
+ "flag_restriction": [ "HELMET_FACE_SHIELD", "HELMET_FRONT_ATTACHMENT" ],
+ "inherits_flags": false
},
{
"pocket_type": "CONTAINER",
diff --git a/data/json/items/tool_armor.json b/data/json/items/tool_armor.json
index caef4ec632677..b5c3dea3d3ae7 100644
--- a/data/json/items/tool_armor.json
+++ b/data/json/items/tool_armor.json
@@ -2400,12 +2400,12 @@
"symbol": "[",
"color": "dark_gray",
"name": { "str": "pair of light amp goggles", "str_pl": "pairs of light amp goggles" },
- "description": "A pair of battery-powered goggles that amplify ambient light, allowing you to see in the dark. Use it to turn them on.",
- "flags": [ "FRAGILE", "OUTER", "ELECTRONIC" ],
- "price": "920 USD",
- "price_postapoc": "35 USD",
+ "description": "A pair of battery-powered goggles that use a infrared LED in conjunction with a IR camera, allowing you to see in the dark. Use it to turn them on.",
+ "flags": [ "FRAGILE", "OUTER", "ELECTRONIC", "MUNDANE" ],
+ "price": "300 USD",
+ "price_postapoc": "30 USD",
"material": [ "plastic", "steel" ],
- "weight": "1020 g",
+ "weight": "600 g",
"volume": "1 L",
"to_hit": -3,
"charges_per_use": 1,
@@ -2429,6 +2429,7 @@
"default_magazine": "light_plus_battery_cell"
}
],
+ "relic_data": { "passive_effects": [ { "id": "nvg_bad" } ] },
"armor": [ { "encumbrance": 40, "coverage": 100, "covers": [ "eyes" ], "rigid_layer_only": true } ]
},
{
@@ -2436,9 +2437,9 @@
"copy-from": "goggles_nv",
"type": "TOOL_ARMOR",
"name": { "str_pl": "pairs of light amp goggles (on)", "str": "pair of light amp goggles (on)" },
- "description": "A pair of battery-powered light amplifying goggles with an infrared illuminator, allowing you to see in the dark. It is turned on, and continually draining batteries. Use it to turn them off.",
+ "description": "A pair of battery-powered goggles that use a infrared LED in conjunction with a IR camera, allowing you to see in the dark. It is turned on, and continually draining batteries. Use it to turn them off.",
"material": [ "plastic", "steel" ],
- "flags": [ "GNV_EFFECT", "FRAGILE", "TRADER_AVOID", "OUTER", "ELECTRONIC" ],
+ "extend": { "flags": [ "TRADER_AVOID" ] },
"//": "2019 commercial models can operate at under 0.375W with the IR illuminator on",
"power_draw": "375 mW",
"revert_to": "goggles_nv",
diff --git a/data/json/mapgen/military/mil_base/mil_base_z0.json b/data/json/mapgen/military/mil_base/mil_base_z0.json
index 7455a146313a4..400a3aadacb89 100644
--- a/data/json/mapgen/military/mil_base/mil_base_z0.json
+++ b/data/json/mapgen/military/mil_base/mil_base_z0.json
@@ -840,8 +840,11 @@
{ "item": "holo_sight", "x": 10, "y": 15, "chance": 75, "repeat": 50 },
{ "item": "acog_scope", "x": 11, "y": 15, "chance": 75, "repeat": 30 },
{ "item": "red_dot_sight", "x": 12, "y": 15, "chance": 75, "repeat": 20 },
- { "item": "goggles_ir", "x": [ 14, 16 ], "y": 15, "chance": 75, "repeat": 50 },
- { "item": "goggles_nv", "x": [ 17, 18 ], "y": 15, "chance": 75, "repeat": 40 },
+ { "item": "goggles_ir", "x": [ 14, 16 ], "y": 15, "chance": 20, "repeat": 50 },
+ { "item": "goggles_nv", "x": [ 17, 18 ], "y": 15, "chance": 20, "repeat": 40 },
+ { "item": "military_nvg", "x": [ 14, 16 ], "y": 15, "chance": 30, "repeat": 50 },
+ { "item": "advanced_gpnvg", "x": [ 14, 16 ], "y": 15, "chance": 30, "repeat": 50 },
+ { "item": "enhanced_nvg", "x": [ 17, 18 ], "y": 15, "chance": 10, "repeat": 40 },
{ "item": "sheath", "x": 24, "y": 15, "chance": 75, "repeat": 100 },
{ "item": "knife_combat", "x": [ 22, 23 ], "y": 15, "chance": 75, "repeat": 100 },
{ "item": "holster", "x": [ 20, 21 ], "y": 15, "chance": 75, "repeat": 100 },
diff --git a/data/json/professions.json b/data/json/professions.json
index 271c3e43c8813..aff86c5a17184 100644
--- a/data/json/professions.json
+++ b/data/json/professions.json
@@ -1767,7 +1767,7 @@
"both": {
"entries": [
{ "item": "combat_shirt" },
- { "item": "tac_fullhelmet" },
+ { "group": "tac_helmet_nvg" },
{ "item": "mask_ski" },
{ "item": "gloves_liner" },
{ "item": "gloves_tactical" },
@@ -1781,7 +1781,6 @@
{ "item": "tank_top", "variant": "tank_top_camo" },
{ "item": "pants_army", "variant": "mil_pants_navy" },
{ "item": "grenade" },
- { "item": "light_battery_cell", "ammo-item": "battery", "charges": 100, "container-item": "goggles_nv" },
{ "item": "water_clean", "container-item": "canteen" },
{ "item": "legpouch_large", "contents-group": "army_mags_m4" },
{ "item": "knife_rm42", "container-item": "sheath" },
@@ -1835,7 +1834,7 @@
{ "item": "wetsuit" },
{ "item": "pants_army" },
{ "item": "wetsuit_hood" },
- { "item": "tac_helmet" },
+ { "group": "tac_helmet_nvg" },
{ "item": "wetsuit_gloves" },
{ "item": "gloves_tactical" },
{ "item": "socks" },
diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt
index c53a9ae506f8f..1e80ab4d4324a 100644
--- a/tools/spell_checker/dictionary.txt
+++ b/tools/spell_checker/dictionary.txt
@@ -2308,6 +2308,7 @@ gov
gozu
gozus
GPMG
+GPNVG
GR
gr
graboid
@@ -4322,6 +4323,8 @@ numpad
nums
Nunez
NV
+NVG
+NVGs
NW
NY
Nyâyis