Bazaar developer reference

CvPlayer::init(PlayerTypes)

Defined in
CvPlayer.cpp, line 546
Class
CvPlayer
Hook name
CivHooks::CvPlayer_init
Changed in
0.5.0

Hooks

static bool BeforeCvPlayer_init(CvPlayer* self, PlayerTypes eID);static void AfterCvPlayer_init(CvPlayer* self, PlayerTypes eID);static void ReplaceCvPlayer_init(void (*original)(CvPlayer*, PlayerTypes), CvPlayer* self, PlayerTypes eID);CivRegisterBefore<CivHooks::CvPlayer_init>(host, &BeforeCvPlayer_init);CivRegisterAfter<CivHooks::CvPlayer_init>(host, &AfterCvPlayer_init);CivRegisterReplace<CivHooks::CvPlayer_init>(host, &ReplaceCvPlayer_init);

Code

546void CvPlayer::init(PlayerTypes eID)547{548#if defined(CIV_HOST_API)549	CivHostOnPlayerReset(eID);550#endif551	LeaderHeadTypes eBestPersonality;552	int iValue;553	int iBestValue;554	int iI, iJ;555556	// only allocate notifications for civs that players can play as557	if(eID < MAX_MAJOR_CIVS)558	{559		m_pNotifications = FNEW(CvNotifications, c_eCiv5GameplayDLL, 0);560#if defined(MOD_API_PLAYER_LOGS)561		m_pDiplomacyLog = FNEW(CvEventLog, c_eCiv5GameplayDLL, 0);562		m_pMilitaryLog = FNEW(CvEventLog, c_eCiv5GameplayDLL, 0);563#endif564		m_pDiplomacyRequests = FNEW(CvDiplomacyRequests, c_eCiv5GameplayDLL, 0);565	}566567	//--------------------------------568	// Init saved data569	reset(eID);570571	//--------------------------------572	// Init containers573	m_cities.Init();574575	m_units.Init();576577	m_armyAIs.Init();578579	m_AIOperations.clear();580581	//--------------------------------582	// Init non-saved data583	setupGraphical();584585	//--------------------------------586	// Init other game data587	CvAssert(getTeam() != NO_TEAM);588	GET_TEAM(getTeam()).changeNumMembers(1);589	PlayerTypes p = GetID();590	SlotStatus s = CvPreGame::slotStatus(p);591	if((s == SS_TAKEN) || (s == SS_COMPUTER))592	{593		setAlive(true);594595		if(GC.getGame().isOption(GAMEOPTION_RANDOM_PERSONALITIES))596		{597			if(!isBarbarian() && !isMinorCiv())598			{599				iBestValue = 0;600				eBestPersonality = NO_LEADER;601602				for(iI = 0; iI < GC.getNumLeaderHeadInfos(); iI++)603				{604					if(iI != GC.getBARBARIAN_LEADER() && iI != GC.getMINOR_CIVILIZATION())605					{606						iValue = (1 + GC.getGame().getJonRandNum(10000, "Choosing Personality"));607608						for(iJ = 0; iJ < MAX_CIV_PLAYERS; iJ++)609						{610							if(GET_PLAYER((PlayerTypes)iJ).isAlive())611							{612								if(GET_PLAYER((PlayerTypes)iJ).getPersonalityType() == ((LeaderHeadTypes)iI))613								{614									iValue /= 2;615								}616							}617						}618619						if(iValue > iBestValue)620						{621							iBestValue = iValue;622							eBestPersonality = ((LeaderHeadTypes)iI);623						}624					}625				}626627				if(eBestPersonality != NO_LEADER)628				{629					setPersonalityType(eBestPersonality);630				}631			}632		}633634		CvAssert(m_pTraits);635		m_pTraits->InitPlayerTraits();636637		// Special handling for the Polynesian trait's overriding of embarked unit graphics638		if(m_pTraits->IsEmbarkedAllWater())639		{640			SetEmbarkedGraphicOverride("ART_DEF_UNIT_U_POLYNESIAN_WAR_CANOE");641		}642		else if(m_pTraits->IsEmbarkedToLandFlatCost())643		{644			SetEmbarkedGraphicOverride("ART_DEF_UNIT_U_DANISH_LONGBOAT");645		}646647		changeGoldPerUnitTimes100(GC.getINITIAL_GOLD_PER_UNIT_TIMES_100());648649		ChangeMaxNumBuilders(GC.getDEFAULT_MAX_NUM_BUILDERS());650651		changeLevelExperienceModifier(GetPlayerTraits()->GetLevelExperienceModifier());652		changeMaxGlobalBuildingProductionModifier(GetPlayerTraits()->GetMaxGlobalBuildingProductionModifier());653		changeMaxTeamBuildingProductionModifier(GetPlayerTraits()->GetMaxTeamBuildingProductionModifier());654		changeMaxPlayerBuildingProductionModifier(GetPlayerTraits()->GetMaxPlayerBuildingProductionModifier());655		ChangePlotGoldCostMod(GetPlayerTraits()->GetPlotBuyCostModifier());656#if defined(MOD_TRAITS_CITY_WORKING)657		ChangeCityWorkingChange(GetPlayerTraits()->GetCityWorkingChange());658#endif659#if defined(MOD_TRAITS_CITY_AUTOMATON_WORKERS)660		ChangeCityAutomatonWorkersChange(GetPlayerTraits()->GetCityAutomatonWorkersChange());661#endif662		ChangePlotCultureCostModifier(GetPlayerTraits()->GetPlotCultureCostModifier());663		GetTreasury()->ChangeCityConnectionTradeRouteGoldChange(GetPlayerTraits()->GetCityConnectionTradeRouteChange());664		changeWonderProductionModifier(GetPlayerTraits()->GetWonderProductionModifier());665		ChangeRouteGoldMaintenanceMod(GetPlayerTraits()->GetImprovementMaintenanceModifier());666667		for(iJ = 0; iJ < NUM_YIELD_TYPES; iJ++)668		{669#if defined(MOD_BUGFIX_MINOR)670			ChangeCityYieldChangeTimes100((YieldTypes)iJ, 100 * GetPlayerTraits()->GetFreeCityYield((YieldTypes)iJ));671#else672			ChangeCityYieldChange((YieldTypes)iJ, 100 * GetPlayerTraits()->GetFreeCityYield((YieldTypes)iJ));673#endif674			changeYieldRateModifier((YieldTypes)iJ, GetPlayerTraits()->GetYieldRateModifier((YieldTypes)iJ));675		}676677		recomputeGreatPeopleModifiers();678679		for(iI = 0; iI < NUM_YIELD_TYPES; iI++)680		{681			updateExtraYieldThreshold((YieldTypes)iI);682		}683684		CvCivilizationInfo& playerCivilizationInfo = getCivilizationInfo();685		for(iI = 0; iI < GC.getNumUnitClassInfos(); ++iI)686		{687			const UnitClassTypes eUnitClass = static_cast<UnitClassTypes>(iI);688			CvUnitClassInfo* pkUnitClassInfo = GC.getUnitClassInfo(eUnitClass);689			if(pkUnitClassInfo != NULL)690			{691				const UnitTypes eUnit = ((UnitTypes)(playerCivilizationInfo.getCivilizationUnits(iI)));692				if(NO_UNIT != eUnit)693				{694					CvUnitEntry* pkUnitInfo = GC.getUnitInfo(eUnit);695					if(NULL != pkUnitInfo && pkUnitInfo->IsFound())696					{697						setUnitExtraCost(eUnitClass, getNewCityProductionValue());698					}699				}700			}701		}702703		BuildingTypes eFreeBuilding = GetPlayerTraits()->GetFreeBuilding();704		if(eFreeBuilding != NO_BUILDING)705		{706			changeFreeBuildingCount(eFreeBuilding, 1);707		}708709		SetGreatGeneralCombatBonus(GC.getGREAT_GENERAL_STRENGTH_MOD());710	}711712	m_aiPlots.clear();713	m_bfEverConqueredBy.ClearAll();714715	AI_init();716}

Calls

Called by