Bazaar developer reference

CvEconomicAI::DisbandExtraArchaeologists()

Defined in
CvEconomicAI.cpp, line 2497
Class
CvEconomicAI
Hook name
CivHooks::CvEconomicAI_DisbandExtraArchaeologists

Hooks

static bool BeforeCvEconomicAI_DisbandExtraArchaeologists(CvEconomicAI* self);static void AfterCvEconomicAI_DisbandExtraArchaeologists(CvEconomicAI* self);static void ReplaceCvEconomicAI_DisbandExtraArchaeologists(void (*original)(CvEconomicAI*), CvEconomicAI* self);CivRegisterBefore<CivHooks::CvEconomicAI_DisbandExtraArchaeologists>(host, &BeforeCvEconomicAI_DisbandExtraArchaeologists);CivRegisterAfter<CivHooks::CvEconomicAI_DisbandExtraArchaeologists>(host, &AfterCvEconomicAI_DisbandExtraArchaeologists);CivRegisterReplace<CivHooks::CvEconomicAI_DisbandExtraArchaeologists>(host, &ReplaceCvEconomicAI_DisbandExtraArchaeologists);

Code

2497void CvEconomicAI::DisbandExtraArchaeologists(){2498	int iNumSites = GC.getGame().GetNumArchaeologySites();2499	double dMaxRatio = .5; //Ratio of archaeologists to sites2500	int iNumArchaeologists = m_pPlayer->GetNumUnitsWithUnitAI(UNITAI_ARCHAEOLOGIST, true);2501	PolicyTypes eExpFinisher = (PolicyTypes) GC.getInfoTypeForString("POLICY_EXPLORATION_FINISHER", true /*bHideAssert*/);2502	if (eExpFinisher != NO_POLICY)	2503	{2504		if (m_pPlayer->GetPlayerPolicies()->HasPolicy(eExpFinisher))2505		{2506			iNumSites += GC.getGame().GetNumHiddenArchaeologySites();2507		}2508	}2509	2510	CvUnit* pUnit;2511#if defined(MOD_BUGFIX_UNITCLASS_NOT_UNIT)2512	UnitTypes eArch = m_pPlayer->GetSpecificUnitType("UNITCLASS_ARCHAEOLOGIST", true);2513#else2514	UnitTypes eArch = (UnitTypes) GC.getInfoTypeForString("UNIT_ARCHAEOLOGIST", true /*bHideAssert*/);2515#endif2516	if(eArch == NO_UNIT){2517		return;2518	}2519	if ((double)iNumSites * dMaxRatio + 1 < iNumArchaeologists ){2520		pUnit = FindArchaeologistToScrap();2521	2522		if(!pUnit)2523		{2524			return;2525		}2526	2527		pUnit->scrap();2528		LogScrapUnit(pUnit, iNumArchaeologists, iNumSites, 0, 0);2529	}2530}

Calls

Called by