--- simmain.cc +++ simmain.cc @@ -1019,12 +1019,41 @@ // loading all paks dbg->important("Reading object data from %s...", env_t::objfilename.c_str()); obj_reader_t::load(env_t::objfilename.c_str(), translator::translate("Loading paks ...") ); + + // Search secondary directory + searchfolder_t sf; + string dn = env_t::user_dir; + sf.search(dn + (env_t::objfilename).c_str(), "", true); + + FOR(searchfolder_t, const& i, sf) { + char oDirectoryName[1024]; + strcpy(oDirectoryName, i); + strcat(oDirectoryName, "/"); + + obj_reader_t::load(oDirectoryName, translator::translate("Loading paks ...")); + } + + if( env_t::default_settings.get_with_private_paks() ) { // try to read addons from private directory chdir( env_t::user_dir ); if(!obj_reader_t::load(("addons/" + env_t::objfilename).c_str(), translator::translate("Loading addon paks ..."))) { fprintf(stderr, "reading addon object data failed (disabling).\n"); env_t::default_settings.set_with_private_paks(false); } + + // Search secondary directory + searchfolder_t sf; + string dn = env_t::user_dir; + sf.search(dn + "addons/" + (env_t::objfilename).c_str(), "", true); + + FOR(searchfolder_t, const& i, sf) { + char oDirectoryName[1024]; + strcpy(oDirectoryName, i); + strcat(oDirectoryName, "/"); + + obj_reader_t::load(oDirectoryName, translator::translate("Loading addon paks ...")); + } + chdir( env_t::program_dir ); }