From 6580e59bb8515ea399b1d0d8cb14811e7ba9be05 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Fri, 7 Nov 2025 16:04:03 -0800 Subject: [PATCH 01/18] added fragile tag to mapdata/.h/.cpp added fragile flag to skylight added code in monmove.cpp to make weight/10 in kg apply bash to skylights when moving on them --- .../furniture_and_terrain/terrain-roofs.json | 2 +- src/mapdata.cpp | 1 + src/mapdata.h | 1 + src/monmove.cpp | 20 +++++++++++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json index 2b5c2f0625c8f..ae752ab0aa159 100644 --- a/data/json/furniture_and_terrain/terrain-roofs.json +++ b/data/json/furniture_and_terrain/terrain-roofs.json @@ -182,7 +182,7 @@ "color": "cyan", "move_cost": 2, "//": "TODO: Should break when you step on it if there's no supporting terrain below, might want some warning akin to examine_action ledge", - "flags": [ "TRANSPARENT", "TRANSPARENT_FLOOR" ], + "flags": [ "TRANSPARENT", "TRANSPARENT_FLOOR", "FRAGILE" ], "bash": { "str_min": 3, "str_max": 6, diff --git a/src/mapdata.cpp b/src/mapdata.cpp index c9cf1743ab281..6049468d57762 100644 --- a/src/mapdata.cpp +++ b/src/mapdata.cpp @@ -325,6 +325,7 @@ std::string enum_to_string( ter_furn_flag data ) case ter_furn_flag::TFLAG_WIRED_WALL: return "WIRED_WALL"; case ter_furn_flag::TFLAG_MON_AVOID_STRICT: return "MON_AVOID_STRICT"; case ter_furn_flag::TFLAG_REGION_PSEUDO: return "REGION_PSEUDO"; + case ter_furn_flag::TFLAG_FRAGILE: return "FRAGILE"; // *INDENT-ON* case ter_furn_flag::NUM_TFLAG_FLAGS: diff --git a/src/mapdata.h b/src/mapdata.h index 05ff5bdbee3fe..1323609edbebf 100644 --- a/src/mapdata.h +++ b/src/mapdata.h @@ -375,6 +375,7 @@ enum class ter_furn_flag : int { TFLAG_WIRED_WALL, TFLAG_MON_AVOID_STRICT, TFLAG_REGION_PSEUDO, + TFLAG_FRAGILE, NUM_TFLAG_FLAGS }; diff --git a/src/monmove.cpp b/src/monmove.cpp index e3499d4d219c8..cb5128cb09aba 100644 --- a/src/monmove.cpp +++ b/src/monmove.cpp @@ -870,6 +870,11 @@ void monster::move() const bool pacified = has_effect( effect_pacified ); + + + + + // First, use the special attack, if we can! // The attack may change `monster::special_attacks` (e.g. by transforming // this into another monster type). Therefore we can not iterate over it @@ -914,6 +919,20 @@ void monster::move() // Give nursebots a chance to do surgery. nursebot_operate( dragged_foe ); + //check if monster breaks through floor + if (!is_hallucination() && !flies() && get_weight() >= 5_kilogram) { + if (here.has_flag(ter_furn_flag::TFLAG_FRAGILE, pos_bub())) { + // static stress check, breaks fragile terrain like skylights + const int bash_strength = get_weight() / 10_kilogram; + const std::string old_name = here.ter(pos_bub())->name(); + const auto res = here.bash(pos_bub(), bash_strength, true, false, false, nullptr, false); + if (res.success) { + add_msg(m_warning, _("The %s crashes through the %s!"), + name(), old_name); + } + } + } + // The monster can sometimes hang in air due to last fall being blocked gravity_check(); if( is_dead() ) { @@ -1304,6 +1323,7 @@ void monster::move() add_msg( m_info, _( "You lose hold of a leash." ) ); } } + } Character *monster::find_dragged_foe() From 0efc6963ff90f459665fe05a5cda943a61313697 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Fri, 7 Nov 2025 16:07:01 -0800 Subject: [PATCH 02/18] fix blanks in monmove.cpp --- src/monmove.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/monmove.cpp b/src/monmove.cpp index cb5128cb09aba..c7727d31957e9 100644 --- a/src/monmove.cpp +++ b/src/monmove.cpp @@ -870,11 +870,6 @@ void monster::move() const bool pacified = has_effect( effect_pacified ); - - - - - // First, use the special attack, if we can! // The attack may change `monster::special_attacks` (e.g. by transforming // this into another monster type). Therefore we can not iterate over it @@ -1323,7 +1318,6 @@ void monster::move() add_msg( m_info, _( "You lose hold of a leash." ) ); } } - } Character *monster::find_dragged_foe() From adbbc0bdb1ca425c9be0ffcce80d412c758962d7 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Sat, 8 Nov 2025 22:42:53 -0800 Subject: [PATCH 03/18] made skylight frames turn into open air when bashed changed the check falling to be a creature function and added defs --- .../terrain-windows.json | 4 +- src/creature.cpp | 52 +++++++++++++++++++ src/creature.h | 1 + src/monmove.cpp | 14 ----- 4 files changed, 55 insertions(+), 16 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-windows.json b/data/json/furniture_and_terrain/terrain-windows.json index 521f97f6be129..a8db1b8ac16e4 100644 --- a/data/json/furniture_and_terrain/terrain-windows.json +++ b/data/json/furniture_and_terrain/terrain-windows.json @@ -4457,7 +4457,7 @@ "move_cost": 2, "coverage": 0, "examine_action": "ledge", - "deconstruct": { "ter_set": "t_null", "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, + "deconstruct": { "ter_set": "t_open_air", "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { "str_min": 1, "str_max": 1, @@ -4465,7 +4465,7 @@ "sound_fail": "whack!", "sound_vol": 12, "sound_fail_vol": 8, - "ter_set": "t_null", + "ter_set": "t_open_air", "items": [ { "item": "2x4", "count": [ 2, 4 ] } ] }, "flags": [ "TRANSPARENT", "NO_FLOOR", "FLAMMABLE" ] diff --git a/src/creature.cpp b/src/creature.cpp index 8cacd4d8cfefb..9268f5a62b628 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -211,12 +211,60 @@ tripoint_bub_ms Creature::pos_bub( const map &here ) const return here.get_bub( location ); } +void Creature::maybe_break_fragile_underfoot(Creature &cr, const tripoint_bub_ms &p) +{ + map& here = get_map(); + if (here.has_flag(ter_furn_flag::TFLAG_FRAGILE, p)) { + bool can_fly = false; + if (const monster* mon = dynamic_cast(&cr)) { + can_fly = mon->flies(); + } + if (!cr.is_hallucination() && !can_fly && cr.get_weight() >= 5_kilogram) { + std::string who_name; + int bash_strength = cr.get_weight() / 5_kilogram; + //check if monster + if (const monster* mon = dynamic_cast(&cr)) { + who_name = mon->disp_name(); + bash_strength = bash_strength / 2; + + } //check for character + else if (const Character* ch = dynamic_cast(&cr)) { + who_name = ch->disp_name(); + //if char is prone, less likely to break glass + if (ch->is_prone()) { + bash_strength = bash_strength / 8; + } + else { + bash_strength = bash_strength / 2; + } + } //default case + else { + who_name = _("something"); + bash_strength = bash_strength / 2; + } + //store terrain name for message + const std::string old_name = here.tername(p); + //damage fragile terrain + const auto res = here.bash(p, bash_strength, true, false, false, nullptr, false); + //if broken output message + if (res.success) { + add_msg(m_warning, + string_format(_("The %s breaks under the weight of %s!"), + old_name, who_name)); + } + } + } + return; +} + void Creature::setpos( map &here, const tripoint_bub_ms &p, bool check_gravity/* = true*/ ) { const tripoint_abs_ms old_loc = pos_abs(); set_pos_abs_only( here.get_abs( p ) ); on_move( old_loc ); + if( check_gravity ) { + maybe_break_fragile_underfoot(*this, p); gravity_check( &here ); } } @@ -227,6 +275,10 @@ void Creature::setpos( const tripoint_abs_ms &p, bool check_gravity/* = true*/ ) set_pos_abs_only( p ); on_move( old_loc ); if( check_gravity ) { + map& here = get_map(); + if (here.inbounds(p)) { + maybe_break_fragile_underfoot(*this, here.get_bub( p )); + } gravity_check(); } } diff --git a/src/creature.h b/src/creature.h index cd221b21c25fc..11751e685d178 100644 --- a/src/creature.h +++ b/src/creature.h @@ -323,6 +323,7 @@ class Creature : public viewer } virtual void gravity_check(); virtual void gravity_check( map *here ); + void maybe_break_fragile_underfoot(Creature& cr, const tripoint_bub_ms& p); void setpos( map &here, const tripoint_bub_ms &p, bool check_gravity = true ); void setpos( const tripoint_abs_ms &p, bool check_gravity = true ); diff --git a/src/monmove.cpp b/src/monmove.cpp index c7727d31957e9..e3499d4d219c8 100644 --- a/src/monmove.cpp +++ b/src/monmove.cpp @@ -914,20 +914,6 @@ void monster::move() // Give nursebots a chance to do surgery. nursebot_operate( dragged_foe ); - //check if monster breaks through floor - if (!is_hallucination() && !flies() && get_weight() >= 5_kilogram) { - if (here.has_flag(ter_furn_flag::TFLAG_FRAGILE, pos_bub())) { - // static stress check, breaks fragile terrain like skylights - const int bash_strength = get_weight() / 10_kilogram; - const std::string old_name = here.ter(pos_bub())->name(); - const auto res = here.bash(pos_bub(), bash_strength, true, false, false, nullptr, false); - if (res.success) { - add_msg(m_warning, _("The %s crashes through the %s!"), - name(), old_name); - } - } - } - // The monster can sometimes hang in air due to last fall being blocked gravity_check(); if( is_dead() ) { From b3d62f8983af4a9c5316a84827ecdfb5bc3e19e6 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Sun, 9 Nov 2025 20:57:10 -0800 Subject: [PATCH 04/18] -updated functions to use virtual + overrides -made movement modes of characters from json affect bash -damage dealt to fragile terrain -relinted jsons -ran astyle --- .../furniture_and_terrain/terrain-roofs.json | 193 +- .../terrain-windows.json | 3608 ++++++++++++++--- data/json/move_modes.json | 12 +- src/character.cpp | 29 + src/character.h | 4 + src/creature.cpp | 40 +- src/creature.h | 11 +- src/monster.h | 2 +- src/move_mode.cpp | 8 + src/move_mode.h | 2 + 10 files changed, 3251 insertions(+), 658 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json index ae752ab0aa159..180e4d00cf0b3 100644 --- a/data/json/furniture_and_terrain/terrain-roofs.json +++ b/data/json/furniture_and_terrain/terrain-roofs.json @@ -47,14 +47,27 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, + "deconstruct": { + "ter_set": "t_flat_roof", + "items": [ + { + "item": "scrap_aluminum", + "count": 12 + } + ] + }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] + "items": [ + { + "item": "scrap_aluminum", + "count": [ 4, 7 ] + } + ] } }, { @@ -69,14 +82,27 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE", "CLIMBABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, + "deconstruct": { + "ter_set": "t_flat_roof", + "items": [ + { + "item": "scrap_aluminum", + "count": 12 + } + ] + }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] + "items": [ + { + "item": "scrap_aluminum", + "count": [ 4, 7 ] + } + ] } }, { @@ -90,14 +116,27 @@ "move_cost": 3, "trap": "tr_downspout_funnel", "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "UNSTABLE", "CLIMBABLE" ], - "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, + "deconstruct": { + "ter_set": "t_flat_roof", + "items": [ + { + "item": "scrap_aluminum", + "count": 12 + } + ] + }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_dirt", - "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] + "items": [ + { + "item": "scrap_aluminum", + "count": [ 4, 7 ] + } + ] } }, { @@ -110,7 +149,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -122,7 +168,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -134,7 +187,14 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -146,7 +206,14 @@ "color": "yellow", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -158,7 +225,14 @@ "color": "light_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -170,7 +244,14 @@ "color": "white", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "FLAMMABLE" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -189,7 +270,12 @@ "sound": "glass breaking!", "sound_fail": "whack!", "ter_set": "t_skylight_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] } }, { @@ -202,7 +288,14 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT" ], - "bash": { "str_min": 100, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 100, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -267,7 +360,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 100, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 100, + "str_max": 400, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -279,7 +379,14 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 50, + "str_max": 400, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -291,7 +398,14 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "FLAT" ], - "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 50, + "str_max": 400, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -303,7 +417,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 200, + "str_max": 500, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -315,7 +436,14 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 200, + "str_max": 500, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -327,7 +455,14 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -338,7 +473,14 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 48, "str_max": 80, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 48, + "str_max": 80, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -349,7 +491,14 @@ "color": "blue", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD" ], - "bash": { "str_min": 1, "str_max": 8, "sound": "rrrrip!", "sound_fail": "slap!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 1, + "str_max": 8, + "sound": "rrrrip!", + "sound_fail": "slap!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", diff --git a/data/json/furniture_and_terrain/terrain-windows.json b/data/json/furniture_and_terrain/terrain-windows.json index a8db1b8ac16e4..0c9b9643acb9e 100644 --- a/data/json/furniture_and_terrain/terrain-windows.json +++ b/data/json/furniture_and_terrain/terrain-windows.json @@ -13,7 +13,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "FLAMMABLE", "NOITEM", "BARRICADABLE_WINDOW", "BLOCK_WIND", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -22,9 +30,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 34, 50 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 4 ], + "reduce_damage_laser": [ 0, 4 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -40,7 +58,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -49,9 +75,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 34, 50 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -83,11 +119,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -99,10 +150,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] }, "prying": { @@ -116,7 +179,12 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 4 ], + "reduce_damage_laser": [ 0, 4 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -143,7 +211,15 @@ ], "examine_action": "locked_object", "open": "t_window_no_curtains_open", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -152,7 +228,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] }, "prying": { "result": "t_window_no_curtains_open", @@ -165,7 +246,12 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 4 ], + "reduce_damage_laser": [ 0, 4 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -193,7 +279,15 @@ "SUPPORTS_ROOF" ], "close": "t_window_no_curtains", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -202,7 +296,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] } }, { @@ -220,7 +319,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -229,9 +336,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -252,11 +369,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "glass_sheet", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + } ] }, "examine_action": "curtains", @@ -269,13 +401,30 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -308,11 +457,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -324,10 +488,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] } }, @@ -351,11 +527,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -367,10 +558,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] }, "prying": { @@ -384,7 +587,12 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -407,9 +615,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 34, 50 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 4 ], + "reduce_damage_laser": [ 0, 4 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -443,9 +661,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 34, 50 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -479,11 +707,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -495,10 +738,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] }, "prying": { @@ -512,7 +767,12 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 4 ], + "reduce_damage_laser": [ 0, 4 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -541,7 +801,15 @@ ], "examine_action": "locked_object", "open": "t_window_no_curtains_open_alarm", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -550,7 +818,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] }, "prying": { "result": "t_window_no_curtains_open_alarm", @@ -563,7 +836,12 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 4 ], + "reduce_damage_laser": [ 0, 4 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -593,7 +871,15 @@ "SUPPORTS_ROOF" ], "close": "t_window_no_curtains_alarm", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -602,7 +888,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] } }, { @@ -638,11 +929,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -654,10 +960,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] } }, @@ -691,11 +1009,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 2 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -707,10 +1040,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "glass_shard", "count": [ 21, 29 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 21, 29 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] }, "prying": { @@ -724,7 +1069,12 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 1, 4 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -758,9 +1108,18 @@ "sound_fail": "whump!", "ter_set": "t_null", "items": [ - { "item": "2x4", "count": [ 0, 5 ] }, - { "item": "nail", "charges": [ 0, 5 ] }, - { "item": "splinter", "count": [ 5, 10 ] } + { + "item": "2x4", + "count": [ 0, 5 ] + }, + { + "item": "nail", + "charges": [ 0, 5 ] + }, + { + "item": "splinter", + "count": [ 5, 10 ] + } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] @@ -796,12 +1155,30 @@ "sound_fail": "whump!", "ter_set": "t_null", "items": [ - { "item": "2x4", "count": [ 0, 5 ] }, - { "item": "nail", "charges": [ 0, 5 ] }, - { "item": "splinter", "count": [ 5, 10 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "2x4", + "count": [ 0, 5 ] + }, + { + "item": "nail", + "charges": [ 0, 5 ] + }, + { + "item": "splinter", + "count": [ 5, 10 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] @@ -831,12 +1208,30 @@ "sound_fail": "whump!", "ter_set": "t_null", "items": [ - { "item": "2x4", "count": [ 0, 5 ] }, - { "item": "nail", "charges": [ 0, 5 ] }, - { "item": "splinter", "count": [ 5, 10 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "2x4", + "count": [ 0, 5 ] + }, + { + "item": "nail", + "charges": [ 0, 5 ] + }, + { + "item": "splinter", + "count": [ 5, 10 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] @@ -860,7 +1255,12 @@ "sound_vol": 12, "sound_fail_vol": 8, "ter_set": "t_window_empty", - "items": [ { "item": "glass_shard", "count": [ 6, 10 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 6, 10 ] + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -883,7 +1283,20 @@ "flags": [ "FLAMMABLE", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "WINDOW", "SUPPORTS_ROOF" ], "deconstruct": { "ter_set": "t_window_empty", - "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 6, 8 ] }, { "item": "glass_sheet", "count": 1 } ] + "items": [ + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 6, 8 ] + }, + { + "item": "glass_sheet", + "count": 1 + } + ] }, "bash": { "str_min": 3, @@ -893,7 +1306,16 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "splinter", "count": [ 10, 20 ] }, { "item": "glass_shard", "count": [ 25, 42 ] } ], + "items": [ + { + "item": "splinter", + "count": [ 10, 20 ] + }, + { + "item": "glass_shard", + "count": [ 25, 42 ] + } + ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, @@ -901,10 +1323,23 @@ "result": "t_window", "duration": "2 minutes", "message": "You pry the boards from the window.", - "byproducts": [ { "item": "nail", "count": 8 }, { "item": "2x4", "count": 4 } ], + "byproducts": [ + { + "item": "nail", + "count": 8 + }, + { + "item": "2x4", + "count": 4 + } + ], "prying_data": { "prying_nails": true } }, - "shoot": { "reduce_damage": [ 10, 25 ], "reduce_damage_laser": [ 5, 20 ], "destroy_damage": [ 10, 40 ] } + "shoot": { + "reduce_damage": [ 10, 25 ], + "reduce_damage_laser": [ 5, 20 ], + "destroy_damage": [ 10, 40 ] + } }, { "type": "terrain", @@ -923,7 +1358,16 @@ "flags": [ "FLAMMABLE", "NOITEM", "BLOCK_WIND", "PERMEABLE", "WINDOW", "SUPPORTS_ROOF" ], "deconstruct": { "ter_set": "t_window_empty", - "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 6, 8 ] } ] + "items": [ + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 6, 8 ] + } + ] }, "bash": { "str_min": 3, @@ -933,7 +1377,12 @@ "sound_vol": 14, "sound_fail_vol": 10, "ter_set": "t_window_empty", - "items": [ { "item": "splinter", "count": [ 10, 20 ] } ], + "items": [ + { + "item": "splinter", + "count": [ 10, 20 ] + } + ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, @@ -941,10 +1390,23 @@ "result": "t_window_empty", "duration": "2 minutes", "message": "You pry the boards from the window frame.", - "byproducts": [ { "item": "nail", "count": 8 }, { "item": "2x4", "count": 4 } ], + "byproducts": [ + { + "item": "nail", + "count": 8 + }, + { + "item": "2x4", + "count": 4 + } + ], "prying_data": { "prying_nails": true } }, - "shoot": { "reduce_damage": [ 9, 21 ], "reduce_damage_laser": [ 5, 16 ], "destroy_damage": [ 10, 40 ] } + "shoot": { + "reduce_damage": [ 9, 21 ], + "reduce_damage_laser": [ 5, 16 ], + "destroy_damage": [ 10, 40 ] + } }, { "type": "terrain", @@ -958,11 +1420,26 @@ "deconstruct": { "ter_set": "t_window", "items": [ - { "item": "2x4", "count": 7 }, - { "item": "nail", "charges": [ 10, 16 ] }, - { "item": "wood_panel", "count": 4 }, - { "item": "hinge", "count": 4 }, - { "item": "nuts_bolts", "count": 8 } + { + "item": "2x4", + "count": 7 + }, + { + "item": "nail", + "charges": [ 10, 16 ] + }, + { + "item": "wood_panel", + "count": 4 + }, + { + "item": "hinge", + "count": 4 + }, + { + "item": "nuts_bolts", + "count": 8 + } ] }, "bash": { @@ -974,15 +1451,31 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "splinter", "count": [ 10, 25 ] }, - { "item": "glass_shard", "count": [ 25, 42 ] }, - { "item": "hinge", "count": [ 0, 3 ] }, - { "item": "nuts_bolts", "count": [ 1, 4 ] } + { + "item": "splinter", + "count": [ 10, 25 ] + }, + { + "item": "glass_shard", + "count": [ 25, 42 ] + }, + { + "item": "hinge", + "count": [ 0, 3 ] + }, + { + "item": "nuts_bolts", + "count": [ 1, 4 ] + } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "shoot": { "reduce_damage": [ 10, 25 ], "reduce_damage_laser": [ 5, 20 ], "destroy_damage": [ 10, 40 ] } + "shoot": { + "reduce_damage": [ 10, 25 ], + "reduce_damage_laser": [ 5, 20 ], + "destroy_damage": [ 10, 40 ] + } }, { "type": "terrain", @@ -1005,15 +1498,31 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "splinter", "count": [ 10, 25 ] }, - { "item": "glass_shard", "count": [ 25, 42 ] }, - { "item": "hinge", "count": [ 0, 3 ] }, - { "item": "nuts_bolts", "count": [ 1, 4 ] } + { + "item": "splinter", + "count": [ 10, 25 ] + }, + { + "item": "glass_shard", + "count": [ 25, 42 ] + }, + { + "item": "hinge", + "count": [ 0, 3 ] + }, + { + "item": "nuts_bolts", + "count": [ 1, 4 ] + } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "prying": { "result": "t_window_boarded_shutters_open_fully", "duration": "30 seconds", "message": "You pry open the window." } + "prying": { + "result": "t_window_boarded_shutters_open_fully", + "duration": "30 seconds", + "message": "You pry open the window." + } }, { "type": "terrain", @@ -1043,18 +1552,39 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window", "items": [ { "item": "2x4", "count": [ 6, 8 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, + "deconstruct": { + "ter_set": "t_window", + "items": [ + { + "item": "2x4", + "count": [ 6, 8 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } + ] + }, "bash": { "str_min": 12, "str_max": 30, "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_boarded", - "items": [ { "item": "splinter", "count": [ 0, 8 ] } ], + "items": [ + { + "item": "splinter", + "count": [ 0, 8 ] + } + ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "shoot": { "reduce_damage": [ 15, 30 ], "reduce_damage_laser": [ 10, 30 ], "destroy_damage": [ 20, 50 ] } + "shoot": { + "reduce_damage": [ 15, 30 ], + "reduce_damage_laser": [ 10, 30 ], + "destroy_damage": [ 20, 50 ] + } }, { "type": "terrain", @@ -1073,7 +1603,16 @@ "flags": [ "FLAMMABLE", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "PERMEABLE", "WINDOW", "SUPPORTS_ROOF" ], "deconstruct": { "ter_set": "t_window_empty", - "items": [ { "item": "2x4", "count": [ 6, 8 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] + "items": [ + { + "item": "2x4", + "count": [ 6, 8 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } + ] }, "bash": { "str_min": 12, @@ -1081,11 +1620,20 @@ "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_boarded_noglass", - "items": [ { "item": "splinter", "count": [ 0, 8 ] } ], + "items": [ + { + "item": "splinter", + "count": [ 0, 8 ] + } + ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "shoot": { "reduce_damage": [ 14, 26 ], "reduce_damage_laser": [ 10, 26 ], "destroy_damage": [ 20, 50 ] } + "shoot": { + "reduce_damage": [ 14, 26 ], + "reduce_damage_laser": [ 10, 26 ], + "destroy_damage": [ 20, 50 ] + } }, { "type": "terrain", @@ -1102,7 +1650,12 @@ "result": "t_window_reinforced", "duration": "5 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 4 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 4 ] + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -1111,14 +1664,32 @@ "oxytorch": { "result": "t_window_empty", "duration": "4 seconds", - "byproducts": [ { "item": "steel_plate", "count": [ 0, 1 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] + "byproducts": [ + { + "item": "steel_plate", + "count": [ 0, 1 ] + }, + { + "item": "sheet_metal", + "count": [ 1, 3 ] + } + ] }, "deconstruct": { "ter_set": "t_window_reinforced", "items": [ - { "item": "steel_plate", "count": 1 }, - { "item": "spike", "count": [ 3, 4 ] }, - { "item": "sheet_metal", "count": [ 3, 4 ] } + { + "item": "steel_plate", + "count": 1 + }, + { + "item": "spike", + "count": [ 3, 4 ] + }, + { + "item": "sheet_metal", + "count": [ 3, 4 ] + } ] }, "bash": { @@ -1127,9 +1698,22 @@ "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_reinforced", - "items": [ { "item": "spike", "count": [ 0, 2 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] + "items": [ + { + "item": "spike", + "count": [ 0, 2 ] + }, + { + "item": "sheet_metal", + "count": [ 1, 3 ] + } + ] }, - "shoot": { "reduce_damage": [ 20, 35 ], "reduce_damage_laser": [ 15, 40 ], "destroy_damage": [ 30, 60 ] } + "shoot": { + "reduce_damage": [ 20, 35 ], + "reduce_damage_laser": [ 15, 40 ], + "destroy_damage": [ 30, 60 ] + } }, { "type": "terrain", @@ -1149,20 +1733,43 @@ "oxytorch": { "result": "t_window_empty", "duration": "4 seconds", - "byproducts": [ { "item": "steel_plate", "count": [ 0, 1 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] + "byproducts": [ + { + "item": "steel_plate", + "count": [ 0, 1 ] + }, + { + "item": "sheet_metal", + "count": [ 1, 3 ] + } + ] }, "hacksaw": { "result": "t_window_reinforced_noglass", "duration": "5 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 4 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 4 ] + } + ] }, "deconstruct": { "ter_set": "t_window_reinforced_noglass", "items": [ - { "item": "steel_plate", "count": 1 }, - { "item": "spike", "count": [ 3, 4 ] }, - { "item": "sheet_metal", "count": [ 3, 4 ] } + { + "item": "steel_plate", + "count": 1 + }, + { + "item": "spike", + "count": [ 3, 4 ] + }, + { + "item": "sheet_metal", + "count": [ 3, 4 ] + } ] }, "bash": { @@ -1171,9 +1778,22 @@ "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_reinforced_noglass", - "items": [ { "item": "spike", "count": [ 0, 2 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] + "items": [ + { + "item": "spike", + "count": [ 0, 2 ] + }, + { + "item": "sheet_metal", + "count": [ 1, 3 ] + } + ] }, - "shoot": { "reduce_damage": [ 19, 31 ], "reduce_damage_laser": [ 15, 36 ], "destroy_damage": [ 30, 60 ] } + "shoot": { + "reduce_damage": [ 19, 31 ], + "reduce_damage_laser": [ 15, 36 ], + "destroy_damage": [ 30, 60 ] + } }, { "type": "terrain", @@ -1189,13 +1809,27 @@ "result": "t_window", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 8 ] + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "WINDOW", "SUPPORTS_ROOF" ], - "oxytorch": { "result": "t_window", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, + "oxytorch": { + "result": "t_window", + "duration": "9 seconds", + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 2 ] + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -1204,7 +1838,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", - "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 34, 50 ] + } + ] } }, { @@ -1222,13 +1861,27 @@ "result": "t_window_empty", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 8 ] + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "NOITEM", "WINDOW", "PERMEABLE", "SUPPORTS_ROOF", "THIN_OBSTACLE" ], - "oxytorch": { "result": "t_window_empty", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, + "oxytorch": { + "result": "t_window_empty", + "duration": "9 seconds", + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 2 ] + } + ] + }, "bash": { "str_min": 60, "str_max": 250, @@ -1236,9 +1889,18 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + } ] } }, @@ -1256,13 +1918,27 @@ "result": "t_window_alarm", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 8 ] + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "ALARMED", "WINDOW", "SUPPORTS_ROOF" ], - "oxytorch": { "result": "t_window_alarm", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, + "oxytorch": { + "result": "t_window_alarm", + "duration": "9 seconds", + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 2 ] + } + ] + }, "bash": { "str_min": 3, "str_max": 6, @@ -1271,7 +1947,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", - "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 34, 50 ] + } + ] } }, { @@ -1288,10 +1969,24 @@ "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 8 ] + } + ] }, "roof": "t_flat_roof", - "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, + "oxytorch": { + "result": "t_window_domestic", + "duration": "9 seconds", + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 2 ] + } + ] + }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", @@ -1316,10 +2011,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", "items": [ - { "item": "glass_shard", "count": [ 34, 50 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 34, 50 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] } }, @@ -1336,10 +2043,24 @@ "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 8 ] + } + ] }, "roof": "t_flat_roof", - "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, + "oxytorch": { + "result": "t_window_domestic", + "duration": "9 seconds", + "byproducts": [ + { + "item": "rebar", + "count": [ 1, 2 ] + } + ] + }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", @@ -1365,10 +2086,22 @@ "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", "items": [ - { "item": "glass_shard", "count": [ 34, 50 ] }, - { "item": "sheet", "count": 2 }, - { "item": "stick", "count": 1 }, - { "item": "string_36", "count": 1 } + { + "item": "glass_shard", + "count": [ 34, 50 ] + }, + { + "item": "sheet", + "count": 2 + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "string_36", + "count": 1 + } ] } }, @@ -1402,7 +2135,16 @@ "sound": "a crash and glass breaking!", "sound_fail": "whack!", "ter_set": "t_rock_floor", - "items": [ { "item": "glass_shard", "count": [ 42, 67 ] }, { "item": "rock", "count": [ 8, 18 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 42, 67 ] + }, + { + "item": "rock", + "count": [ 8, 18 ] + } + ] } }, { @@ -1435,7 +2177,16 @@ "sound": "a crash and glass breaking!", "sound_fail": "whack!", "ter_set": "t_rock_floor", - "items": [ { "item": "glass_shard", "count": [ 42, 67 ] }, { "item": "rock", "count": [ 8, 18 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 42, 67 ] + }, + { + "item": "rock", + "count": [ 8, 18 ] + } + ] } }, { @@ -1468,7 +2219,16 @@ "sound": "a crash and glass breaking!", "sound_fail": "whack!", "ter_set": "t_rock_floor", - "items": [ { "item": "glass_shard", "count": [ 42, 67 ] }, { "item": "rock", "count": [ 8, 18 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 42, 67 ] + }, + { + "item": "rock", + "count": [ 8, 18 ] + } + ] } }, { @@ -1485,13 +2245,31 @@ "oxytorch": { "result": "t_window", "duration": "9 seconds", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "hacksaw": { "result": "t_window", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -1504,10 +2282,22 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] }, - { "item": "glass_shard", "count": [ 75, 125 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + }, + { + "item": "glass_shard", + "count": [ 75, 125 ] + } ] } }, @@ -1524,13 +2314,31 @@ "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "hacksaw": { "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -1546,10 +2354,22 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] }, - { "item": "glass_shard", "count": [ 75, 125 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + }, + { + "item": "glass_shard", + "count": [ 75, 125 ] + } ] } }, @@ -1579,13 +2399,31 @@ "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "hacksaw": { "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "curtain_transform": "t_metal_grate_window", "examine_action": "curtains", @@ -1597,10 +2435,22 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] }, - { "item": "glass_shard", "count": [ 75, 125 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + }, + { + "item": "glass_shard", + "count": [ 75, 125 ] + } ] } }, @@ -1622,13 +2472,31 @@ "oxytorch": { "result": "t_window_empty", "duration": "9 seconds", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "hacksaw": { "result": "t_window_empty", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "bash": { "str_min": 50, @@ -1637,9 +2505,18 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + } ] } }, @@ -1661,14 +2538,32 @@ "result": "t_window_empty_curtains_open", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "curtain_transform": "t_metal_grate_window_noglass", "examine_action": "curtains", "oxytorch": { "result": "t_window_empty_curtains_open", "duration": "9 seconds", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "open": "t_metal_grate_window_with_curtain_open_noglass", "bash": { @@ -1678,9 +2573,18 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + } ] } }, @@ -1701,13 +2605,31 @@ "oxytorch": { "result": "t_window_empty_curtains_open", "duration": "9 seconds", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "hacksaw": { "result": "t_window_empty_curtains_open", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] + "byproducts": [ + { + "item": "pipe", + "count": [ 1, 12 ] + }, + { + "item": "sheet_metal", + "count": 4 + } + ] }, "curtain_transform": "t_metal_grate_window_noglass", "examine_action": "curtains", @@ -1715,12 +2637,30 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "pipe", "count": [ 10, 12 ] }, - { "item": "sheet_metal_small", "count": [ 30, 40 ] }, - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "pipe", + "count": [ 10, 12 ] + }, + { + "item": "sheet_metal_small", + "count": [ 30, 40 ] + }, + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -1730,9 +2670,18 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { "item": "lc_steel_lump", "prob": 25 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] } + { + "item": "lc_steel_lump", + "prob": 25 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + } ] } }, @@ -1762,7 +2711,15 @@ ], "examine_action": "locked_object", "open": "t_single_pane_glass_open", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 2, "str_max": 4, @@ -1772,9 +2729,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -1806,7 +2772,15 @@ "SUPPORTS_ROOF" ], "close": "t_single_pane_glass", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 2, "str_max": 4, @@ -1816,9 +2790,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -1843,11 +2826,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -1858,7 +2856,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -1892,11 +2895,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -1907,7 +2925,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -1943,11 +2966,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -1958,7 +2996,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -1977,7 +3020,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -1986,9 +3037,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -2017,7 +3078,15 @@ ], "examine_action": "locked_object", "open": "t_reinforced_single_pane_glass_open", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 12, "str_max": 30, @@ -2027,9 +3096,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -2061,7 +3139,15 @@ "SUPPORTS_ROOF" ], "close": "t_reinforced_single_pane_glass", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 12, "str_max": 30, @@ -2071,9 +3157,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -2107,11 +3202,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2122,7 +3232,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2157,11 +3272,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2172,7 +3302,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2208,11 +3343,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2223,7 +3373,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2242,7 +3397,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 1 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 1 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -2251,9 +3414,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -2285,9 +3458,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] }, - { "item": "glass_sheet", "count": 2 } + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + }, + { + "item": "glass_sheet", + "count": 2 + } ] }, "bash": { @@ -2299,9 +3481,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -2336,9 +3527,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] }, - { "item": "glass_sheet", "count": 2 } + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + }, + { + "item": "glass_sheet", + "count": 2 + } ] }, "bash": { @@ -2350,9 +3550,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -2386,13 +3595,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -2403,7 +3633,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2438,13 +3673,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -2455,7 +3711,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2491,13 +3752,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -2508,7 +3790,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2527,7 +3814,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 2 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 2 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -2536,9 +3831,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -2569,7 +3874,16 @@ "open": "t_reinforced_double_pane_glass_open", "deconstruct": { "ter_set": "t_window_empty", - "items": [ { "item": "reinforced_glass_sheet", "count": 1 }, { "item": "glass_sheet", "count": 1 } ] + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + } + ] }, "bash": { "str_min": 12, @@ -2580,9 +3894,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -2616,7 +3939,16 @@ "close": "t_reinforced_double_pane_glass", "deconstruct": { "ter_set": "t_window_empty", - "items": [ { "item": "reinforced_glass_sheet", "count": 1 }, { "item": "glass_sheet", "count": 1 } ] + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + } + ] }, "bash": { "str_min": 12, @@ -2627,9 +3959,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -2663,12 +4004,30 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2679,7 +4038,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2716,12 +4080,30 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2732,7 +4114,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2768,12 +4155,30 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2784,7 +4189,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -2803,7 +4213,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 2 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 2 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -2812,9 +4230,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -2843,7 +4271,15 @@ ], "examine_action": "locked_object", "open": "t_triple_pane_glass_open", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 3 + } + ] + }, "bash": { "str_min": 4, "str_max": 8, @@ -2853,9 +4289,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 80, 120 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 80, 120 ] + } ] } }, @@ -2887,7 +4332,15 @@ "SUPPORTS_ROOF" ], "close": "t_triple_pane_glass", - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 3 + } + ] + }, "bash": { "str_min": 4, "str_max": 8, @@ -2897,9 +4350,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 80, 120 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 80, 120 ] + } ] } }, @@ -2933,11 +4395,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2948,7 +4425,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 80, 120 ] + } + ] } }, { @@ -2983,11 +4465,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -2998,7 +4495,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -3034,11 +4536,26 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + } ] }, "bash": { @@ -3049,7 +4566,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 80, 120 ] + } + ] } }, { @@ -3068,7 +4590,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 3 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -3077,9 +4607,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -3111,10 +4651,22 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3126,9 +4678,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 80, 120 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 80, 120 ] + } ] } }, @@ -3163,10 +4724,22 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3178,9 +4751,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 80, 120 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 80, 120 ] + } ] } }, @@ -3214,14 +4796,38 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3232,7 +4838,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 80, 120 ] + } + ] } }, { @@ -3267,14 +4878,38 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3285,7 +4920,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -3321,13 +4961,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3338,7 +4999,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 80, 120 ] + } + ] } }, { @@ -3357,7 +5023,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 3 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 3 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -3366,9 +5040,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 80, 120 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -3400,9 +5084,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "glass_sheet", "count": 4 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "glass_sheet", + "count": 4 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3414,9 +5107,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 100, 200 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 100, 200 ] + } ] } }, @@ -3451,9 +5153,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "glass_sheet", "count": 4 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "glass_sheet", + "count": 4 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3465,9 +5176,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 100, 200 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 100, 200 ] + } ] } }, @@ -3501,13 +5221,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 4 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 4 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3518,7 +5259,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 100, 200 ] + } + ] } }, { @@ -3553,13 +5299,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3570,7 +5337,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -3606,13 +5378,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 4 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 4 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3623,7 +5416,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 100, 200 ] + } + ] } }, { @@ -3642,7 +5440,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "glass_sheet", + "count": 3 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -3651,9 +5457,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -3685,10 +5501,22 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3700,9 +5528,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 100, 200 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 100, 200 ] + } ] } }, @@ -3737,10 +5574,22 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3752,9 +5601,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 100, 200 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 100, 200 ] + } ] } }, @@ -3788,14 +5646,38 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "reinforced_glass_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "reinforced_glass_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3806,7 +5688,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 100, 200 ] + } + ] } }, { @@ -3841,14 +5728,38 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 2 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 2 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3859,7 +5770,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -3895,14 +5811,38 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "glass_sheet", "count": 4 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "glass_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 4 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "glass_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3913,7 +5853,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 100, 200 ] + } + ] } }, { @@ -3932,7 +5877,15 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 3 } ] }, + "deconstruct": { + "ter_set": "t_window_empty", + "items": [ + { + "item": "reinforced_glass_sheet", + "count": 3 + } + ] + }, "bash": { "str_min": 6, "str_max": 12, @@ -3941,9 +5894,19 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 80, 120 ] + } + ] }, - "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } + "shoot": { + "reduce_damage": [ 1, 6 ], + "reduce_damage_laser": [ 2, 10 ], + "destroy_damage": [ 2, 8 ], + "no_laser_destroy": true + } }, { "type": "terrain", @@ -3974,9 +5937,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "plastic_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "plastic_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -3987,7 +5959,20 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] + "items": [ + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": 1 + } + ] } }, { @@ -4021,9 +6006,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "plastic_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "plastic_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4034,7 +6028,20 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] + "items": [ + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": 1 + } + ] } }, { @@ -4058,13 +6065,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "plastic_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "plastic_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4075,7 +6103,20 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] + "items": [ + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": 1 + } + ] } }, { @@ -4109,13 +6150,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "plastic_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "plastic_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4126,7 +6188,20 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] + "items": [ + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": 1 + } + ] } }, { @@ -4162,13 +6237,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "plastic_sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "plastic_sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4179,7 +6275,20 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] + "items": [ + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": 1 + } + ] } }, { @@ -4212,9 +6321,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "rigid_plastic_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "rigid_plastic_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4226,9 +6344,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "plastic_sheet", "count": [ 1, 2 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": [ 1, 2 ] + } ] } }, @@ -4263,9 +6390,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "rigid_plastic_sheet", "count": 3 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "rigid_plastic_sheet", + "count": 3 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4277,9 +6413,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "plastic_sheet", "count": [ 1, 2 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": [ 1, 2 ] + } ] } }, @@ -4313,13 +6458,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "rigid_plastic_sheet", "count": 3 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "rigid_plastic_sheet", + "count": 3 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4331,9 +6497,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "plastic_sheet", "count": [ 1, 2 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": [ 1, 2 ] + } ] } }, @@ -4369,13 +6544,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "rigid_plastic_sheet", "count": 3 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "rigid_plastic_sheet", + "count": 3 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4387,9 +6583,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "plastic_sheet", "count": [ 1, 2 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": [ 1, 2 ] + } ] } }, @@ -4426,13 +6631,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "rigid_plastic_sheet", "count": 3 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "rigid_plastic_sheet", + "count": 3 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4443,7 +6669,20 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] + "items": [ + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "plastic_sheet", + "count": 1 + } + ] } }, { @@ -4457,7 +6696,19 @@ "move_cost": 2, "coverage": 0, "examine_action": "ledge", - "deconstruct": { "ter_set": "t_open_air", "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, + "deconstruct": { + "ter_set": "t_open_air", + "items": [ + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } + ] + }, "bash": { "str_min": 1, "str_max": 1, @@ -4466,7 +6717,12 @@ "sound_vol": 12, "sound_fail_vol": 8, "ter_set": "t_open_air", - "items": [ { "item": "2x4", "count": [ 2, 4 ] } ] + "items": [ + { + "item": "2x4", + "count": [ 2, 4 ] + } + ] }, "flags": [ "TRANSPARENT", "NO_FLOOR", "FLAMMABLE" ] }, @@ -4500,9 +6756,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "tempered_glass_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "tempered_glass_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4514,9 +6779,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -4551,9 +6825,18 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "tempered_glass_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "tempered_glass_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4565,9 +6848,18 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "glass_shard", "count": [ 68, 100 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "glass_shard", + "count": [ 68, 100 ] + } ] } }, @@ -4601,13 +6893,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "tempered_glass_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "tempered_glass_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4618,7 +6931,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -4653,13 +6971,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "tempered_glass_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "tempered_glass_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4670,7 +7009,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -4706,13 +7050,34 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { "item": "stick", "count": 1 }, - { "item": "sheet", "count": 1 }, - { "item": "nail", "charges": [ 3, 4 ] }, - { "item": "string_36", "count": 1 }, - { "item": "tempered_glass_sheet", "count": 1 }, - { "item": "2x4", "count": [ 3, 4 ] }, - { "item": "nail", "charges": [ 12, 16 ] } + { + "item": "stick", + "count": 1 + }, + { + "item": "sheet", + "count": 1 + }, + { + "item": "nail", + "charges": [ 3, 4 ] + }, + { + "item": "string_36", + "count": 1 + }, + { + "item": "tempered_glass_sheet", + "count": 1 + }, + { + "item": "2x4", + "count": [ 3, 4 ] + }, + { + "item": "nail", + "charges": [ 12, 16 ] + } ] }, "bash": { @@ -4723,7 +7088,12 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 68, 100 ] + } + ] } }, { @@ -4747,10 +7117,22 @@ "sound_fail": "clang!", "ter_set": "t_metal_floor", "items": [ - { "item": "lc_steel_lump", "prob": 55 }, - { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, - { "item": "scrap", "count": [ 1, 5 ] }, - { "item": "glass_shard", "count": [ 20, 50 ] } + { + "item": "lc_steel_lump", + "prob": 55 + }, + { + "item": "lc_steel_chunk", + "count": [ 1, 4 ] + }, + { + "item": "scrap", + "count": [ 1, 5 ] + }, + { + "item": "glass_shard", + "count": [ 20, 50 ] + } ] } } diff --git a/data/json/move_modes.json b/data/json/move_modes.json index 5fdf737e80844..dd3ba1317f7e6 100644 --- a/data/json/move_modes.json +++ b/data/json/move_modes.json @@ -12,7 +12,8 @@ "change_good_animal": "You nudge your steed into a steady trot.", "change_good_mech": "You set your mech's leg power to a loping fast walk.", "move_type": "walking", - "move_speed_multiplier": 1.0 + "move_speed_multiplier": 1.0, + "bash_weight_modifier": 2 }, { "type": "movement_mode", @@ -34,7 +35,8 @@ "sound_multiplier": 1.5, "move_speed_multiplier": 2.0, "stamina_multiplier": 7.0, - "swim_speed_mod": -80 + "swim_speed_mod": -80, + "bash_weight_modifier": 1 }, { "type": "movement_mode", @@ -51,7 +53,8 @@ "move_type": "crouching", "sound_multiplier": 0.5, "move_speed_multiplier": 0.5, - "swim_speed_mod": 50 + "swim_speed_mod": 50, + "bash_weight_modifier": 2 }, { "type": "movement_mode", @@ -68,6 +71,7 @@ "move_type": "prone", "sound_multiplier": 0.2, "move_speed_multiplier": 0.2, - "swim_speed_mod": 50 + "swim_speed_mod": 50, + "bash_weight_modifier": 8 } ] diff --git a/src/character.cpp b/src/character.cpp index 578c08be5a45f..f0ccac4df4e2e 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -1976,6 +1976,14 @@ move_mode_id Character::current_movement_mode() const return move_mode; } +int Character::fragile_terrain_weight_modifier() const +{ + if( !move_mode.is_valid() ) { + return 2; // defaut if move_mode is invalid + } + return move_mode->get_bash_weight_modifier(); +} + bool Character::movement_mode_is( const move_mode_id &mode ) const { return move_mode == mode; @@ -7708,6 +7716,27 @@ bool Character::can_fly() return false; } +bool Character::flies() const +{ + if( has_effect( effect_stunned ) ) { + return false; + } + // GLIDE is for artifacts or things like jetpacks that don't care if you're tired or hurt. + if( has_flag( json_flag_GLIDE ) ) { + return true; + } + // TODO: Remove grandfathering traits in after Limb Stuff + if( has_flag( json_flag_WINGS_2 ) || + has_flag( json_flag_WING_GLIDE ) || count_flag( json_flag_WING_ARMS ) >= 2 ) { + + if( 100 * weight_carried() / weight_capacity() > 50 || !has_two_arms_lifting() ) { + return false; + } + return true; + } + return false; +} + // FIXME: Relies on hardcoded bash damage type void Character::knock_back_to( const tripoint_bub_ms &to ) { diff --git a/src/character.h b/src/character.h index c7f60189e8982..0217eb6c577ce 100644 --- a/src/character.h +++ b/src/character.h @@ -43,6 +43,7 @@ #include "item_location.h" #include "memory_fast.h" #include "monster.h" +#include "move_mode.h" #include "pimpl.h" #include "player_activity.h" #include "pocket_type.h" @@ -1061,6 +1062,8 @@ class Character : public Creature, public visitable bool movement_mode_is( const move_mode_id &mode ) const; move_mode_id current_movement_mode() const; + int fragile_terrain_weight_modifier() const override; + bool is_running() const; bool is_walking() const; bool is_crouching() const; @@ -2700,6 +2703,7 @@ class Character : public Creature, public visitable int impact( int force, const tripoint_bub_ms &pos ) override; /** Checks to see if the character is able to use their wings properly */ bool can_fly(); + bool flies() const override; /** Knocks the player to a specified tile */ void knock_back_to( const tripoint_bub_ms &to ) override; diff --git a/src/creature.cpp b/src/creature.cpp index 9268f5a62b628..6439d263f1937 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -211,16 +211,22 @@ tripoint_bub_ms Creature::pos_bub( const map &here ) const return here.get_bub( location ); } -void Creature::maybe_break_fragile_underfoot(Creature &cr, const tripoint_bub_ms &p) +void Creature::maybe_break_fragile_underfoot( Creature &cr, const tripoint_bub_ms &p ) { - map& here = get_map(); - if (here.has_flag(ter_furn_flag::TFLAG_FRAGILE, p)) { + map &here = get_map(); + if( here.has_flag( ter_furn_flag::TFLAG_FRAGILE, p ) ) { + + + /* bool can_fly = false; if (const monster* mon = dynamic_cast(&cr)) { can_fly = mon->flies(); } - if (!cr.is_hallucination() && !can_fly && cr.get_weight() >= 5_kilogram) { - std::string who_name; + */ + + if( !cr.is_hallucination() && !cr.flies() && cr.get_weight() >= 5_kilogram ) { + std::string who_name = cr.disp_name(); + /* int bash_strength = cr.get_weight() / 5_kilogram; //check if monster if (const monster* mon = dynamic_cast(&cr)) { @@ -241,16 +247,18 @@ void Creature::maybe_break_fragile_underfoot(Creature &cr, const tripoint_bub_ms else { who_name = _("something"); bash_strength = bash_strength / 2; - } + } */ + + int bash_strength = ( cr.get_weight() / 5_kilogram ) / cr.fragile_terrain_weight_modifier(); //store terrain name for message - const std::string old_name = here.tername(p); + const std::string old_name = here.tername( p ); //damage fragile terrain - const auto res = here.bash(p, bash_strength, true, false, false, nullptr, false); + const auto res = here.bash( p, bash_strength, true, false, false, nullptr, false ); //if broken output message - if (res.success) { - add_msg(m_warning, - string_format(_("The %s breaks under the weight of %s!"), - old_name, who_name)); + if( res.success ) { + add_msg( m_warning, + string_format( _( "The %s breaks under the weight of %s!" ), + old_name, who_name ) ); } } } @@ -264,7 +272,7 @@ void Creature::setpos( map &here, const tripoint_bub_ms &p, bool check_gravity/* on_move( old_loc ); if( check_gravity ) { - maybe_break_fragile_underfoot(*this, p); + maybe_break_fragile_underfoot( *this, p ); gravity_check( &here ); } } @@ -275,9 +283,9 @@ void Creature::setpos( const tripoint_abs_ms &p, bool check_gravity/* = true*/ ) set_pos_abs_only( p ); on_move( old_loc ); if( check_gravity ) { - map& here = get_map(); - if (here.inbounds(p)) { - maybe_break_fragile_underfoot(*this, here.get_bub( p )); + map &here = get_map(); + if( here.inbounds( p ) ) { + maybe_break_fragile_underfoot( *this, here.get_bub( p ) ); } gravity_check(); } diff --git a/src/creature.h b/src/creature.h index 11751e685d178..57088688c7c09 100644 --- a/src/creature.h +++ b/src/creature.h @@ -323,7 +323,7 @@ class Creature : public viewer } virtual void gravity_check(); virtual void gravity_check( map *here ); - void maybe_break_fragile_underfoot(Creature& cr, const tripoint_bub_ms& p); + void maybe_break_fragile_underfoot( Creature &cr, const tripoint_bub_ms &p ); void setpos( map &here, const tripoint_bub_ms &p, bool check_gravity = true ); void setpos( const tripoint_abs_ms &p, bool check_gravity = true ); @@ -609,7 +609,14 @@ class Creature : public viewer virtual float fall_damage_mod() const = 0; /** Deals falling/collision damage with terrain/creature at pos */ virtual int impact( int force, const tripoint_bub_ms &pos ) = 0; - + // After dividing mass by 5kg, how much to further divide mass for use in breaking skylights/ice. 2 is default. + virtual int fragile_terrain_weight_modifier() const { + return 2; + } + //virtual check for if creature flies + virtual bool flies() const { + return false; + } /** * This function checks the creatures @ref is_dead_state and (if true) calls @ref die. * You can either call this function after hitting this creature, or let the game diff --git a/src/monster.h b/src/monster.h index a000f38668cf5..f7ceb62c8804f 100644 --- a/src/monster.h +++ b/src/monster.h @@ -173,7 +173,7 @@ class monster : public Creature bool digging() const override; // digs() or can_dig() and diggable terrain bool can_dig() const; bool digs() const; - bool flies() const; + bool flies() const override; bool climbs() const; bool swims() const; diff --git a/src/move_mode.cpp b/src/move_mode.cpp index 7bb3b5a7cdd74..d1fe3c241a8ff 100644 --- a/src/move_mode.cpp +++ b/src/move_mode.cpp @@ -75,6 +75,7 @@ void move_mode::load( const JsonObject &jo, std::string_view/*src*/ ) optional( jo, was_loaded, "move_speed_multiplier", _move_speed_mult, 1.0 ); optional( jo, was_loaded, "mech_power_use", _mech_power_use, 2 ); optional( jo, was_loaded, "swim_speed_mod", _swim_speed_mod, 0 ); + optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, 2 ); optional( jo, was_loaded, "stop_hauling", _stop_hauling ); } @@ -87,6 +88,8 @@ void move_mode::reset() void move_mode::finalize() { + //Make sure no json modders make 0 or negative bwm, this avoids divbyzeros + _bash_weight_modifier = std::max( 1, _bash_weight_modifier ); } void move_mode::finalize_all() @@ -191,6 +194,11 @@ int move_mode::swim_speed_mod() const return _swim_speed_mod; } +int move_mode::get_bash_weight_modifier() const +{ + return _bash_weight_modifier; +} + nc_color move_mode::panel_color() const { return _panel_color; diff --git a/src/move_mode.h b/src/move_mode.h index 10259914cf3be..c597b03f9ca5e 100644 --- a/src/move_mode.h +++ b/src/move_mode.h @@ -61,6 +61,7 @@ class move_mode int _mech_power_use = 0; int _swim_speed_mod = 0; + int _bash_weight_modifier = 2; nc_color _panel_color; nc_color _symbol_color; @@ -92,6 +93,7 @@ class move_mode units::energy mech_power_use() const; int swim_speed_mod() const; + int get_bash_weight_modifier() const; nc_color panel_color() const; nc_color symbol_color() const; From 4f8b8da29626b07b521dbac860a71b97780218e9 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Sun, 9 Nov 2025 21:31:17 -0800 Subject: [PATCH 05/18] relint skylight stuff for real --- .../furniture_and_terrain/terrain-roofs.json | 193 +- .../terrain-windows.json | 3605 +++-------------- 2 files changed, 635 insertions(+), 3163 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json index 180e4d00cf0b3..ae752ab0aa159 100644 --- a/data/json/furniture_and_terrain/terrain-roofs.json +++ b/data/json/furniture_and_terrain/terrain-roofs.json @@ -47,27 +47,14 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { - "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": 12 - } - ] - }, + "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": [ 4, 7 ] - } - ] + "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] } }, { @@ -82,27 +69,14 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE", "CLIMBABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { - "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": 12 - } - ] - }, + "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": [ 4, 7 ] - } - ] + "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] } }, { @@ -116,27 +90,14 @@ "move_cost": 3, "trap": "tr_downspout_funnel", "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "UNSTABLE", "CLIMBABLE" ], - "deconstruct": { - "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": 12 - } - ] - }, + "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_dirt", - "items": [ - { - "item": "scrap_aluminum", - "count": [ 4, 7 ] - } - ] + "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] } }, { @@ -149,14 +110,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -168,14 +122,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -187,14 +134,7 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -206,14 +146,7 @@ "color": "yellow", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -225,14 +158,7 @@ "color": "light_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -244,14 +170,7 @@ "color": "white", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "FLAMMABLE" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -270,12 +189,7 @@ "sound": "glass breaking!", "sound_fail": "whack!", "ter_set": "t_skylight_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] } }, { @@ -288,14 +202,7 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT" ], - "bash": { - "str_min": 100, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 100, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -360,14 +267,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 100, - "str_max": 400, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 100, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -379,14 +279,7 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { - "str_min": 50, - "str_max": 400, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -398,14 +291,7 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "FLAT" ], - "bash": { - "str_min": 50, - "str_max": 400, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -417,14 +303,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 200, - "str_max": 500, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -436,14 +315,7 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 200, - "str_max": 500, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -455,14 +327,7 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -473,14 +338,7 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 48, - "str_max": 80, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 48, "str_max": 80, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -491,14 +349,7 @@ "color": "blue", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD" ], - "bash": { - "str_min": 1, - "str_max": 8, - "sound": "rrrrip!", - "sound_fail": "slap!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 1, "str_max": 8, "sound": "rrrrip!", "sound_fail": "slap!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", diff --git a/data/json/furniture_and_terrain/terrain-windows.json b/data/json/furniture_and_terrain/terrain-windows.json index 0c9b9643acb9e..48506df64466d 100644 --- a/data/json/furniture_and_terrain/terrain-windows.json +++ b/data/json/furniture_and_terrain/terrain-windows.json @@ -13,15 +13,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "FLAMMABLE", "NOITEM", "BARRICADABLE_WINDOW", "BLOCK_WIND", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -30,19 +22,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 4 ], - "reduce_damage_laser": [ 0, 4 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -58,15 +40,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -75,19 +49,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -119,26 +83,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -150,22 +99,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] }, "prying": { @@ -179,12 +116,7 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { - "reduce_damage": [ 1, 4 ], - "reduce_damage_laser": [ 0, 4 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -211,15 +143,7 @@ ], "examine_action": "locked_object", "open": "t_window_no_curtains_open", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -228,12 +152,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] }, "prying": { "result": "t_window_no_curtains_open", @@ -246,12 +165,7 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { - "reduce_damage": [ 1, 4 ], - "reduce_damage_laser": [ 0, 4 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -279,15 +193,7 @@ "SUPPORTS_ROOF" ], "close": "t_window_no_curtains", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -296,12 +202,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] } }, { @@ -319,15 +220,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -336,19 +229,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -369,26 +252,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "glass_sheet", "count": 1 } ] }, "examine_action": "curtains", @@ -401,30 +269,13 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -457,26 +308,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -488,22 +324,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] } }, @@ -527,26 +351,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -558,22 +367,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] }, "prying": { @@ -587,12 +384,7 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -615,19 +407,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 4 ], - "reduce_damage_laser": [ 0, 4 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -661,19 +443,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -707,26 +479,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -738,22 +495,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] }, "prying": { @@ -767,12 +512,7 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { - "reduce_damage": [ 1, 4 ], - "reduce_damage_laser": [ 0, 4 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -801,15 +541,7 @@ ], "examine_action": "locked_object", "open": "t_window_no_curtains_open_alarm", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -818,12 +550,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] }, "prying": { "result": "t_window_no_curtains_open_alarm", @@ -836,12 +563,7 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { - "reduce_damage": [ 1, 4 ], - "reduce_damage_laser": [ 0, 4 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 4 ], "reduce_damage_laser": [ 0, 4 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -871,15 +593,7 @@ "SUPPORTS_ROOF" ], "close": "t_window_no_curtains_alarm", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -888,12 +602,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] } }, { @@ -929,26 +638,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -960,22 +654,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] } }, @@ -1009,26 +691,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 2 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -1040,22 +707,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 21, 29 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] }, "prying": { @@ -1069,12 +724,7 @@ "failure": "You pry, but can't pry open the window." } }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 1, 4 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 1, 4 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -1108,18 +758,9 @@ "sound_fail": "whump!", "ter_set": "t_null", "items": [ - { - "item": "2x4", - "count": [ 0, 5 ] - }, - { - "item": "nail", - "charges": [ 0, 5 ] - }, - { - "item": "splinter", - "count": [ 5, 10 ] - } + { "item": "2x4", "count": [ 0, 5 ] }, + { "item": "nail", "charges": [ 0, 5 ] }, + { "item": "splinter", "count": [ 5, 10 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] @@ -1155,30 +796,12 @@ "sound_fail": "whump!", "ter_set": "t_null", "items": [ - { - "item": "2x4", - "count": [ 0, 5 ] - }, - { - "item": "nail", - "charges": [ 0, 5 ] - }, - { - "item": "splinter", - "count": [ 5, 10 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "2x4", "count": [ 0, 5 ] }, + { "item": "nail", "charges": [ 0, 5 ] }, + { "item": "splinter", "count": [ 5, 10 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] @@ -1208,30 +831,12 @@ "sound_fail": "whump!", "ter_set": "t_null", "items": [ - { - "item": "2x4", - "count": [ 0, 5 ] - }, - { - "item": "nail", - "charges": [ 0, 5 ] - }, - { - "item": "splinter", - "count": [ 5, 10 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "2x4", "count": [ 0, 5 ] }, + { "item": "nail", "charges": [ 0, 5 ] }, + { "item": "splinter", "count": [ 5, 10 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] @@ -1255,12 +860,7 @@ "sound_vol": 12, "sound_fail_vol": 8, "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_shard", - "count": [ 6, 10 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 6, 10 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -1283,20 +883,7 @@ "flags": [ "FLAMMABLE", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "WINDOW", "SUPPORTS_ROOF" ], "deconstruct": { "ter_set": "t_window_empty", - "items": [ - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 6, 8 ] - }, - { - "item": "glass_sheet", - "count": 1 - } - ] + "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 6, 8 ] }, { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 3, @@ -1306,16 +893,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "splinter", - "count": [ 10, 20 ] - }, - { - "item": "glass_shard", - "count": [ 25, 42 ] - } - ], + "items": [ { "item": "splinter", "count": [ 10, 20 ] }, { "item": "glass_shard", "count": [ 25, 42 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, @@ -1323,23 +901,10 @@ "result": "t_window", "duration": "2 minutes", "message": "You pry the boards from the window.", - "byproducts": [ - { - "item": "nail", - "count": 8 - }, - { - "item": "2x4", - "count": 4 - } - ], + "byproducts": [ { "item": "nail", "count": 8 }, { "item": "2x4", "count": 4 } ], "prying_data": { "prying_nails": true } }, - "shoot": { - "reduce_damage": [ 10, 25 ], - "reduce_damage_laser": [ 5, 20 ], - "destroy_damage": [ 10, 40 ] - } + "shoot": { "reduce_damage": [ 10, 25 ], "reduce_damage_laser": [ 5, 20 ], "destroy_damage": [ 10, 40 ] } }, { "type": "terrain", @@ -1358,16 +923,7 @@ "flags": [ "FLAMMABLE", "NOITEM", "BLOCK_WIND", "PERMEABLE", "WINDOW", "SUPPORTS_ROOF" ], "deconstruct": { "ter_set": "t_window_empty", - "items": [ - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 6, 8 ] - } - ] + "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 6, 8 ] } ] }, "bash": { "str_min": 3, @@ -1377,12 +933,7 @@ "sound_vol": 14, "sound_fail_vol": 10, "ter_set": "t_window_empty", - "items": [ - { - "item": "splinter", - "count": [ 10, 20 ] - } - ], + "items": [ { "item": "splinter", "count": [ 10, 20 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, @@ -1390,23 +941,10 @@ "result": "t_window_empty", "duration": "2 minutes", "message": "You pry the boards from the window frame.", - "byproducts": [ - { - "item": "nail", - "count": 8 - }, - { - "item": "2x4", - "count": 4 - } - ], + "byproducts": [ { "item": "nail", "count": 8 }, { "item": "2x4", "count": 4 } ], "prying_data": { "prying_nails": true } }, - "shoot": { - "reduce_damage": [ 9, 21 ], - "reduce_damage_laser": [ 5, 16 ], - "destroy_damage": [ 10, 40 ] - } + "shoot": { "reduce_damage": [ 9, 21 ], "reduce_damage_laser": [ 5, 16 ], "destroy_damage": [ 10, 40 ] } }, { "type": "terrain", @@ -1420,26 +958,11 @@ "deconstruct": { "ter_set": "t_window", "items": [ - { - "item": "2x4", - "count": 7 - }, - { - "item": "nail", - "charges": [ 10, 16 ] - }, - { - "item": "wood_panel", - "count": 4 - }, - { - "item": "hinge", - "count": 4 - }, - { - "item": "nuts_bolts", - "count": 8 - } + { "item": "2x4", "count": 7 }, + { "item": "nail", "charges": [ 10, 16 ] }, + { "item": "wood_panel", "count": 4 }, + { "item": "hinge", "count": 4 }, + { "item": "nuts_bolts", "count": 8 } ] }, "bash": { @@ -1451,31 +974,15 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "splinter", - "count": [ 10, 25 ] - }, - { - "item": "glass_shard", - "count": [ 25, 42 ] - }, - { - "item": "hinge", - "count": [ 0, 3 ] - }, - { - "item": "nuts_bolts", - "count": [ 1, 4 ] - } + { "item": "splinter", "count": [ 10, 25 ] }, + { "item": "glass_shard", "count": [ 25, 42 ] }, + { "item": "hinge", "count": [ 0, 3 ] }, + { "item": "nuts_bolts", "count": [ 1, 4 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "shoot": { - "reduce_damage": [ 10, 25 ], - "reduce_damage_laser": [ 5, 20 ], - "destroy_damage": [ 10, 40 ] - } + "shoot": { "reduce_damage": [ 10, 25 ], "reduce_damage_laser": [ 5, 20 ], "destroy_damage": [ 10, 40 ] } }, { "type": "terrain", @@ -1498,31 +1005,15 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "splinter", - "count": [ 10, 25 ] - }, - { - "item": "glass_shard", - "count": [ 25, 42 ] - }, - { - "item": "hinge", - "count": [ 0, 3 ] - }, - { - "item": "nuts_bolts", - "count": [ 1, 4 ] - } + { "item": "splinter", "count": [ 10, 25 ] }, + { "item": "glass_shard", "count": [ 25, 42 ] }, + { "item": "hinge", "count": [ 0, 3 ] }, + { "item": "nuts_bolts", "count": [ 1, 4 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "prying": { - "result": "t_window_boarded_shutters_open_fully", - "duration": "30 seconds", - "message": "You pry open the window." - } + "prying": { "result": "t_window_boarded_shutters_open_fully", "duration": "30 seconds", "message": "You pry open the window." } }, { "type": "terrain", @@ -1552,39 +1043,18 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window", - "items": [ - { - "item": "2x4", - "count": [ 6, 8 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } - ] - }, + "deconstruct": { "ter_set": "t_window", "items": [ { "item": "2x4", "count": [ 6, 8 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { "str_min": 12, "str_max": 30, "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_boarded", - "items": [ - { - "item": "splinter", - "count": [ 0, 8 ] - } - ], + "items": [ { "item": "splinter", "count": [ 0, 8 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "shoot": { - "reduce_damage": [ 15, 30 ], - "reduce_damage_laser": [ 10, 30 ], - "destroy_damage": [ 20, 50 ] - } + "shoot": { "reduce_damage": [ 15, 30 ], "reduce_damage_laser": [ 10, 30 ], "destroy_damage": [ 20, 50 ] } }, { "type": "terrain", @@ -1603,16 +1073,7 @@ "flags": [ "FLAMMABLE", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "PERMEABLE", "WINDOW", "SUPPORTS_ROOF" ], "deconstruct": { "ter_set": "t_window_empty", - "items": [ - { - "item": "2x4", - "count": [ 6, 8 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } - ] + "items": [ { "item": "2x4", "count": [ 6, 8 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { "str_min": 12, @@ -1620,20 +1081,11 @@ "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_boarded_noglass", - "items": [ - { - "item": "splinter", - "count": [ 0, 8 ] - } - ], + "items": [ { "item": "splinter", "count": [ 0, 8 ] } ], "hit_field": [ "fd_dust", 2 ], "destroyed_field": [ "fd_splinters", 1 ] }, - "shoot": { - "reduce_damage": [ 14, 26 ], - "reduce_damage_laser": [ 10, 26 ], - "destroy_damage": [ 20, 50 ] - } + "shoot": { "reduce_damage": [ 14, 26 ], "reduce_damage_laser": [ 10, 26 ], "destroy_damage": [ 20, 50 ] } }, { "type": "terrain", @@ -1650,12 +1102,7 @@ "result": "t_window_reinforced", "duration": "5 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 4 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 4 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -1664,32 +1111,14 @@ "oxytorch": { "result": "t_window_empty", "duration": "4 seconds", - "byproducts": [ - { - "item": "steel_plate", - "count": [ 0, 1 ] - }, - { - "item": "sheet_metal", - "count": [ 1, 3 ] - } - ] + "byproducts": [ { "item": "steel_plate", "count": [ 0, 1 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] }, "deconstruct": { "ter_set": "t_window_reinforced", "items": [ - { - "item": "steel_plate", - "count": 1 - }, - { - "item": "spike", - "count": [ 3, 4 ] - }, - { - "item": "sheet_metal", - "count": [ 3, 4 ] - } + { "item": "steel_plate", "count": 1 }, + { "item": "spike", "count": [ 3, 4 ] }, + { "item": "sheet_metal", "count": [ 3, 4 ] } ] }, "bash": { @@ -1698,22 +1127,9 @@ "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_reinforced", - "items": [ - { - "item": "spike", - "count": [ 0, 2 ] - }, - { - "item": "sheet_metal", - "count": [ 1, 3 ] - } - ] + "items": [ { "item": "spike", "count": [ 0, 2 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] }, - "shoot": { - "reduce_damage": [ 20, 35 ], - "reduce_damage_laser": [ 15, 40 ], - "destroy_damage": [ 30, 60 ] - } + "shoot": { "reduce_damage": [ 20, 35 ], "reduce_damage_laser": [ 15, 40 ], "destroy_damage": [ 30, 60 ] } }, { "type": "terrain", @@ -1733,43 +1149,20 @@ "oxytorch": { "result": "t_window_empty", "duration": "4 seconds", - "byproducts": [ - { - "item": "steel_plate", - "count": [ 0, 1 ] - }, - { - "item": "sheet_metal", - "count": [ 1, 3 ] - } - ] + "byproducts": [ { "item": "steel_plate", "count": [ 0, 1 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] }, "hacksaw": { "result": "t_window_reinforced_noglass", "duration": "5 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 4 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 4 ] } ] }, "deconstruct": { "ter_set": "t_window_reinforced_noglass", "items": [ - { - "item": "steel_plate", - "count": 1 - }, - { - "item": "spike", - "count": [ 3, 4 ] - }, - { - "item": "sheet_metal", - "count": [ 3, 4 ] - } + { "item": "steel_plate", "count": 1 }, + { "item": "spike", "count": [ 3, 4 ] }, + { "item": "sheet_metal", "count": [ 3, 4 ] } ] }, "bash": { @@ -1778,22 +1171,9 @@ "sound": "crash!", "sound_fail": "wham!", "ter_set": "t_window_reinforced_noglass", - "items": [ - { - "item": "spike", - "count": [ 0, 2 ] - }, - { - "item": "sheet_metal", - "count": [ 1, 3 ] - } - ] + "items": [ { "item": "spike", "count": [ 0, 2 ] }, { "item": "sheet_metal", "count": [ 1, 3 ] } ] }, - "shoot": { - "reduce_damage": [ 19, 31 ], - "reduce_damage_laser": [ 15, 36 ], - "destroy_damage": [ 30, 60 ] - } + "shoot": { "reduce_damage": [ 19, 31 ], "reduce_damage_laser": [ 15, 36 ], "destroy_damage": [ 30, 60 ] } }, { "type": "terrain", @@ -1809,27 +1189,13 @@ "result": "t_window", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 8 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "NOITEM", "THIN_OBSTACLE", "WINDOW", "SUPPORTS_ROOF" ], - "oxytorch": { - "result": "t_window", - "duration": "9 seconds", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 2 ] - } - ] - }, + "oxytorch": { "result": "t_window", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -1838,12 +1204,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", - "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] } }, { @@ -1861,27 +1222,13 @@ "result": "t_window_empty", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 8 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "NOITEM", "WINDOW", "PERMEABLE", "SUPPORTS_ROOF", "THIN_OBSTACLE" ], - "oxytorch": { - "result": "t_window_empty", - "duration": "9 seconds", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 2 ] - } - ] - }, + "oxytorch": { "result": "t_window_empty", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, "bash": { "str_min": 60, "str_max": 250, @@ -1889,18 +1236,9 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] } ] } }, @@ -1918,27 +1256,13 @@ "result": "t_window_alarm", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 8 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "TRANSPARENT", "NOITEM", "REDUCE_SCENT", "BLOCK_WIND", "ALARMED", "WINDOW", "SUPPORTS_ROOF" ], - "oxytorch": { - "result": "t_window_alarm", - "duration": "9 seconds", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 2 ] - } - ] - }, + "oxytorch": { "result": "t_window_alarm", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, "bash": { "str_min": 3, "str_max": 6, @@ -1947,12 +1271,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", - "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 34, 50 ] } ] } }, { @@ -1969,24 +1288,10 @@ "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 8 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] }, "roof": "t_flat_roof", - "oxytorch": { - "result": "t_window_domestic", - "duration": "9 seconds", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 2 ] - } - ] - }, + "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", @@ -2011,22 +1316,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 34, 50 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] } }, @@ -2043,24 +1336,10 @@ "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 8 ] - } - ] + "byproducts": [ { "item": "rebar", "count": [ 1, 8 ] } ] }, "roof": "t_flat_roof", - "oxytorch": { - "result": "t_window_domestic", - "duration": "9 seconds", - "byproducts": [ - { - "item": "rebar", - "count": [ 1, 2 ] - } - ] - }, + "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", "byproducts": [ { "item": "rebar", "count": [ 1, 2 ] } ] }, "connect_groups": "WALL", "connects_to": "WALL", "rotates_to": "INDOORFLOOR", @@ -2086,22 +1365,10 @@ "sound_fail_vol": 10, "ter_set": "t_window_bars_noglass", "items": [ - { - "item": "glass_shard", - "count": [ 34, 50 ] - }, - { - "item": "sheet", - "count": 2 - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "string_36", - "count": 1 - } + { "item": "glass_shard", "count": [ 34, 50 ] }, + { "item": "sheet", "count": 2 }, + { "item": "stick", "count": 1 }, + { "item": "string_36", "count": 1 } ] } }, @@ -2135,16 +1402,7 @@ "sound": "a crash and glass breaking!", "sound_fail": "whack!", "ter_set": "t_rock_floor", - "items": [ - { - "item": "glass_shard", - "count": [ 42, 67 ] - }, - { - "item": "rock", - "count": [ 8, 18 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 42, 67 ] }, { "item": "rock", "count": [ 8, 18 ] } ] } }, { @@ -2177,16 +1435,7 @@ "sound": "a crash and glass breaking!", "sound_fail": "whack!", "ter_set": "t_rock_floor", - "items": [ - { - "item": "glass_shard", - "count": [ 42, 67 ] - }, - { - "item": "rock", - "count": [ 8, 18 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 42, 67 ] }, { "item": "rock", "count": [ 8, 18 ] } ] } }, { @@ -2219,16 +1468,7 @@ "sound": "a crash and glass breaking!", "sound_fail": "whack!", "ter_set": "t_rock_floor", - "items": [ - { - "item": "glass_shard", - "count": [ 42, 67 ] - }, - { - "item": "rock", - "count": [ 8, 18 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 42, 67 ] }, { "item": "rock", "count": [ 8, 18 ] } ] } }, { @@ -2245,31 +1485,13 @@ "oxytorch": { "result": "t_window", "duration": "9 seconds", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "hacksaw": { "result": "t_window", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -2282,22 +1504,10 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - }, - { - "item": "glass_shard", - "count": [ 75, 125 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] }, + { "item": "glass_shard", "count": [ 75, 125 ] } ] } }, @@ -2314,31 +1524,13 @@ "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "hacksaw": { "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "connect_groups": "WALL", "connects_to": "WALL", @@ -2354,22 +1546,10 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - }, - { - "item": "glass_shard", - "count": [ 75, 125 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] }, + { "item": "glass_shard", "count": [ 75, 125 ] } ] } }, @@ -2399,31 +1579,13 @@ "oxytorch": { "result": "t_window_domestic", "duration": "9 seconds", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "hacksaw": { "result": "t_window_domestic", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "curtain_transform": "t_metal_grate_window", "examine_action": "curtains", @@ -2435,22 +1597,10 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - }, - { - "item": "glass_shard", - "count": [ 75, 125 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] }, + { "item": "glass_shard", "count": [ 75, 125 ] } ] } }, @@ -2472,31 +1622,13 @@ "oxytorch": { "result": "t_window_empty", "duration": "9 seconds", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "hacksaw": { "result": "t_window_empty", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "bash": { "str_min": 50, @@ -2505,18 +1637,9 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] } ] } }, @@ -2538,32 +1661,14 @@ "result": "t_window_empty_curtains_open", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "curtain_transform": "t_metal_grate_window_noglass", "examine_action": "curtains", "oxytorch": { "result": "t_window_empty_curtains_open", "duration": "9 seconds", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "open": "t_metal_grate_window_with_curtain_open_noglass", "bash": { @@ -2573,18 +1678,9 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] } ] } }, @@ -2605,31 +1701,13 @@ "oxytorch": { "result": "t_window_empty_curtains_open", "duration": "9 seconds", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "hacksaw": { "result": "t_window_empty_curtains_open", "duration": "10 minutes", "message": "You finish cutting the metal.", - "byproducts": [ - { - "item": "pipe", - "count": [ 1, 12 ] - }, - { - "item": "sheet_metal", - "count": 4 - } - ] + "byproducts": [ { "item": "pipe", "count": [ 1, 12 ] }, { "item": "sheet_metal", "count": 4 } ] }, "curtain_transform": "t_metal_grate_window_noglass", "examine_action": "curtains", @@ -2637,30 +1715,12 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "pipe", - "count": [ 10, 12 ] - }, - { - "item": "sheet_metal_small", - "count": [ 30, 40 ] - }, - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "pipe", "count": [ 10, 12 ] }, + { "item": "sheet_metal_small", "count": [ 30, 40 ] }, + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -2670,18 +1730,9 @@ "sound_fail": "clang!", "ter_set": "t_window_empty", "items": [ - { - "item": "lc_steel_lump", - "prob": 25 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - } + { "item": "lc_steel_lump", "prob": 25 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] } ] } }, @@ -2711,15 +1762,7 @@ ], "examine_action": "locked_object", "open": "t_single_pane_glass_open", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 2, "str_max": 4, @@ -2729,18 +1772,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -2772,15 +1806,7 @@ "SUPPORTS_ROOF" ], "close": "t_single_pane_glass", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 2, "str_max": 4, @@ -2790,18 +1816,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -2826,26 +1843,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -2856,12 +1858,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -2895,26 +1892,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -2925,12 +1907,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -2966,26 +1943,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -2996,12 +1958,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3020,15 +1977,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -3037,19 +1986,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -3078,15 +2017,7 @@ ], "examine_action": "locked_object", "open": "t_reinforced_single_pane_glass_open", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 1 } ] }, "bash": { "str_min": 12, "str_max": 30, @@ -3096,18 +2027,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -3139,15 +2061,7 @@ "SUPPORTS_ROOF" ], "close": "t_reinforced_single_pane_glass", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 1 } ] }, "bash": { "str_min": 12, "str_max": 30, @@ -3157,18 +2071,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -3202,26 +2107,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -3232,12 +2122,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3272,26 +2157,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -3302,12 +2172,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3343,26 +2208,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -3373,12 +2223,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3397,15 +2242,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 1 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -3414,19 +2251,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -3458,18 +2285,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - }, - { - "item": "glass_sheet", - "count": 2 - } + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] }, + { "item": "glass_sheet", "count": 2 } ] }, "bash": { @@ -3481,18 +2299,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -3527,18 +2336,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - }, - { - "item": "glass_sheet", - "count": 2 - } + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] }, + { "item": "glass_sheet", "count": 2 } ] }, "bash": { @@ -3550,18 +2350,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -3595,34 +2386,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -3633,12 +2403,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3673,34 +2438,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -3711,12 +2455,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3752,34 +2491,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -3790,12 +2508,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -3814,15 +2527,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 2 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 2 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -3831,19 +2536,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -3874,16 +2569,7 @@ "open": "t_reinforced_double_pane_glass_open", "deconstruct": { "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - } - ] + "items": [ { "item": "reinforced_glass_sheet", "count": 1 }, { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 12, @@ -3894,18 +2580,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -3939,16 +2616,7 @@ "close": "t_reinforced_double_pane_glass", "deconstruct": { "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - } - ] + "items": [ { "item": "reinforced_glass_sheet", "count": 1 }, { "item": "glass_sheet", "count": 1 } ] }, "bash": { "str_min": 12, @@ -3959,18 +2627,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -4004,30 +2663,12 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -4038,12 +2679,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -4080,30 +2716,12 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -4114,12 +2732,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -4155,30 +2768,12 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -4189,12 +2784,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -4213,15 +2803,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 2 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 2 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -4230,19 +2812,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -4271,15 +2843,7 @@ ], "examine_action": "locked_object", "open": "t_triple_pane_glass_open", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 3 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, "bash": { "str_min": 4, "str_max": 8, @@ -4289,18 +2853,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 80, 120 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, @@ -4332,15 +2887,7 @@ "SUPPORTS_ROOF" ], "close": "t_triple_pane_glass", - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 3 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, "bash": { "str_min": 4, "str_max": 8, @@ -4350,18 +2897,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 80, 120 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, @@ -4395,26 +2933,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -4425,12 +2948,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 80, 120 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, { @@ -4465,26 +2983,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -4495,12 +2998,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -4536,26 +3034,11 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 } ] }, "bash": { @@ -4566,12 +3049,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 80, 120 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, { @@ -4590,15 +3068,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 3 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -4607,19 +3077,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -4651,22 +3111,10 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -4678,18 +3126,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 80, 120 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, @@ -4724,22 +3163,10 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -4751,18 +3178,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 80, 120 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, @@ -4796,38 +3214,14 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -4838,12 +3232,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 80, 120 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, { @@ -4878,38 +3267,14 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -4920,12 +3285,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -4961,34 +3321,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -4999,12 +3338,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 80, 120 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] } }, { @@ -5023,15 +3357,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 3 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 3 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -5040,19 +3366,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 80, 120 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -5084,18 +3400,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "glass_sheet", - "count": 4 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "glass_sheet", "count": 4 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5107,18 +3414,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 100, 200 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, @@ -5153,18 +3451,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "glass_sheet", - "count": 4 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "glass_sheet", "count": 4 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5176,18 +3465,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 100, 200 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, @@ -5221,34 +3501,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 4 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 4 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5259,12 +3518,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 100, 200 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, { @@ -5299,34 +3553,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5337,12 +3570,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -5378,34 +3606,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 4 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 4 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5416,12 +3623,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 100, 200 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, { @@ -5440,15 +3642,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "glass_sheet", - "count": 3 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "glass_sheet", "count": 3 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -5457,19 +3651,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -5501,22 +3685,10 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5528,18 +3700,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 100, 200 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, @@ -5574,22 +3737,10 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5601,18 +3752,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 100, 200 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, @@ -5646,38 +3788,14 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "reinforced_glass_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "reinforced_glass_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5688,12 +3806,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 100, 200 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, { @@ -5728,38 +3841,14 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 2 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 2 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5770,12 +3859,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -5811,38 +3895,14 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 4 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "glass_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "glass_sheet", "count": 4 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "glass_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5853,12 +3913,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 100, 200 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 100, 200 ] } ] } }, { @@ -5877,15 +3932,7 @@ "connects_to": "WALL", "rotates_to": "INDOORFLOOR", "flags": [ "FLAMMABLE", "NOITEM", "WALL", "BLOCK_WIND", "REDUCE_SCENT", "WINDOW", "SUPPORTS_ROOF" ], - "deconstruct": { - "ter_set": "t_window_empty", - "items": [ - { - "item": "reinforced_glass_sheet", - "count": 3 - } - ] - }, + "deconstruct": { "ter_set": "t_window_empty", "items": [ { "item": "reinforced_glass_sheet", "count": 3 } ] }, "bash": { "str_min": 6, "str_max": 12, @@ -5894,19 +3941,9 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 80, 120 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 80, 120 ] } ] }, - "shoot": { - "reduce_damage": [ 1, 6 ], - "reduce_damage_laser": [ 2, 10 ], - "destroy_damage": [ 2, 8 ], - "no_laser_destroy": true - } + "shoot": { "reduce_damage": [ 1, 6 ], "reduce_damage_laser": [ 2, 10 ], "destroy_damage": [ 2, 8 ], "no_laser_destroy": true } }, { "type": "terrain", @@ -5937,18 +3974,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "plastic_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "plastic_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -5959,20 +3987,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": 1 - } - ] + "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] } }, { @@ -6006,18 +4021,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "plastic_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "plastic_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6028,20 +4034,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": 1 - } - ] + "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] } }, { @@ -6065,34 +4058,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "plastic_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "plastic_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6103,20 +4075,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": 1 - } - ] + "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] } }, { @@ -6150,34 +4109,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "plastic_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "plastic_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6188,20 +4126,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": 1 - } - ] + "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] } }, { @@ -6237,34 +4162,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "plastic_sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "plastic_sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6275,20 +4179,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": 1 - } - ] + "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] } }, { @@ -6321,18 +4212,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "rigid_plastic_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "rigid_plastic_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6344,18 +4226,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": [ 1, 2 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "plastic_sheet", "count": [ 1, 2 ] } ] } }, @@ -6390,18 +4263,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "rigid_plastic_sheet", - "count": 3 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "rigid_plastic_sheet", "count": 3 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6413,18 +4277,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": [ 1, 2 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "plastic_sheet", "count": [ 1, 2 ] } ] } }, @@ -6458,34 +4313,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "rigid_plastic_sheet", - "count": 3 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "rigid_plastic_sheet", "count": 3 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6497,18 +4331,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": [ 1, 2 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "plastic_sheet", "count": [ 1, 2 ] } ] } }, @@ -6544,34 +4369,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "rigid_plastic_sheet", - "count": 3 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "rigid_plastic_sheet", "count": 3 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6583,18 +4387,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_frame", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": [ 1, 2 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "plastic_sheet", "count": [ 1, 2 ] } ] } }, @@ -6631,34 +4426,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "rigid_plastic_sheet", - "count": 3 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "rigid_plastic_sheet", "count": 3 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6669,20 +4443,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "plastic_sheet", - "count": 1 - } - ] + "items": [ { "item": "stick", "count": 1 }, { "item": "nail", "charges": [ 3, 4 ] }, { "item": "plastic_sheet", "count": 1 } ] } }, { @@ -6698,16 +4459,7 @@ "examine_action": "ledge", "deconstruct": { "ter_set": "t_open_air", - "items": [ - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } - ] + "items": [ { "item": "2x4", "count": [ 3, 4 ] }, { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { "str_min": 1, @@ -6717,12 +4469,7 @@ "sound_vol": 12, "sound_fail_vol": 8, "ter_set": "t_open_air", - "items": [ - { - "item": "2x4", - "count": [ 2, 4 ] - } - ] + "items": [ { "item": "2x4", "count": [ 2, 4 ] } ] }, "flags": [ "TRANSPARENT", "NO_FLOOR", "FLAMMABLE" ] }, @@ -6756,18 +4503,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "tempered_glass_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "tempered_glass_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6779,18 +4517,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -6825,18 +4554,9 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "tempered_glass_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "tempered_glass_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6848,18 +4568,9 @@ "sound_fail_vol": 10, "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "glass_shard", - "count": [ 68, 100 ] - } + { "item": "stick", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, @@ -6893,34 +4604,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "tempered_glass_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "tempered_glass_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -6931,12 +4621,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -6971,34 +4656,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "tempered_glass_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "tempered_glass_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -7009,12 +4673,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -7050,34 +4709,13 @@ "deconstruct": { "ter_set": "t_window_empty", "items": [ - { - "item": "stick", - "count": 1 - }, - { - "item": "sheet", - "count": 1 - }, - { - "item": "nail", - "charges": [ 3, 4 ] - }, - { - "item": "string_36", - "count": 1 - }, - { - "item": "tempered_glass_sheet", - "count": 1 - }, - { - "item": "2x4", - "count": [ 3, 4 ] - }, - { - "item": "nail", - "charges": [ 12, 16 ] - } + { "item": "stick", "count": 1 }, + { "item": "sheet", "count": 1 }, + { "item": "nail", "charges": [ 3, 4 ] }, + { "item": "string_36", "count": 1 }, + { "item": "tempered_glass_sheet", "count": 1 }, + { "item": "2x4", "count": [ 3, 4 ] }, + { "item": "nail", "charges": [ 12, 16 ] } ] }, "bash": { @@ -7088,12 +4726,7 @@ "sound_vol": 16, "sound_fail_vol": 10, "ter_set": "t_window_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 68, 100 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 68, 100 ] } ] } }, { @@ -7117,22 +4750,10 @@ "sound_fail": "clang!", "ter_set": "t_metal_floor", "items": [ - { - "item": "lc_steel_lump", - "prob": 55 - }, - { - "item": "lc_steel_chunk", - "count": [ 1, 4 ] - }, - { - "item": "scrap", - "count": [ 1, 5 ] - }, - { - "item": "glass_shard", - "count": [ 20, 50 ] - } + { "item": "lc_steel_lump", "prob": 55 }, + { "item": "lc_steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] }, + { "item": "glass_shard", "count": [ 20, 50 ] } ] } } From 54e3c39e65694ed314d9a3bf418c27fd8aef2060 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Mon, 10 Nov 2025 16:20:05 -0800 Subject: [PATCH 06/18] have character can_fly call flies change move mode modifier to a multiplier delete commented code --- .gitignore | 2 ++ data/json/move_modes.json | 8 ++++---- src/character.cpp | 17 ++--------------- src/character.h | 2 +- src/creature.cpp | 26 ++------------------------ src/creature.h | 6 +++--- src/move_mode.cpp | 5 ++--- src/move_mode.h | 3 ++- 8 files changed, 18 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore index c5d8c24fa881e..e938aea675835 100644 --- a/.gitignore +++ b/.gitignore @@ -254,3 +254,5 @@ Gemfile.lock # VERSION.txt generated by our CMakeLists.txt VERSION.txt +/tools/AStyle_3.1_windows/AStyle +/.gitignore diff --git a/data/json/move_modes.json b/data/json/move_modes.json index dd3ba1317f7e6..38b8af96887f3 100644 --- a/data/json/move_modes.json +++ b/data/json/move_modes.json @@ -13,7 +13,7 @@ "change_good_mech": "You set your mech's leg power to a loping fast walk.", "move_type": "walking", "move_speed_multiplier": 1.0, - "bash_weight_modifier": 2 + "bash_weight_modifier": 1 }, { "type": "movement_mode", @@ -36,7 +36,7 @@ "move_speed_multiplier": 2.0, "stamina_multiplier": 7.0, "swim_speed_mod": -80, - "bash_weight_modifier": 1 + "bash_weight_modifier": 2 }, { "type": "movement_mode", @@ -54,7 +54,7 @@ "sound_multiplier": 0.5, "move_speed_multiplier": 0.5, "swim_speed_mod": 50, - "bash_weight_modifier": 2 + "bash_weight_modifier": 1 }, { "type": "movement_mode", @@ -72,6 +72,6 @@ "sound_multiplier": 0.2, "move_speed_multiplier": 0.2, "swim_speed_mod": 50, - "bash_weight_modifier": 8 + "bash_weight_modifier": 0.125 } ] diff --git a/src/character.cpp b/src/character.cpp index f0ccac4df4e2e..516a3b58cf48d 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -1978,9 +1978,6 @@ move_mode_id Character::current_movement_mode() const int Character::fragile_terrain_weight_modifier() const { - if( !move_mode.is_valid() ) { - return 2; // defaut if move_mode is invalid - } return move_mode->get_bash_weight_modifier(); } @@ -7697,20 +7694,10 @@ int Character::impact( const int force, const tripoint_bub_ms &p ) bool Character::can_fly() { - if( !move_effects( false ) || has_effect( effect_stunned ) ) { + if( !move_effects( false ) ) { return false; } - // GLIDE is for artifacts or things like jetpacks that don't care if you're tired or hurt. - if( has_flag( json_flag_GLIDE ) ) { - return true; - } - // TODO: Remove grandfathering traits in after Limb Stuff - if( has_flag( json_flag_WINGS_2 ) || - has_flag( json_flag_WING_GLIDE ) || count_flag( json_flag_WING_ARMS ) >= 2 ) { - - if( 100 * weight_carried() / weight_capacity() > 50 || !has_two_arms_lifting() ) { - return false; - } + if( flies() ) { return true; } return false; diff --git a/src/character.h b/src/character.h index 0217eb6c577ce..ac059d472e733 100644 --- a/src/character.h +++ b/src/character.h @@ -1062,7 +1062,7 @@ class Character : public Creature, public visitable bool movement_mode_is( const move_mode_id &mode ) const; move_mode_id current_movement_mode() const; - int fragile_terrain_weight_modifier() const override; + float fragile_terrain_weight_modifier() const override; bool is_running() const; bool is_walking() const; diff --git a/src/creature.cpp b/src/creature.cpp index 6439d263f1937..1cb3d7309cdb8 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -226,30 +226,8 @@ void Creature::maybe_break_fragile_underfoot( Creature &cr, const tripoint_bub_m if( !cr.is_hallucination() && !cr.flies() && cr.get_weight() >= 5_kilogram ) { std::string who_name = cr.disp_name(); - /* - int bash_strength = cr.get_weight() / 5_kilogram; - //check if monster - if (const monster* mon = dynamic_cast(&cr)) { - who_name = mon->disp_name(); - bash_strength = bash_strength / 2; - - } //check for character - else if (const Character* ch = dynamic_cast(&cr)) { - who_name = ch->disp_name(); - //if char is prone, less likely to break glass - if (ch->is_prone()) { - bash_strength = bash_strength / 8; - } - else { - bash_strength = bash_strength / 2; - } - } //default case - else { - who_name = _("something"); - bash_strength = bash_strength / 2; - } */ - - int bash_strength = ( cr.get_weight() / 5_kilogram ) / cr.fragile_terrain_weight_modifier(); + const int weight_to_bash = std::max( 1, static_cast( cr.get_weight() / 10_kilogram ) ); + int bash_strength = weight_to_bash * cr.fragile_terrain_weight_modifier(); //store terrain name for message const std::string old_name = here.tername( p ); //damage fragile terrain diff --git a/src/creature.h b/src/creature.h index 57088688c7c09..3a09718370bb8 100644 --- a/src/creature.h +++ b/src/creature.h @@ -609,9 +609,9 @@ class Creature : public viewer virtual float fall_damage_mod() const = 0; /** Deals falling/collision damage with terrain/creature at pos */ virtual int impact( int force, const tripoint_bub_ms &pos ) = 0; - // After dividing mass by 5kg, how much to further divide mass for use in breaking skylights/ice. 2 is default. - virtual int fragile_terrain_weight_modifier() const { - return 2; + // Used by maybe_break_fragile_underfoot; + virtual float fragile_terrain_weight_modifier() const { + return 1.0; } //virtual check for if creature flies virtual bool flies() const { diff --git a/src/move_mode.cpp b/src/move_mode.cpp index d1fe3c241a8ff..98c85fd81d833 100644 --- a/src/move_mode.cpp +++ b/src/move_mode.cpp @@ -75,7 +75,8 @@ void move_mode::load( const JsonObject &jo, std::string_view/*src*/ ) optional( jo, was_loaded, "move_speed_multiplier", _move_speed_mult, 1.0 ); optional( jo, was_loaded, "mech_power_use", _mech_power_use, 2 ); optional( jo, was_loaded, "swim_speed_mod", _swim_speed_mod, 0 ); - optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, 2 ); + //Make sure no json modders make 0 or negative bwm, this avoids divbyzeros + optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, 1.0 ); optional( jo, was_loaded, "stop_hauling", _stop_hauling ); } @@ -88,8 +89,6 @@ void move_mode::reset() void move_mode::finalize() { - //Make sure no json modders make 0 or negative bwm, this avoids divbyzeros - _bash_weight_modifier = std::max( 1, _bash_weight_modifier ); } void move_mode::finalize_all() diff --git a/src/move_mode.h b/src/move_mode.h index c597b03f9ca5e..f3e67cfcc65dc 100644 --- a/src/move_mode.h +++ b/src/move_mode.h @@ -58,10 +58,11 @@ class move_mode float _move_speed_mult = 0.0f; float _sound_multiplier = 0.0f; float _stamina_multiplier = 0.0f; + float _bash_weight_modifier = 1.0f; int _mech_power_use = 0; int _swim_speed_mod = 0; - int _bash_weight_modifier = 2; + nc_color _panel_color; nc_color _symbol_color; From 7747ec0a95767cce315735d39f2a797e7c1e3b9b Mon Sep 17 00:00:00 2001 From: Consoleable Date: Mon, 10 Nov 2025 17:01:43 -0800 Subject: [PATCH 07/18] fix float declaration prone is less generous --- data/json/move_modes.json | 2 +- src/character.cpp | 2 +- src/creature.cpp | 3 ++- src/move_mode.cpp | 2 +- src/move_mode.h | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/data/json/move_modes.json b/data/json/move_modes.json index 38b8af96887f3..814b9f97a03d4 100644 --- a/data/json/move_modes.json +++ b/data/json/move_modes.json @@ -72,6 +72,6 @@ "sound_multiplier": 0.2, "move_speed_multiplier": 0.2, "swim_speed_mod": 50, - "bash_weight_modifier": 0.125 + "bash_weight_modifier": 0.25 } ] diff --git a/src/character.cpp b/src/character.cpp index 516a3b58cf48d..b21e028c11fb1 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -1976,7 +1976,7 @@ move_mode_id Character::current_movement_mode() const return move_mode; } -int Character::fragile_terrain_weight_modifier() const +float Character::fragile_terrain_weight_modifier() const { return move_mode->get_bash_weight_modifier(); } diff --git a/src/creature.cpp b/src/creature.cpp index 1cb3d7309cdb8..9f8abaae1abcf 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -227,10 +227,11 @@ void Creature::maybe_break_fragile_underfoot( Creature &cr, const tripoint_bub_m if( !cr.is_hallucination() && !cr.flies() && cr.get_weight() >= 5_kilogram ) { std::string who_name = cr.disp_name(); const int weight_to_bash = std::max( 1, static_cast( cr.get_weight() / 10_kilogram ) ); - int bash_strength = weight_to_bash * cr.fragile_terrain_weight_modifier(); + int bash_strength = static_cast( weight_to_bash * cr.fragile_terrain_weight_modifier() ); //store terrain name for message const std::string old_name = here.tername( p ); //damage fragile terrain + //damage fragile terrain const auto res = here.bash( p, bash_strength, true, false, false, nullptr, false ); //if broken output message if( res.success ) { diff --git a/src/move_mode.cpp b/src/move_mode.cpp index 98c85fd81d833..f37bc14686515 100644 --- a/src/move_mode.cpp +++ b/src/move_mode.cpp @@ -193,7 +193,7 @@ int move_mode::swim_speed_mod() const return _swim_speed_mod; } -int move_mode::get_bash_weight_modifier() const +float move_mode::get_bash_weight_modifier() const { return _bash_weight_modifier; } diff --git a/src/move_mode.h b/src/move_mode.h index f3e67cfcc65dc..413a17192bf19 100644 --- a/src/move_mode.h +++ b/src/move_mode.h @@ -94,7 +94,7 @@ class move_mode units::energy mech_power_use() const; int swim_speed_mod() const; - int get_bash_weight_modifier() const; + float get_bash_weight_modifier() const; nc_color panel_color() const; nc_color symbol_color() const; From 5146ad9c8c416c28f1ab349e6297fdfdd215f9cc Mon Sep 17 00:00:00 2001 From: Consoleable <107653330+Consoleable@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:02:24 -0800 Subject: [PATCH 08/18] Update src/move_mode.cpp to use num bound reader Co-authored-by: ehughsbaird <44244083+ehughsbaird@users.noreply.github.com> --- src/move_mode.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/move_mode.cpp b/src/move_mode.cpp index f37bc14686515..f954dba2ae986 100644 --- a/src/move_mode.cpp +++ b/src/move_mode.cpp @@ -75,8 +75,7 @@ void move_mode::load( const JsonObject &jo, std::string_view/*src*/ ) optional( jo, was_loaded, "move_speed_multiplier", _move_speed_mult, 1.0 ); optional( jo, was_loaded, "mech_power_use", _mech_power_use, 2 ); optional( jo, was_loaded, "swim_speed_mod", _swim_speed_mod, 0 ); - //Make sure no json modders make 0 or negative bwm, this avoids divbyzeros - optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, 1.0 ); + optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, numeric_bounds_reader( 0.0 ), 1.0 ); optional( jo, was_loaded, "stop_hauling", _stop_hauling ); } From 9970d28e03b85975c1f53c505f2bf829bc8e25d0 Mon Sep 17 00:00:00 2001 From: Consoleable <107653330+Consoleable@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:04:42 -0800 Subject: [PATCH 09/18] Update src/creature.cpp early returns for maybe_break_fragile Co-authored-by: ehughsbaird <44244083+ehughsbaird@users.noreply.github.com> --- src/creature.cpp | 47 +++++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/src/creature.cpp b/src/creature.cpp index 9f8abaae1abcf..98737aecbcf92 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -214,34 +214,25 @@ tripoint_bub_ms Creature::pos_bub( const map &here ) const void Creature::maybe_break_fragile_underfoot( Creature &cr, const tripoint_bub_ms &p ) { map &here = get_map(); - if( here.has_flag( ter_furn_flag::TFLAG_FRAGILE, p ) ) { - - - /* - bool can_fly = false; - if (const monster* mon = dynamic_cast(&cr)) { - can_fly = mon->flies(); - } - */ - - if( !cr.is_hallucination() && !cr.flies() && cr.get_weight() >= 5_kilogram ) { - std::string who_name = cr.disp_name(); - const int weight_to_bash = std::max( 1, static_cast( cr.get_weight() / 10_kilogram ) ); - int bash_strength = static_cast( weight_to_bash * cr.fragile_terrain_weight_modifier() ); - //store terrain name for message - const std::string old_name = here.tername( p ); - //damage fragile terrain - //damage fragile terrain - const auto res = here.bash( p, bash_strength, true, false, false, nullptr, false ); - //if broken output message - if( res.success ) { - add_msg( m_warning, - string_format( _( "The %s breaks under the weight of %s!" ), - old_name, who_name ) ); - } - } - } - return; + if( !here.has_flag( ter_furn_flag::TFLAG_FRAGILE, p ) ) { + return; + } + if( cr.is_hallucination() || cr.flies() || cr.get_weight() < 5_kilogram ) { + return; + } + std::string who_name = cr.disp_name(); + const int weight_to_bash = std::max( 1, static_cast( cr.get_weight() / 10_kilogram ) ); + int bash_strength = static_cast( weight_to_bash * cr.fragile_terrain_weight_modifier() ); + //store terrain name for message + const std::string old_name = here.tername( p ); + //damage fragile terrain + const bash_params res = here.bash( p, bash_strength, true, false, false, nullptr, false ); + // if broken output message + if( res.success ) { + add_msg( m_warning, + string_format( _( "The %s breaks under the weight of %s!" ), + old_name, who_name ) ); + } } void Creature::setpos( map &here, const tripoint_bub_ms &p, bool check_gravity/* = true*/ ) From 17e0301d9e0fc25bc96f9b54d15a76721680b1bd Mon Sep 17 00:00:00 2001 From: Consoleable Date: Wed, 12 Nov 2025 00:02:28 -0800 Subject: [PATCH 10/18] Vehicle+ice added vehicle icebreaking added ice terrain(doesnt spawn anywhere yet, debug only for now) prevent creatures from breaking fragile tiles when on vehicle --- .../furniture_and_terrain/terrain-roofs.json | 212 ++++++++++++++++-- data/json/move_modes.json | 6 +- src/creature.cpp | 45 ++-- src/move_mode.cpp | 2 +- src/vehicle.cpp | 95 ++++++++ src/vehicle.h | 1 + src/vehicle_move.cpp | 3 + 7 files changed, 319 insertions(+), 45 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json index ae752ab0aa159..3056ef9451aab 100644 --- a/data/json/furniture_and_terrain/terrain-roofs.json +++ b/data/json/furniture_and_terrain/terrain-roofs.json @@ -47,14 +47,27 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, + "deconstruct": { + "ter_set": "t_flat_roof", + "items": [ + { + "item": "scrap_aluminum", + "count": 12 + } + ] + }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] + "items": [ + { + "item": "scrap_aluminum", + "count": [ 4, 7 ] + } + ] } }, { @@ -69,14 +82,27 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE", "CLIMBABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, + "deconstruct": { + "ter_set": "t_flat_roof", + "items": [ + { + "item": "scrap_aluminum", + "count": 12 + } + ] + }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] + "items": [ + { + "item": "scrap_aluminum", + "count": [ 4, 7 ] + } + ] } }, { @@ -90,14 +116,27 @@ "move_cost": 3, "trap": "tr_downspout_funnel", "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "UNSTABLE", "CLIMBABLE" ], - "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, + "deconstruct": { + "ter_set": "t_flat_roof", + "items": [ + { + "item": "scrap_aluminum", + "count": 12 + } + ] + }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_dirt", - "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] + "items": [ + { + "item": "scrap_aluminum", + "count": [ 4, 7 ] + } + ] } }, { @@ -110,7 +149,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -122,7 +168,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -134,7 +187,14 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -146,7 +206,14 @@ "color": "yellow", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -158,7 +225,14 @@ "color": "light_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -170,7 +244,14 @@ "color": "white", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "FLAMMABLE" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -189,7 +270,31 @@ "sound": "glass breaking!", "sound_fail": "whack!", "ter_set": "t_skylight_frame", - "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] + "items": [ + { + "item": "glass_shard", + "count": [ 21, 29 ] + } + ] + } + }, + { + "type": "terrain", + "id": "t_ice", + "name": "thin ice", + "description": "A thin,transparent sheet of ice is here. Watch your step.", + "symbol": "o", + "looks_like": "t_linoleum_white", + "color": "cyan", + "move_cost": 2, + "//": "TODO: Should break when you step on it if there's no supporting terrain below, might want some warning akin to examine_action ledge", + "flags": [ "TRANSPARENT", "TRANSPARENT_FLOOR", "FRAGILE" ], + "bash": { + "str_min": 3, + "str_max": 6, + "sound": "glass breaking!", + "sound_fail": "whack!", + "ter_set": "t_null" } }, { @@ -202,7 +307,14 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT" ], - "bash": { "str_min": 100, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 100, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -267,7 +379,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 100, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 100, + "str_max": 400, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -279,7 +398,14 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 50, + "str_max": 400, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -291,7 +417,14 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "FLAT" ], - "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 50, + "str_max": 400, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -303,7 +436,14 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 200, + "str_max": 500, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -315,7 +455,14 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 200, + "str_max": 500, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -327,7 +474,14 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 30, + "str_max": 210, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -338,7 +492,14 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { "str_min": 48, "str_max": 80, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 48, + "str_max": 80, + "sound": "crash!", + "sound_fail": "whump!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", @@ -349,7 +510,14 @@ "color": "blue", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD" ], - "bash": { "str_min": 1, "str_max": 8, "sound": "rrrrip!", "sound_fail": "slap!", "ter_set": "t_null", "bash_below": false } + "bash": { + "str_min": 1, + "str_max": 8, + "sound": "rrrrip!", + "sound_fail": "slap!", + "ter_set": "t_null", + "bash_below": false + } }, { "type": "terrain", diff --git a/data/json/move_modes.json b/data/json/move_modes.json index 814b9f97a03d4..058715a613b46 100644 --- a/data/json/move_modes.json +++ b/data/json/move_modes.json @@ -12,8 +12,7 @@ "change_good_animal": "You nudge your steed into a steady trot.", "change_good_mech": "You set your mech's leg power to a loping fast walk.", "move_type": "walking", - "move_speed_multiplier": 1.0, - "bash_weight_modifier": 1 + "move_speed_multiplier": 1.0 }, { "type": "movement_mode", @@ -53,8 +52,7 @@ "move_type": "crouching", "sound_multiplier": 0.5, "move_speed_multiplier": 0.5, - "swim_speed_mod": 50, - "bash_weight_modifier": 1 + "swim_speed_mod": 50 }, { "type": "movement_mode", diff --git a/src/creature.cpp b/src/creature.cpp index 98737aecbcf92..10ee36b72a8c7 100644 --- a/src/creature.cpp +++ b/src/creature.cpp @@ -214,25 +214,34 @@ tripoint_bub_ms Creature::pos_bub( const map &here ) const void Creature::maybe_break_fragile_underfoot( Creature &cr, const tripoint_bub_ms &p ) { map &here = get_map(); + if( const optional_vpart_position vp = here.veh_at( p ) ) { + return; + } + if( const Character *person = cr.as_character() ) { + if( person->in_vehicle ) { + return; + } + } if( !here.has_flag( ter_furn_flag::TFLAG_FRAGILE, p ) ) { - return; - } - if( cr.is_hallucination() || cr.flies() || cr.get_weight() < 5_kilogram ) { - return; - } - std::string who_name = cr.disp_name(); - const int weight_to_bash = std::max( 1, static_cast( cr.get_weight() / 10_kilogram ) ); - int bash_strength = static_cast( weight_to_bash * cr.fragile_terrain_weight_modifier() ); - //store terrain name for message - const std::string old_name = here.tername( p ); - //damage fragile terrain - const bash_params res = here.bash( p, bash_strength, true, false, false, nullptr, false ); - // if broken output message - if( res.success ) { - add_msg( m_warning, - string_format( _( "The %s breaks under the weight of %s!" ), - old_name, who_name ) ); - } + return; + } + if( cr.is_hallucination() || cr.flies() || cr.get_weight() < 5_kilogram ) { + return; + } + std::string who_name = cr.disp_name(); + const int weight_to_bash = std::max( 1, static_cast( cr.get_weight() / 10_kilogram ) ); + int bash_strength = static_cast( weight_to_bash * cr.fragile_terrain_weight_modifier() ); + //store terrain name for message + const std::string old_name = here.tername( p ); + //damage fragile terrain + const bash_params res = here.bash( p, bash_strength, false, false, false, nullptr, false ); + // if broken output message + if( res.success ) { + add_msg( m_warning, + string_format( _( "The %s breaks under the weight of %s!" ), + old_name, who_name ) ); + } + return; } void Creature::setpos( map &here, const tripoint_bub_ms &p, bool check_gravity/* = true*/ ) diff --git a/src/move_mode.cpp b/src/move_mode.cpp index f954dba2ae986..c45fff6e3a65b 100644 --- a/src/move_mode.cpp +++ b/src/move_mode.cpp @@ -75,7 +75,7 @@ void move_mode::load( const JsonObject &jo, std::string_view/*src*/ ) optional( jo, was_loaded, "move_speed_multiplier", _move_speed_mult, 1.0 ); optional( jo, was_loaded, "mech_power_use", _mech_power_use, 2 ); optional( jo, was_loaded, "swim_speed_mod", _swim_speed_mod, 0 ); - optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, numeric_bounds_reader( 0.0 ), 1.0 ); + optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, 1.0 ); optional( jo, was_loaded, "stop_hauling", _stop_hauling ); } diff --git a/src/vehicle.cpp b/src/vehicle.cpp index aaf478817fadd..3594a4c820669 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -828,6 +828,101 @@ void vehicle::drive_to_local_target( map *here, const tripoint_abs_ms &target, selfdrive( *here, turn_x, accel_y ); } +void vehicle::damage_fragile_under_vehicle( map &here ) +{ + // total weight + const int veh_weight = weight_on_wheels( here ) / 1_kilogram; + // wheel coords + std::vector wheel_contacts; + wheel_contacts.reserve( wheelcache.size() ); + for( int i : wheelcache ) { + const vehicle_part &vp = part( i ); + const tripoint_bub_ms p = bub_part_pos( here, i ); + if( vp.is_broken() || here.has_flag_ter( ter_furn_flag::TFLAG_NO_FLOOR, p ) ) { + continue; + } + wheel_contacts.push_back( p ); + } + + add_msg( m_info, "vehicle '%s' total weight: %d kg, wheels: %d", + name, veh_weight, static_cast( wheel_contacts.size() ) ); + + //if the vehicle has no wheel contacts, have it crush the tiles with its body + if( wheel_contacts.empty() ) { + + // no duplicate body part positions + std::unordered_set unique_tiles; + unique_tiles.reserve( parts.size() ); + int structural_parts = 0; + for( size_t i = 0; i < parts.size(); i++ ) { + const vehicle_part &vp = parts[i]; + if( vp.removed || vp.is_broken() ) { + continue; + } + + // count structural parts to compensate for decorative parts creating excess support + if( vp.info().location.str() == "structure" ) { + ++structural_parts; + } + + + unique_tiles.insert( bub_part_pos( here, static_cast( i ) ) ); + } + if( unique_tiles.empty() ) { + return; // No physical body tiles + } + + if( structural_parts <= 0 ) { + structural_parts = 1; + } + //if a vehicle is supported by non-structural collision fields, compensate + // by multiplying the final damage by the total tiles "under" the vehicle + // over the number of actual structural tiles + const double stress_multiplier = static_cast( unique_tiles.size() ) / structural_parts; + + //to vector for iteration + std::vector body_contacts( unique_tiles.begin(), unique_tiles.end() ); + + //unsupported tiles of the vehicle should not count towards the divided weight of the vehicle + int supported_tiles = 0; + for( const tripoint_bub_ms &p : body_contacts ) { + if( !here.has_flag_ter_or_furn( ter_furn_flag::TFLAG_NO_FLOOR, p ) ) { + ++supported_tiles; + } + } + if( supported_tiles <= 0 ) { + return; + } + const int kg_per_tile = static_cast( ( veh_weight / supported_tiles ) * stress_multiplier ); + //add_msg(m_info, "avg body load per tile: %d kg and %d supported tiles. %d sturctural parts and %d total parts", kg_per_tile,supported_tiles, structural_parts, unique_tiles.size()); + + for( const tripoint_bub_ms &p : body_contacts ) { + const int bash_strength = kg_per_tile / 10; + if( here.has_flag_ter( ter_furn_flag::TFLAG_FRAGILE, p ) && bash_strength > 0 ) { + //add_msg(m_info, "bashing fragile terrain at %s, strength=%d", p.to_string(), bash_strength); + + here.bash( p, bash_strength, false, false, false, this, false ); + } else if( here.has_flag_ter_or_furn( ter_furn_flag::TFLAG_FRAGILE, p ) ) { + //add_msg(m_info, "bashing fragile terrain at %s, strength=%d", p.to_string(), bash_strength); + } + } + return; + } else { + //distribute load per wheel + const int bash_strength = ( veh_weight / wheel_contacts.size() ) / 10; + //bash to fragile tiles under each wheel + for( const tripoint_bub_ms &p : wheel_contacts ) { + if( here.has_flag_ter_or_furn( ter_furn_flag::TFLAG_FRAGILE, p ) && bash_strength > 0 ) { + //add_msg(m_info, "bashing fragile terrain at %s, strength=%d", p.to_string(), bash_strength); + here.bash( p, bash_strength, false, false, false, this, false ); + } + } + } + return; +} + + + bool vehicle::precollision_check( units::angle &angle, map &here, bool follow_protocol ) { if( !precollision_on ) { diff --git a/src/vehicle.h b/src/vehicle.h index 60eb839a410ff..1f91f96efdd1c 100644 --- a/src/vehicle.h +++ b/src/vehicle.h @@ -2179,6 +2179,7 @@ class vehicle vehicle *act_on_map( map &here ); // check if the vehicle should be falling or is in water void check_falling_or_floating(); + void damage_fragile_under_vehicle( map &here ); /** Precalculate vehicle turn. Counts wheels that will land on ter_flag_to_check * new_turn_dir - turn direction to calculate diff --git a/src/vehicle_move.cpp b/src/vehicle_move.cpp index 397ba8d6f562b..da1ece2a8e0c2 100644 --- a/src/vehicle_move.cpp +++ b/src/vehicle_move.cpp @@ -2150,6 +2150,9 @@ void vehicle::check_falling_or_floating() return; } + //damage fragile terrain before doing other falling stuff + damage_fragile_under_vehicle( here ); + is_falling = true; is_flying = false; From 78eb03d63b00970dd20ad4106401f2ca2c73742f Mon Sep 17 00:00:00 2001 From: Consoleable Date: Wed, 12 Nov 2025 13:26:59 -0800 Subject: [PATCH 11/18] remove accidential gitignore --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e938aea675835..e8b28180f48dd 100644 --- a/.gitignore +++ b/.gitignore @@ -254,5 +254,4 @@ Gemfile.lock # VERSION.txt generated by our CMakeLists.txt VERSION.txt -/tools/AStyle_3.1_windows/AStyle -/.gitignore + From ef66a7dcb4b62640bbd1b500c63e67e1a29bcefc Mon Sep 17 00:00:00 2001 From: Consoleable Date: Wed, 12 Nov 2025 13:26:59 -0800 Subject: [PATCH 12/18] remove accidential gitignore --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index e938aea675835..c5d8c24fa881e 100644 --- a/.gitignore +++ b/.gitignore @@ -254,5 +254,3 @@ Gemfile.lock # VERSION.txt generated by our CMakeLists.txt VERSION.txt -/tools/AStyle_3.1_windows/AStyle -/.gitignore From 61a669495ed3de2628291250c551e66e00bca9a9 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Thu, 13 Nov 2025 18:56:01 -0800 Subject: [PATCH 13/18] linting and ai: relint terrain-roofs add avoidance of fragile ice and glass floors to npcs and smart monsters --- .../furniture_and_terrain/terrain-roofs.json | 201 ++---------------- src/monster.cpp | 4 + src/npc.cpp | 4 + src/pathfinding.cpp | 51 +++++ src/pathfinding.h | 6 + 5 files changed, 88 insertions(+), 178 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json index 3056ef9451aab..4bce3d90cac15 100644 --- a/data/json/furniture_and_terrain/terrain-roofs.json +++ b/data/json/furniture_and_terrain/terrain-roofs.json @@ -47,27 +47,14 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { - "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": 12 - } - ] - }, + "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": [ 4, 7 ] - } - ] + "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] } }, { @@ -82,27 +69,14 @@ "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "MOUNTABLE", "TINY", "AUTO_WALL_SYMBOL", "UNSTABLE", "CLIMBABLE" ], "connect_groups": "RAILING", "connects_to": "RAILING", - "deconstruct": { - "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": 12 - } - ] - }, + "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": [ 4, 7 ] - } - ] + "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] } }, { @@ -116,27 +90,14 @@ "move_cost": 3, "trap": "tr_downspout_funnel", "flags": [ "TRANSPARENT", "THIN_OBSTACLE", "UNSTABLE", "CLIMBABLE" ], - "deconstruct": { - "ter_set": "t_flat_roof", - "items": [ - { - "item": "scrap_aluminum", - "count": 12 - } - ] - }, + "deconstruct": { "ter_set": "t_flat_roof", "items": [ { "item": "scrap_aluminum", "count": 12 } ] }, "bash": { "str_min": 5, "str_max": 12, "sound": "clang!", "sound_fail": "clang.", "ter_set": "t_dirt", - "items": [ - { - "item": "scrap_aluminum", - "count": [ 4, 7 ] - } - ] + "items": [ { "item": "scrap_aluminum", "count": [ 4, 7 ] } ] } }, { @@ -149,14 +110,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -168,14 +122,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -187,14 +134,7 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -206,14 +146,7 @@ "color": "yellow", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -225,14 +158,7 @@ "color": "light_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -244,14 +170,7 @@ "color": "white", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "FLAMMABLE" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -270,12 +189,7 @@ "sound": "glass breaking!", "sound_fail": "whack!", "ter_set": "t_skylight_frame", - "items": [ - { - "item": "glass_shard", - "count": [ 21, 29 ] - } - ] + "items": [ { "item": "glass_shard", "count": [ 21, 29 ] } ] } }, { @@ -289,13 +203,7 @@ "move_cost": 2, "//": "TODO: Should break when you step on it if there's no supporting terrain below, might want some warning akin to examine_action ledge", "flags": [ "TRANSPARENT", "TRANSPARENT_FLOOR", "FRAGILE" ], - "bash": { - "str_min": 3, - "str_max": 6, - "sound": "glass breaking!", - "sound_fail": "whack!", - "ter_set": "t_null" - } + "bash": { "str_min": 3, "str_max": 6, "sound": "glass breaking!", "sound_fail": "whack!", "ter_set": "t_null" } }, { "type": "terrain", @@ -307,14 +215,7 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT" ], - "bash": { - "str_min": 100, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 100, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -379,14 +280,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 100, - "str_max": 400, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 100, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -398,14 +292,7 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE", "FLAT" ], - "bash": { - "str_min": 50, - "str_max": 400, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -417,14 +304,7 @@ "color": "brown", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "FLAT" ], - "bash": { - "str_min": 50, - "str_max": 400, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 50, "str_max": 400, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -436,14 +316,7 @@ "color": "dark_gray", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 200, - "str_max": 500, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -455,14 +328,7 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 200, - "str_max": 500, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 200, "str_max": 500, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -474,14 +340,7 @@ "color": "green", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE" ], - "bash": { - "str_min": 30, - "str_max": 210, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 30, "str_max": 210, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -492,14 +351,7 @@ "color": "red", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAT", "ROAD" ], - "bash": { - "str_min": 48, - "str_max": 80, - "sound": "crash!", - "sound_fail": "whump!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 48, "str_max": 80, "sound": "crash!", "sound_fail": "whump!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", @@ -510,14 +362,7 @@ "color": "blue", "move_cost": 2, "flags": [ "TRANSPARENT", "FLAMMABLE_HARD" ], - "bash": { - "str_min": 1, - "str_max": 8, - "sound": "rrrrip!", - "sound_fail": "slap!", - "ter_set": "t_null", - "bash_below": false - } + "bash": { "str_min": 1, "str_max": 8, "sound": "rrrrip!", "sound_fail": "slap!", "ter_set": "t_null", "bash_below": false } }, { "type": "terrain", diff --git a/src/monster.cpp b/src/monster.cpp index c457884bf8a06..66f823f87d672 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -4219,6 +4219,10 @@ std::function monster::get_path_avoid() const if( rl_dist( p, pos_bub() ) <= radius && get_creature_tracker().creature_at( p ) ) { return true; } + if( should_avoid_fragile_tile( this, here, p ) ) { + return true; + } + return false; }; } diff --git a/src/npc.cpp b/src/npc.cpp index ee8fb7979d8cb..4d7d888c7698f 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -3532,6 +3532,9 @@ std::function npc::get_path_avoid() const if( here.is_open_air( p ) ) { return true; } + if( should_avoid_fragile_tile( this, here, p ) ) { + return true; + } if( rules.has_flag( ally_rule::hold_the_line ) && rl_dist( p, get_avatar().pos_bub() ) == 1 && ( here.close_door( p, true, true ) || @@ -3549,6 +3552,7 @@ std::function npc::get_path_avoid() const }; } + mfaction_id npc::get_monster_faction() const { if( my_fac ) { diff --git a/src/pathfinding.cpp b/src/pathfinding.cpp index 05915632e7679..c5b0b90b61bf8 100644 --- a/src/pathfinding.cpp +++ b/src/pathfinding.cpp @@ -23,6 +23,7 @@ #include "map_scale_constants.h" #include "mapdata.h" #include "maptile_fwd.h" +#include "monster.h" #include "point.h" #include "submap.h" #include "trap.h" @@ -675,3 +676,53 @@ bool pathfinding_target::contains( const tripoint_bub_ms &p ) const } return square_dist( center, p ) <= r; } + +bool should_avoid_fragile_tile( const Creature *who, const map &m, const tripoint_bub_ms &p ) +{ + if( !who ) { + return false; + } + + //early break if not fragile for some reason + if( !m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_FRAGILE, p ) ) { + return false; + } + + // if transparent floor or player made TODO add player made + if( !m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_TRANSPARENT_FLOOR, p ) ) { + return false; + } + + //NPCs and smart monsters avoid transparent + bool smart = false; + bool ally = false; + + if( who->is_npc() ) { + smart = true; + } else if( who->is_monster() ) { + const monster *mon = static_cast( who ); + if( mon->has_mind() ) { + smart = true; + } + } + + if( !smart ) { + return false; + } + + // if they cant see they will step on it + if( !who->sees( m, p ) ) { + return false; + } + + // check if weight exceeds safe + const int effective_bash = who->get_weight() / 10_kilogram; + const int bash_max = m.bash_strength( p ); + + // will creature break + if( effective_bash > bash_max ) { + return true; + } + + return false; +} diff --git a/src/pathfinding.h b/src/pathfinding.h index e5a2ee4a23015..d43c4a5bfde2b 100644 --- a/src/pathfinding.h +++ b/src/pathfinding.h @@ -8,10 +8,14 @@ #include #include "coordinates.h" +#include "creature.h" +#include "map.h" #include "mdarray.h" #include "point.h" #include "type_id.h" + + enum class creature_size : int; // An attribute of a particular map square that is of interest in pathfinding. @@ -190,4 +194,6 @@ struct pathfinding_target { } }; +bool should_avoid_fragile_tile( const Creature *who, const map &m, const tripoint_bub_ms &p ); + #endif // CATA_SRC_PATHFINDING_H From 75fd16b5813131e0f21c23bc452a160a7feb80e5 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Thu, 13 Nov 2025 23:17:03 -0800 Subject: [PATCH 14/18] flags, allies, board pits, and covered pits are updated added flags for pit traps and covered traps added ally npc and monster ai for fragile terrain updated covered pits to use physics for boards, works with creature ai --- .../furniture_and_terrain/terrain-traps.json | 36 ++++++++++++---- src/mapdata.cpp | 2 + src/mapdata.h | 2 + src/pathfinding.cpp | 41 +++++++++++++------ 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/data/json/furniture_and_terrain/terrain-traps.json b/data/json/furniture_and_terrain/terrain-traps.json index ad08e6ca9c07d..6b86e02ee7d83 100644 --- a/data/json/furniture_and_terrain/terrain-traps.json +++ b/data/json/furniture_and_terrain/terrain-traps.json @@ -40,15 +40,21 @@ { "type": "terrain", "id": "t_pit_covered", - "name": "covered pit", + "name": "board over a pit", "description": "A deep pit with a plank placed across it, looks sturdy enough to cross safely. The plank could be removed to make it dangerous again.", "symbol": "#", "color": "light_red", "connect_groups": "PIT_DEEP", "connects_to": "PIT_DEEP", "move_cost": 2, - "flags": [ "TRANSPARENT", "ROAD" ], - "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 40, "str_max": 100, "str_min_supported": 100, "bash_below": true }, + "flags": [ "TRANSPARENT", "ROAD", "OPEN_PIT", "FRAGILE" ], + "bash": { + "sound": "crack", + "ter_set": "t_pit", + "str_min": 12, + "str_max": 30, + "items": [ { "item": "plank_short", "count": [ 1, 2 ] } ] + }, "examine_action": "pit_covered" }, { @@ -69,15 +75,21 @@ { "type": "terrain", "id": "t_pit_spiked_covered", - "name": "covered spiked pit", + "name": "board over a spiked pit", "description": "Menacing with sharp spears along the bottom, this pit has a plank across it to allow someone or something to cross safely. The plank could be removed to make it dangerous again.", "symbol": "#", "color": "light_red", "connect_groups": "PIT_DEEP", "connects_to": "PIT_DEEP", "move_cost": 2, - "flags": [ "TRANSPARENT", "ROAD" ], - "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 40, "str_max": 100, "str_min_supported": 100, "bash_below": true }, + "flags": [ "TRANSPARENT", "ROAD", "OPEN_PIT", "FRAGILE" ], + "bash": { + "sound": "crack", + "ter_set": "t_pit_spiked", + "str_min": 12, + "str_max": 30, + "items": [ { "item": "plank_short", "count": [ 1, 2 ] } ] + }, "examine_action": "pit_covered" }, { @@ -98,15 +110,21 @@ { "type": "terrain", "id": "t_pit_glass_covered", - "name": "covered glass pit", + "name": "board over a glass pit", "description": "A plank has been placed carefully to allow traversal over this ditch full of large glass shards. The plank could be removed to make it dangerous again.", "symbol": "#", "color": "light_cyan", "connect_groups": "PIT_DEEP", "connects_to": "PIT_DEEP", "move_cost": 2, - "flags": [ "TRANSPARENT", "ROAD" ], - "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 40, "str_max": 100, "str_min_supported": 100, "bash_below": true }, + "flags": [ "TRANSPARENT", "ROAD", "OPEN_PIT", "FRAGILE" ], + "bash": { + "sound": "crack", + "ter_set": "t_pit_glass", + "str_min": 12, + "str_max": 30, + "items": [ { "item": "plank_short", "count": [ 1, 2 ] } ] + }, "examine_action": "pit_covered" }, { diff --git a/src/mapdata.cpp b/src/mapdata.cpp index 6049468d57762..3c26a16456813 100644 --- a/src/mapdata.cpp +++ b/src/mapdata.cpp @@ -326,6 +326,8 @@ std::string enum_to_string( ter_furn_flag data ) case ter_furn_flag::TFLAG_MON_AVOID_STRICT: return "MON_AVOID_STRICT"; case ter_furn_flag::TFLAG_REGION_PSEUDO: return "REGION_PSEUDO"; case ter_furn_flag::TFLAG_FRAGILE: return "FRAGILE"; + case ter_furn_flag::TFLAG_OPEN_PIT: return "OPEN_PIT"; + case ter_furn_flag::TFLAG_PLAYER_MADE: return "PLAYER_MADE"; // *INDENT-ON* case ter_furn_flag::NUM_TFLAG_FLAGS: diff --git a/src/mapdata.h b/src/mapdata.h index 1323609edbebf..b497a613c0a1b 100644 --- a/src/mapdata.h +++ b/src/mapdata.h @@ -376,6 +376,8 @@ enum class ter_furn_flag : int { TFLAG_MON_AVOID_STRICT, TFLAG_REGION_PSEUDO, TFLAG_FRAGILE, + TFLAG_OPEN_PIT, + TFLAG_PLAYER_MADE, NUM_TFLAG_FLAGS }; diff --git a/src/pathfinding.cpp b/src/pathfinding.cpp index c5b0b90b61bf8..57a2f1c0053d6 100644 --- a/src/pathfinding.cpp +++ b/src/pathfinding.cpp @@ -15,6 +15,7 @@ #include "cata_utility.h" #include "coordinates.h" #include "creature.h" +#include "npc.h" #include "damage.h" #include "debug.h" #include "game.h" @@ -27,6 +28,7 @@ #include "point.h" #include "submap.h" #include "trap.h" +#include "units.h" #include "veh_type.h" #include "vehicle.h" #include "vpart_position.h" @@ -687,27 +689,36 @@ bool should_avoid_fragile_tile( const Creature *who, const map &m, const tripoin if( !m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_FRAGILE, p ) ) { return false; } + const bool is_seethrough = m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_TRANSPARENT_FLOOR, p ); + const bool is_pit_with_board = m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_OPEN_PIT, p ); + const bool is_player_pitfall = m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_PLAYER_MADE, p ); - // if transparent floor or player made TODO add player made - if( !m.has_flag_ter_or_furn( ter_furn_flag::TFLAG_TRANSPARENT_FLOOR, p ) ) { + // if transparent floor or player made or board pit + if( !( is_seethrough || is_pit_with_board || is_player_pitfall ) ) { return false; } //NPCs and smart monsters avoid transparent bool smart = false; + //friendly npcs and monsters avoid our pit traps bool ally = false; if( who->is_npc() ) { smart = true; + + const npc *g = dynamic_cast( who ); + if( g && g->is_player_ally() ) { + ally = true; + } + } else if( who->is_monster() ) { const monster *mon = static_cast( who ); if( mon->has_mind() ) { smart = true; } - } - - if( !smart ) { - return false; + if( mon->attitude_raw_string( mon->attitude_to( get_player_character() ) ) == "friendly" ) { + ally = true; + } } // if they cant see they will step on it @@ -715,14 +726,20 @@ bool should_avoid_fragile_tile( const Creature *who, const map &m, const tripoin return false; } - // check if weight exceeds safe - const int effective_bash = who->get_weight() / 10_kilogram; - const int bash_max = m.bash_strength( p ); + if( ( is_seethrough || is_pit_with_board ) && smart ) { + // smart creatures can tell if they will break the seethrough floor or board + const int effective_bash = who->get_weight() / 10_kilogram; + const int bash_min = m.bash_resistance( p ); - // will creature break - if( effective_bash > bash_max ) { + // will creature break? + if( effective_bash > bash_min ) { + return true; + } + } + // allied creatures don't fall through our traps + // avoids player frustration when using them for defense + if( ally && is_player_pitfall ) { return true; } - return false; } From c06195cc9ff082e281aa8686d4d07bc298d22a0a Mon Sep 17 00:00:00 2001 From: Consoleable Date: Fri, 14 Nov 2025 15:43:04 -0800 Subject: [PATCH 15/18] changes add numeric_bound_reader to prevent negative fix ice description and relint add helper functio/json construction precondition that requires orthogonal terrain or furniture add helper functio/json construction precondition that requires opposing supports below, for bridging gaps made lakes and ocean water channelable added ability to place planks across opposing floors --- data/json/construction/roofs.json | 13 +++ data/json/construction/terrain.json | 36 +++++++ data/json/construction_group.json | 5 + .../furniture_and_terrain/terrain-roofs.json | 4 +- .../furniture_and_terrain/terrain-traps.json | 19 ++++ src/construction.cpp | 99 ++++++++++++++++++- src/construction.h | 3 + src/move_mode.cpp | 3 +- 8 files changed, 177 insertions(+), 5 deletions(-) diff --git a/data/json/construction/roofs.json b/data/json/construction/roofs.json index feb0d4edad0ab..31f502f45eec0 100644 --- a/data/json/construction/roofs.json +++ b/data/json/construction/roofs.json @@ -167,5 +167,18 @@ "pre_note": "Must be supported directly from below or on at least two sides. May need a 'room' supporting a roof directly below.", "pre_special": [ "check_support", "check_unblocked" ], "post_terrain": "t_wood_roof" + }, + { + "type": "construction", + "id": "constr_plank_over_gap", + "group": "place_plank", + "category": "CONSTRUCT", + "required_skills": [ [ "fabrication", 0 ] ], + "time": "1 s", + "components": [ [ [ "2x4", 1 ] ] ], + "pre_terrain": "t_open_air", + "pre_note": "Must be supported on at least two opposite sides.", + "pre_special": [ "check_opposite_floor_pair" ], + "post_terrain": "t_plank_gap" } ] diff --git a/data/json/construction/terrain.json b/data/json/construction/terrain.json index 3bca760ef5d3a..12057f53abd08 100644 --- a/data/json/construction/terrain.json +++ b/data/json/construction/terrain.json @@ -366,5 +366,41 @@ "byproducts": [ { "group": "digging_soil_loam_50L", "count": 5 } ], "activity_level": "EXTRA_EXERCISE", "do_turn_special": "do_turn_shovel" + }, + { + "type": "construction", + "id": "constr_water_channel_still", + "skill": "survival", + "group": "dig_a_water_channel", + "category": "CONSTRUCT", + "difficulty": 1, + "time": "20m", + "on_display": true, + "qualities": [ { "id": "DIG", "level": 1 } ], + "pre_flags": [ "DIGGABLE", "FLAT" ], + "pre_special": [ "check_empty" ], + "pre_terrain_orth": "t_water_sh", + "post_terrain": "t_water_sh", + "byproducts": [ { "group": "digging_soil_loam_50L", "count": 5 } ], + "activity_level": "EXTRA_EXERCISE", + "do_turn_special": "do_turn_shovel" + }, + { + "type": "construction", + "id": "constr_water_channel_salt", + "skill": "survival", + "group": "dig_a_water_channel", + "category": "CONSTRUCT", + "difficulty": 1, + "time": "20m", + "on_display": true, + "qualities": [ { "id": "DIG", "level": 1 } ], + "pre_flags": [ "DIGGABLE", "FLAT" ], + "pre_special": [ "check_empty" ], + "pre_terrain_orth": "t_swater_sh", + "post_terrain": "t_swater_sh", + "byproducts": [ { "group": "digging_soil_loam_50L", "count": 5 } ], + "activity_level": "EXTRA_EXERCISE", + "do_turn_special": "do_turn_shovel" } ] diff --git a/data/json/construction_group.json b/data/json/construction_group.json index 8fcc399629f04..f586daa59250e 100644 --- a/data/json/construction_group.json +++ b/data/json/construction_group.json @@ -1370,6 +1370,11 @@ "id": "place_planer", "name": "Place Planer" }, + { + "type": "construction_group", + "id": "place_plank", + "name": "Place Plank" + }, { "type": "construction_group", "id": "place_jointer", diff --git a/data/json/furniture_and_terrain/terrain-roofs.json b/data/json/furniture_and_terrain/terrain-roofs.json index 4bce3d90cac15..12a0ffd5569b3 100644 --- a/data/json/furniture_and_terrain/terrain-roofs.json +++ b/data/json/furniture_and_terrain/terrain-roofs.json @@ -196,14 +196,14 @@ "type": "terrain", "id": "t_ice", "name": "thin ice", - "description": "A thin,transparent sheet of ice is here. Watch your step.", + "description": "A thin,transparent sheet of ice is here. Watch your step.", "symbol": "o", "looks_like": "t_linoleum_white", "color": "cyan", "move_cost": 2, "//": "TODO: Should break when you step on it if there's no supporting terrain below, might want some warning akin to examine_action ledge", "flags": [ "TRANSPARENT", "TRANSPARENT_FLOOR", "FRAGILE" ], - "bash": { "str_min": 3, "str_max": 6, "sound": "glass breaking!", "sound_fail": "whack!", "ter_set": "t_null" } + "bash": { "str_min": 3, "str_max": 6, "sound": "crunch!", "sound_fail": "crack!", "ter_set": "t_null" } }, { "type": "terrain", diff --git a/data/json/furniture_and_terrain/terrain-traps.json b/data/json/furniture_and_terrain/terrain-traps.json index 6b86e02ee7d83..b07da89065e5c 100644 --- a/data/json/furniture_and_terrain/terrain-traps.json +++ b/data/json/furniture_and_terrain/terrain-traps.json @@ -10,6 +10,25 @@ "flags": [ "TRANSPARENT", "DIGGABLE", "DIGGABLE_CAN_DEEPEN" ], "bash": { "sound": "thump", "ter_set": "t_null", "str_min": 50, "str_max": 100, "str_min_supported": 100, "bash_below": true } }, + { + "type": "terrain", + "id": "t_plank_gap", + "name": "plank", + "description": "A 2x4 precariously positioned between two floors. Mind the gap.", + "looks_like": "2x4", + "symbol": "l", + "color": "yellow", + "move_cost": 2, + "flags": [ "TRANSPARENT", "TRANSPARENT_FLOOR", "FRAGILE" ], + "bash": { + "sound": "thump", + "ter_set": "t_open_air", + "str_min": 12, + "str_max": 30, + "items": [ { "item": "plank_short", "count": [ 1, 2 ] } ] + }, + "examine_action": "ledge" + }, { "type": "terrain", "id": "t_pit", diff --git a/src/construction.cpp b/src/construction.cpp index 78d01b57cac18..865663268c207 100644 --- a/src/construction.cpp +++ b/src/construction.cpp @@ -180,6 +180,7 @@ static bool check_support( const tripoint_bub_ms & ); // at least two orthogonal supports or from below static bool check_support_below( const tripoint_bub_ms & ); // at least two orthogonal supports at the level below or from below +static bool check_opposite_floor_pair( const tripoint_bub_ms &p ); static bool check_single_support( const tripoint_bub_ms &p ); // Only support from directly below matters static bool check_stable( const tripoint_bub_ms & ); // tile below has a SUPPORTS_ROOF flag @@ -1244,6 +1245,42 @@ static std::string has_pre_flags_colorize( const construction &con ) return colorize( enumerate_as_string( flags_colorized ), color ); } +static bool has_pre_terrain_orth( const construction &con, const tripoint_bub_ms &p ) +{ + if( con.pre_terrain_orth.empty() ) { + return true; + } + + map &here = get_map(); + + for( const point &offset : four_adjacent_offsets ) { + const tripoint_bub_ms q = p + offset; + if( here.ter( q ) == ter_id( con.pre_terrain_orth ) ) { + return true; + } + } + + return false; +} + +static bool has_pre_furniture_orth( const construction &con, const tripoint_bub_ms &p ) +{ + if( con.pre_furniture_orth.empty() ) { + return true; + } + + map &here = get_map(); + + for( const point &offset : four_adjacent_offsets ) { + const tripoint_bub_ms q = p + offset; + if( here.furn( q ) == furn_id( con.pre_furniture_orth ) ) { + return true; + } + } + + return false; +} + bool can_construct( const construction &con, const tripoint_bub_ms &p ) { const map &here = get_map(); @@ -1258,8 +1295,10 @@ bool can_construct( const construction &con, const tripoint_bub_ms &p ) } else if( !con.pre_special( p ) ) { // pre-function return false; } - if( !has_pre_terrain( con, p ) || // terrain type - !has_pre_flags( con, f, t ) ) { // flags + if( !has_pre_terrain( con, p ) || // terrain type at tile + !has_pre_flags( con, f, t ) || // flags at tile + !has_pre_terrain_orth( con, p ) || // require orth terr + !has_pre_furniture_orth( con, p ) ) { // require orth furn return false; } if( !con.post_terrain.empty() ) { // make sure the construction would actually do something @@ -1633,6 +1672,50 @@ bool construct::check_support_below( const tripoint_bub_ms &p ) return num_supports >= 2; } +static bool construct::check_opposite_floor_pair( const tripoint_bub_ms &p ) +{ + map &here = get_map(); + + // floor is not no_floor + auto is_floor = [&]( const tripoint_bub_ms & q ) { + return !here.has_flag( ter_furn_flag::TFLAG_NO_FLOOR, q ); + }; + + // Same-level neighbors (orthogonal + diagonal), expressed as point offsets + const point north( 0, -1 ); + const point south( 0, 1 ); + const point east( 1, 0 ); + const point west( -1, 0 ); + + const point northeast( 1, -1 ); + const point southeast( 1, 1 ); + const point southwest( -1, 1 ); + const point northwest( -1, -1 ); + + // Move in bubble coords by adding point offsets (this is what your original code does) + const tripoint_bub_ms N = p + north; + const tripoint_bub_ms S = p + south; + const tripoint_bub_ms E = p + east; + const tripoint_bub_ms W = p + west; + + const tripoint_bub_ms NE = p + northeast; + const tripoint_bub_ms SW = p + southwest; + const tripoint_bub_ms NW = p + northwest; + const tripoint_bub_ms SE = p + southeast; + + bool ns_ok = false; + bool ew_ok = false; + bool nesw_ok = false; + bool nwse_ok = false; + + ns_ok = is_floor( N ) && is_floor( S ); + ew_ok = is_floor( E ) && is_floor( W ); + nesw_ok = is_floor( NE ) && is_floor( SW ); + nwse_ok = is_floor( NW ) && is_floor( SE ); + + return ns_ok || ew_ok || nesw_ok || nwse_ok; +} + bool construct::check_single_support( const tripoint_bub_ms &p ) { map &here = get_map(); @@ -2363,6 +2446,17 @@ void load_construction( const JsonObject &jo ) } } } + if( jo.has_string( "pre_furniture_orth" ) ) { + con.pre_furniture_orth = jo.get_string( "pre_furniture_orth" ); + } else { + con.pre_furniture_orth = ""; + } + + if( jo.has_string( "pre_terrain_orth" ) ) { + con.pre_terrain_orth = jo.get_string( "pre_terrain_orth" ); + } else { + con.pre_terrain_orth = ""; + } con.post_flags = jo.get_tags( "post_flags" ); @@ -2379,6 +2473,7 @@ void load_construction( const JsonObject &jo ) { "check_unblocked", construct::check_unblocked }, { "check_support", construct::check_support }, { "check_support_below", construct::check_support_below }, + { "check_opposite_floor_pair", construct::check_opposite_floor_pair }, { "check_single_support", construct::check_single_support }, { "check_stable", construct::check_stable }, { "check_floor_above", construct::check_floor_above }, diff --git a/src/construction.h b/src/construction.h index 49f07959d5ab9..4adb3ef163b78 100644 --- a/src/construction.h +++ b/src/construction.h @@ -81,6 +81,9 @@ struct construction { // Custom constructibility check bool ( *pre_special )( const tripoint_bub_ms & ); std::vector pre_specials; + //optional: require an adjacent orthogonal terrain or furniture + std::string pre_terrain_orth; // e.g., "t_rock_wall" + std::string pre_furniture_orth; // e.g., "f_fireplace" // Custom while constructing effects void ( *do_turn_special )( const tripoint_bub_ms &, Character & ); // Custom after-effects diff --git a/src/move_mode.cpp b/src/move_mode.cpp index c45fff6e3a65b..5a7178c09143b 100644 --- a/src/move_mode.cpp +++ b/src/move_mode.cpp @@ -75,7 +75,8 @@ void move_mode::load( const JsonObject &jo, std::string_view/*src*/ ) optional( jo, was_loaded, "move_speed_multiplier", _move_speed_mult, 1.0 ); optional( jo, was_loaded, "mech_power_use", _mech_power_use, 2 ); optional( jo, was_loaded, "swim_speed_mod", _swim_speed_mod, 0 ); - optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, 1.0 ); + optional( jo, was_loaded, "bash_weight_modifier", _bash_weight_modifier, + numeric_bound_reader( 0.0f ), 1.0 ); optional( jo, was_loaded, "stop_hauling", _stop_hauling ); } From 560215306cfce8eeef1a7a009f052c8a9e965d9c Mon Sep 17 00:00:00 2001 From: Consoleable Date: Fri, 14 Nov 2025 17:48:50 -0800 Subject: [PATCH 16/18] pit covers made from grass with recipes new covers json for related pit/gap covers new construction group for pit traps --- data/json/construction/covers.json | 51 +++++++++++++ data/json/construction/roofs.json | 13 ---- data/json/construction_group.json | 12 ++- .../furniture_and_terrain/terrain-traps.json | 74 ++++++++++++++++++- 4 files changed, 135 insertions(+), 15 deletions(-) create mode 100644 data/json/construction/covers.json diff --git a/data/json/construction/covers.json b/data/json/construction/covers.json new file mode 100644 index 0000000000000..b353e19781f77 --- /dev/null +++ b/data/json/construction/covers.json @@ -0,0 +1,51 @@ +[ + { + "type": "construction", + "id": "constr_plank_over_gap", + "group": "place_plank", + "category": "CONSTRUCT", + "required_skills": [ [ "fabrication", 0 ] ], + "time": "1 s", + "components": [ [ [ "2x4", 1 ] ] ], + "pre_terrain": "t_open_air", + "pre_note": "Must be supported on at least two opposite sides.", + "pre_special": [ "check_opposite_floor_pair" ], + "post_terrain": "t_plank_gap" + }, + { + "type": "construction", + "id": "cover_pit_grass", + "group": "place_cover_pit", + "category": "CONSTRUCT", + "required_skills": [ [ "survival", 2 ] ], + "time": "5 m", + "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "pre_terrain": "t_pit", + "post_terrain": "t_pit_conceal_grass" + }, + { + "type": "construction", + "id": "cover_pit_spiked_grass", + "group": "place_cover_pit", + "category": "CONSTRUCT", + "required_skills": [ [ "survival", 2 ] ], + "time": "5 m", + "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "pre_terrain": "t_pit_spiked", + "post_terrain": "t_pit_spiked_conceal_grass" + }, + { + "type": "construction", + "id": "cover_pit_glass_grass", + "group": "place_cover_pit", + "category": "CONSTRUCT", + "required_skills": [ [ "survival", 2 ] ], + "time": "5 m", + "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "pre_terrain": "t_pit_glass", + "post_terrain": "t_pit_glass_conceal_grass" + } +] diff --git a/data/json/construction/roofs.json b/data/json/construction/roofs.json index 31f502f45eec0..feb0d4edad0ab 100644 --- a/data/json/construction/roofs.json +++ b/data/json/construction/roofs.json @@ -167,18 +167,5 @@ "pre_note": "Must be supported directly from below or on at least two sides. May need a 'room' supporting a roof directly below.", "pre_special": [ "check_support", "check_unblocked" ], "post_terrain": "t_wood_roof" - }, - { - "type": "construction", - "id": "constr_plank_over_gap", - "group": "place_plank", - "category": "CONSTRUCT", - "required_skills": [ [ "fabrication", 0 ] ], - "time": "1 s", - "components": [ [ [ "2x4", 1 ] ] ], - "pre_terrain": "t_open_air", - "pre_note": "Must be supported on at least two opposite sides.", - "pre_special": [ "check_opposite_floor_pair" ], - "post_terrain": "t_plank_gap" } ] diff --git a/data/json/construction_group.json b/data/json/construction_group.json index f586daa59250e..ea0ed79e62127 100644 --- a/data/json/construction_group.json +++ b/data/json/construction_group.json @@ -1373,7 +1373,17 @@ { "type": "construction_group", "id": "place_plank", - "name": "Place Plank" + "name": "Place Plank Across Gap" + }, + { + "type": "construction_group", + "id": "place_cover_air", + "name": "Place Cover Over Gap" + }, + { + "type": "construction_group", + "id": "place_cover_pit", + "name": "Place Cover Over Pit" }, { "type": "construction_group", diff --git a/data/json/furniture_and_terrain/terrain-traps.json b/data/json/furniture_and_terrain/terrain-traps.json index b07da89065e5c..433de27c634ee 100644 --- a/data/json/furniture_and_terrain/terrain-traps.json +++ b/data/json/furniture_and_terrain/terrain-traps.json @@ -14,7 +14,7 @@ "type": "terrain", "id": "t_plank_gap", "name": "plank", - "description": "A 2x4 precariously positioned between two floors. Mind the gap.", + "description": "A 2x4 precariously positioned. Mind the gap.", "looks_like": "2x4", "symbol": "l", "color": "yellow", @@ -146,6 +146,78 @@ }, "examine_action": "pit_covered" }, + { + "type": "terrain", + "id": "t_pit_glass_conceal_grass", + "looks_like": "t_grass_dead", + "name": "concealed glass pit", + "description": "A cover of grass has been placed carefully over this ditch full of large glass shards. Watch your step.", + "symbol": ".", + "color": "brown", + "connect_groups": "PIT_DEEP", + "connects_to": "PIT_DEEP", + "move_cost": 2, + "flags": [ "TRANSPARENT", "ROAD", "FRAGILE", "PLAYER_MADE" ], + "bash": { + "sound": "snap!", + "ter_set": "t_pit_glass", + "str_min": 1, + "str_max": 2, + "items": [ + { "item": "straw_pile", "count": [ 6, 11 ] }, + { "item": "cordage_6", "count": [ 0, 24 ] }, + { "item": "cordage_36", "count": [ 0, 4 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_pit_spiked_conceal_grass", + "looks_like": "t_grass_dead", + "name": "concealed glass pit", + "description": "A cover of grass has been placed carefully over this ditch full of upright spears. Watch your step.", + "symbol": ".", + "color": "brown", + "connect_groups": "PIT_DEEP", + "connects_to": "PIT_DEEP", + "move_cost": 2, + "flags": [ "TRANSPARENT", "ROAD", "FRAGILE", "PLAYER_MADE" ], + "bash": { + "sound": "snap!", + "ter_set": "t_pit_spiked", + "str_min": 1, + "str_max": 2, + "items": [ + { "item": "straw_pile", "count": [ 6, 11 ] }, + { "item": "cordage_6", "count": [ 0, 24 ] }, + { "item": "cordage_36", "count": [ 0, 4 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_pit_conceal_grass", + "looks_like": "t_grass_dead", + "name": "concealed glass pit", + "description": "A cover of grass has been placed carefully over this ditch. Watch your step.", + "symbol": ".", + "color": "brown", + "connect_groups": "PIT_DEEP", + "connects_to": "PIT_DEEP", + "move_cost": 2, + "flags": [ "TRANSPARENT", "ROAD", "FRAGILE", "PLAYER_MADE" ], + "bash": { + "sound": "snap!", + "ter_set": "t_pit", + "str_min": 1, + "str_max": 2, + "items": [ + { "item": "straw_pile", "count": [ 6, 11 ] }, + { "item": "cordage_6", "count": [ 0, 24 ] }, + { "item": "cordage_36", "count": [ 0, 4 ] } + ] + } + }, { "type": "terrain", "id": "t_pit_BEM_human_sample", From f5483d6336de027dde86627a89848c5b23358214 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Fri, 14 Nov 2025 22:56:01 -0800 Subject: [PATCH 17/18] revisit specifying orthagonal now all one function add logic lists for orth_requirement add grass gap cover --- data/json/construction/covers.json | 20 +++- data/json/construction/terrain.json | 4 +- .../furniture_and_terrain/terrain-traps.json | 28 +++++- data/json/requirements/materials.json | 6 ++ src/construction.cpp | 97 +++++++++++++------ src/construction.h | 4 +- 6 files changed, 120 insertions(+), 39 deletions(-) diff --git a/data/json/construction/covers.json b/data/json/construction/covers.json index b353e19781f77..db5ecc73e26b1 100644 --- a/data/json/construction/covers.json +++ b/data/json/construction/covers.json @@ -20,7 +20,7 @@ "required_skills": [ [ "survival", 2 ] ], "time": "5 m", "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], - "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage_long", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], "pre_terrain": "t_pit", "post_terrain": "t_pit_conceal_grass" }, @@ -32,7 +32,7 @@ "required_skills": [ [ "survival", 2 ] ], "time": "5 m", "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], - "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage_long", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], "pre_terrain": "t_pit_spiked", "post_terrain": "t_pit_spiked_conceal_grass" }, @@ -44,8 +44,22 @@ "required_skills": [ [ "survival", 2 ] ], "time": "5 m", "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], - "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage_long", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], "pre_terrain": "t_pit_glass", "post_terrain": "t_pit_glass_conceal_grass" + }, + { + "type": "construction", + "id": "cover_air_grass", + "group": "place_cover_air", + "category": "CONSTRUCT", + "required_skills": [ [ "survival", 2 ] ], + "time": "5 m", + "qualities": [ [ { "id": "HAMMER", "level": 1 } ] ], + "components": [ [ [ "straw_pile", 12 ] ], [ [ "cordage_long", 8, "LIST" ] ], [ [ "splinter", 16 ], [ "nails", 16, "LIST" ] ] ], + "pre_terrain": "t_open_air", + "pre_special": [ "check_opposite_floor_pair" ], + "pre_orth": [ [ "t_grass", "t_grass_dead", "t_dirt", "t_moss", "t_forestfloor", "t_grass_long", "t_grass_tall", "t_grass_golf" ] ], + "post_terrain": "t_air_cover_grass" } ] diff --git a/data/json/construction/terrain.json b/data/json/construction/terrain.json index 12057f53abd08..ccdd61d3e120c 100644 --- a/data/json/construction/terrain.json +++ b/data/json/construction/terrain.json @@ -379,7 +379,7 @@ "qualities": [ { "id": "DIG", "level": 1 } ], "pre_flags": [ "DIGGABLE", "FLAT" ], "pre_special": [ "check_empty" ], - "pre_terrain_orth": "t_water_sh", + "pre_orth": "t_water_sh", "post_terrain": "t_water_sh", "byproducts": [ { "group": "digging_soil_loam_50L", "count": 5 } ], "activity_level": "EXTRA_EXERCISE", @@ -397,7 +397,7 @@ "qualities": [ { "id": "DIG", "level": 1 } ], "pre_flags": [ "DIGGABLE", "FLAT" ], "pre_special": [ "check_empty" ], - "pre_terrain_orth": "t_swater_sh", + "pre_orth": "t_swater_sh", "post_terrain": "t_swater_sh", "byproducts": [ { "group": "digging_soil_loam_50L", "count": 5 } ], "activity_level": "EXTRA_EXERCISE", diff --git a/data/json/furniture_and_terrain/terrain-traps.json b/data/json/furniture_and_terrain/terrain-traps.json index 433de27c634ee..e700d8b11f849 100644 --- a/data/json/furniture_and_terrain/terrain-traps.json +++ b/data/json/furniture_and_terrain/terrain-traps.json @@ -174,7 +174,7 @@ "type": "terrain", "id": "t_pit_spiked_conceal_grass", "looks_like": "t_grass_dead", - "name": "concealed glass pit", + "name": "concealed spike pit", "description": "A cover of grass has been placed carefully over this ditch full of upright spears. Watch your step.", "symbol": ".", "color": "brown", @@ -198,7 +198,7 @@ "type": "terrain", "id": "t_pit_conceal_grass", "looks_like": "t_grass_dead", - "name": "concealed glass pit", + "name": "concealed pit", "description": "A cover of grass has been placed carefully over this ditch. Watch your step.", "symbol": ".", "color": "brown", @@ -218,6 +218,30 @@ ] } }, + { + "type": "terrain", + "id": "t_air_cover_grass", + "looks_like": "t_grass_dead", + "name": "concealed gap", + "description": "A cover of grass has been placed carefully over this gap. Watch your step.", + "symbol": ".", + "color": "brown", + "connect_groups": "PIT_DEEP", + "connects_to": "PIT_DEEP", + "move_cost": 2, + "flags": [ "TRANSPARENT", "FRAGILE", "PLAYER_MADE" ], + "bash": { + "sound": "snap!", + "ter_set": "t_open_air", + "str_min": 1, + "str_max": 2, + "items": [ + { "item": "straw_pile", "count": [ 6, 11 ] }, + { "item": "cordage_6", "count": [ 0, 24 ] }, + { "item": "cordage_36", "count": [ 0, 4 ] } + ] + } + }, { "type": "terrain", "id": "t_pit_BEM_human_sample", diff --git a/data/json/requirements/materials.json b/data/json/requirements/materials.json index 58896451ce317..d85f3a0ae94d2 100644 --- a/data/json/requirements/materials.json +++ b/data/json/requirements/materials.json @@ -172,6 +172,12 @@ "//": "Materials used for tying items, primitive bowstrings, and other uses involving string or makeshift cordage, 36 g/90 cm of cordage per unit.", "components": [ [ [ "string_36", 1 ], [ "cordage_36", 1 ], [ "cordage_36_leather", 1 ], [ "cordage_short", 6, "LIST" ] ] ] }, + { + "id": "cordage_long", + "type": "requirement", + "//": "Materials used for tying items, primitive bowstrings, and other uses involving string or makeshift cordage, 36 g/90 cm of cordage per unit.", + "components": [ [ [ "string_36", 1 ], [ "cordage_36", 1 ], [ "cordage_36_leather", 1 ] ] ] + }, { "id": "cordage_short", "type": "requirement", diff --git a/src/construction.cpp b/src/construction.cpp index 865663268c207..eec25da8f9cbe 100644 --- a/src/construction.cpp +++ b/src/construction.cpp @@ -1245,35 +1245,64 @@ static std::string has_pre_flags_colorize( const construction &con ) return colorize( enumerate_as_string( flags_colorized ), color ); } -static bool has_pre_terrain_orth( const construction &con, const tripoint_bub_ms &p ) +static bool has_pre_orth( const construction &con, const tripoint_bub_ms &p ) { - if( con.pre_terrain_orth.empty() ) { - return true; - } - map &here = get_map(); + // grouped format + if( !con.pre_orth_list.empty() ) { - for( const point &offset : four_adjacent_offsets ) { - const tripoint_bub_ms q = p + offset; - if( here.ter( q ) == ter_id( con.pre_terrain_orth ) ) { - return true; + // bracket and groups + for( const std::vector &or_group : con.pre_orth_list ) { + + bool group_passed = false; + + // bracket logic or groups + for( const std::string &id : or_group ) { + + bool is_terrain = id.rfind( "t_", 0 ) == 0; + bool is_furniture = id.rfind( "f_", 0 ) == 0; + + for( const point &offset : four_adjacent_offsets ) { + const tripoint_bub_ms q = p + offset; + + if( is_terrain && here.ter( q ) == ter_id( id ) ) { + group_passed = true; + break; + } + if( is_furniture && here.furn( q ) == furn_id( id ) ) { + group_passed = true; + break; + } + } + if( group_passed ) { + break; + } + } + + if( !group_passed ) { + return false; //bracket logic failed at this step, because one AND is not satisfied + } } - } - return false; -} + return true; // all groups passed + } -static bool has_pre_furniture_orth( const construction &con, const tripoint_bub_ms &p ) -{ - if( con.pre_furniture_orth.empty() ) { + // single-ID format --- + if( con.pre_orth.empty() ) { return true; - } + } //default if empty - map &here = get_map(); + //else search orth adjacent terrain/furniture + const bool is_terrain = con.pre_orth.rfind( "t_", 0 ) == 0; + const bool is_furniture = con.pre_orth.rfind( "f_", 0 ) == 0; for( const point &offset : four_adjacent_offsets ) { const tripoint_bub_ms q = p + offset; - if( here.furn( q ) == furn_id( con.pre_furniture_orth ) ) { + + if( is_terrain && here.ter( q ) == ter_id( con.pre_orth ) ) { + return true; + } + if( is_furniture && here.furn( q ) == furn_id( con.pre_orth ) ) { return true; } } @@ -1281,6 +1310,7 @@ static bool has_pre_furniture_orth( const construction &con, const tripoint_bub_ return false; } + bool can_construct( const construction &con, const tripoint_bub_ms &p ) { const map &here = get_map(); @@ -1297,8 +1327,7 @@ bool can_construct( const construction &con, const tripoint_bub_ms &p ) } if( !has_pre_terrain( con, p ) || // terrain type at tile !has_pre_flags( con, f, t ) || // flags at tile - !has_pre_terrain_orth( con, p ) || // require orth terr - !has_pre_furniture_orth( con, p ) ) { // require orth furn + !has_pre_orth( con, p ) ) { // require orth terr or furniture return false; } if( !con.post_terrain.empty() ) { // make sure the construction would actually do something @@ -1681,7 +1710,7 @@ static bool construct::check_opposite_floor_pair( const tripoint_bub_ms &p ) return !here.has_flag( ter_furn_flag::TFLAG_NO_FLOOR, q ); }; - // Same-level neighbors (orthogonal + diagonal), expressed as point offsets + // neighbors (orthogonal + diagonal), expressed as point offsets const point north( 0, -1 ); const point south( 0, 1 ); const point east( 1, 0 ); @@ -2446,17 +2475,25 @@ void load_construction( const JsonObject &jo ) } } } - if( jo.has_string( "pre_furniture_orth" ) ) { - con.pre_furniture_orth = jo.get_string( "pre_furniture_orth" ); - } else { - con.pre_furniture_orth = ""; - } + if( jo.has_array( "pre_orth" ) ) { + for( const JsonArray &or_group : jo.get_array( "pre_orth" ) ) { - if( jo.has_string( "pre_terrain_orth" ) ) { - con.pre_terrain_orth = jo.get_string( "pre_terrain_orth" ); - } else { - con.pre_terrain_orth = ""; + std::vector group; + + for( const JsonValue &v : or_group ) { + group.push_back( v.get_string() ); + } + + con.pre_orth_list.push_back( group ); + } + } else if( jo.has_string( "pre_orth" ) ) { + con.pre_orth = jo.get_string( "pre_orth" ); } + // single-ID format + else if( jo.has_string( "pre_orth" ) ) { + con.pre_orth = jo.get_string( "pre_orth" ); + } + con.post_flags = jo.get_tags( "post_flags" ); diff --git a/src/construction.h b/src/construction.h index 4adb3ef163b78..81ef07abec7df 100644 --- a/src/construction.h +++ b/src/construction.h @@ -82,8 +82,8 @@ struct construction { bool ( *pre_special )( const tripoint_bub_ms & ); std::vector pre_specials; //optional: require an adjacent orthogonal terrain or furniture - std::string pre_terrain_orth; // e.g., "t_rock_wall" - std::string pre_furniture_orth; // e.g., "f_fireplace" + std::vector> pre_orth_list; //combined bracket logic version of below + std::string pre_orth; // e.g., "t_rock_wall" // Custom while constructing effects void ( *do_turn_special )( const tripoint_bub_ms &, Character & ); // Custom after-effects From d355c29c5527f18ac91ab2fec34d3dda57ec0bf4 Mon Sep 17 00:00:00 2001 From: Consoleable Date: Sat, 15 Nov 2025 16:41:54 -0800 Subject: [PATCH 18/18] fix #83653 --- src/map.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/map.cpp b/src/map.cpp index c2f2a77aac079..51baffe2ce6e4 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -4270,7 +4270,12 @@ void map::bash_ter_furn( const tripoint_bub_ms &p, bash_params ¶ms, bool rep set_to_air = roof_of_below_tile; //do not add the roof for the tile below if it was already removed furn_set( p, furn_str_id::NULL_ID() ); - if( repair_missing_ground && ter_below.has_flag( "NATURAL_UNDERGROUND" ) ) { + + //respect recommended terrain setting by bash results! + if( ter_bash.ter_set != ter_str_id( "t_null" ) ) { + ter_set( p, ter_bash.ter_set ); + } //else resort to repairing natural terrain + else if( repair_missing_ground && ter_below.has_flag( "NATURAL_UNDERGROUND" ) ) { ter_set( p, ter_below.roof ); } else { ter_set( p, ter_t_open_air );