Bazaar developer reference

CvCity::canRangeStrikeAt(int, int) const

Defined in
CvCity.cpp, line 16110
Class
CvCity
Hook name
CivHooks::CvCity_canRangeStrikeAt

Hooks

static bool BeforeCvCity_canRangeStrikeAt(const CvCity* self, int iX, int iY, bool& result);static void AfterCvCity_canRangeStrikeAt(const CvCity* self, int iX, int iY, bool& result);static bool ReplaceCvCity_canRangeStrikeAt(bool (*original)(const CvCity*, int, int), const CvCity* self, int iX, int iY);CivRegisterBefore<CivHooks::CvCity_canRangeStrikeAt>(host, &BeforeCvCity_canRangeStrikeAt);CivRegisterAfter<CivHooks::CvCity_canRangeStrikeAt>(host, &AfterCvCity_canRangeStrikeAt);CivRegisterReplace<CivHooks::CvCity_canRangeStrikeAt>(host, &ReplaceCvCity_canRangeStrikeAt);

Code

16110bool CvCity::canRangeStrikeAt(int iX, int iY) const16111{16112	VALIDATE_OBJECT16113	if(!canRangeStrike())16114	{16115		return false;16116	}1611716118	const CvPlot* pTargetPlot = GC.getMap().plot(iX, iY);1611916120	if(NULL == pTargetPlot)16121	{16122		return false;16123	}1612416125	if(!pTargetPlot->isVisible(getTeam()))16126	{16127		return false;16128	}1612916130#if defined(MOD_EVENTS_CITY_BOMBARD)16131	bool bIndirectFireAllowed; // By reference, yuck!!!16132	int iAttackRange = getBombardRange(bIndirectFireAllowed);16133	16134	if (iAttackRange == 0) return false;16135#else16136	int iAttackRange = GC.getCITY_ATTACK_RANGE();16137#endif1613816139	if(plotDistance(plot()->getX(), plot()->getY(), pTargetPlot->getX(), pTargetPlot->getY()) > iAttackRange)16140	{16141		return false;16142	}1614316144#if defined(MOD_EVENTS_CITY_BOMBARD)16145	if(!bIndirectFireAllowed)16146#else16147	if(!GC.getCAN_CITY_USE_INDIRECT_FIRE())16148#endif16149	{16150#if defined MOD_BUGFIX_NAVAL_TARGETING16151		if (!plot()->canSeePlot(pTargetPlot, getTeam(), iAttackRange, NO_DIRECTION, DOMAIN_LAND))16152#else16153		if (!plot()->canSeePlot(pTargetPlot, getTeam(), iAttackRange, NO_DIRECTION))16154#endif16155		{16156			return false;16157		}16158	}1615916160	// If it's NOT a city, see if there are any units to aim for16161	if(!pTargetPlot->isCity())16162	{16163		if(!canRangedStrikeTarget(*pTargetPlot))16164		{16165			return false;16166		}16167	}16168	else // I don't want cities attacking each other directly16169	{16170		return false;16171	}1617216173	return true;16174}

Calls

Called by