Bazaar developer reference

CvPlayerEspionage::SetOutcome(uint, uint, bool)

Defined in
CvEspionageClasses.cpp, line 1639
Class
CvPlayerEspionage
Hook name
CivHooks::CvPlayerEspionage_SetOutcome

Hooks

static bool BeforeCvPlayerEspionage_SetOutcome(CvPlayerEspionage* self, uint uiSpyIndex, uint uiSpyResult, bool bAffectsDiplomacy);static void AfterCvPlayerEspionage_SetOutcome(CvPlayerEspionage* self, uint uiSpyIndex, uint uiSpyResult, bool bAffectsDiplomacy);static void ReplaceCvPlayerEspionage_SetOutcome(void (*original)(CvPlayerEspionage*, uint, uint, bool), CvPlayerEspionage* self, uint uiSpyIndex, uint uiSpyResult, bool bAffectsDiplomacy);CivRegisterBefore<CivHooks::CvPlayerEspionage_SetOutcome>(host, &BeforeCvPlayerEspionage_SetOutcome);CivRegisterAfter<CivHooks::CvPlayerEspionage_SetOutcome>(host, &AfterCvPlayerEspionage_SetOutcome);CivRegisterReplace<CivHooks::CvPlayerEspionage_SetOutcome>(host, &ReplaceCvPlayerEspionage_SetOutcome);

Code

1638/// SetOutcome - Forces the outcome of an (external) espionage activity1639void CvPlayerEspionage::SetOutcome(uint uiSpyIndex, uint uiSpyResult, bool bAffectsDiplomacy) {1640	CvEspionageSpy* pSpy = &(m_aSpyList[uiSpyIndex]);1641	PlayerTypes eCityOwner = NO_PLAYER;1642	CvPlot* pCityPlot = GC.getMap().plot(pSpy->m_iCityX, pSpy->m_iCityY);1643	if (pCityPlot) {1644		CvCity* pCity = pCityPlot->getPlotCity();1645		if (pCity) {1646			eCityOwner = pCity->getOwner();1647		}1648	}16491650	switch(uiSpyResult) {1651	case SPY_RESULT_UNDETECTED:1652		// Nothing much happening here1653		break;1654	case SPY_RESULT_DETECTED:1655		// The defended will be mad, but not know who to be mad at!1656		break;1657	case SPY_RESULT_IDENTIFIED:1658		if (bAffectsDiplomacy && eCityOwner != NO_PLAYER) {1659			CvEspionageAI* pDefenderEspionageAI = GET_PLAYER(eCityOwner).GetEspionageAI();1660			CvAssertMsg(pDefenderEspionageAI, "pDefenderEspionageAI is null");1661			if (pDefenderEspionageAI) {1662				pDefenderEspionageAI->m_aiTurnLastSpyCaught[m_pPlayer->GetID()] = GC.getGame().getGameTurn();1663				pDefenderEspionageAI->m_aiNumSpiesCaught[m_pPlayer->GetID()]++;1664			}1665		}1666		break;1667	case SPY_RESULT_KILLED:1668	case SPY_RESULT_ELIMINATED:1669		ExtractSpyFromCity(uiSpyIndex); // move the dead body out so that someone else can move in1670#if defined(MOD_API_ESPIONAGE)1671		pSpy->SetSpyState(m_pPlayer->GetID(), uiSpyIndex, (uiSpyResult == SPY_RESULT_KILLED) ? SPY_STATE_DEAD : SPY_STATE_TERMINATED);1672#else1673		pSpy->m_eSpyState = (uiSpyResult == SPY_RESULT_KILLED) ? SPY_STATE_DEAD : SPY_STATE_TERMINATED;1674#endif16751676		if (bAffectsDiplomacy && eCityOwner != NO_PLAYER) {1677			CvEspionageAI* pDefenderEspionageAI = GET_PLAYER(eCityOwner).GetEspionageAI();1678			CvAssertMsg(pDefenderEspionageAI, "pDefenderEspionageAI is null");1679			if (pDefenderEspionageAI) {1680				pDefenderEspionageAI->m_aiTurnLastSpyKilled[m_pPlayer->GetID()] = GC.getGame().getGameTurn();1681				pDefenderEspionageAI->m_aiNumSpiesKilled[m_pPlayer->GetID()]++;1682			}16831684			CvEspionageAI* pEspionageAI = m_pPlayer->GetEspionageAI();1685			CvAssertMsg(pEspionageAI, "pEspionageAI is null");1686			if (pEspionageAI) {1687				pEspionageAI->m_aiTurnLastSpyDied[eCityOwner] = GC.getGame().getGameTurn();1688				pEspionageAI->m_aiNumSpiesDied[eCityOwner]++;1689			}1690		}1691		break;1692	}1693}

Calls

Called by