See my comments below BTW I am doing some training, I hope this will not interfere. Once it is merged, I will re-train too..
Diff comments: > > === modified file 'src/ai/defaultai.cc' > --- src/ai/defaultai.cc 2019-05-17 11:45:39 +0000 > +++ src/ai/defaultai.cc 2019-05-18 13:37:09 +0000 > @@ -2489,21 +2499,25 @@ > > // Now verifying that all 'buildable' buildings has > positive max_needed_preciousness > // if they have outputs, all other must have zero > max_needed_preciousness > - if ((bo.new_building == BuildingNecessity::kNeeded || > - bo.new_building == BuildingNecessity::kForced || > - bo.new_building == BuildingNecessity::kAllowed || > - bo.new_building == > BuildingNecessity::kNeededPending) && > - (!bo.outputs.empty() || > bo.is(BuildingAttribute::kBarracks))) { > - if (bo.max_needed_preciousness <= 0) { > - throw wexception("AI: Max presciousness > must not be <= 0 for building: %s", > - > bo.desc->name().c_str()); > - } > - } else if (bo.new_building == > BuildingNecessity::kForbidden) { > + > + if (bo.new_building == BuildingNecessity::kForbidden) { > bo.max_needed_preciousness = 0; > } else { > - // For other situations we make sure > max_needed_preciousness is zero > - > - assert(bo.max_needed_preciousness == 0); > + bo.max_needed_preciousness = > std::max(bo.max_needed_preciousness, bo.initial_preciousness); > + bo.max_preciousness = > std::max(bo.max_preciousness, bo.initial_preciousness); > + if ((bo.new_building == > BuildingNecessity::kNeeded || > + bo.new_building == > BuildingNecessity::kForced || > + bo.new_building == > BuildingNecessity::kAllowed || > + bo.new_building == > BuildingNecessity::kNeededPending) && > + (!bo.outputs.empty() || > bo.is(BuildingAttribute::kBarracks))) { > + if (bo.max_needed_preciousness <= 0) { > + throw wexception("AI: Max > presciousness must not be <= 0 for building: %s", > + > bo.desc->name().c_str()); > + } > + } else { > + // For other situations we make sure > max_needed_preciousness is zero > + // NOCOM this fails for recruitment > sites now assert(bo.max_needed_preciousness == 0); This assert? See comment few lines above: // Now verifying that all 'buildable' buildings has positive max_needed_preciousness // if they have outputs, all other must have zero max_needed_preciousness Also note the line: (!bo.outputs.empty() || bo.is(BuildingAttribute::kBarracks)) So you should add recruitements sites here too (the same exemptions as barracks), what do you think? > + } > } > > // Positive max_needed_preciousness says a building > type is needed -- https://code.launchpad.net/~widelands-dev/widelands/bug-1829471-worker-preciousness/+merge/367608 Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1829471-worker-preciousness into lp:widelands. _______________________________________________ Mailing list: https://launchpad.net/~widelands-dev Post to : widelands-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~widelands-dev More help : https://help.launchpad.net/ListHelp