--- deliantra/server/common/loader.C 2007/04/16 06:23:39 1.68 +++ deliantra/server/common/loader.C 2007/04/17 18:40:31 1.70 @@ -1401,10 +1401,15 @@ ///////////////////////////////////////////////////////////////////////////// +// generic resource file load, +// currently supports: region, treasures, archetypes bool load_resource_file (const char *filename) { object_thawer f (filename); + bool success = false; + bool seen_arch = false; + f.next (); for (;;) @@ -1413,18 +1418,35 @@ { case KW_region: if (!region::read (f)) - return false; + goto finish; + break; + + case KW_treasure: + case KW_treasureone: + if (!treasurelist::read (f)) + goto finish; + break; + + case KW_object: + seen_arch = true; + if (!archetype::read (f)) + goto finish; break; case KW_EOF: - return true; + success = true; + goto finish; default: if (!f.parse_error ("resource file")) - return false; + goto finish; } - - f.next (); } + +finish: + if (seen_arch) + init_archetype_pointers (); + + return success; }