From f64e1cdae0323314189286bed78c95ff58eba795 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sat, 27 Sep 2025 18:12:49 +0100 Subject: [PATCH] Fix: Industry accept/produce when not contiguous range from 0 (#14555) --- src/industry_cmd.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index d1e273ab4b..08dbdc4efc 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1761,17 +1761,25 @@ static void DoCreateNewIndustry(Industry *i, TileIndex tile, IndustryType type, auto &industries = Industry::industries[type]; industries.insert(i->index); + size_t produced_count = 0; for (size_t index = 0; index < std::size(indspec->produced_cargo); ++index) { - if (!IsValidCargoType(indspec->produced_cargo[index])) break; - + if (IsValidCargoType(indspec->produced_cargo[index])) { + produced_count = index + 1; + } + } + for (size_t index = 0; index < produced_count; ++index) { Industry::ProducedCargo &p = i->produced.emplace_back(); p.cargo = indspec->produced_cargo[index]; p.rate = indspec->production_rate[index]; } + size_t accepted_count = 0; for (size_t index = 0; index < std::size(indspec->accepts_cargo); ++index) { - if (!IsValidCargoType(indspec->accepts_cargo[index])) break; - + if (IsValidCargoType(indspec->accepts_cargo[index])) { + accepted_count = index + 1; + } + } + for (size_t index = 0; index < accepted_count; ++index) { Industry::AcceptedCargo &a = i->accepted.emplace_back(); a.cargo = indspec->accepts_cargo[index]; }