--- deliantra/server/common/loader.C 2006/12/30 10:16:10 1.31 +++ deliantra/server/common/loader.C 2007/01/02 23:39:21 1.37 @@ -553,7 +553,7 @@ object *tmp; - if (arch != NULL) + if (arch) tmp = arch_to_object (arch); else { @@ -562,6 +562,11 @@ tmp->name = str; } + // decativate the object we, as we are still going + // to read the speed value. Objects should be activated + // when the map, object or player is completly loaded. + tmp->deactivate (); + parse_object (tmp, thawer, map_flags); if (tmp->arch) @@ -603,7 +608,11 @@ op->arch = archetype::find (str); if (op->arch) - op->arch->clone.copy_to (op); + { + op->arch->clone.copy_to (op); + // copy_to activates, this should be fixed properly + op->deactivate (); + } else if (!arch_init) /* record the name of the broken object */ op->name = str; @@ -982,7 +991,7 @@ //TODO: allow longer messages if (strlen (op->msg) >= HUGE_BUF) { - LOG (llevDebug, "\n\tError message length >= %d: %d\n>%.80s<\n", HUGE_BUF, strlen (op->msg), &op->msg); + LOG (llevDebug, "\tError message length >= %d: %d\n>%.80s<\n", HUGE_BUF, strlen (op->msg), &op->msg); op->msg = "ERROR, please report: string too long, winged.\n"; } break; @@ -994,7 +1003,7 @@ * about not overflowing the buffer. */ if (strlen (op->lore) > (HUGE_BUF / 2)) - LOG (llevDebug, "\n\tWarning lore length > %d (max allowed=%d): %d\n>%.80s<\n", + LOG (llevDebug, "\tWarning lore length > %d (max allowed=%d): %d\n>%.80s<\n", HUGE_BUF / 2, HUGE_BUF, strlen (op->lore), &op->lore); break; @@ -1050,17 +1059,7 @@ int load_object (object_thawer &fp, object *op, int map_flags) { - // cede every 500 objects loaded - { - static int cede_counter = 0; - - if (++cede_counter >= 500) - { - cede_counter = 0; - if (coroapi::nready ()) - coroapi::cede (); - } - } + coroapi::cede_every (1000); // cede once in a while return parse_object (op, fp, map_flags); } @@ -1463,6 +1462,6 @@ save_object (fp, tmp, flag); fp.put (op); - fp.put (KW_end, 0); + fp.put (KW_end); }