summaryrefslogtreecommitdiff
path: root/0.E.3.patch
diff options
context:
space:
mode:
Diffstat (limited to '0.E.3.patch')
-rw-r--r--0.E.3.patch367
1 files changed, 0 insertions, 367 deletions
diff --git a/0.E.3.patch b/0.E.3.patch
deleted file mode 100644
index 32ad0f0..0000000
--- a/0.E.3.patch
+++ /dev/null
@@ -1,367 +0,0 @@
-From 767d9c26e9a9b42c8a86ae23e6b930c627df1831 Mon Sep 17 00:00:00 2001
-From: Serhiy Zahoriya <serhiy.int@gmail.com>
-Date: Mon, 15 Jun 2020 15:43:42 +0300
-Subject: [PATCH 1/5] Skip unnecessary weather calculations for root cellar
- #41324
-
----
- src/item.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/item.cpp b/src/item.cpp
-index 635b56c921..9dc9048a4b 100644
---- a/src/item.cpp
-+++ b/src/item.cpp
-@@ -8510,7 +8510,7 @@ void item::process_temperature_rot( float insulation, const tripoint &pos,
-
- //Use weather if above ground, use map temp if below
- double env_temperature = 0;
-- if( pos.z >= 0 ) {
-+ if( pos.z >= 0 && flag != TEMP_ROOT_CELLAR ) {
- double weather_temperature = wgen.get_weather_temperature( pos, time, seed );
- env_temperature = weather_temperature + enviroment_mod + local_mod;
- } else {
---
-2.29.2
-
-From 2a6ac5bcc085f54a4e483c31f463f0e15d8abe18 Mon Sep 17 00:00:00 2001
-From: Serhiy Zahoriya <serhiy.int@gmail.com>
-Date: Mon, 15 Jun 2020 15:59:53 +0300
-Subject: [PATCH 2/5] Backported fixes for ice lab spoiling #39813
-
-Co-authored-by: Hirmuolio <hirmuolio@gmail.com>
----
- src/item.cpp | 3 +--
- src/map.cpp | 3 +--
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/item.cpp b/src/item.cpp
-index 9dc9048a4b..2dcc09858e 100644
---- a/src/item.cpp
-+++ b/src/item.cpp
-@@ -8486,8 +8486,7 @@ void item::process_temperature_rot( float insulation, const tripoint &pos,
-
- const weather_generator &wgen = g->weather.get_cur_weather_gen();
- const unsigned int seed = g->get_seed();
-- const tripoint &local = g->m.getlocal( pos );
-- int local_mod = g->new_game ? 0 : g->m.get_temperature( local );
-+ int local_mod = g->new_game ? 0 : g->m.get_temperature( pos );
-
- int enviroment_mod;
- // Toilets and vending machines will try to get the heat radiation and convection during mapgen and segfault.
-diff --git a/src/map.cpp b/src/map.cpp
-index 8a13124b4d..9cc45a6ea6 100755
---- a/src/map.cpp
-+++ b/src/map.cpp
-@@ -6723,9 +6723,8 @@ bool map::has_rotten_away( item &itm, const tripoint &pnt ) const
- template <typename Container>
- void map::remove_rotten_items( Container &items, const tripoint &pnt )
- {
-- const tripoint abs_pnt = getabs( pnt );
- for( auto it = items.begin(); it != items.end(); ) {
-- if( has_rotten_away( *it, abs_pnt ) ) {
-+ if( has_rotten_away( *it, pnt ) ) {
- if( it->is_comestible() ) {
- rotten_item_spawn( *it, pnt );
- }
---
-2.29.2
-
-From ef29ca7c4bc6b9c3278e2bbca1598bdd15572d66 Mon Sep 17 00:00:00 2001
-From: Serhiy Zahoriya <serhiy.int@gmail.com>
-Date: Mon, 15 Jun 2020 16:15:15 +0300
-Subject: [PATCH 3/5] Backported #39405: Update string extraction script and
- fix computer translation
-
-Co-authored-by: Qrox <qrox@sina.com>
----
- lang/extract_json_strings.py | 18 ++++++++++++++----
- src/computer.cpp | 5 +++--
- src/mapgen.cpp | 7 ++++---
- 3 files changed, 21 insertions(+), 9 deletions(-)
-
-diff --git a/lang/extract_json_strings.py b/lang/extract_json_strings.py
-index 92cb76fb0d..f36f705aeb 100755
---- a/lang/extract_json_strings.py
-+++ b/lang/extract_json_strings.py
-@@ -64,8 +64,10 @@ ignore_files = {os.path.normpath(i) for i in {
- ignorable = {
- "ammo_effect",
- "behavior",
-+ "charge_removal_blacklist",
- "city_building",
- "colordef",
-+ "disease_type",
- "emit",
- "enchantment",
- "event_transformation",
-@@ -93,6 +95,7 @@ ignorable = {
- "region_settings",
- "requirement",
- "rotatable_symbol",
-+ "SCENARIO_BLACKLIST",
- "scent_type",
- "skill_boost",
- "TRAIT_BLACKLIST",
-@@ -247,6 +250,9 @@ def extract_martial_art(item):
- if "description" in item:
- writestr(outfile, item["description"],
- comment="Description for martial art '{}'".format(name))
-+ if "initiate" in item:
-+ writestr(outfile, item["initiate"], format_strings=True,
-+ comment="initiate message for martial art '{}'".format(name))
- onhit_buffs = item.get("onhit_buffs", list())
- static_buffs = item.get("static_buffs", list())
- onmove_buffs = item.get("onmove_buffs", list())
-@@ -641,10 +647,14 @@ def extract_missiondef(item):
- def extract_mutation(item):
- outfile = get_outfile("mutation")
-
-- item_name = found = item.get("name")
-+ item_name_or_id = found = item.get("name")
- if found is None:
-- raise WrongJSONItem("JSON item don't contain 'name' field", item)
-- writestr(outfile, found)
-+ if "copy-from" in item:
-+ item_name_or_id = item["id"]
-+ else:
-+ raise WrongJSONItem("JSON item don't contain 'name' field", item)
-+ else:
-+ writestr(outfile, found)
-
- simple_fields = [ "description" ]
-
-@@ -652,7 +662,7 @@ def extract_mutation(item):
- found = item.get(f)
- # Need that check due format string argument
- if found is not None:
-- writestr(outfile, found, comment="Description for {}".format(item_name))
-+ writestr(outfile, found, comment="Description for {}".format(item_name_or_id))
-
- if "attacks" in item:
- attacks = item.get("attacks")
-diff --git a/src/computer.cpp b/src/computer.cpp
-index f11ce32832..b98d2f98c9 100644
---- a/src/computer.cpp
-+++ b/src/computer.cpp
-@@ -377,10 +377,11 @@ struct enum_traits<computer_failure_type> {
-
- computer_option computer_option::from_json( const JsonObject &jo )
- {
-- const std::string name = jo.get_string( "name" );
-+ translation name;
-+ jo.read( "name", name );
- const computer_action action = jo.get_enum_value<computer_action>( "action" );
- const int sec = jo.get_int( "security", 0 );
-- return computer_option( name, action, sec );
-+ return computer_option( name.translated(), action, sec );
- }
-
- computer_failure computer_failure::from_json( const JsonObject &jo )
-diff --git a/src/mapgen.cpp b/src/mapgen.cpp
-index 0d0e8f5043..0da25ea2fb 100644
---- a/src/mapgen.cpp
-+++ b/src/mapgen.cpp
-@@ -1439,14 +1439,14 @@ class jmapgen_make_rubble : public jmapgen_piece
- class jmapgen_computer : public jmapgen_piece
- {
- public:
-- std::string name;
-+ translation name;
- translation access_denied;
- int security;
- std::vector<computer_option> options;
- std::vector<computer_failure> failures;
- bool target;
- jmapgen_computer( const JsonObject &jsi ) {
-- name = jsi.get_string( "name" );
-+ jsi.read( "name", name );
- jsi.read( "access_denied", access_denied );
- security = jsi.get_int( "security", 0 );
- target = jsi.get_bool( "target", false );
-@@ -1466,7 +1466,8 @@ class jmapgen_computer : public jmapgen_piece
- const int ry = y.get();
- dat.m.ter_set( point( rx, ry ), t_console );
- dat.m.furn_set( point( rx, ry ), f_null );
-- computer *cpu = dat.m.add_computer( tripoint( rx, ry, dat.m.get_abs_sub().z ), name, security );
-+ computer *cpu = dat.m.add_computer( tripoint( rx, ry, dat.m.get_abs_sub().z ), name.translated(),
-+ security );
- for( const auto &opt : options ) {
- cpu->add_option( opt );
- }
---
-2.29.2
-
-From 3dd040eed275303c8588bb0809e738e9d327cf0a Mon Sep 17 00:00:00 2001
-From: Serhiy Zahoriya <serhiy.int@gmail.com>
-Date: Mon, 15 Jun 2020 16:20:42 +0300
-Subject: [PATCH 4/5] Backported #40025: Fix a crash when npc tries to heal
- horse-mounted player
-
-Co-authored-by: Qrox <qrox@sina.com>
----
- src/game.cpp | 18 ++++++++++++------
- src/npcmove.cpp | 24 +++++++++++++-----------
- 2 files changed, 25 insertions(+), 17 deletions(-)
-
-diff --git a/src/game.cpp b/src/game.cpp
-index 71772ae859..0b218184fe 100644
---- a/src/game.cpp
-+++ b/src/game.cpp
-@@ -4538,16 +4538,22 @@ template const Creature *game::critter_at<Creature>( const tripoint &, bool ) co
- template<typename T>
- shared_ptr_fast<T> game::shared_from( const T &critter )
- {
-- if( const shared_ptr_fast<monster> mon_ptr = critter_tracker->find( critter.pos() ) ) {
-- return std::dynamic_pointer_cast<T>( mon_ptr );
-- }
- if( static_cast<const Creature *>( &critter ) == static_cast<const Creature *>( &u ) ) {
- // u is not stored in a shared_ptr, but it won't go out of scope anyway
- return std::dynamic_pointer_cast<T>( u_shared_ptr );
- }
-- for( auto &cur_npc : active_npc ) {
-- if( static_cast<const Creature *>( cur_npc.get() ) == static_cast<const Creature *>( &critter ) ) {
-- return std::dynamic_pointer_cast<T>( cur_npc );
-+ if( critter.is_monster() ) {
-+ if( const shared_ptr_fast<monster> mon_ptr = critter_tracker->find( critter.pos() ) ) {
-+ if( static_cast<const Creature *>( mon_ptr.get() ) == static_cast<const Creature *>( &critter ) ) {
-+ return std::dynamic_pointer_cast<T>( mon_ptr );
-+ }
-+ }
-+ }
-+ if( critter.is_npc() ) {
-+ for( auto &cur_npc : active_npc ) {
-+ if( static_cast<const Creature *>( cur_npc.get() ) == static_cast<const Creature *>( &critter ) ) {
-+ return std::dynamic_pointer_cast<T>( cur_npc );
-+ }
- }
- }
- return nullptr;
-diff --git a/src/npcmove.cpp b/src/npcmove.cpp
-index 822fc10a72..0a486dbe18 100644
---- a/src/npcmove.cpp
-+++ b/src/npcmove.cpp
-@@ -916,7 +916,6 @@ void npc::execute_action( npc_action action )
- int oldmoves = moves;
- tripoint tar = pos();
- Creature *cur = current_target();
-- player *patient = dynamic_cast<player *>( current_ally() );
- if( action == npc_flee ) {
- tar = good_escape_direction( false );
- } else if( cur != nullptr ) {
-@@ -1082,18 +1081,21 @@ void npc::execute_action( npc_action action )
- }
- break;
-
-- case npc_heal_player:
-- update_path( patient->pos() );
-- if( path.size() == 1 ) { // We're adjacent to u, and thus can heal u
-- heal_player( *patient );
-- } else if( !path.empty() ) {
-- say( _( "Hold still %s, I'm coming to help you." ), patient->disp_name() );
-- move_to_next();
-- } else {
-- move_pause();
-+ case npc_heal_player: {
-+ player *patient = dynamic_cast<player *>( current_ally() );
-+ if( patient ) {
-+ update_path( patient->pos() );
-+ if( path.size() == 1 ) { // We're adjacent to u, and thus can heal u
-+ heal_player( *patient );
-+ } else if( !path.empty() ) {
-+ say( _( "Hold still %s, I'm coming to help you." ), patient->disp_name() );
-+ move_to_next();
-+ } else {
-+ move_pause();
-+ }
- }
- break;
--
-+ }
- case npc_follow_player:
- update_path( g->u.pos() );
- if( static_cast<int>( path.size() ) <= follow_distance() &&
---
-2.29.2
-
-From 61c109645a63f1bafbcaeded9da50b564e983077 Mon Sep 17 00:00:00 2001
-From: Serhiy Zahoriya <serhiy.int@gmail.com>
-Date: Tue, 16 Jun 2020 10:45:42 +0300
-Subject: [PATCH 5/5] Backported #41346: fix root cellars on map load
-
-Co-authored-by: Hirmuolio <hirmuolio@gmail.com>
----
- src/map.cpp | 18 ++++++++++++------
- src/map.h | 2 +-
- 2 files changed, 13 insertions(+), 7 deletions(-)
-
-diff --git a/src/map.cpp b/src/map.cpp
-index 9cc45a6ea6..e789bbcff5 100755
---- a/src/map.cpp
-+++ b/src/map.cpp
-@@ -6687,13 +6687,13 @@ void map::loadn( const tripoint &grid, const bool update_vehicles )
- abs_sub.z = old_abs_z;
- }
-
--bool map::has_rotten_away( item &itm, const tripoint &pnt ) const
-+bool map::has_rotten_away( item &itm, const tripoint &pnt, const temperature_flag flag ) const
- {
- if( itm.is_corpse() && itm.goes_bad() ) {
-- itm.process_temperature_rot( 1, pnt, nullptr );
-+ itm.process_temperature_rot( 1, pnt, nullptr, flag );
- return itm.get_rot() > 10_days && !itm.can_revive();
- } else if( itm.goes_bad() ) {
-- itm.process_temperature_rot( 1, pnt, nullptr );
-+ itm.process_temperature_rot( 1, pnt, nullptr, flag );
- return itm.has_rotten_away();
- } else if( itm.type->container && itm.type->container->preserves ) {
- // Containers like tin cans preserves all items inside, they do not rot at all.
-@@ -6702,14 +6702,14 @@ bool map::has_rotten_away( item &itm, const tripoint &pnt ) const
- // Items inside rot but do not vanish as the container seals them in.
- for( auto &c : itm.contents ) {
- if( c.goes_bad() ) {
-- c.process_temperature_rot( 1, pnt, nullptr );
-+ c.process_temperature_rot( 1, pnt, nullptr, flag );
- }
- }
- return false;
- } else {
- // Check and remove rotten contents, but always keep the container.
- for( auto it = itm.contents.begin(); it != itm.contents.end(); ) {
-- if( has_rotten_away( *it, pnt ) ) {
-+ if( has_rotten_away( *it, pnt, flag ) ) {
- it = itm.contents.erase( it );
- } else {
- ++it;
-@@ -6723,8 +6723,14 @@ bool map::has_rotten_away( item &itm, const tripoint &pnt ) const
- template <typename Container>
- void map::remove_rotten_items( Container &items, const tripoint &pnt )
- {
-+ temperature_flag flag;
-+ if( ter( pnt ) == t_rootcellar ) {
-+ flag = TEMP_ROOT_CELLAR;
-+ } else {
-+ flag = TEMP_NORMAL;
-+ }
- for( auto it = items.begin(); it != items.end(); ) {
-- if( has_rotten_away( *it, pnt ) ) {
-+ if( has_rotten_away( *it, pnt, flag ) ) {
- if( it->is_comestible() ) {
- rotten_item_spawn( *it, pnt );
- }
-diff --git a/src/map.h b/src/map.h
-index 7cdb3dcb50..48ab479d88 100644
---- a/src/map.h
-+++ b/src/map.h
-@@ -1488,7 +1488,7 @@ class map
- * used for rot calculation.
- * @return true if the item has rotten away and should be removed, false otherwise.
- */
-- bool has_rotten_away( item &itm, const tripoint &pnt ) const;
-+ bool has_rotten_away( item &itm, const tripoint &pnt, temperature_flag flag = TEMP_NORMAL ) const;
- /**
- * Go through the list of items, update their rotten status and remove items
- * that have rotten away completely.
---
-2.29.2
-