Tutorial: Map merging by LightChaosman - BLCM/BLCMods GitHub Wiki
Alright, time to teach you people about map merging.
what exactly determines what is loaded in a level.
A few things, one of them being the map(s) loaded.
There is always a single main map (a persistent), and numerous secondary maps.
This is all defined in a LevelList. Each DLC has it's own levelList object. These are the following:
GD_Globals.General.LevelList
GD_AlliumPackageDef.AlliumTG_LevelList
GD_AlliumPackageDef.AlliumXmas_LevelList
GD_AsterPackageDef.Aster_LevelList
GD_FlaxPackageDef.Flax_LevelList
GD_IrisPackageDef.LevelList.Iris_LevelList
GD_LobeliaPackageDef.LevelList
GD_OrchidPackageDef.LevelList.Orchid_LevelList
GD_NasturtiumPackageDef.NasturtiumVday_LevelList
GD_NasturtiumPackageDef.NasturtiumEaster_LevelList
GD_SagePackageDef.LevelList.Sage_LevelList
The part you're looking for is in the LevelList field of the LevelList (makes sense, right).
Each entry in the LevelListField has an entry called SecondaryMaps.
There all the additional stuff for the map is loaded.
The main map will always end in _P, while secondary maps usually end with _Combat or other things.
if you want to make a mod that uses something from map X in all other maps, you need to figure out which map it is in.
For instance, terra is in his persistent main map (the _P) one, while some unique enemies are either in _Dynamic, _Combat, _Mission or other kinds of secondary map.
Finding out where your stuff is stored is a trail and error process.
Once you know this, you need to edit all 72 or so entries among the LevelList objects I listed above. (So it's annoying if you do not automate it).
This will inevitably increase your load times, and will cause issues with textures and sounds, since some of the stuff will get overwritten, and the game will be like, "Yo, bruh, wtf".
Also, as original with hotfixes, since you're basically modifying a huge ass array to facility your mod, multiple mods with map merging will conflict, and break each other, unless the map merging aspects are merged, which again, is annoying.
Don't load the same map data twice, game doesnt like that.
Don't load anything from the Coloseum map, it will screw your game.
example
The following is the original LevelList for the Easter DLC:
LevelList(0)=(
PersistentMap = "Easter_P",
SecondaryMaps = ("Easter_Audio","Easter_Boss","Easter_Combat","Easter_Dynamic","Easter_FX","Easter_Lights","Easter_Mission","Easter_Mission_1","Easter_Mission_2","Easter_Mission_Side","Easter_Skybox"),
ConnectedPersistents = ,
LevelName = "Wam Bam Island",
GameReleaseDef = GameReleaseDefinition'GD_NasturtiumPackageDef.GameRelease_Nasturtium',
DiscoveryAchievements =
)
If you want terra to be able to spawn during the crawmerax fight, you would need to add ThresherRaid_P to the secondary maps field there, so it would become
LevelList(0)=(
PersistentMap = "Easter_P",
SecondaryMaps =
("Easter_Audio","Easter_Boss","Easter_Combat","Easter_Dynamic","Easter_FX","Easter_Lights","Easter_Mission","Easter_Mission_1","Easter_Mission_2","Easter_Mission_Side","Easter_Skybox","ThresherRaid_P"),
ConnectedPersistents = ,
LevelName = "Wam Bam Island",
GameReleaseDef = GameReleaseDefinition'GD_NasturtiumPackageDef.GameRelease_Nasturtium',
DiscoveryAchievements =
)
Notice that if you're loading in _P levels, that it may not equal the _P stored under PersistentMap.
In this example there is just a single map, since its a single map dlc. In other LevelList (for the main game or the story DLC), you need to update the SecondaryMaps field of every entry in the LevelList field of the LevelList object.
Editing the LevelList is a regular set command.
Everything else you do with non-native (or native) data is done with Level hotfixes.
or you can be lazy and use this