From 143e351df15f7afe01e674684253d12a5bba3488 Mon Sep 17 00:00:00 2001 From: Alexey Date: Fri, 10 May 2024 08:59:39 +0300 Subject: [PATCH 1/2] Don't require unbroken parts for fake part generation (#73596) --- src/vehicle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index efcaeec1e80d9..70c9e7a283e9e 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -6284,7 +6284,7 @@ void vehicle::refresh( const bool remove_fakes ) } const auto need_fake_part = [&]( const point & real_mount, const std::string & flag ) { - int real = part_with_feature( real_mount, flag, true ); + int real = part_with_feature( real_mount, flag, false ); if( real >= 0 && real < part_count() ) { return real; } From 6429c7ddae11d79c9ae8577f46d2b82695e04792 Mon Sep 17 00:00:00 2001 From: anothersimulacrum Date: Sun, 16 Jun 2024 23:50:09 +0000 Subject: [PATCH 2/2] break fake parts when main part breaks --- src/vehicle.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 70c9e7a283e9e..18ffb6d2d5c8e 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -7402,6 +7402,10 @@ int vehicle::damage_direct( map &here, vehicle_part &vp, int dmg, const damage_t invalidate_mass(); coeff_air_changed = true; + // update the fake part + if( vp.has_fake ) { + parts[vp.fake_part_at].base = vp.base; + } // refresh cache in case the broken part has changed the status // do not remove fakes parts in case external vehicle part references get invalidated refresh( false );