/** * Shiannar@Divided Sky, Somewhere between 3/8/01 and 4/8/01. */ #define WAIT_LENGTH 172800 #include <player.h> #include <playerinfo.h> inherit OBJECT_OBJ; string owner; int time; void set_owner(string); void set_time(string); int do_register(); void confirm_register(string); void set_owner(string who) { owner = lower_case(who); } string query_owner() { return owner; } void set_time(int new_time) { time = new_time; } int query_time() { return time; } void setup() { set_name("token"); set_short("pk token"); set_adjectives(({"pk"})); add_property("nosteal", 1 ); set_long("This small token will allow its owner to become a playerkiller " "after a certain period of time has passed. If you do not wish " "to become a playerkiller, simply destroy it in some way, otherwise " "use the \"register\" command to both check the time remaining and " "to register for once and for all.\n"); set_value(0); set_weight(0); } /* setup() */ void init() { if( ENV(TO) == TP ) TP->add_command("register", TO, ""); } /* init() */ int do_register() { if( ENV(TO) != TP ) return 0; if( time() - WAIT_LENGTH < time ) { add_failed_mess("You haven't waited long enough, you still have "+ time_string( time + WAIT_LENGTH - time() )+" seconds remaining!\n" "You can register "+ctime( time + WAIT_LENGTH )+" (local server " "time).\n"); return 0; } if( owner != lower_case(TP->query_name()) ) { TO->move("/room/rubbish"); add_failed_mess("You are not who the token was intended for.\n"); return 0; } tell_object( TP, "%^BOLD%^%^RED%^Warning! Becoming a playerkiller is " "permanent!\nAre you entirely sure you wish to do this?\n" "Please note you are using the character %^YELLOW%^"+ TP->query_name()+"%^RED%^!%^RESET%^\n\n" "If you haven't read \"help playerkilling\" it is strongly\n" "recommended you choose \"no\"!\n" "(\"yes\" or \"no\")"); input_to("confirm_register"); return 1; } /* do_register() */ void confirm_register(string str) { if( lower_case( str[0..0] ) != "y" ) { tell_object(TP, "It appears you have chosen not to become a " "playerkiller just yet.\n"); return; } if( ENV(TO) != TP ) { tell_object( TP, "You're not carrying the token!\n"); return; } if( lower_case(TP->query_name()) != owner) { TO->move("/room/rubbish"); tell_object( TP, "You're not who this token was intended for.\n"); return; } if( time() - WAIT_LENGTH < time ) { tell_object(TP, "You haven't waited long enough, you still have "+ time_string( time + WAIT_LENGTH - time() )+" seconds remaining!\n" "You can register "+ctime( time + WAIT_LENGTH )+" (local server " "time).\n"); return; } if( TP->query_property(PKER_NOT_ALLOWED) ) { tell_object( TP, "You have been expressly forbidden from becoming " "pk.\n"); TO->move("/room/rubbish"); return; } if( TP->query_property(PKER) ) { tell_object(TP, "You are already a playerkiller.\n" "Your token crumbles to dust and is swept away.\n"); TO->move("/room/rubbish"); return; } TP->add_property( PKER, time() ); PLAYERINFO_HANDLER->add_entry( TO, TP->query_name(), "misc", CAP(TP->HE)+" chose to become a playerkiller via a token.\n"); tell_object(TP, "You are now a playerkiller.\nYour token crumbles to " "dust and is swept away.\n"); TO->move("/room/rubbish"); } /* confirm_register() */ mapping query_dynamic_auto_load() { return ([ "::": ::query_dynamic_auto_load(), "time": time, "owner": owner, ]); } /* query_dynamic_auto_load() */ void init_dynamic_arg(mapping map) { if( map["::"] ) ::init_dynamic_arg(map["::"]); if( map["time"] ) set_time(map["time"]); if( map["owner"] ) set_owner(map["owner"]); } /* init_dynamic_arg() */ mixed stats() { return ::stats() + ({ ({ "time", time }), ({ "time left", ((time + WAIT_LENGTH) - time()) }), ({ "owner", owner}), }); } /* stats() */