Bazaar developer reference

CvPlayerEspionage::CalcRequired(int, CvCity *, int)

Defined in
CvEspionageClasses.cpp, line 1818
Class
CvPlayerEspionage
Hook name
CivHooks::CvPlayerEspionage_CalcRequired

Hooks

static bool BeforeCvPlayerEspionage_CalcRequired(CvPlayerEspionage* self, int iSpyState, CvCity* pCity, int iSpyIndex, int& result);static void AfterCvPlayerEspionage_CalcRequired(CvPlayerEspionage* self, int iSpyState, CvCity* pCity, int iSpyIndex, int& result);static int ReplaceCvPlayerEspionage_CalcRequired(int (*original)(CvPlayerEspionage*, int, CvCity*, int), CvPlayerEspionage* self, int iSpyState, CvCity* pCity, int iSpyIndex);CivRegisterBefore<CivHooks::CvPlayerEspionage_CalcRequired>(host, &BeforeCvPlayerEspionage_CalcRequired);CivRegisterAfter<CivHooks::CvPlayerEspionage_CalcRequired>(host, &AfterCvPlayerEspionage_CalcRequired);CivRegisterReplace<CivHooks::CvPlayerEspionage_CalcRequired>(host, &ReplaceCvPlayerEspionage_CalcRequired);

Code

1817/// CalcRequired - How much the spy is needed to do to accomplish this task1818int CvPlayerEspionage::CalcRequired(int iSpyState, CvCity* pCity, int iSpyIndex)1819{1820	DEBUG_VARIABLE(iSpyIndex);1821	CvAssertMsg(pCity, "pCity is null");1822	CvAssertMsg(iSpyIndex >= 0, "iSpyIndex is out of bounds");18231824	switch(iSpyState)1825	{1826	case SPY_STATE_TRAVELLING:1827	{1828		return iSpyTurnsToTravel;1829	}1830	break;1831	case SPY_STATE_SURVEILLANCE:1832	{1833		int iTime = 3;1834		if (pCity)1835		{1836			iTime = m_pPlayer->GetCulture()->GetInfluenceSurveillanceTime(pCity->getOwner());1837		}1838		return iTime;1839	}1840	break;1841	case SPY_STATE_GATHERING_INTEL:1842	{1843		if(pCity)1844		{1845			PlayerTypes ePlayer = pCity->getOwner();1846			CvAssertMsg(!GET_PLAYER(ePlayer).isMinorCiv(), "Can't spy on a minor civ");1847			CvAssertMsg(!GET_PLAYER(ePlayer).isBarbarian(), "Can't spy on barbarians");1848			if(GET_PLAYER(ePlayer).isMinorCiv() || GET_PLAYER(ePlayer).isBarbarian())1849			{1850				return -1;1851			}18521853			CvAssertMsg(m_aiMaxTechCost[ePlayer] >= 0, "m_aiMaxTechCost[ePlayer] is below zero");1854			uint uiMaxTechCostAdjusted = m_aiMaxTechCost[ePlayer];			1855			uiMaxTechCostAdjusted *= GC.getESPIONAGE_GATHERING_INTEL_COST_PERCENT();1856			uiMaxTechCostAdjusted /= 100;1857			int iMaxTechCostAdjusted = uiMaxTechCostAdjusted;1858			CvAssertMsg(m_aiMaxTechCost[ePlayer] >= 0, "iMaxTechCostAdjusted is below zero. Overflow!");1859			return iMaxTechCostAdjusted;1860		}1861	}1862	break;1863	case SPY_STATE_RIG_ELECTION:1864	{1865		return GC.getGame().GetTurnsUntilMinorCivElection();1866	}1867	break;1868	case SPY_STATE_MAKING_INTRODUCTIONS:1869	{1870		return (iSpyTurnsToMakeIntroductions * GC.getGame().getGameSpeedInfo().getLeaguePercent()) / 100;1871	}1872	break;1873	}18741875	CvAssertMsg(false, "CalcRequired cannot handle that iSpyState");1876	return -1;1877}

Calls

Called by