--- deliantra/server/common/treasure.C 2006/09/27 00:36:08 1.21 +++ deliantra/server/common/treasure.C 2006/12/12 21:39:56 1.24 @@ -452,19 +452,19 @@ object * generate_treasure (treasurelist * t, int difficulty) { - object *ob = get_object (), *tmp; + object *ob = object::create (), *tmp; create_treasure (t, ob, 0, difficulty, 0); /* Don't want to free the object we are about to return */ tmp = ob->inv; if (tmp != NULL) - remove_ob (tmp); + tmp->remove (); if (ob->inv) LOG (llevError, "In generate treasure, created multiple objects.\n"); - free_object (ob); + ob->destroy (); return tmp; } @@ -851,6 +851,12 @@ if (difficulty < 1) difficulty = 1; + if (INVOKE_OBJECT (ADD_BONUS, op, + ARG_OBJECT (creator != op ? creator : 0), + ARG_INT (difficulty), ARG_INT (max_magic), + ARG_INT (flags))) + return; + if (!(flags & GT_MINIMAL)) { if (op->arch == crown_arch) @@ -995,9 +1001,8 @@ case RING: if (op->arch == NULL) { - remove_ob (op); - free_object (op); - op = NULL; + op->destroy (); + op = 0; break; } @@ -1386,7 +1391,7 @@ art->difficulty = (uint8) value; else if (!strncmp (cp, "Object", 6)) { - art->item = get_object (); + art->item = object::create (); if (!load_object (thawer, art->item, 0)) LOG (llevError, "Init_Artifacts: Could not load object.\n"); @@ -1507,11 +1512,7 @@ /* Remove any spells this object currently has in it */ while (op->inv) - { - tmp_obj = op->inv; - remove_ob (tmp_obj); - free_object (tmp_obj); - } + op->inv->destroy (); tmp_obj = arch_to_object (change->other_arch); insert_ob_in_ob (tmp_obj, op);