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]; }