Bazaar developer reference

CvCity::setDamage(int, bool)

Defined in
CvCity.cpp, line 11847
Class
CvCity
Hook name
CivHooks::CvCity_setDamage

Hooks

static bool BeforeCvCity_setDamage(CvCity* self, int iValue, bool noMessage);static void AfterCvCity_setDamage(CvCity* self, int iValue, bool noMessage);static void ReplaceCvCity_setDamage(void (*original)(CvCity*, int, bool), CvCity* self, int iValue, bool noMessage);CivRegisterBefore<CivHooks::CvCity_setDamage>(host, &BeforeCvCity_setDamage);CivRegisterAfter<CivHooks::CvCity_setDamage>(host, &AfterCvCity_setDamage);CivRegisterReplace<CivHooks::CvCity_setDamage>(host, &ReplaceCvCity_setDamage);

Code

11847void CvCity::setDamage(int iValue, bool noMessage)11848{11849	float fDelay = 0.0f;1185011851	VALIDATE_OBJECT1185211853	if(iValue < 0)11854		iValue = 0;11855	else if(iValue > GetMaxHitPoints())11856		iValue = GetMaxHitPoints();1185711858	if(iValue != getDamage())11859	{11860		int iOldValue = getDamage();11861		auto_ptr<ICvCity1> pDllCity(new CvDllCity(this));11862		gDLL->GameplayCitySetDamage(pDllCity.get(), iValue, iOldValue);1186311864		// send the popup text if the player can see this plot11865		if(!noMessage && plot()->GetActiveFogOfWarMode() == FOGOFWARMODE_OFF)11866		{11867			char text[256];11868			text[0] = NULL;11869			int iNewValue = MIN(GetMaxHitPoints(),iValue);11870			int iDiff = iOldValue - iNewValue;11871			if(iNewValue < iOldValue)11872			{11873				sprintf_s(text, "[COLOR_GREEN]+%d[ENDCOLOR]", iDiff);11874				fDelay = GC.getPOST_COMBAT_TEXT_DELAY() * 2;11875			}11876			else11877			{11878				sprintf_s(text, "[COLOR_RED]%d[ENDCOLOR]", iDiff);11879			}1188011881#if defined(SHOW_PLOT_POPUP)11882			SHOW_PLOT_POPUP(plot(), NO_PLAYER, text, fDelay);11883#else11884			DLLUI->AddPopupText(m_iX, m_iY, text, fDelay);11885#endif11886		}11887		m_iDamage = iValue;11888	}11889}

Calls

Called by