Bazaar developer reference

CvUnit::GetStrategicResourceCombatPenalty() const

Defined in
CvUnit.cpp, line 12040
Class
CvUnit
Hook name
CivHooks::CvUnit_GetStrategicResourceCombatPenalty

Hooks

static bool BeforeCvUnit_GetStrategicResourceCombatPenalty(const CvUnit* self, int& result);static void AfterCvUnit_GetStrategicResourceCombatPenalty(const CvUnit* self, int& result);static int ReplaceCvUnit_GetStrategicResourceCombatPenalty(int (*original)(const CvUnit*), const CvUnit* self);CivRegisterBefore<CivHooks::CvUnit_GetStrategicResourceCombatPenalty>(host, &BeforeCvUnit_GetStrategicResourceCombatPenalty);CivRegisterAfter<CivHooks::CvUnit_GetStrategicResourceCombatPenalty>(host, &AfterCvUnit_GetStrategicResourceCombatPenalty);CivRegisterReplace<CivHooks::CvUnit_GetStrategicResourceCombatPenalty>(host, &ReplaceCvUnit_GetStrategicResourceCombatPenalty);

Code

12039/// Over strategic resource limit?12040int CvUnit::GetStrategicResourceCombatPenalty() const12041{12042	int iPenalty = 0;1204312044	// barbs don't have resources12045	if(isBarbarian())12046		return iPenalty;1204712048	CvPlayerAI& kPlayer = GET_PLAYER(getOwner());1204912050	// Loop through all resources12051	ResourceTypes eResource;12052	int iNumResourceInfos = GC.getNumResourceInfos();12053	for(int iResourceLoop = 0; iResourceLoop < iNumResourceInfos; iResourceLoop++)12054	{12055		eResource = (ResourceTypes) iResourceLoop;1205612057		int iAvailable = kPlayer.getNumResourceAvailable(eResource);12058		if (kPlayer.isMinorCiv())12059		{12060			iAvailable += kPlayer.getResourceExport(eResource);12061		}1206212063		// Over resource limit?12064		if(iAvailable < 0)12065		{12066			if(m_pUnitInfo->GetResourceQuantityRequirement(eResource) > 0)12067			{12068				int iUsed = kPlayer.getNumResourceUsed(eResource);12069				int iMissing = iUsed - kPlayer.getNumResourceTotal(eResource);1207012071				CvAssertMsg(iUsed > 0, "Number of used resources is zero or negative, this is unexpected. Please send Anton your save file and version.");12072				if (iUsed <= 0)12073					continue;12074				CvAssertMsg(iMissing > 0, "Number of missing resources is zero or negative, this is unexpected. Please send Anton your save file and version.");12075				if (iMissing <= 0)12076					continue;1207712078				double dDeficit = (double) iMissing / (double) iUsed;12079				iPenalty += (int) floor((dDeficit) * GC.getSTRATEGIC_RESOURCE_EXHAUSTED_PENALTY()); // round down (for larger negative penalty)12080			}12081		}12082	}1208312084	iPenalty = max(iPenalty, GC.getSTRATEGIC_RESOURCE_EXHAUSTED_PENALTY());12085	return iPenalty;12086}

Calls

Called by