/* Super tag object by Jubal */ /* Netdead version. requires remove_interactive() efun */ #define ROOM_FILE "players/jubal/room/tagbooth" #define OBJ_FILE "players/jubal/obj/supertag" int points; string killedby; string lasttag; int playing; short(){ if(!lasttag) return "Super-Tag Object. points: "+points; return "Super-Tag Object. points: "+points+", last tagged: "+lasttag; } extra_look() { return "\n.--------------------------------------.\n" +".--** Currently Playing Super-Tag! **--.\n" +".--------------------------------------"; } long(){ write(short()+"\n"); write("Commands: 'tag' , 'tagwho', 'tagsay' , 'help tag'\n"); return 1; } id(str) { if(str=="__tag" && playing) return 1; return str=="tag" || str=="super-tag" || str=="supertag"; } get() { return 0; } drop() { return 1; } query_points(){ return points; } query_lasttag(){ return lasttag; } query_killedby(){ return killedby; } init() { if(!points) points=1; lasttag=0; if(environment(this_object()) == this_player()) { add_action("tag","tag"); add_action("tagwho","tagwho"); add_action("tagsay","tagsay"); add_action("taghelp","help"); count(); } } count() { if(playing) return; call_out("done_counting",5); write("You have five seconds to hide.\n"); } done_counting() { write("You are now playing Super-Tag!\n"); ROOM_FILE->tagshout(this_player()->query_name()+" is done counting!\n"); playing=1; } tag(arg) { object target,tag; string str; if(!playing) return write("You have five seconds to hide before you start playing.\n"); if(!arg) return write("Usage: tag \n"); if(function_exists("notag",environment(this_player()))) return (environment(this_player())->notag()); target = find_player(arg); if(target==this_player()) return write("Do you really want to tag yourself?\n"); if(!target) return write("No such person.\n"); if(!query_ip_number(target)) return write("You can't tag netdead players.\n"); if(!(tag=present("__tag",target))) { if(present("supertag",target)) return write(target->query_name() +" gets five seconds to re-enter the game.\n"); write(target->query_name()+" is not playing tag."); if(points>1) { write(" You lose a point.\n"); points--; } else write("\n"); return 1; } if(environment(target)!=environment(this_player())) return write(target->query_name()+" is not here.\n"); points+=tag->query_points(); lasttag=target->query_name(); tell_object(target,"\n\nTAG! YOU'RE DEAD!\n"); if(tag->query_points()==1) { write("You tag "+target->query_name()+" (now "+points+" points total)!\n"); str=this_player()->query_name()+" tags "+target->query_name()+"!\n"; say(str); ROOM_FILE->tagshout(str,0); } else { write("You tag "+target->query_name()+" for "+tag->query_points() +" points (now "+points+" total)!\n"); str=this_player()->query_name()+" tags "+target->query_name() +" for "+tag->query_points()+" points!\n"; say(str); ROOM_FILE->tagshout(str,0); } /* destruct(tag);*/ tag->die(this_player()->query_name()); /* target->quit(); */ remove_interactive(target); return 1; } taghelp(arg) { return ROOM_FILE->taghelp(arg); } tagsay(arg) { if(!arg) return write("Usage: tagsay \n"); ROOM_FILE->tagshout(this_player()->query_name()+" tagsays: "+arg+"\n",1); return write("You tagsay: "+arg+"\n"); } tagwho() { ROOM_FILE->tagwho(); return 1; } die(arg) { /* for query_auto_load str */ killedby=arg; points=points/2; if(points<1) points=1; playing=0; }