Bazaar developer reference

CvLuaPlayer::lGetEspionageCityStatus(lua_State *)

Defined in
Lua/CvLuaPlayer.cpp, line 11277
Class
CvLuaPlayer
Hook name
CivHooks::CvLuaPlayer_lGetEspionageCityStatus

Hooks

static bool BeforeCvLuaPlayer_lGetEspionageCityStatus(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetEspionageCityStatus(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetEspionageCityStatus(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetEspionageCityStatus>(host, &BeforeCvLuaPlayer_lGetEspionageCityStatus);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetEspionageCityStatus>(host, &AfterCvLuaPlayer_lGetEspionageCityStatus);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetEspionageCityStatus>(host, &ReplaceCvLuaPlayer_lGetEspionageCityStatus);

Code

11277int CvLuaPlayer::lGetEspionageCityStatus(lua_State* L)11278{11279	CvPlayerAI* pkThisPlayer = GetInstance(L);11280	CvPlayerEspionage* pkPlayerEspionage = pkThisPlayer->GetEspionage();1128111282	lua_createtable(L, 0, 0);11283	int index = 1;1128411285	// first pass to get the largest base potential available11286	int iLargestBasePotential = 0;11287	for(int i = 0; i < MAX_PLAYERS; ++i)11288	{11289		const PlayerTypes ePlayer(static_cast<PlayerTypes>(i));11290		CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);1129111292		if(!kPlayer.isAlive() || kPlayer.isBarbarian())11293		{11294			continue;11295		}1129611297		int iLoop = 0;11298		for(CvCity* pCity = kPlayer.firstCity(&iLoop); pCity != NULL; pCity = kPlayer.nextCity(&iLoop))11299		{11300			if(pkPlayerEspionage->CanEverMoveSpyTo(pCity))11301			{11302				CvCityEspionage* pCityEspionage = pCity->GetCityEspionage();11303				int iPotential = 0;11304				if (pCity->getOwner() == pkThisPlayer->GetID())11305				{11306					iPotential = pkPlayerEspionage->CalcPerTurn(SPY_STATE_GATHERING_INTEL, pCity, -1);11307				}11308				else11309				{11310					iPotential = pCityEspionage->m_aiLastBasePotential[pkThisPlayer->GetID()];11311				}1131211313				if (iPotential > iLargestBasePotential)11314				{11315					iLargestBasePotential = iPotential;11316				}11317			}11318		}11319	}1132011321	// second pass to set the values11322	for(int i = 0; i < MAX_PLAYERS; ++i)11323	{11324		const PlayerTypes ePlayer(static_cast<PlayerTypes>(i));11325		CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);1132611327		if(!kPlayer.isAlive() || kPlayer.isBarbarian())11328		{11329			continue;11330		}1133111332		int iLoop = 0;11333		for(CvCity* pCity = kPlayer.firstCity(&iLoop); pCity != NULL; pCity = kPlayer.nextCity(&iLoop))11334		{11335			if(pkPlayerEspionage->CanEverMoveSpyTo(pCity))11336			{11337				CvCityEspionage* pCityEspionage = pCity->GetCityEspionage();11338				lua_createtable(L, 0, 0);11339				const int t = lua_gettop(L);1134011341				lua_pushinteger(L, kPlayer.GetID());11342				lua_setfield(L, t, "PlayerID");1134311344				lua_pushinteger(L, pCity->GetID());11345				lua_setfield(L, t, "CityID");1134611347				lua_pushinteger(L, pCity->getX());11348				lua_setfield(L, t, "CityX");1134911350				lua_pushinteger(L, pCity->getY());11351				lua_setfield(L, t, "CityY");1135211353				lua_pushinteger(L, kPlayer.getCivilizationType());11354				lua_setfield(L, t, "CivilizationType");1135511356				lua_pushinteger(L, kPlayer.getTeam());11357				lua_setfield(L, t, "Team");1135811359				CvString strName = pCity->getNameKey();11360				lua_pushstring(L, strName.c_str());11361				lua_setfield(L, t, "Name");1136211363				lua_pushinteger(L, pCity->getPopulation());11364				lua_setfield(L, t, "Population");1136511366				if(pCity->getOwner() == pkThisPlayer->GetID())11367				{11368					int iRate = pkPlayerEspionage->CalcPerTurn(SPY_STATE_GATHERING_INTEL, pCity, -1);11369					lua_pushinteger(L, iRate);11370				}11371				else11372				{11373					lua_pushinteger(L, pCityEspionage->m_aiLastPotential[pkThisPlayer->GetID()]);11374				}11375				lua_setfield(L, t, "Potential");1137611377				if (pCity->getOwner() == pkThisPlayer->GetID())11378				{11379					lua_pushinteger(L, pkPlayerEspionage->CalcPerTurn(SPY_STATE_GATHERING_INTEL, pCity, -1));11380				}11381				else11382				{11383					lua_pushinteger(L,  pCityEspionage->m_aiLastBasePotential[pkThisPlayer->GetID()]);11384				}11385				lua_setfield(L, t, "BasePotential");1138611387				lua_pushinteger(L, iLargestBasePotential);11388				lua_setfield(L, t, "LargestBasePotential");1138911390				lua_rawseti(L, -2, index++);11391			}11392		}11393	}1139411395	return 1;11396}

Calls

Called by