Bazaar developer reference

CvPlayer::DoYieldBonusFromKill(YieldTypes, CvUnit *, CvUnit *, UnitTypes, int, int, bool, int &)

Defined in
CvPlayer.cpp, line 10882
Class
CvPlayer
Hook name
CivHooks::CvPlayer_DoYieldBonusFromKill

Hooks

static bool BeforeCvPlayer_DoYieldBonusFromKill(CvPlayer* self, YieldTypes eYield, CvUnit* pAttackingUnit, CvUnit* pKilledUnit, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int & iNumBonuses);static void AfterCvPlayer_DoYieldBonusFromKill(CvPlayer* self, YieldTypes eYield, CvUnit* pAttackingUnit, CvUnit* pKilledUnit, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int & iNumBonuses);static void ReplaceCvPlayer_DoYieldBonusFromKill(void (*original)(CvPlayer*, YieldTypes, CvUnit*, CvUnit*, UnitTypes, int, int, bool, int &), CvPlayer* self, YieldTypes eYield, CvUnit* pAttackingUnit, CvUnit* pKilledUnit, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int & iNumBonuses);CivRegisterBefore<CivHooks::CvPlayer_DoYieldBonusFromKill>(host, &BeforeCvPlayer_DoYieldBonusFromKill);CivRegisterAfter<CivHooks::CvPlayer_DoYieldBonusFromKill>(host, &AfterCvPlayer_DoYieldBonusFromKill);CivRegisterReplace<CivHooks::CvPlayer_DoYieldBonusFromKill>(host, &ReplaceCvPlayer_DoYieldBonusFromKill);

Code

