--- deliantra/server/common/loader.C 2006/12/26 08:54:59 1.30 +++ deliantra/server/common/loader.C 2006/12/30 10:16:10 1.31 @@ -640,16 +640,13 @@ case KW_speed_left: thawer.get (op->speed_left); break; case KW_speed: - { - float speed; - thawer.get (speed); - op->set_speed (speed); - - //TODO: maybe do in check_object - if (!(map_flags & MAP_STYLE)) - if (op->speed < 0) - op->speed_left = op->speed_left - RANDOM () % 100 / 100.0; - } + thawer.get (op->speed); + + //TODO: maybe do in check_object + // removed check for style maps + if (op->speed < 0) + op->speed_left = op->speed_left - RANDOM () % 100 / 100.0; + break; case KW_slow_move: @@ -981,30 +978,24 @@ break; case KW_msg: - { - thawer.get_ml (KW_endmsg, op->msg); - //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); - op->msg = "ERROR, please report: string too long, winged.\n"; - } - } + thawer.get_ml (KW_endmsg, op->msg); + //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); + op->msg = "ERROR, please report: string too long, winged.\n"; + } break; case KW_lore: - { - shstr msgbuf; - - thawer.get_ml (KW_endlore, op->lore); - //TODO: allow longer messages - /* Just print a warning so we can be reasonably safe - * 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", - HUGE_BUF / 2, HUGE_BUF, strlen (op->lore), &op->lore); - } + thawer.get_ml (KW_endlore, op->lore); + //TODO: allow longer messages + /* Just print a warning so we can be reasonably safe + * 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", + HUGE_BUF / 2, HUGE_BUF, strlen (op->lore), &op->lore); break; case KW_editable: @@ -1031,15 +1022,8 @@ return LL_EOF; case KW_ERROR: - set_ob_key_value (op, thawer.line, thawer.last_value, true); - //printf ("addkv(%s,%s)\n", thawer.line, thawer.get_str());//D - - //TODO: skip line, ugly, factor parsing better - if (thawer.last_value) - thawer.line = thawer.last_value; - - thawer.line += strlen (thawer.line) + 1; - + set_ob_key_value (op, thawer.last_keyword, thawer.last_value, true); + //fprintf (stderr, "addkv(%s,%s)\n", thawer.last_keyword, thawer.last_value);//D break; default: @@ -1066,6 +1050,18 @@ 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 (); + } + } + return parse_object (op, fp, map_flags); } @@ -1467,6 +1463,6 @@ save_object (fp, tmp, flag); fp.put (op); - fprintf (fp, "end\n"); + fp.put (KW_end, 0); }