inherit "/std/object";
int in_use;
/* handles all the cutsey in-use testing */
#define HANDLER "/obj/handlers/item_handler"
// Move hack so that wearables/holdables will leave the wear/hold
// arrays of living creatures.
varargs int move(mixed dest, mixed messout, mixed messin)
{
object ob;
int i;
int UNUSED_IT = 0; /* Hamlet's nastiness */
i = 0;
/* Next line is Hamlet's and it's ugly, but needed */
if(this_object()->query_in_use())
{
this_object()->set_in_use(0);
UNUSED_IT = 1;
}
ob = environment(this_object());
i = (int)::move(dest, messout, messin);
if (!i && UNUSED_IT && objectp(ob) && living(ob))
{
if (this_object()->query_holdable()) /* Hamlet fixed me */
ob->unhold_ob(this_object());
else if (this_object()->query_wearable()) /* hamlet fixed me */
ob->unwear_ob(this_object());
}
if(i && UNUSED_IT) this_object()->set_in_use(1); /* Hamlet */
return i;
}
/* Added april '95 by Baldrick, does the same as the move, just for dest_me
* Not sure if it will work tho
*/
void dest_me()
{
object ob;
ob = environment(this_object());
if (in_use && objectp(ob) && living(ob))
if (this_object()->query_holdable()) /* Hamlet fixed me */
ob->unhold_ob(this_object());
else if (this_object()->query_wearable()) /* Hamlet */
ob->unwear_ob(this_object());
::dest_me();
} /* void dest_me */
// Major hack, Taniwha 1996, most of it is in HANDLER
// To clean up adding reistances on magic stuff, stat mods etc
int set_in_use(int i)
{
in_use = i;
// Taniwha, see if there is any cute stuff
if( !(sizeof(map_prop) || sizeof(timed_prop) || sizeof(query_static_properties()))) return i;
catch(in_use = HANDLER->local_in_use(i,ETO,TO));
return in_use;
}
mapping int_query_static_auto_load() {
return ::int_query_static_auto_load();
}
mapping query_dynamic_auto_load() {
return ::query_dynamic_auto_load();
}