CvPlayerCulture::GetArchaeologyChoice(CvPlot *)
- Defined in
- CvCultureClasses.cpp, line 2131
- Class
- CvPlayerCulture
- Hook name
CivHooks::CvPlayerCulture_GetArchaeologyChoice
Hooks
static bool BeforeCvPlayerCulture_GetArchaeologyChoice(CvPlayerCulture* self, CvPlot * pPlot, ArchaeologyChoiceType& result);static void AfterCvPlayerCulture_GetArchaeologyChoice(CvPlayerCulture* self, CvPlot * pPlot, ArchaeologyChoiceType& result);static ArchaeologyChoiceType ReplaceCvPlayerCulture_GetArchaeologyChoice(ArchaeologyChoiceType (*original)(CvPlayerCulture*, CvPlot *), CvPlayerCulture* self, CvPlot * pPlot);CivRegisterBefore<CivHooks::CvPlayerCulture_GetArchaeologyChoice>(host, &BeforeCvPlayerCulture_GetArchaeologyChoice);CivRegisterAfter<CivHooks::CvPlayerCulture_GetArchaeologyChoice>(host, &AfterCvPlayerCulture_GetArchaeologyChoice);CivRegisterReplace<CivHooks::CvPlayerCulture_GetArchaeologyChoice>(host, &ReplaceCvPlayerCulture_GetArchaeologyChoice);
Code
2130/// AI routine - choose what to do with a completed dig site2131ArchaeologyChoiceType CvPlayerCulture::GetArchaeologyChoice(CvPlot *pPlot)2132{2133 ArchaeologyChoiceType eRtnValue = ARCHAEOLOGY_DO_NOTHING;21342135 GreatWorkSlotType eArtArtifactSlot = CvTypes::getGREAT_WORK_SLOT_ART_ARTIFACT();21362137 if (pPlot->HasWrittenArtifact())2138 {2139 eRtnValue = ARCHAEOLOGY_ARTIFACT_WRITING;2140 }2141 2142 // No slots? Definitely go for Landmark or Cultural Renaissance2143 if (!HasAvailableGreatWorkSlot(eArtArtifactSlot))2144 {2145 if (pPlot->HasWrittenArtifact())2146 {2147 eRtnValue = ARCHAEOLOGY_CULTURE_BOOST;2148 }2149 else2150 {2151 eRtnValue = ARCHAEOLOGY_LANDMARK;2152 }2153 }21542155 // Outside territory? Go for artifact ...2156 else if (pPlot->getOwner() != m_pPlayer->GetID())2157 {2158 eRtnValue = ARCHAEOLOGY_ARTIFACT_PLAYER1;21592160 // ... unless this is a city state we want to influence to help with diplo victory2161 if (pPlot->getOwner() != NO_PLAYER && GET_PLAYER(pPlot->getOwner()).isMinorCiv())2162 {2163 if (m_pPlayer->GetGrandStrategyAI()->GetActiveGrandStrategy() == (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_UNITED_NATIONS"))2164 {2165 if (m_pPlayer->GetDiplomacyAI()->GetMinorCivApproach(pPlot->getOwner()) != MINOR_CIV_APPROACH_CONQUEST)2166 {2167 eRtnValue = ARCHAEOLOGY_LANDMARK;2168 }2169 }2170 }2171 }21722173 // Not a tile a city can work? Go for artifact2174 else if (pPlot->getWorkingCity() == NULL)2175 {2176 eRtnValue = ARCHAEOLOGY_ARTIFACT_PLAYER1;2177 }21782179 // Otherwise go for Landmark if from Ancient Era, or if have enough other Archaeologists and Antiquity sites to fill all slots2180 else if (pPlot->GetArchaeologicalRecord().m_eEra == 0)2181 {2182 eRtnValue = ARCHAEOLOGY_LANDMARK;2183 }21842185 else2186 {2187 int iNumArchaeologists = m_pPlayer->GetNumUnitsWithUnitAI(UNITAI_ARCHAEOLOGIST, true) - 1 /* For this one that just completed work */;2188 int iNumSites = m_pPlayer->GetEconomicAI()->GetVisibleAntiquitySites() - 1 /* For this one then just was completed */;2189 int iNumGreatWorkSlots = m_pPlayer->GetCulture()->GetNumAvailableGreatWorkSlots(eArtArtifactSlot);2190 int iLimitingFactor = min(iNumArchaeologists, iNumSites);21912192 if (iNumGreatWorkSlots <= iLimitingFactor)2193 {2194 if (pPlot->HasWrittenArtifact())2195 {2196 eRtnValue = ARCHAEOLOGY_CULTURE_BOOST;2197 }2198 else2199 {2200 eRtnValue = ARCHAEOLOGY_LANDMARK;2201 }2202 }2203 else2204 {2205 eRtnValue = ARCHAEOLOGY_ARTIFACT_PLAYER1;2206 }2207 }22082209 // If chose an artifact, would player 2's be better?2210 if (eRtnValue == ARCHAEOLOGY_ARTIFACT_PLAYER1)2211 {2212 if (pPlot->GetArchaeologicalRecord().m_ePlayer2 == m_pPlayer->GetID())2213 {2214 // For now have AI player try to collect their own artifacts2215 eRtnValue = ARCHAEOLOGY_ARTIFACT_PLAYER2;2216 }2217 }22182219 return eRtnValue;2220}
Calls
- CvDiplomacyAI::GetMinorCivApproach(PlayerTypes) const
- CvEconomicAI::GetVisibleAntiquitySites() const
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvGrandStrategyAI::GetActiveGrandStrategy() const
- CvPlayer::GetCulture() const
- CvPlayer::GetDiplomacyAI() const
- CvPlayer::GetEconomicAI() const
- CvPlayer::GetGrandStrategyAI() const
- CvPlayer::GetID() const
- CvPlayer::GetNumUnitsWithUnitAI(UnitAITypes, bool, bool)
- CvPlayer::isMinorCiv() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerCulture::GetNumAvailableGreatWorkSlots(GreatWorkSlotType) const
- CvPlayerCulture::HasAvailableGreatWorkSlot(GreatWorkSlotType)
- CvPlot::GetArchaeologicalRecord() const
- CvPlot::getOwner() const
- CvPlot::getWorkingCity() const
- CvPlot::HasWrittenArtifact() const
- CvTypes::getGREAT_WORK_SLOT_ART_ARTIFACT()
std::min