#include <lib.h>
#include <dirs.h>

static object shadowed;
static object shadow_thing = this_object();
static int shadowing;

int eventShadow(object ob){
    if(!shadowing){
	shadowing = 1;
	shadowed = ob;
	ob->AddShadow(shadow_thing);
	shadow(ob);
	return 1;
    }
    else return 0;
}

mixed GetShadowed(){
    return shadow(shadowed,0);
}

string GetShadowedName(){
    return shadowed->GetName();
}

object GetShadowedObject(){
    return shadowed;
}

int eventUnshadow(){
    shadowed->RemoveShadow(shadow_thing);
    return destruct(shadow_thing);
}
