--- deliantra/server/common/loader.C 2007/08/25 22:19:26 1.99 +++ deliantra/server/common/loader.C 2007/09/04 18:20:35 1.101 @@ -31,6 +31,8 @@ ///////////////////////////////////////////////////////////////////////////// +extern archetype *loading_arch; + /* This table is only necessary to convert objects that existed before the * spell object conversion to the new object. It was not practical * to go through every mapping looking for every potion, rod, wand, etc @@ -251,8 +253,6 @@ NULL }; -extern bool loading_arch; - /* This function checks the object after it has been loaded (when we * get the 'end' in the input stream). This function can be used to * deal with legacy objects where fields may have changed. It can also be used @@ -396,7 +396,7 @@ /* POTIONS and ALTARS don't always cast spells, but if they do, update them */ ((type == POTION || type == ALTAR) && stats.sp)) && !inv && !loading_arch) { - /* Fireall is bizarre in that spell type was stored in dam. Rest are 'normal' + /* Firewall is bizarre in that spell type was stored in dam. Rest are 'normal' * in that spell was stored in sp. */ object *tmp = get_archetype (spell_mapping[type == FIREWALL ? stats.dam : stats.sp]); @@ -604,21 +604,7 @@ break; case KW_owner: - if (const char *s = f.get_str ()) - { - unsigned int version; - unsigned long long seq; - char name[256]; - - if (3 == sscanf (s, "<%d.%llx>/%256s", &version, &seq, name) && version == 1) - { - UUID uuid = seq; - player *pl = player::find (name); - - if (pl && pl->ob->uuid == uuid) - owner = pl->ob; - } - } + f.delayed_deref (this, owner, f.get_str ()); break; case KW_animation: @@ -1067,7 +1053,6 @@ { object_thawer f (buf, (AV *)0); - f.next (); return op->parse_kv (f); } @@ -1292,13 +1277,8 @@ #define CMP_OUT(v) if (expect_false (op->v != tmp->v)) f.put (KW_ ## v, op->v) #define CMP_OUT2(k,v) if (expect_false (op->v != tmp->v)) f.put (KW_ ## k, op->v) - if (object *pl = op->owner) - if (pl->contr) - { - char owner[256]; - snprintf (owner, sizeof (owner), "<1.%llx>/%s", (unsigned long long)pl->uuid.seq, &pl->name); - f.put (KW_owner, (const char *)owner); - } + if (object *owner = op->owner) + f.put (KW_owner, static_cast(owner->ref ())); CMP_OUT (name); CMP_OUT (name_pl); @@ -1459,8 +1439,6 @@ bool success = false; bool seen_arch = false; - f.next (); - for (;;) { switch (f.kw)