Hooks
static bool BeforeCvWorldBuilderMapLoader_AddRandomItems(lua_State* L, int& result);static void AfterCvWorldBuilderMapLoader_AddRandomItems(lua_State* L, int& result);static int ReplaceCvWorldBuilderMapLoader_AddRandomItems(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvWorldBuilderMapLoader_AddRandomItems>(host, &BeforeCvWorldBuilderMapLoader_AddRandomItems);CivRegisterAfter<CivHooks::CvWorldBuilderMapLoader_AddRandomItems>(host, &AfterCvWorldBuilderMapLoader_AddRandomItems);CivRegisterReplace<CivHooks::CvWorldBuilderMapLoader_AddRandomItems>(host, &ReplaceCvWorldBuilderMapLoader_AddRandomItems);
Code
2116int CvWorldBuilderMapLoader::AddRandomItems(lua_State* L)2117{2118 if(L == NULL)2119 {2120 FAssertMsg(L, "Seriously, you really need a lua state for this.");2121 return 0;2122 }21232124 const int iTop = lua_gettop(L);21252126 const bool bRandomGoodies =2127 sg_kSave.GetFlag(CvWorldBuilderMap::FLAG_RANDOM_GOODIES) ||2128 (sg_kSave.GetFlag(CvWorldBuilderMap::FLAG_OLD_GOODIE_RULES) && !CvPreGame::loadWBScenario());21292130 const bool bRandomResources = sg_kSave.GetFlag(CvWorldBuilderMap::FLAG_RANDOM_RECOURCES);21312132 ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();2133 if(pkScriptSystem != NULL && (bRandomResources || bRandomGoodies))2134 {2135 const char* szLuaFile = "WorldBuilderRandomItems.lua";2136 const bool bLoadedMapGenerator = pkScriptSystem->LoadFile(L, szLuaFile);2137 FAssertMsg1(bLoadedMapGenerator, "Failed to load %s", szLuaFile);2138 if(bLoadedMapGenerator)2139 {2140 if(bRandomGoodies)2141 {2142 const char* szGoodiesFunction = "AddGoodies";2143 lua_getglobal(L, szGoodiesFunction);2144 if(lua_isfunction(L, -1))2145 pkScriptSystem->CallFunction(L, 0, 0);2146 else2147 FAssertMsg2(0, "Failed to find \"%s\" in %s", szGoodiesFunction, szLuaFile);2148 }21492150 if(bRandomResources)2151 {2152 const char* szResourcesFunction = "AddResourcesForWorldBuilderMap";2153 lua_getglobal(L, szResourcesFunction);2154 if(lua_isfunction(L, -1))2155 pkScriptSystem->CallFunction(L, 0, 0);2156 else2157 FAssertMsg2(0, "Failed to find \"%s\" in %s", szResourcesFunction, szLuaFile);2158 }2159 }2160 }21612162 lua_settop(L, iTop);21632164 return 0;2165}