/* Applications Room for Suvangi * By Quango 950808 * * Cleaned up a bunch. * Sibbis 960622 */ // Made into the Nameless Sorrows application command.. Donky 30/07/96 // Used on Riftwar Shaydz #define BOARD_NAME "applications" inherit COMMAND_BASE; void continue_loop(int step); void abort_app(); void end_app(); nosave mapping questions; nosave string *qkeys; void create() { ::create(); questions = ([ "A_rlname" : "What is your real name?", "B_rlage" : "What is your age?", "C_rlloc" : "Where do you live?", "D_rlschool" : "Do you attend a school or university? " "If so, which one? What is your major there?", "E_rlwork" : "Do you work? If so, what do you do?", "F_rlhobby" : "What are your hobbies and interests?", "G_rlunix" : "How much experience do you have with basic Un*x " "commands (like ls, cd, rm, etc.)?", "H_mudlong" : "How long have you been mudding?", "I_mudwhere" : "Where have you mudded? Under what names?", "J_mudbanned" : "Have you ever been banned from a mud? If so, why?", "K_coded" : "If you have coded on a MUD in the past, where did " "you code?", "L_coding" : "Do your currently code on a MUD? If so, where?", "M_knowloser" : "Do you already know anyone who codes here, who could " "recommend you? If so, who?", "N_whyus" : "Why would you like to code here?", "O_playlength" : "How long have you played here?", "P_timeavail" : "How much time (hours/week) could you devote to " "coding on "+mud_name()+"?", "Q_whatarea" : "Which areas of the mud would you be interested in " "working on?", "R_misc" : "Do you have anything else you'd like to tell us?\n" "Also, please leave an email address where we can " "reach you. The answer to your application will be " "sent to your mudmail though." ]); qkeys = asort(keys(questions)); } /* create() */ /** @ignore yes */ int cmd( string str ) { int i; object user = TP; /* In case the person quit while doing the application */ i = user->query_property("apply step"); while( i > -1 ) { user->remove_property("app part " + i ); i--; } user->remove_property("apply step"); write("Application for a creator position on "+mud_name()+".\n\n" "Please note that a blank entry will abort your application.\n\n"); write("There is no need for you to enter every piece of information " "that exists about you at the first prompt. Please answer all " "the questions given, and you will get an opportunity at the end " "to let us know anything else about you that seems relevant.\n\n"); write("NOTE:- Some people have reported problems filling out this " "application.\n" "If for some reason it doesn't complete (it asks you at the end to " "type yes), you might be better off using the web application on our " "website (help website).\n"); /*** Loop to the first question ***/ continue_loop(0); return 1; } /* cmd() */ /** @ignore yes */ void lame_line_editor( string last, string stuff, int first_go_around ) { if( first_go_around ) { write("When you are done with this question, type '**', '.', or " "enter a blank line.\n"); write("] "); input_to("lame_line_editor", "", 0 ); return; } else if( !last || last == "" || last == "." || last == "**") { TO->next_step(stuff); return; } stuff += last+" "; write("] "); input_to("lame_line_editor", stuff, 0 ); } /* lame_line_editor() */ /** @ignore yes */ void next_step( string previous_input ) { int step; if( !previous_input || previous_input == "" ) { abort_app(); return; } step = TP->query_property("apply step"); TP->add_property("app part "+step, previous_input ); step++; if( step >= sizeof(qkeys) ) { end_app(); return; } continue_loop(step); } /* next_step() */ /** @ignore yes */ void continue_loop( int step ) { string q_str; write("\n"); q_str = "Question #"+(step+1)+": "; printf("%s%-=*s\n", q_str, TP->query_cols()-strlen(q_str), questions[qkeys[step]] ); TP->add_property("apply step", step ); TO->lame_line_editor("", "", 1 ); } /* continue_loop() */ /** @ignore yes */ void abort_app() { write("Are you sure you want to ABORT the application? "); input_to("confirm_abort", "", 0 ); } /* abort_app() */ /** @ignore yes */ void confirm_abort( string confirm ) { int i, step; if( lower_case( confirm[0..0] ) != "y" ) { step = TP->query_property("apply step"); continue_loop(step); return ; } i = TP->query_property("apply step"); while( i > -1 ) { TP->remove_property("app part " + i ); i--; } TP->remove_property("apply step"); TP->save_me(); write("Application aborted.\n"); return; } /* confirm_abort() */ /** @ignore yes */ void end_app() { string message; int i; TP->remove_property("apply step"); message = ""; for( i = 0; i < sizeof(qkeys); i++ ) { message += sprintf("---> %-=*s\n\n", 70, questions[qkeys[i]] ); message += sprintf(" %-=*s\n\n", 70, TP->query_property("app part " + i ) ); TP->remove_property("app part " + i ); } TP->save_me(); TP->set_finish_func("end_app_2", TO ); TP->add_property("app message", message ); TP->more_string("Your application:\n\n" + message, "Apply"); } /* end_app() */ /** @ignore yes */ void end_app_2() { string message; message = TP->query_property("app message"); TP->remove_property("app message"); write("Are you sure you want to send the application? "); input_to("confirm_apply", 0, message ); } /* end_app_2() */ /** @ignore yes */ void confirm_apply( string str, string message ) { str = lower_case(str)[0..0]; if( str != "y" && str != "n" ) { write("Are you sure you want to send the application (Yes or No)? "); input_to("confirm_apply", 0, message ); return; } if( str == "n" ) { write("Application aborted.\n"); return; } BOARD_H->add_message( BOARD_NAME, TP->query_name(), "Application by "+TP->query_cap_name(), message ); write("Thank you for your application. You should hear back " "from us within 2-4 days.\n"); return; } /* confirm_apply() */ /** @ignore yes */ mixed query_patterns() { return ({ "", (: cmd :) }); }