GreatPeopleDirectiveTypes CvPlayerAI::GetDirectiveMerchant(CvUnit* pGreatMerchant) { GreatPeopleDirectiveTypes eDirective = NO_GREAT_PEOPLE_DIRECTIVE_TYPE; // if the merchant is in an army, he's already marching to a destination, so don't evaluate him if(pGreatMerchant->getArmyID() != FFreeList::INVALID_INDEX) { return NO_GREAT_PEOPLE_DIRECTIVE_TYPE; } if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && GC.getGame().getGameTurn() <= ((GC.getGame().getEstimateEndTurn() * 2) / 4)) { if (GetDiplomacyAI()->IsGoingForDiploVictory()) { eDirective = GREAT_PEOPLE_DIRECTIVE_CONSTRUCT_IMPROVEMENT; } } // Attempt a run to a minor civ if(eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && IsSafe(this)) { CvPlot* pTarget = FindBestMerchantTargetPlot(pGreatMerchant, true); if(pTarget) { eDirective = GREAT_PEOPLE_DIRECTIVE_USE_POWER; } } if(eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && (GC.getGame().getGameTurn() - pGreatMerchant->getGameTurnCreated()) >= GC.getAI_HOMELAND_GREAT_PERSON_TURNS_TO_WAIT()) { eDirective = GREAT_PEOPLE_DIRECTIVE_CONSTRUCT_IMPROVEMENT; } return eDirective; }
GreatPeopleDirectiveTypes CvPlayerAI::GetDirectiveMerchant (CvUnit* pGreatMerchant) { GreatPeopleDirectiveTypes eDirective = NO_GREAT_PEOPLE_DIRECTIVE_TYPE; // if the merchant is in an army, he's already marching to a destination, so don't evaluate him if (pGreatMerchant->getArmyID() != FFreeList::INVALID_INDEX) { return NO_GREAT_PEOPLE_DIRECTIVE_TYPE; } if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && PreparingForWar(this) && !isGoldenAge()) { eDirective = GREAT_PEOPLE_DIRECTIVE_GOLDEN_AGE; } // Attempt a run to a minor civ if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && IsSafe(this)) { CvPlot* pTarget = FindBestMerchantTargetPlot (pGreatMerchant, true); if (pTarget) { eDirective = GREAT_PEOPLE_DIRECTIVE_USE_POWER; } } if (eDirective == NO_GREAT_PEOPLE_DIRECTIVE_TYPE && (GC.getGame().getGameTurn() - pGreatMerchant->getGameTurnCreated()) >= GC.getAI_HOMELAND_GREAT_PERSON_TURNS_TO_WAIT()) { eDirective = GetUnresolvedAction(this, pGreatMerchant); } return eDirective; }