From a753da440962a0539113659b946e8b8aab0d51d8 Mon Sep 17 00:00:00 2001 From: LyleSY Date: Fri, 3 Jan 2025 17:13:55 -0500 Subject: [PATCH 1/4] whitelist failing terrains --- .../overmap_terrain_coverage_whitelist.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json b/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json index 79dc0fbed0be3..0225a1c88521e 100644 --- a/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json +++ b/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json @@ -14,7 +14,17 @@ "ravine_floor", "ravine_floor_edge", "rock_border", - "s_restaurant_deserted_test" + "s_restaurant_deserted_test", + "gunshow_0", + "gunshow_1", + "gunshow_0_roof", + "gunshow_1_roof", + "s_reststop_1", + "s_reststop_2", + "s_reststop_1_roof", + "s_reststop_2_roof", + "s_restparking_1", + "s_restparking_2" ] } ] From f440bb77690d485d628002f02a605e4423815de4 Mon Sep 17 00:00:00 2001 From: mqrause Date: Mon, 6 Jan 2025 22:28:11 +0100 Subject: [PATCH 2/4] add map::destroy_vehicle and use it in vehicle_split_section test --- src/map.cpp | 18 ++++++++++++++++++ src/map.h | 2 ++ tests/vehicle_split_test.cpp | 4 ++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/map.cpp b/src/map.cpp index a3003d775427f..b33bfcfe2f4ee 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -4627,6 +4627,24 @@ void map::destroy_furn( const tripoint_bub_ms &p, const bool silent ) } } +void map::destroy_vehicle( const tripoint_bub_ms &p, const bool silent ) +{ + if( !veh_at( p ) ) { + return; + } + + // Break if it takes more than 25 destructions to remove to prevent infinite loops + // Example: A bashes to B, B bashes to A leads to A->B->A->... + int count = 0; + bash_params bsh{ + 999, silent, true, false, static_cast( rng_float( 0, 1.0f ) ), false, false, false, false + }; + while( count <= 25 && veh_at( p ) ) { + bash_vehicle( p, bsh ); + count++; + } +} + void map::batter( const tripoint_bub_ms &p, int power, int tries, const bool silent ) { int count = 0; diff --git a/src/map.h b/src/map.h index 474154328121d..7e39107740bfc 100644 --- a/src/map.h +++ b/src/map.h @@ -1326,6 +1326,8 @@ class map void destroy( const tripoint_bub_ms &p, bool silent = false ); /** Keeps bashing a square until there is no more furniture */ void destroy_furn( const tripoint_bub_ms &, bool silent = false ); + /** Keeps bashing a square until there is no more vehicle part */ + void destroy_vehicle( const tripoint_bub_ms &, bool silent = false ); void crush( const tripoint_bub_ms &p ); void shoot( const tripoint_bub_ms &p, projectile &proj, bool hit_items ); /** Checks if a square should collapse, returns the X for the one_in(X) collapse chance */ diff --git a/tests/vehicle_split_test.cpp b/tests/vehicle_split_test.cpp index b75d5aeec0c0b..3c30a491205f6 100644 --- a/tests/vehicle_split_test.cpp +++ b/tests/vehicle_split_test.cpp @@ -33,7 +33,7 @@ TEST_CASE( "vehicle_split_section", "[vehicle]" ) REQUIRE( veh_ptr != nullptr ); std::set original_points = veh_ptr->get_points( true ); - here.destroy( vehicle_origin ); + here.destroy_vehicle( vehicle_origin ); veh_ptr->part_removal_cleanup(); REQUIRE( veh_ptr->get_parts_at( vehicle_origin, "", part_status_flag::available ).empty() ); vehs = here.get_vehicles(); @@ -73,7 +73,7 @@ TEST_CASE( "vehicle_split_section", "[vehicle]" ) vehicle_origin = { 20, 20, 0 }; veh_ptr = here.add_vehicle( vehicle_prototype_circle_split_test, vehicle_origin, dir, 0, 0 ); REQUIRE( veh_ptr != nullptr ); - here.destroy( vehicle_origin ); + here.destroy_vehicle( vehicle_origin ); veh_ptr->part_removal_cleanup(); REQUIRE( veh_ptr->get_parts_at( vehicle_origin, "", part_status_flag::available ).empty() ); vehs = here.get_vehicles(); From c8e75b2eac09ec1eb73aea17cb5cfb871c419c0d Mon Sep 17 00:00:00 2001 From: Risuga Date: Tue, 7 Jan 2025 19:50:16 -0800 Subject: [PATCH 3/4] The Point Of Fighting (#78979) * thepointoffighting * Update effects.json --- data/json/effects.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data/json/effects.json b/data/json/effects.json index 58a45f1ab0e1c..9a9f209603c7e 100644 --- a/data/json/effects.json +++ b/data/json/effects.json @@ -4332,7 +4332,7 @@ { "type": "effect_type", "id": "sad", - "name": [ "Unhappy", "Unhappy", "Unhappy", "Unhappy", "Unhappy", "Sad", "Sad", "Sad", "Sad", "Sad", "Depressed" ], + "name": [ "Unhappy", "Unhappy", "Unhappy", "Unhappy", "Unhappy", "Sad", "Sad", "Sad", "Sad", "Sad", "Depressed", "Depressed" ], "desc": [ "You are not content with your life.", "You are not content with your life.", @@ -4344,12 +4344,13 @@ "This is not what you planned for your life.", "This is not what you planned for your life.", "This is not what you planned for your life.", + "You wonder what's the point of fighting?", "When will all your suffering end?" ], "max_intensity": 1000, "int_dur_factor": "10 s", "scaling_mods": { "speed_mod": [ -0.42 ], "str_mod": [ -0.06 ], "dex_mod": [ -0.05 ], "int_mod": [ -0.084 ], "per_mod": [ -0.1 ] }, - "miss_messages": [ [ "What's the point of fighting?", 1 ] ] + "miss_messages": [ [ "You dejectedly consider the pointlessness of it all.", 1 ] ] }, { "type": "effect_type", From 9d108eea001ff84c37111207da4734c4d0ddb16c Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Tue, 7 Jan 2025 21:51:44 -0600 Subject: [PATCH 4/4] [MoM] Add electronoetic batteries (#79010) * Initial commit * Add electronoetic to dictionary * Update belts and mindsight glasses * Adjust power draw * Add electronoetic batteries to itemgroups * Price update * Re-add missing relic_data --- .../itemgroups/matrix_technology_labs.json | 105 +++++++++++++++-- .../mods/MindOverMatter/items/armor/belt.json | 62 +++++++--- .../mods/MindOverMatter/items/armor/head.json | 2 +- data/mods/MindOverMatter/items/batteries.json | 111 ++++++++++++++++++ tools/spell_checker/dictionary.txt | 1 + 5 files changed, 252 insertions(+), 29 deletions(-) create mode 100644 data/mods/MindOverMatter/items/batteries.json diff --git a/data/mods/MindOverMatter/itemgroups/matrix_technology_labs.json b/data/mods/MindOverMatter/itemgroups/matrix_technology_labs.json index 1a9ec04a25266..b06d1f92feb5f 100644 --- a/data/mods/MindOverMatter/itemgroups/matrix_technology_labs.json +++ b/data/mods/MindOverMatter/itemgroups/matrix_technology_labs.json @@ -41,6 +41,7 @@ { "item": "chem_sulphuric_acid", "prob": 20, "container-item": "bottle_glass" }, { "item": "chem_muriatic_acid", "prob": 15, "container-item": "bottle_glass" }, { "item": "chem_nitric_acid", "prob": 15, "container-item": "bottle_glass" }, + { "group": "dist_electronoetic_batteries", "prob": 25 }, { "item": "denat_alcohol", "prob": 10, "charges": [ 250, -1 ] }, { "item": "methed_alcohol", "prob": 10, "charges": [ 250, -1 ] }, { "item": "mortar_pestle", "prob": 20 }, @@ -72,8 +73,34 @@ "subtype": "distribution", "id": "dist_shield_belts", "items": [ - { "item": "psionic_shield_belt_broken", "prob": 3, "charges": [ 0, 15 ] }, - { "item": "psionic_shield_belt", "prob": 1, "charges": [ 0, 90 ] } + { + "item": "medium_battery_electronoetic_refined", + "ammo-item": "battery", + "charges": [ 100, 448 ], + "container-item": "psionic_shield_belt", + "prob": 1 + }, + { + "item": "medium_battery_electronoetic_refined", + "ammo-item": "battery", + "charges": [ 100, 448 ], + "container-item": "psionic_shield_belt_broken", + "prob": 6 + }, + { + "item": "medium_battery_electronoetic", + "ammo-item": "battery", + "charges": [ 20, 168 ], + "container-item": "psionic_shield_belt", + "prob": 4 + }, + { + "item": "medium_battery_electronoetic", + "ammo-item": "battery", + "charges": [ 20, 168 ], + "container-item": "psionic_shield_belt_broken", + "prob": 14 + } ] }, { @@ -81,8 +108,34 @@ "subtype": "distribution", "id": "dist_fire_shield_belts", "items": [ - { "item": "psionic_fire_shield_belt_broken", "prob": 3, "charges": [ 0, 15 ] }, - { "item": "psionic_fire_shield_belt", "prob": 1, "charges": [ 0, 300 ] } + { + "item": "medium_battery_electronoetic_refined", + "ammo-item": "battery", + "charges": [ 100, 448 ], + "container-item": "psionic_fire_shield_belt", + "prob": 1 + }, + { + "item": "medium_battery_electronoetic_refined", + "ammo-item": "battery", + "charges": [ 100, 448 ], + "container-item": "psionic_fire_shield_belt_broken", + "prob": 6 + }, + { + "item": "medium_battery_electronoetic", + "ammo-item": "battery", + "charges": [ 20, 168 ], + "container-item": "psionic_fire_shield_belt", + "prob": 4 + }, + { + "item": "medium_battery_electronoetic", + "ammo-item": "battery", + "charges": [ 20, 168 ], + "container-item": "psionic_fire_shield_belt_broken", + "prob": 14 + } ] }, { @@ -107,7 +160,27 @@ "type": "item_group", "subtype": "collection", "id": "collection_mindsight_and_note", - "items": [ { "item": "psionic_mindsight_glasses", "prob": 100 }, { "item": "lab_file_QD944_P_item", "prob": 100 } ] + "items": [ + { + "distribution": [ + { + "item": "light_battery_electronoetic", + "ammo-item": "battery", + "charges": [ 20, 48 ], + "container-item": "psionic_mindsight_glasses", + "prob": 80 + }, + { + "item": "light_battery_electronoetic_refined", + "ammo-item": "battery", + "charges": [ 60, 128 ], + "container-item": "psionic_mindsight_glasses", + "prob": 20 + } + ] + }, + { "item": "lab_file_QD944_P_item", "prob": 100 } + ] }, { "type": "item_group", @@ -115,6 +188,19 @@ "id": "dist_matrix_translocation_items", "items": [ { "item": "psionic_transporter_remote", "prob": 5 }, { "item": "psionic_transporter_beacon", "prob": 1 } ] }, + { + "id": "dist_electronoetic_batteries", + "type": "item_group", + "subtype": "distribution", + "items": [ + { "item": "light_battery_electronoetic", "charges": 48, "prob": 160, "count": [ 1, 4 ] }, + { "item": "light_battery_electronoetic_refined", "charges": 128, "prob": 16, "count": [ 1, 2 ] }, + { "item": "medium_battery_electronoetic", "charges": 168, "prob": 80, "count": [ 1, 4 ] }, + { "item": "medium_battery_electronoetic_refined", "charges": 448, "prob": 8, "count": [ 1, 2 ] }, + { "item": "heavy_battery_electronoetic", "charges": 777, "prob": 20, "count": [ 1, 2 ] }, + { "item": "heavy_battery_electronoetic_refined", "charges": 2072, "prob": 2 } + ] + }, { "type": "item_group", "subtype": "distribution", @@ -157,6 +243,7 @@ { "item": "chem_sulphuric_acid", "prob": 20, "container-item": "bottle_glass" }, { "item": "chem_muriatic_acid", "prob": 15, "container-item": "bottle_glass" }, { "item": "chem_nitric_acid", "prob": 15, "container-item": "bottle_glass" }, + { "group": "dist_electronoetic_batteries", "prob": 25 }, { "item": "denat_alcohol", "prob": 10, "charges": [ 250, -1 ] }, { "item": "methed_alcohol", "prob": 10, "charges": [ 250, -1 ] }, { "item": "mortar_pestle", "prob": 20 }, @@ -195,10 +282,10 @@ "type": "item_group", "subtype": "distribution", "items": [ - { "group": "collection_mindsight_and_note", "prob": 1 }, - { "item": "psionic_telepathic_dampener", "prob": 1 }, - { "item": "schematics_telepathic_focusing_tool", "prob": 1 }, - { "item": "telepathic_focusing_tool", "prob": 1 } + { "group": "collection_mindsight_and_note", "prob": 4 }, + { "item": "psionic_telepathic_dampener", "prob": 4 }, + { "item": "schematics_telepathic_focusing_tool", "prob": 4 }, + { "item": "telepathic_focusing_tool", "prob": 4 } ] } ] diff --git a/data/mods/MindOverMatter/items/armor/belt.json b/data/mods/MindOverMatter/items/armor/belt.json index 27873e9da0010..e53ffcfc6f191 100644 --- a/data/mods/MindOverMatter/items/armor/belt.json +++ b/data/mods/MindOverMatter/items/armor/belt.json @@ -7,13 +7,14 @@ "weight": "350 g", "volume": "500 ml", "price": "100 USD", - "price_postapoc": "5 USD", + "price_postapoc": "50 USD", "material": [ "nylon", "steel", "nether_crystal" ], "symbol": "[", "looks_like": "leather_belt", "color": "yellow", "material_thickness": 1.5, - "pocket_data": [ { "pocket_type": "MAGAZINE", "ammo_restriction": { "psionic_charge_power": 90 } } ], + "ammo": [ "battery" ], + "flags": [ "BELTED", "OVERSIZE", "NONCONDUCTIVE", "NO_REPAIR", "COMBAT_TOGGLEABLE" ], "use_action": [ { "type": "transform", @@ -26,7 +27,14 @@ "menu_text": "Flip the switch" } ], - "flags": [ "BELTED", "OVERSIZE", "NONCONDUCTIVE", "NO_REPAIR", "COMBAT_TOGGLEABLE", "NO_UNLOAD" ], + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "rigid": true, + "flag_restriction": [ "BATTERY_MEDIUM" ], + "default_magazine": "medium_battery_cell" + } + ], "armor": [ { "encumbrance": 2, @@ -41,6 +49,8 @@ { "has": "WORN", "condition": "ACTIVE", + "name": "Active Shield Belt", + "description": "The air around you has a faint shimmer.", "ench_effects": [ { "effect": "effect_shield_belt_telekin_protection", "intensity": 1 } ], "incoming_damage_mod": [ { "type": "bash", "add": -8 }, @@ -49,17 +59,15 @@ { "type": "bullet", "add": -40 } ] } - ], - "charge_info": { "recharge_type": "periodic", "time": "60 s", "regenerate_ammo": true } - }, - "//": "Recharge time is 60 seconds due to bug #48019, making it actually 30 seconds. Reduce to 30 seconds if that ever gets fixed." + ] + } }, { "id": "psionic_shield_belt_on", "type": "TOOL_ARMOR", "name": { "str": "shield belt (active)", "str_pl": "shield belts (active)" }, "copy-from": "psionic_shield_belt", - "turns_per_charge": 1, + "power_draw": "150 W", "revert_to": "psionic_shield_belt", "use_action": [ { @@ -78,6 +86,7 @@ "name": { "str": "shield belt" }, "copy-from": "psionic_shield_belt", "description": "A simple synthetic fabric belt with a box to the right of the belt loop. The box has a toggleable switch and a stylized shield with Ψ and the XEDRA logo inside it. It also has a large crack across it and rattles when moved.", + "price_postapoc": "5 USD", "use_action": [ { "type": "transform", @@ -86,8 +95,7 @@ "need_worn": true, "menu_text": "Flip the switch" } - ], - "pocket_data": [ { "pocket_type": "MAGAZINE", "ammo_restriction": { "psionic_charge_power": 90 } } ] + ] }, { "id": "psionic_fire_shield_belt", @@ -97,13 +105,21 @@ "weight": "350 g", "volume": "500 ml", "price": "100 USD", - "price_postapoc": "5 USD", + "price_postapoc": "50 USD", "material": [ "nylon", "steel", "nether_crystal" ], "symbol": "[", "looks_like": "leather_belt", "color": "red", "material_thickness": 1.5, - "pocket_data": [ { "pocket_type": "MAGAZINE", "ammo_restriction": { "psionic_charge_power": 300 } } ], + "ammo": [ "battery" ], + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "rigid": true, + "flag_restriction": [ "BATTERY_MEDIUM" ], + "default_magazine": "medium_battery_electronoetic" + } + ], "use_action": [ { "type": "transform", @@ -116,7 +132,7 @@ "menu_text": "Flip the switch" } ], - "flags": [ "BELTED", "OVERSIZE", "NONCONDUCTIVE", "NO_REPAIR", "COMBAT_TOGGLEABLE", "NO_UNLOAD" ], + "flags": [ "BELTED", "OVERSIZE", "NONCONDUCTIVE", "NO_REPAIR", "COMBAT_TOGGLEABLE" ], "armor": [ { "encumbrance": 2, @@ -131,21 +147,21 @@ { "has": "WORN", "condition": "ACTIVE", + "name": "Active Suppresion Belt", + "description": "The air around you feels cool.", "incoming_damage_mod": [ { "type": "heat", "multiply": -1 } ], "values": [ { "value": "CLIMATE_CONTROL_CHILL", "add": 1000 } ], "ench_effects": [ { "effect": "effect_suppression_belt_fire_protection", "intensity": 1 } ] } - ], - "charge_info": { "recharge_type": "periodic", "time": "30 s", "regenerate_ammo": true } - }, - "//": "Recharge time is 30 seconds due to bug #48019, making it actually 15 seconds. Reduce to 15 seconds if that ever gets fixed." + ] + } }, { "id": "psionic_fire_shield_belt_on", "type": "TOOL_ARMOR", "name": { "str": "suppression belt (active)", "str_pl": "suppression belts (active)" }, "copy-from": "psionic_fire_shield_belt", - "turns_per_charge": 1, + "power_draw": "50 W", "revert_to": "psionic_fire_shield_belt", "use_action": [ { @@ -164,6 +180,7 @@ "copy-from": "psionic_fire_shield_belt", "name": { "str": "suppression belt" }, "description": "A simple synthetic fabric belt with a box to the right of the belt loop. The box has a toggleable switch and a stylized flame with a large circle and line superimposed over it and a Ψ behind the XEDRA logo inside it. It also has a large crack across it and rattles when moved.", + "price_postapoc": "5 USD", "use_action": [ { "type": "transform", @@ -173,6 +190,13 @@ "menu_text": "Flip the switch" } ], - "pocket_data": [ { "pocket_type": "MAGAZINE", "ammo_restriction": { "psionic_charge_power": 300 } } ] + "pocket_data": [ + { + "pocket_type": "MAGAZINE_WELL", + "rigid": true, + "flag_restriction": [ "BATTERY_MEDIUM" ], + "default_magazine": "medium_battery_electronoetic" + } + ] } ] diff --git a/data/mods/MindOverMatter/items/armor/head.json b/data/mods/MindOverMatter/items/armor/head.json index ab9519c3ee201..e5ce5403f66e7 100644 --- a/data/mods/MindOverMatter/items/armor/head.json +++ b/data/mods/MindOverMatter/items/armor/head.json @@ -66,7 +66,7 @@ "pocket_type": "MAGAZINE_WELL", "rigid": true, "flag_restriction": [ "BATTERY_LIGHT", "BATTERY_ULTRA_LIGHT" ], - "default_magazine": "light_plus_battery_cell" + "default_magazine": "light_battery_electronoetic" } ], "armor": [ { "encumbrance": 4, "coverage": 100, "covers": [ "eyes" ] } ], diff --git a/data/mods/MindOverMatter/items/batteries.json b/data/mods/MindOverMatter/items/batteries.json new file mode 100644 index 0000000000000..0b11e6f603f38 --- /dev/null +++ b/data/mods/MindOverMatter/items/batteries.json @@ -0,0 +1,111 @@ +[ + { + "id": "light_battery_electronoetic", + "type": "MAGAZINE", + "category": "tool_magazine", + "name": { "str": "light electronoetic battery", "str_pl": "light electronoetic batteries" }, + "description": "A light battery but with the casing devoid of branding or symbols other than a plus and minus on opposite ends. It's surprisingly heavy.", + "ascii_picture": "light_battery_cell", + "weight": "20 g", + "volume": "8 ml", + "longest_side": "50 mm", + "price": "31 cent", + "price_postapoc": "2 USD", + "material": [ + { "type": "budget_steel", "portion": 90 }, + { "type": "nether_crystal", "portion": 9 }, + { "type": "plastic", "portion": 1 } + ], + "symbol": "=", + "color": "cyan", + "ammo_type": [ "battery" ], + "//": "Capacity 3x normal", + "capacity": 48, + "looks_like": "battery", + "flags": [ "NO_SALVAGE", "NO_UNLOAD", "NO_RELOAD", "BATTERY_LIGHT" ], + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 48 } } ] + }, + { + "id": "light_battery_electronoetic_refined", + "copy-from": "light_battery_electronoetic", + "type": "MAGAZINE", + "category": "tool_magazine", + "name": { "str": "light refined electronoetic battery", "str_pl": "light refined electronoetic batteries" }, + "//": "Capacity 8x normal", + "capacity": 128, + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 128 } } ] + }, + { + "id": "medium_battery_electronoetic", + "type": "MAGAZINE", + "category": "tool_magazine", + "name": { "str": "medium electronoetic battery", "str_pl": "medium electronoetic batteries" }, + "description": "A medium battery but with the casing devoid of branding or symbols other than a plus and minus on opposite ends. It's surprisingly heavy.", + "ascii_picture": "medium_battery_cell", + "weight": "100 g", + "volume": "17 ml", + "longest_side": "65 mm", + "price": "101 cent", + "price_postapoc": "5 USD", + "material": [ + { "type": "budget_steel", "portion": 90 }, + { "type": "nether_crystal", "portion": 9 }, + { "type": "plastic", "portion": 1 } + ], + "symbol": "=", + "color": "cyan", + "ammo_type": [ "battery" ], + "looks_like": "battery", + "flags": [ "NO_SALVAGE", "NO_UNLOAD", "NO_RELOAD", "BATTERY_MEDIUM" ], + "//": "Capacity 3x normal", + "capacity": 168, + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 168 } } ] + }, + { + "id": "medium_battery_electronoetic_refined", + "copy-from": "medium_battery_electronoetic", + "type": "MAGAZINE", + "category": "tool_magazine", + "name": { "str": "medium refined electronoetic battery", "str_pl": "medium refined electronoetic batteries" }, + "//": "Capacity 8x normal", + "capacity": 448, + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 448 } } ] + }, + { + "id": "heavy_battery_electronoetic", + "type": "MAGAZINE", + "category": "tool_magazine", + "name": { "str": "electronoetic tool battery", "str_pl": "electronoetic tool batteries" }, + "description": "A battery cell, compatible with all kinds of industrial-grade equipment and portable tools, but with the casing devoid of branding or symbols other than a plus and minus on opposite ends. It's surprisingly heavy.", + "ascii_picture": "heavy_battery_cell", + "weight": "400 g", + "volume": "382 ml", + "longest_side": "113 mm", + "//2": "113 * 75 * 62 mm", + "price": "22 USD", + "price_postapoc": "35 cent", + "material": [ + { "type": "budget_steel", "portion": 90 }, + { "type": "nether_crystal", "portion": 9 }, + { "type": "plastic", "portion": 1 } + ], + "symbol": "=", + "color": "cyan", + "ammo_type": [ "battery" ], + "//": "Capacity 3x normal", + "capacity": 777, + "looks_like": "battery", + "flags": [ "NO_SALVAGE", "NO_UNLOAD", "NO_RELOAD", "BATTERY_HEAVY" ], + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 777 } } ] + }, + { + "id": "heavy_battery_electronoetic_refined", + "copy-from": "medium_battery_electronoetic", + "type": "MAGAZINE", + "category": "tool_magazine", + "name": { "str": "refined electronoetic tool battery", "str_pl": "refined electronoetic tool batteries" }, + "//": "Capacity 8x normal", + "capacity": 2072, + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "battery": 2072 } } ] + } +] diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 74f918f64e535..456cf1327d330 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -1739,6 +1739,7 @@ electrolyzer electrolyzers electromagnetics electromancy +electronoetic electroreceptors elephantry Elish