10878/// Apply and show a yield bonus from a combat win10879/// If a bonus is applied, iNumBonuses must be incremented to stagger the UI text with other bonuses10880#if defined(MOD_API_UNIFIED_YIELDS)10881#if defined(MOD_API_EXTENSIONS)10882void CvPlayer::DoYieldBonusFromKill(YieldTypes eYield, CvUnit* pAttackingUnit, CvUnit* pKilledUnit, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int &iNumBonuses)10883#else10884void CvPlayer::DoYieldBonusFromKill(YieldTypes eYield, CvUnit* pAttackingUnit, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int &iNumBonuses)10885#endif10886#else10887#if defined(MOD_API_EXTENSIONS)10888void CvPlayer::DoYieldBonusFromKill(YieldTypes eYield, UnitTypes eAttackingUnitType, CvUnit* pKilledUnit, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int &iNumBonuses)10889#else10890void CvPlayer::DoYieldBonusFromKill(YieldTypes eYield, UnitTypes eAttackingUnitType, UnitTypes eKilledUnitType, int iX, int iY, bool bWasBarbarian, int &iNumBonuses)10891#endif10892#endif10893{10894	int iValue = 0;1089510896	CvAssertMsg(eKilledUnitType != NO_UNIT, "Killed unit's type is NO_TYPE. Please send Anton your save file and version.");10897	if (eKilledUnitType == NO_UNIT) return;1089810899	CvUnitEntry* pkKilledUnitInfo = GC.getUnitInfo(eKilledUnitType);10900	if(pkKilledUnitInfo)10901	{10902#if defined(MOD_API_EXTENSIONS)10903		int iCombatStrength = pKilledUnit ? max(pKilledUnit->GetBaseCombatStrength(), pKilledUnit->GetBaseRangedCombatStrength()) : max(pkKilledUnitInfo->GetCombat(), pkKilledUnitInfo->GetRangedCombat());10904#else10905		int iCombatStrength = max(pkKilledUnitInfo->GetCombat(), pkKilledUnitInfo->GetRangedCombat());10906#endif10907		if(iCombatStrength > 0)10908		{	10909			switch(eYield)10910			{10911			case YIELD_FOOD:10912			case YIELD_PRODUCTION:10913				// Not supported, local to a city10914				return;1091510916			case YIELD_GOLD:10917				iValue += GetPlayerPolicies()->GetNumericModifier(POLICYMOD_GOLD_FROM_KILLS);10918				break;1091910920			case YIELD_CULTURE:10921				iValue += GetPlayerTraits()->GetCultureFromKills();10922				iValue += GetPlayerPolicies()->GetNumericModifier(POLICYMOD_CULTURE_FROM_KILLS);1092310924				// Do we get it for barbarians?10925				if(bWasBarbarian)10926				{10927					iValue += GetPlayerPolicies()->GetNumericModifier(POLICYMOD_CULTURE_FROM_BARBARIAN_KILLS);10928				}10929				break;1093010931			case YIELD_FAITH:10932				iValue += GetPlayerTraits()->GetFaithFromKills();1093310934				if (eYield == YIELD_FAITH && (GC.getGame().isOption(GAMEOPTION_NO_RELIGION)))10935				{10936					return;10937				}10938				break;10939			case YIELD_SCIENCE:10940				break;10941#if defined(MOD_API_UNIFIED_YIELDS_TOURISM)10942			case YIELD_TOURISM:10943				// Not supported, as not accumulated turn-on-turn10944				break;10945#endif10946#if defined(MOD_API_UNIFIED_YIELDS_GOLDEN_AGE)10947			case YIELD_GOLDEN_AGE_POINTS:10948				break;10949#endif10950			}1095110952#if defined(MOD_API_UNIFIED_YIELDS)10953			iValue += GetYieldFromKills(eYield);10954			iValue += GetPlayerTraits()->GetYieldFromKills(eYield);10955			10956			if (bWasBarbarian) {10957				iValue += GetYieldFromBarbarianKills(eYield);10958				iValue += GetPlayerTraits()->GetYieldFromBarbarianKills(eYield);10959			}1096010961			const ReligionTypes eReligion = GetReligions()->GetReligionCreatedByPlayer(true);10962			if (eReligion >= RELIGION_PANTHEON) {10963				const CvReligion* pMyReligion = GC.getGame().GetGameReligions()->GetReligion(eReligion, GetID());10964				if (pMyReligion) {10965					iValue += pMyReligion->m_Beliefs.GetYieldFromKills(eYield);1096610967					if (bWasBarbarian) {10968						iValue += pMyReligion->m_Beliefs.GetYieldFromBarbarianKills(eYield);10969					}10970				}10971			}10972#endif1097310974			iValue += GC.getGame().GetGameReligions()->GetBeliefYieldForKill(eYield, iX, iY, GetID());1097510976#if defined(MOD_API_UNIFIED_YIELDS)10977			if(pAttackingUnit != NULL)10978#else10979			if(eAttackingUnitType != NO_UNIT)10980#endif10981			{10982#if defined(MOD_API_UNIFIED_YIELDS)10983				UnitTypes eAttackingUnitType = pAttackingUnit->getUnitType();10984#endif10985				CvUnitEntry* pkAttackingUnitInfo = GC.getUnitInfo(eAttackingUnitType);10986				if(pkAttackingUnitInfo)10987				{10988					iValue += pkAttackingUnitInfo->GetYieldFromKills(eYield);1098910990#if defined(MOD_API_UNIFIED_YIELDS)10991					iValue += pAttackingUnit->getYieldFromKills(eYield);10992					10993					// Do we get it for barbarians?10994					if(bWasBarbarian)10995					{10996						iValue += pkAttackingUnitInfo->GetYieldFromBarbarianKills(eYield);10997						iValue += pAttackingUnit->getYieldFromBarbarianKills(eYield);10998					}10999#endif11000				}11001			}1100211003			iValue = (iValue * iCombatStrength) / 100;11004			if(iValue > 0)11005			{11006				switch(eYield)11007				{11008				case YIELD_GOLD:11009					GetTreasury()->ChangeGold(iValue);11010					break;11011				case YIELD_CULTURE:11012					changeJONSCulture(iValue);11013					break;11014				case YIELD_FAITH:11015					ChangeFaith(iValue);11016					break;11017#if defined(MOD_API_UNIFIED_YIELDS)11018				case YIELD_GOLDEN_AGE_POINTS:11019					ChangeGoldenAgeProgressMeter(iValue);11020					break;11021#endif11022				case YIELD_SCIENCE:11023					TechTypes eCurrentTech = GetPlayerTechs()->GetCurrentResearch();11024					if(eCurrentTech == NO_TECH)11025					{11026						changeOverflowResearch(iValue);11027					}11028					else11029					{11030						GET_TEAM(getTeam()).GetTeamTechs()->ChangeResearchProgress(eCurrentTech, iValue, GetID());11031					}11032					break;11033				}11034				iNumBonuses++;11035				ReportYieldFromKill(eYield, iValue, iX, iY, iNumBonuses);11036			}11037		}11038	}11039}

Calls

Called by