Hooks
static bool BeforeCvLuaPlayer_lGetAvailableSpyRelocationCities(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetAvailableSpyRelocationCities(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetAvailableSpyRelocationCities(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetAvailableSpyRelocationCities>(host, &BeforeCvLuaPlayer_lGetAvailableSpyRelocationCities);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetAvailableSpyRelocationCities>(host, &AfterCvLuaPlayer_lGetAvailableSpyRelocationCities);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetAvailableSpyRelocationCities>(host, &ReplaceCvLuaPlayer_lGetAvailableSpyRelocationCities);
Code
11614int CvLuaPlayer::lGetAvailableSpyRelocationCities(lua_State* L)11615{11616 CvPlayerAI* pkThisPlayer = GetInstance(L);11617 CvPlayerEspionage* pkPlayerEspionage = pkThisPlayer->GetEspionage();1161811619 uint uiSpyIndex = luaL_checkinteger(L, 2);1162011621 lua_createtable(L, 0, 0);11622 int index = 1;1162311624 for(int i = 0; i < MAX_CIV_PLAYERS; ++i)11625 {11626 const PlayerTypes ePlayer(static_cast<PlayerTypes>(i));11627 CvPlayerAI& kPlayer = GET_PLAYER(ePlayer);1162811629 if(kPlayer.isAlive())11630 {11631 int iLoop = 0;11632 // Just find first coastal city11633 for(CvCity* pCity = kPlayer.firstCity(&iLoop); pCity != NULL; pCity = kPlayer.nextCity(&iLoop))11634 {11635 if(pkPlayerEspionage->CanMoveSpyTo(pCity, uiSpyIndex, false))11636 {11637 lua_createtable(L, 0, 0);11638 const int t = lua_gettop(L);1163911640 lua_pushinteger(L, kPlayer.GetID());11641 lua_setfield(L, t, "PlayerID");1164211643 lua_pushinteger(L, pCity->GetID());11644 lua_setfield(L, t, "CityID");1164511646 lua_pushinteger(L, kPlayer.getCivilizationType());11647 lua_setfield(L, t, "CivilizationType");1164811649 lua_pushinteger(L, kPlayer.getTeam());11650 lua_setfield(L, t, "Team");1165111652 CvString strName = pCity->getName();11653 lua_pushstring(L, strName.c_str());11654 lua_setfield(L, t, "Name");1165511656 lua_pushinteger(L, pCity->getPopulation());11657 lua_setfield(L, t, "Population");1165811659 //TODO: Replace temp 99 w/ City Potential Espionage Value.11660 lua_pushinteger(L, 99);11661 lua_setfield(L, t, "Potential");1166211663 lua_rawseti(L, -2, index++);11664 }11665 }11666 }11667 }1166811669 return 1;11670}