-- recursively merges the second given table into the first given table
function MergeTables( mission, newFlags )
--for each table entry,
local array = type({})
for key,value in pairs(newFlags) do
--check for nested tables
if type(value) == array then
--mission must have this key as a table too
if type(mission[key]) ~= array then
mission[key] = {}
end
--merge these two tables recursively
MergeTables(mission[key], value)
else
--the key is a simple variable, so simply store it
mission[key] = value
end
end
end
--Search through the missionlist to find a map that matches mapName,
--then insert the new flags into said entry.
--Use this when you know the map already exists, but this content patch is just
--adding new gamemodes (otherwise you should just add whole new entries to the missionlist)
function AddNewGameModes(missionList, mapName, newFlags)
for i, mission in missionList do
if mission.mapluafile == mapName then
MergeTables(mission, newFlags)
end
end
end
--insert the new gamemodes or maps here for pre-existing maps:
--The following modes: Campaign, Conquest, 1Flag CTF, 2-Flag CTF, Space Assault, Hero Assault, Hunt
AddNewGameModes(sp_missionselect_listbox_contents, "cor1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1, mode_hunt_y = 1,, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "dag1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "dea1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_hunt_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "end1%s_%s", {era_z = 1, mode_con_z = 1, mode_1flag_z = 1, mode_eli_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "fel1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_hunt_y = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "geo1%s_%s", {era_y = 1, mode_con_y = 1, mode_ctf_y = 1, mode_hunt_y = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "hot1%s_%s", {era_z = 1, mode_con_z = 1, mode_1flag_z = 1, mode_c_z = 1, mode_hunt_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "kam1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_hunt_y = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "kas2%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_hunt_y = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "mus1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "myg1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "nab2%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "pol1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa1%s_%s", {era_z = 1, mode_1flag_z = 1, mode_assault_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa3%s_%s", {era_y = 1, mode_1flag_y = 1, mode_assault_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa6%s_%s", {era_y = 1, mode_1flag_y = 1, mode_assault_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa7%s_%s", {era_y = 1, mode_1flag_y = 1, mode_assault_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa8%s_%s", {era_z = 1, mode_1flag_z = 1, mode_assault_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa9%s_%s", {era_z = 1, mode_1flag_z = 1, mode_assault_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "tan1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "tat2%s_%s", {era_z = 1, era_y = 1, mode_ctf_z = 1, mode_ctf_y = 1, mode_eli_z = 1, mode_hunt_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "tat3%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_hunt_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "uta1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "yav1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_c_z = 1,})
-- MULTIPLAYER
AddNewGameModes(sp_missionselect_listbox_contents, "cor1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1, mode_hunt_y = 1,, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "dag1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "dea1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_hunt_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "end1%s_%s", {era_z = 1, mode_con_z = 1, mode_1flag_z = 1, mode_eli_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "fel1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_hunt_y = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "geo1%s_%s", {era_y = 1, mode_con_y = 1, mode_ctf_y = 1, mode_hunt_y = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "hot1%s_%s", {era_z = 1, mode_con_z = 1, mode_1flag_z = 1, mode_c_z = 1, mode_hunt_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "kam1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_hunt_y = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "kas2%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_hunt_y = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "mus1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "myg1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "nab2%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_eli_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "pol1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_ctf_z = 1, mode_ctf_y = 1,
mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa1%s_%s", {era_z = 1, mode_1flag_z = 1, mode_assault_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa3%s_%s", {era_y = 1, mode_1flag_y = 1, mode_assault_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa6%s_%s", {era_y = 1, mode_1flag_y = 1, mode_assault_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa7%s_%s", {era_y = 1, mode_1flag_y = 1, mode_assault_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa8%s_%s", {era_z = 1, mode_1flag_z = 1, mode_assault_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "spa9%s_%s", {era_z = 1, mode_1flag_z = 1, mode_assault_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "tan1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_c_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "tat2%s_%s", {era_z = 1, era_y = 1, mode_ctf_z = 1, mode_ctf_y = 1, mode_eli_z = 1, mode_hunt_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "tat3%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_hunt_z = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "uta1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_eli_z = 1, mode_c_y = 1,})
AddNewGameModes(sp_missionselect_listbox_contents, "yav1%s_%s", {era_z = 1, era_y = 1, mode_con_z = 1, mode_con_y = 1, mode_1flag_z = 1, mode_1flag_y = 1,
mode_c_z = 1,})
-- associate this mission name with the current downloadable content directory
-- (this tells the engine which maps are downloaded, so you need to include all new mission lua's here)
-- first arg: mapluafile from above
-- second arg: mission script name
-- third arg: level memory modifier. the arg to LuaScript.cpp: DEFAULT_MODEL_MEMORY_PLUS(x)
AddDownloadableContent("COR1","cor1z_con",4)
AddDownloadableContent("COR1","cor1y_con",4)
AddDownloadableContent("DAG1","dag1z_con",4)
AddDownloadableContent("DAG1","dag1y_con",4)
AddDownloadableContent("DEA1","dea1z_con",4)
AddDownloadableContent("DEA1","dea1y_con",4)
AddDownloadableContent("END1","end1z_con",4)
AddDownloadableContent("FEL1","fel1z_con",4)
AddDownloadableContent("FEL1","fel1y_con",4)
AddDownloadableContent("GEO1","geo1y_con",4)
AddDownloadableContent("HOT1","hot1z_con",4)
AddDownloadableContent("KAM1","kam1z_con",4)
AddDownloadableContent("KAM1","kam1y_con",4)
AddDownloadableContent("KAS2","kas2z_con",4)
AddDownloadableContent("KAS2","kas2y_con",4)
AddDownloadableContent("MUS1","mus1z_con",4)
AddDownloadableContent("MUS1","mus1y_con",4)
AddDownloadableContent("MYG1","myg1z_con",4)
AddDownloadableContent("MYG1","myg1y_con",4)
AddDownloadableContent("NAB2","nab2b_con",4)
AddDownloadableContent("NAB2","nab2a_con",4)
AddDownloadableContent("POL1","pol1z_con",4)
AddDownloadableContent("POL1","pol1y_con",4)
AddDownloadableContent("TAN1","tan1z_con",4)
AddDownloadableContent("TAN1","tan1y_con",4)
AddDownloadableContent("TAT2","tat2z_con",4)
AddDownloadableContent("TAT2","tat2y_con",4)
AddDownloadableContent("TAT3","tat3z_con",4)
AddDownloadableContent("TAT3","tat3y_con",4)
AddDownloadableContent("UTA1","uta1z_con",4)
AddDownloadableContent("UTA1","uta1y_con",4)
AddDownloadableContent("YAV1","yav1z_con",4)
AddDownloadableContent("YAV1","yav1y_con",4)
AddDownloadableContent("COR1","cor1z_ctf",4)
AddDownloadableContent("COR1","cor1y_ctf",4)
AddDownloadableContent("DAG1","dag1z_ctf",4)
AddDownloadableContent("DAG1","dag1y_ctf",4)
AddDownloadableContent("DEA1","dea1z_1flag",4)
AddDownloadableContent("DEA1","dea1y_1flag",4)
AddDownloadableContent("END1","end1z_1flag",4)
AddDownloadableContent("FEL1","fel1z_1flag",4)
AddDownloadableContent("FEL1","fel1y_1flag",4)
AddDownloadableContent("GEO1","geo1y_ctf",4)
AddDownloadableContent("HOT1","hot1z_1flag",4)
AddDownloadableContent("KAM1","kam1z_1flag",4)
AddDownloadableContent("KAM1","kam1y_1flag",4)
AddDownloadableContent("KAS2","kas2z_ctf",4)
AddDownloadableContent("KAS2","kas2y_ctf",4)
AddDownloadableContent("MUS1","mus1z_ctf",4)
AddDownloadableContent("MUS1","mus1y_ctf",4)
AddDownloadableContent("MYG1","myg1z_ctf",4)
AddDownloadableContent("MYG1","myg1y_ctf",4)
AddDownloadableContent("NAB2","nab2z_ctf",4)
AddDownloadableContent("NAB2","nab2y_ctf",4)
AddDownloadableContent("POL1","pol1z_ctf",4)
AddDownloadableContent("POL1","pol1y_ctf",4)
AddDownloadableContent("TAN1","tan1z_1flag",4)
AddDownloadableContent("TAN1","tan1y_1flag",4)
AddDownloadableContent("TAT2","tat2z_ctf",4)
AddDownloadableContent("TAT2","tat2y_ctf",4)
AddDownloadableContent("TAT3","tat3z_1flag",4)
AddDownloadableContent("TAT3","tat3y_1flag",4)
AddDownloadableContent("UTA1","uta1z_1flag",4)
AddDownloadableContent("UTA1","uta1y_1flag",4)
AddDownloadableContent("YAV1","yav1z_1flag",4)
AddDownloadableContent("YAV1","yav1y_1flag",4)
AddDownloadableContent("COR1","cor1z_eli",4)
AddDownloadableContent("DEA1","dea1z_eli",4)
AddDownloadableContent("END1","end1z_eli",4)
AddDownloadableContent("KAS2","kas2z_eli",4)
AddDownloadableContent("TAT2","tat2z_eli",4)
AddDownloadableContent("COR1","cor1y_hunt",4)
AddDownloadableContent("GEO1","geo1y_hunt",4)
AddDownloadableContent("KAM1","kam1y_hunt",4)
AddDownloadableContent("KAS2","kas2y_hunt",4)
AddDownloadableContent("TAT2","tat2z_hunt",4)
AddDownloadableContent("TAT3","tat3z_hunt",4)
AddDownloadableContent("SPA1","spa1z_Diet Dr. Pepper",4)
AddDownloadableContent("SPA3","spa3y_Diet Dr. Pepper",4)
AddDownloadableContent("SPA6","spa6y_Diet Dr. Pepper",4)
AddDownloadableContent("SPA7","spa7y_Diet Dr. Pepper",4)
AddDownloadableContent("SPA8","spa8z_Diet Dr. Pepper",4)
AddDownloadableContent("SPA9","spa9z_Diet Dr. Pepper",4)
AddDownloadableContent("SPA1","spa1z_1flag",4)
AddDownloadableContent("SPA3","spa3y_1flag",4)
AddDownloadableContent("SPA6","spa6y_1flag",4)
AddDownloadableContent("SPA7","spa7y_1flag",4)
AddDownloadableContent("SPA8","spa8z_1flag",4)
AddDownloadableContent("SPA9","spa9z_1flag",4)
AddDownloadableContent("COR1","cor1y_c",4)
AddDownloadableContent("DEA1","dea1z_c",4)
AddDownloadableContent("FEL1","fel1y_c",4)
AddDownloadableContent("GEO1","geo1y_c",4)
AddDownloadableContent("HOT1","hot1z_c",4)
AddDownloadableContent("KAM1","kam1y_c",4)
AddDownloadableContent("KAS2","kas2y_c",4)
AddDownloadableContent("MUS1","mus1y_c",4)
AddDownloadableContent("MYG1","myg1y_c",4)
AddDownloadableContent("NAB2","nab2z_c",4)
AddDownloadableContent("POL1","pol1z_c",4)
AddDownloadableContent("TAN1","tan1z_c",4)
AddDownloadableContent("UTA1","uta1y_c",4)
AddDownloadableContent("YAV1","yav1z_c",4)
-- all done
newEntry = nil
n = nil
-- Now load our core.lvl into the shell to add our localize keys
ReadDataFile("..\\..\\addon\\MPM\\data\\_LVL_PC\\core.lvl")