/* Do not remove the headers from this file! see /USAGE for more info. */ // Based on passwd.c and admtool's nuke. // --OH. //:PLAYERCOMMAND //USAGE suicide // //This would allow you to completely obliterate your character from the game, //leaving no trace. //However, we're sure you wouldn't really want to do that, //so we've disabled it. //If you really really do want to be removed completely and irrevocably, //then mail the request to one of the admins. inherit M_INPUT; inherit CMD; private nomask void nuke_player() { object o; mixed err; string userid = this_user()->query_userid(); if ( o = find_user(userid) ) { o->receive_private_msg("Farewell.\n"); o->quit(); } MAILBOX_D->get_mailbox(userid)->nuke_mailbox(1); MAILBOX_D->unload_mailbox(userid); /* remove a bunch of files. note: some might not exist. */ err = rm(LINK_PATH(userid) + __SAVE_EXTENSION__); err = rm(USER_PATH(userid) + __SAVE_EXTENSION__); err = rm(PSHELL_PATH(userid) + __SAVE_EXTENSION__); err = rm(WSHELL_PATH(userid) + __SAVE_EXTENSION__); LAST_LOGIN_D->remove_user(userid, 1); err = SECURE_D->delete_wizard(userid); SECURE_D->set_protection(WIZ_DIR "/" + userid, 1, -1); } private nomask void confirm_current_password(string s) { write("\n"); if ( !this_user()->matches_password(s) ) { write("Invalid password.\nAborting.\n"); } else { nuke_player(); } } private void main() { write("Sorry, suicide has been disabled.\n"); return; modal_simple((: confirm_current_password :), "Enter your current password to confirm suicide: ", 1); }