/* The hide in shadows shadow. Cute huh? */ #define LEVEL_MOD 2 object tp; int found; void dest_hide_shadow(); void setup_shadow(object ob) { if(ob->query_hide_shadow()) { return; } tp = ob; shadow(ob,1); } int attack_by(object him) { dest_hide_shadow(); return tp->attack_by(him); } int cast(string str) { dest_hide_shadow(); return tp->cast(str); } int attack_ob(object him) { dest_hide_shadow(); return tp->attack_ob(him); } object *move_player(string dir, string dest, string mess, object ob) { if ( !ob || ob != tp ) dest_hide_shadow(); return (object *)tp->move_player(dir, dest, mess, ob); } int do_death(string str) { dest_hide_shadow(); return (int)tp->do_death(str); } int do_loud_say(string str) { dest_hide_shadow(); return (int)tp->do_loud_say(str); } int do_emote(string str) { dest_hide_shadow(); return (int)tp->do_emote(str); } int do_echo(string str) { dest_hide_shadow(); return (int)tp->do_echo(str); } int do_say(string str) { dest_hide_shadow(); return (int)tp->do_say(str); } int event_player_search() { dest_hide_shadow(); } int soul_com(string str) { int i; if ((i = (int)tp->soul_com(str)) == 1) dest_hide_shadow(); return i; } void dest_hide_shadow() { tell_room(environment(tp), "You notice "+tp->query_cap_name()+" nearby.\n", ({ tp })); tell_object(tp, "You have been noticed.\n"); call_out("do_dest_hide_shadow",0); found = 1; } void do_dest_hide_shadow() { destruct(this_object()); } int query_hide_shadow() { int i; i = random((int)tp->query_level() * LEVEL_MOD ); i = (i==0) ? 1 : i; return i; } string pretty_short() { if (found && tp) return (string)tp->pretty_short(); return 0; } string short() { if (found && tp || (query_verb() && query_verb() == "who")) return (string)tp->short(); return 0; } string pretty_plural() { if (found && tp) return (string)tp->pretty_plural(); return 0; } string query_plural() { if (found && tp) return (string)tp->query_plural(); return 0; }