diff --git a/AI/VCAI/Goals.cpp b/AI/VCAI/Goals.cpp index 8c7603ecb..2469887bb 100644 --- a/AI/VCAI/Goals.cpp +++ b/AI/VCAI/Goals.cpp @@ -1142,10 +1142,11 @@ TGoalVec Goals::CollectRes::getAllPossibleSubgoals() } for (auto obj : ourObjs) { - if (ai->isAccessibleForHero(obj->visitablePos(), h)) - { - //further decomposition and evaluation will be handled by VisitObj - ret.push_back(sptr(Goals::VisitObj(obj->id.getNum()).sethero(h).setisAbstract(true))); + auto pos = obj->visitablePos(); + if (ai->isAccessibleForHero(pos, h)) + { + if (ai->isTileNotReserved(h, pos)) //further decomposition and evaluation will be handled by VisitObj + ret.push_back(sptr(Goals::VisitObj(obj->id.getNum()).sethero(h).setisAbstract(true))); } } } diff --git a/AI/VCAI/Goals.h b/AI/VCAI/Goals.h index 89806f630..45c76fb7f 100644 --- a/AI/VCAI/Goals.h +++ b/AI/VCAI/Goals.h @@ -432,7 +432,7 @@ public: resID = rid; value = val; objid = Objid; - priority = 10; //do it immediately + priority = 3; //trading is instant, but picking resources is free } TSubgoal whatToDoToAchieve() override; bool operator==(AbstractGoal & g) override;