Hooks
static bool BeforeCvLuaPlayer_lGetOthersGreatWorks(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetOthersGreatWorks(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetOthersGreatWorks(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetOthersGreatWorks>(host, &BeforeCvLuaPlayer_lGetOthersGreatWorks);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetOthersGreatWorks>(host, &AfterCvLuaPlayer_lGetOthersGreatWorks);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetOthersGreatWorks>(host, &ReplaceCvLuaPlayer_lGetOthersGreatWorks);
Code
4869int CvLuaPlayer::lGetOthersGreatWorks(lua_State* L)4870{4871 CvPlayerAI* pkPlayer = GetInstance(L);48724873 lua_createtable(L, 0, 0);4874 int index = 1;48754876 for (uint uiPlayer = 0; uiPlayer < MAX_MAJOR_CIVS; uiPlayer++)4877 {4878 PlayerTypes eOtherPlayer = (PlayerTypes)uiPlayer;48794880 // skip if me4881 if (eOtherPlayer == pkPlayer->GetID())4882 {4883 continue;4884 }48854886 // skip if dead4887 if (!GET_PLAYER(eOtherPlayer).isAlive())4888 {4889 continue;4890 }48914892 // skip if at war4893 if (GET_TEAM(pkPlayer->getTeam()).isAtWar(GET_PLAYER(eOtherPlayer).getTeam()))4894 {4895 continue;4896 }48974898 // skip if have not met4899 if (!GET_TEAM(pkPlayer->getTeam()).isHasMet(GET_PLAYER(eOtherPlayer).getTeam()))4900 {4901 continue;4902 }49034904 lua_createtable(L, 0, 0);4905 const int t = lua_gettop(L);49064907 lua_pushinteger(L, eOtherPlayer);4908 lua_setfield(L, t, "iPlayer");49094910 // writing4911 int iWritingWorkIndex = GET_PLAYER(eOtherPlayer).GetCulture()->GetSwappableWritingIndex();4912 PlayerTypes eWritingWorkPlayer = NO_PLAYER;4913 EraTypes eWritingWorkEra = NO_ERA;4914 lua_pushinteger(L, iWritingWorkIndex);4915 lua_setfield(L, t, "WritingIndex");4916 if (iWritingWorkIndex != -1)4917 {4918 eWritingWorkPlayer = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iWritingWorkIndex].m_ePlayer;4919 eWritingWorkEra = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iWritingWorkIndex].m_eEra;4920 }4921 lua_pushinteger(L, eWritingWorkPlayer);4922 lua_setfield(L, t, "WritingCreator");4923 lua_pushinteger(L, eWritingWorkEra);4924 lua_setfield(L, t, "WritingEra");49254926 // art4927 int iArtWorkIndex = GET_PLAYER(eOtherPlayer).GetCulture()->GetSwappableArtIndex();4928 PlayerTypes eArtWorkPlayer = NO_PLAYER;4929 EraTypes eArtWorkEra = NO_ERA;4930 lua_pushinteger(L, iArtWorkIndex);4931 lua_setfield(L, t, "ArtIndex");4932 if (iArtWorkIndex != -1)4933 {4934 eArtWorkPlayer = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iArtWorkIndex].m_ePlayer;4935 eArtWorkEra = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iArtWorkIndex].m_eEra;4936 }4937 lua_pushinteger(L, eArtWorkPlayer);4938 lua_setfield(L, t, "ArtCreator");4939 lua_pushinteger(L, eArtWorkEra);4940 lua_setfield(L, t, "ArtEra");49414942 // artifact4943 int iArtifactWorkIndex = GET_PLAYER(eOtherPlayer).GetCulture()->GetSwappableArtifactIndex();4944 PlayerTypes eArtifactWorkPlayer = NO_PLAYER;4945 EraTypes eArtifactWorkEra = NO_ERA;4946 lua_pushinteger(L, iArtifactWorkIndex);4947 lua_setfield(L, t, "ArtifactIndex");4948 if (iArtifactWorkIndex != -1)4949 {4950 eArtifactWorkPlayer = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iArtifactWorkIndex].m_ePlayer;4951 eArtifactWorkEra = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iArtifactWorkIndex].m_eEra;4952 }4953 lua_pushinteger(L, eArtifactWorkPlayer);4954 lua_setfield(L, t, "ArtifactCreator");4955 lua_pushinteger(L, eArtifactWorkEra);4956 lua_setfield(L, t, "ArtifactEra");49574958 // music4959 int iMusicWorkIndex = GET_PLAYER(eOtherPlayer).GetCulture()->GetSwappableMusicIndex();4960 PlayerTypes eMusicWorkPlayer = NO_PLAYER;4961 EraTypes eMusicWorkEra = NO_ERA;4962 lua_pushinteger(L, iMusicWorkIndex);4963 lua_setfield(L, t, "MusicIndex");4964 if (iMusicWorkIndex != -1)4965 {4966 eMusicWorkPlayer = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iMusicWorkIndex].m_ePlayer;4967 eMusicWorkEra = GC.getGame().GetGameCulture()->m_CurrentGreatWorks[iMusicWorkIndex].m_eEra;4968 }4969 lua_pushinteger(L, eMusicWorkPlayer);4970 lua_setfield(L, t, "MusicCreator");4971 lua_pushinteger(L, eMusicWorkEra);4972 lua_setfield(L, t, "MusicEra");49734974 lua_rawseti(L, -2, index++);4975 }49764977 return 1;4978}