@@ -107,6 +107,8 @@ char * multiplay_mods[MAX_MODS] = { NULL };
107107char * override_mods [MAX_MODS ] = { NULL };
108108char * override_mod_list = NULL ;
109109bool use_override_mods = false;
110+ char * override_map [2 ] = { NULL };
111+ bool use_override_map = false;
110112
111113char * loaded_mods [MAX_MODS ] = { NULL };
112114char * mod_list = NULL ;
@@ -250,7 +252,29 @@ void setOverrideMods(char * modlist)
250252 override_mod_list = modlist ;
251253 use_override_mods = true;
252254}
253- void clearOverrideMods (void )
255+ void setOverrideMap (char * map , int maxPlayers )
256+ {
257+ // Transform "Sk-Rush-T2" into "4c-Rush.wz" so it can be matched by the map loader
258+ override_map [0 ] = (char * )malloc (strlen (map )+ 1 + 7 );
259+ snprintf (override_map [0 ], 3 , "%d" , maxPlayers );
260+ strcat (override_map [0 ],"c-" );
261+ if (strncmp (map , "Sk-" , 3 ) == 0 )
262+ {
263+ strcat (override_map [0 ],map + 3 );
264+ }
265+ else
266+ {
267+ strcat (override_map [0 ],map );
268+ }
269+ if (strncmp (override_map [0 ]+ strlen (override_map [0 ])- 3 ,"-T" ,2 ) == 0 )
270+ {
271+ override_map [0 ][strlen (override_map [0 ])- 3 ] = '\0' ;
272+ }
273+ strcat (override_map [0 ],".wz" );
274+ override_map [1 ] = NULL ;
275+ use_override_map = true;
276+ }
277+ void clearOverrides (void )
254278{
255279 int i ;
256280 use_override_mods = false;
@@ -260,6 +284,13 @@ void clearOverrideMods(void)
260284 }
261285 override_mods [0 ] = NULL ;
262286 override_mod_list = NULL ;
287+
288+ if (override_map [0 ])
289+ {
290+ free (override_map [0 ]);
291+ override_map [0 ] = NULL ;
292+ }
293+ use_override_map = false;
263294}
264295
265296void addLoadedMod (const char * modname )
@@ -705,7 +736,7 @@ static void startGameLoop(void)
705736{
706737 SetGameMode (GS_NORMAL );
707738
708- if (!levLoadData (aLevelName , NULL , 0 ))
739+ if (!levLoadData (aLevelName , NULL , GTYPE_SCENARIO_START ))
709740 {
710741 debug ( LOG_FATAL , "Shutting down after failure" );
711742 exit (EXIT_FAILURE );
0 commit comments