Bazaar developer reference

CvTeamTechs::ChangeResearchProgressPercent(TechTypes, int, PlayerTypes)

Defined in
CvTechClasses.cpp, line 2258
Class
CvTeamTechs
Hook name
CivHooks::CvTeamTechs_ChangeResearchProgressPercent

Hooks

static bool BeforeCvTeamTechs_ChangeResearchProgressPercent(CvTeamTechs* self, TechTypes eIndex, int iPercent, PlayerTypes ePlayer, int& result);static void AfterCvTeamTechs_ChangeResearchProgressPercent(CvTeamTechs* self, TechTypes eIndex, int iPercent, PlayerTypes ePlayer, int& result);static int ReplaceCvTeamTechs_ChangeResearchProgressPercent(int (*original)(CvTeamTechs*, TechTypes, int, PlayerTypes), CvTeamTechs* self, TechTypes eIndex, int iPercent, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvTeamTechs_ChangeResearchProgressPercent>(host, &BeforeCvTeamTechs_ChangeResearchProgressPercent);CivRegisterAfter<CivHooks::CvTeamTechs_ChangeResearchProgressPercent>(host, &AfterCvTeamTechs_ChangeResearchProgressPercent);CivRegisterReplace<CivHooks::CvTeamTechs_ChangeResearchProgressPercent>(host, &ReplaceCvTeamTechs_ChangeResearchProgressPercent);

Code

2257/// Add research for a tech to a specified percent complete2258int CvTeamTechs::ChangeResearchProgressPercent(TechTypes eIndex, int iPercent, PlayerTypes ePlayer)2259{2260	int iBeakers = 0;22612262	if(0 != iPercent && !HasTech(eIndex))2263	{2264		if(iPercent > 0)2265		{2266			iBeakers = std::min(GetResearchLeft(eIndex), (GetResearchCost(eIndex) * iPercent) / 100);2267		}2268		else2269		{2270			iBeakers = std::max(GetResearchLeft(eIndex) - GetResearchCost(eIndex), (GetResearchCost(eIndex) * iPercent) / 100);2271		}22722273		ChangeResearchProgress(eIndex, iBeakers, ePlayer);2274	}22752276	return iBeakers;2277}

Calls

Called by