/* Super tag object by Jubal */ /* quit and autoload version */ #define ROOM_FILE "players/jubal/room/tagbooth" #define OBJ_FILE "players/jubal/obj/supertag" int points; string killedby; string lasttag; 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) { return str=="tag" || str=="super-tag" || str=="supertag" || str=="__tag"; } 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"); } } tag(arg) { object target,tag; string str; 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(!(tag=present("__tag",target))) { 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(); 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; } query_auto_load() { return OBJ_FILE+":"+points+":"+killedby+":"; } init_arg(arg) { object tp; if(sscanf(arg,"%d:%s",points,killedby)!=2) { write("TAG AUTOLOAD STRING CORRUPT!\n"); destruct(this_object()); } tp=this_player(); call_out("to_booth",2,tp); /* wait 2 before returning in case of guild homes and what not. :-) */ points=points/2; if(points<1) points=1; write("You return to the SuperTag booth to play with "+points+" points.\n"); ROOM_FILE->tagshout(this_player()->query_name()+" returns to play tag!\n"); return 1; } to_booth(me) { me->move_player("to play tag!#"+ROOM_FILE); tell_object(me,"You return to the SuperTag booth to play with "+points+" points.\n"); ROOM_FILE->tagshout(me->query_name()+" returns to play tag!\n"); /* command("look",me);*/ }