diff --git a/AI/VCAI/FuzzyEngines.cpp b/AI/VCAI/FuzzyEngines.cpp index 7d9dbc40f..9126b23dd 100644 --- a/AI/VCAI/FuzzyEngines.cpp +++ b/AI/VCAI/FuzzyEngines.cpp @@ -382,7 +382,7 @@ float VisitObjEngine::evaluate(Goals::VisitObj & goal) else { MapObjectsEvaluator::getInstance().addObjectData(obj->ID, obj->subID, 0); - logGlobal->warn("AI met object type it doesn't know - ID: " + std::to_string(obj->ID) + ", subID: " + std::to_string(obj->subID) + " - adding to database with value " + std::to_string(objValue)); + logGlobal->error("AI met object type it doesn't know - ID: " + std::to_string(obj->ID) + ", subID: " + std::to_string(obj->subID) + " - adding to database with value " + std::to_string(objValue)); } setSharedFuzzyVariables(goal); diff --git a/AI/VCAI/MapObjectsEvaluator.cpp b/AI/VCAI/MapObjectsEvaluator.cpp index ac3b336e8..b1b9cf917 100644 --- a/AI/VCAI/MapObjectsEvaluator.cpp +++ b/AI/VCAI/MapObjectsEvaluator.cpp @@ -3,6 +3,8 @@ #include "../../lib/GameConstants.h" #include "../../lib/VCMI_Lib.h" #include "../../lib/CCreatureHandler.h" +#include "../../lib/CHeroHandler.h" +#include "../../lib/mapObjects/CGHeroInstance.h" #include "../../lib/mapObjects/CGTownInstance.h" #include "../../lib/mapObjects/MiscObjects.h" #include "../../lib/CRandomGenerator.h" @@ -56,6 +58,12 @@ boost::optional MapObjectsEvaluator::getObjectValue(int primaryID, int seco boost::optional MapObjectsEvaluator::getObjectValue(const CGObjectInstance * obj) const { + if(obj->ID == Obj::HERO) + { + //special case handling: in-game heroes have hero ID as object subID, but when reading configs available hero object subID's are hero classes + auto hero = dynamic_cast(obj); + return getObjectValue(obj->ID, hero->type->heroClass->id); + } if(obj->ID == Obj::CREATURE_GENERATOR1 || obj->ID == Obj::CREATURE_GENERATOR4) { auto dwelling = dynamic_cast(obj);