--- deliantra/server/common/loader.C 2007/08/25 22:19:26 1.99 +++ deliantra/server/common/loader.C 2007/09/04 05:43:20 1.100 @@ -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)