Bazaar developer reference

CvDangerPlots::IsDangerByRelationshipZero(PlayerTypes, CvPlot *)

Defined in
CvDangerPlots.cpp, line 399
Class
CvDangerPlots
Hook name
CivHooks::CvDangerPlots_IsDangerByRelationshipZero

Hooks

static bool BeforeCvDangerPlots_IsDangerByRelationshipZero(CvDangerPlots* self, PlayerTypes ePlayer, CvPlot* pPlot, bool& result);static void AfterCvDangerPlots_IsDangerByRelationshipZero(CvDangerPlots* self, PlayerTypes ePlayer, CvPlot* pPlot, bool& result);static bool ReplaceCvDangerPlots_IsDangerByRelationshipZero(bool (*original)(CvDangerPlots*, PlayerTypes, CvPlot*), CvDangerPlots* self, PlayerTypes ePlayer, CvPlot* pPlot);CivRegisterBefore<CivHooks::CvDangerPlots_IsDangerByRelationshipZero>(host, &BeforeCvDangerPlots_IsDangerByRelationshipZero);CivRegisterAfter<CivHooks::CvDangerPlots_IsDangerByRelationshipZero>(host, &AfterCvDangerPlots_IsDangerByRelationshipZero);CivRegisterReplace<CivHooks::CvDangerPlots_IsDangerByRelationshipZero>(host, &ReplaceCvDangerPlots_IsDangerByRelationshipZero);

Code

397//	Returns true if the relationship of the danger plots owner and the input player and plot owner398//	would result in a 0 danger.  This helps avoid costly path finder calls if the end result will be 0.399bool CvDangerPlots::IsDangerByRelationshipZero(PlayerTypes ePlayer, CvPlot* pPlot)400{401	CvAssertMsg(pPlot, "No plot passed in?");402	bool bIgnoreInFriendlyTerritory = false;403404	// Full value if a player we're at war with405	if(GET_TEAM(GET_PLAYER(m_ePlayer).getTeam()).isAtWar(GET_PLAYER(ePlayer).getTeam()))406	{407		return false;408	}409410	// if it's a human player, ignore neutral units411	if(GET_PLAYER(m_ePlayer).isHuman())412	{413		return true;414	}415416	bool bResultMultiplierIsZero = false;417	if(GET_PLAYER(m_ePlayer).isMinorCiv())  // if the evaluator is a minor civ418	{419		if(!GET_TEAM(GET_PLAYER(m_ePlayer).getTeam()).isAtWar(GET_PLAYER(ePlayer).getTeam()))  // and they're not at war with the other player420		{421			bIgnoreInFriendlyTerritory = true; // ignore friendly territory422		}423	}424	else if(!GET_PLAYER(ePlayer).isMinorCiv())425	{426		// should we be using bHideTrueFeelings?427		switch(GET_PLAYER(m_ePlayer).GetDiplomacyAI()->GetMajorCivApproach(ePlayer, /*bHideTrueFeelings*/ false))428		{429		case MAJOR_CIV_APPROACH_WAR:430			bResultMultiplierIsZero = m_fMajorWarMod == 0.f;431			break;432		case MAJOR_CIV_APPROACH_HOSTILE:433			bResultMultiplierIsZero = m_fMajorHostileMod == 0.f;434			bIgnoreInFriendlyTerritory = true;435			break;436		case MAJOR_CIV_APPROACH_DECEPTIVE:437			bResultMultiplierIsZero = m_fMajorDeceptiveMod == 0.f;438			bIgnoreInFriendlyTerritory = true;439			break;440		case MAJOR_CIV_APPROACH_GUARDED:441			bResultMultiplierIsZero = m_fMajorGuardedMod == 0.f;442			bIgnoreInFriendlyTerritory = true;443			break;444		case MAJOR_CIV_APPROACH_AFRAID:445			bResultMultiplierIsZero = m_fMajorAfraidMod == 0.f;446			bIgnoreInFriendlyTerritory = true;447			break;448		case MAJOR_CIV_APPROACH_FRIENDLY:449			bResultMultiplierIsZero = m_fMajorFriendlyMod == 0.f;450			bIgnoreInFriendlyTerritory = true;451			break;452		case MAJOR_CIV_APPROACH_NEUTRAL:453			bResultMultiplierIsZero = m_fMajorNeutralMod == 0.f;454			bIgnoreInFriendlyTerritory = true;455			break;456		}457	}458	else459	{460		switch(GET_PLAYER(m_ePlayer).GetDiplomacyAI()->GetMinorCivApproach(ePlayer))461		{462		case MINOR_CIV_APPROACH_IGNORE:463			bResultMultiplierIsZero = m_fMinorNeutralrMod == 0.f;464			bIgnoreInFriendlyTerritory = true;465			break;466		case MINOR_CIV_APPROACH_FRIENDLY:467			bResultMultiplierIsZero = m_fMinorFriendlyMod == 0.f;468			bIgnoreInFriendlyTerritory = true;469			break;470		case MINOR_CIV_APPROACH_BULLY:471			bResultMultiplierIsZero = (m_fMinorBullyMod == 0.f);472			break;473		case MINOR_CIV_APPROACH_CONQUEST:474			bResultMultiplierIsZero = m_fMinorConquestMod == 0.f;475			break;476		}477	}478479	// if the plot is in our own territory and, with the current approach, we should ignore danger values in our own territory480	// zero out the value481	if(pPlot && pPlot->getOwner() == m_ePlayer && bIgnoreInFriendlyTerritory)482	{483		return true;484	}485486	return bResultMultiplierIsZero;487}

Calls

Called by