Bazaar developer reference

CvPlayer::doTurn()

Defined in
CvPlayer.cpp, line 4617
Class
CvPlayer
Hook name
CivHooks::CvPlayer_doTurn
Lua events
GameEvents.PlayerDoTurn

Runs at the start of each player's turn, for every player, including the ones the game plays. The player's cities take their turns later, in CvPlayer::doTurnPostDiplomacy, and its units in CvPlayer::doTurnUnits.

Hooks

static bool BeforeCvPlayer_doTurn(CvPlayer* self);static void AfterCvPlayer_doTurn(CvPlayer* self);static void ReplaceCvPlayer_doTurn(void (*original)(CvPlayer*), CvPlayer* self);CivRegisterBefore<CivHooks::CvPlayer_doTurn>(host, &BeforeCvPlayer_doTurn);CivRegisterAfter<CivHooks::CvPlayer_doTurn>(host, &AfterCvPlayer_doTurn);CivRegisterReplace<CivHooks::CvPlayer_doTurn>(host, &ReplaceCvPlayer_doTurn);

Code

4617void CvPlayer::doTurn()4618{4619	// CUSTOMLOG("***** STARTING TURN %i for player %i (%s)", GC.getGame().getGameTurn(), GetID(), getCivilizationShortDescription())4620	// Time building of these maps4621	AI_PERF_FORMAT("AI-perf.csv", ("CvPlayer::doTurn(), Turn %d, %s", GC.getGame().getGameTurn(), getCivilizationShortDescription()));46224623	CvAssertMsg(isAlive(), "isAlive is expected to be true");46244625	doUpdateCacheOnTurn();46264627	AI_doTurnPre();46284629	if(getCultureBombTimer() > 0)4630		changeCultureBombTimer(-1);46314632	if(getConversionTimer() > 0)4633		changeConversionTimer(-1);46344635	if(GetTurnsSinceSettledLastCity() >= 0)4636		ChangeTurnsSinceSettledLastCity(1);46374638	setConscriptCount(0);46394640	DoUpdateCramped();46414642	DoUpdateUprisings();4643	DoUpdateCityRevolts();46444645	if(GetPlayerTraits()->IsEndOfMayaLongCount())4646	{4647		ChangeNumMayaBoosts(1);4648	}46494650	bool bHasActiveDiploRequest = false;4651	if(isAlive())4652	{4653		if(!isBarbarian())4654		{4655			if(!isMinorCiv())4656			{4657				GetTrade()->DoTurn();4658				GetMilitaryAI()->ResetCounters();4659				GetGrandStrategyAI()->DoTurn();4660#if defined(MOD_AI_MP_DIPLOMACY)4661				if (MOD_AI_MP_DIPLOMACY) {4662					// We only do AI to AI diplomacy here.4663					// See CvDiplomacyRequests::DoAIDiplomacyWithHumans() for AI to human diplomacy4664					GetDiplomacyAI()->DoTurn(NO_PLAYER, DIPLO_AI_PLAYERS);4665				} else {4666#endif4667				if(GC.getGame().isHotSeat() && !isHuman())4668				{4669					// In Hotseat, AIs only do their diplomacy pass for other AIs on their turn4670					// Diplomacy toward a human is done at the beginning of the humans turn.4671#if defined(MOD_AI_MP_DIPLOMACY)4672					GetDiplomacyAI()->DoTurn(NO_PLAYER, DIPLO_AI_PLAYERS);		// Do diplomacy for toward everyone4673#else4674					GetDiplomacyAI()->DoTurn((PlayerTypes)CvDiplomacyAI::DIPLO_AI_PLAYERS);		// Do diplomacy for toward everyone4675#endif4676				}4677				else4678#if defined(MOD_AI_MP_DIPLOMACY)4679					GetDiplomacyAI()->DoTurn(NO_PLAYER, DIPLO_ALL_PLAYERS);	// Do diplomacy for toward everyone4680#else4681					GetDiplomacyAI()->DoTurn((PlayerTypes)CvDiplomacyAI::DIPLO_ALL_PLAYERS);	// Do diplomacy for toward everyone4682#endif46834684				if (!isHuman())4685					bHasActiveDiploRequest = CvDiplomacyRequests::HasActiveDiploRequestWithHuman(GetID());4686#if defined(MOD_AI_MP_DIPLOMACY)4687				}4688#endif4689			}4690		}4691	}46924693	if(isHuman() && !GC.getGame().isGameMultiPlayer())4694		doArmySize();46954696	if( (bHasActiveDiploRequest || GC.GetEngineUserInterface()->isDiploActive()) && !GC.getGame().isGameMultiPlayer() && !isHuman())4697	{4698		GC.getGame().SetWaitingForBlockingInput(m_eID);4699	}4700	else4701	{4702		doTurnPostDiplomacy();4703	}47044705	ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();4706	if(pkScriptSystem)4707	{4708		CvLuaArgsHandle args;4709		args->Push(GetID());47104711		bool bResult;4712		LuaSupport::CallHook(pkScriptSystem, "PlayerDoTurn", args.get(), bResult);4713	}47144715	m_kPlayerAchievements.StartTurn();4716}

Calls

Called by