Bazaar developer reference

CvCity::rangeStrike(int, int)

Defined in
CvCity.cpp, line 16177
Class
CvCity
Hook name
CivHooks::CvCity_rangeStrike

Hooks

static bool BeforeCvCity_rangeStrike(CvCity* self, int iX, int iY, CityTaskResult& result);static void AfterCvCity_rangeStrike(CvCity* self, int iX, int iY, CityTaskResult& result);static CityTaskResult ReplaceCvCity_rangeStrike(CityTaskResult (*original)(CvCity*, int, int), CvCity* self, int iX, int iY);CivRegisterBefore<CivHooks::CvCity_rangeStrike>(host, &BeforeCvCity_rangeStrike);CivRegisterAfter<CivHooks::CvCity_rangeStrike>(host, &AfterCvCity_rangeStrike);CivRegisterReplace<CivHooks::CvCity_rangeStrike>(host, &ReplaceCvCity_rangeStrike);

Code

16177CityTaskResult CvCity::rangeStrike(int iX, int iY)16178{16179	VALIDATE_OBJECT16180	CvUnit* pDefender;1618116182	CityTaskResult eResult = TASK_ABORTED;1618316184	CvPlot* pPlot = GC.getMap().plot(iX, iY);16185	if(NULL == pPlot)16186	{16187		return eResult;16188	}1618916190	if(!canRangeStrikeAt(iX, iY))16191	{16192		return eResult;16193	}1619416195	setMadeAttack(true);1619616197	// No City16198	if(!pPlot->isCity())16199	{16200		pDefender = rangedStrikeTarget(pPlot);1620116202		CvAssert(pDefender != NULL);16203		if(!pDefender) return TASK_ABORTED;1620416205		CvCombatInfo kCombatInfo;16206		CvUnitCombat::GenerateRangedCombatInfo(*this, pDefender, *pPlot, &kCombatInfo);1620716208		uint uiParentEventID = 0;16209		if(!CvPreGame::quickCombat())16210		{16211			// Center camera here!16212			bool isTargetVisibleToActivePlayer = pPlot->isActiveVisible(false);16213			if(isTargetVisibleToActivePlayer)16214			{16215				auto_ptr<ICvPlot1> pDllPlot = GC.WrapPlotPointer(pPlot);16216				DLLUI->lookAt(pDllPlot.get(), CAMERALOOKAT_NORMAL);16217			}1621816219			kCombatInfo.setVisualizeCombat(pPlot->isActiveVisible(false));1622016221			auto_ptr<ICvCombatInfo1> pDllCombatInfo(new CvDllCombatInfo(&kCombatInfo));16222			uiParentEventID = gDLL->GameplayCityCombat(pDllCombatInfo.get());1622316224			// Set the combat units so that other missions do not continue until combat is over.16225			pDefender->setCombatCity(this);16226			setCombatUnit(pDefender);16227			eResult = TASK_QUEUED;16228		}16229		else16230		{16231			eResult = TASK_COMPLETED;16232		}1623316234		CvUnitCombat::ResolveCombat(kCombatInfo, uiParentEventID);16235	}1623616237	return eResult;16238}

Calls

Called by