/* -*- LPC -*- */ /* * $Locker: $ * $Id: chfn.c,v 1.8 2003/07/10 07:10:12 pinkfish Exp $ * $Log: chfn.c,v $ * Revision 1.8 2003/07/10 07:10:12 pinkfish * Fix up the numvers. * * Revision 1.7 2001/03/12 04:23:16 pinkfish * Change lord only to creator only in the message. * * Revision 1.6 2001/03/12 00:19:45 ceres * Fixed 'creators' to 'lords'. * * Revision 1.5 1999/04/30 01:11:04 pinkfish * Fix this up to strip colours. * * Revision 1.4 1999/02/09 00:23:41 ceres * Increased the max email address length to 50. * * Revision 1.2 1999/02/03 00:52:50 pinkfish * Fix it up so you can only enter certain sized bits of data into the fields. * * Revision 1.1 1998/01/06 05:29:43 ceres * Initial revision * */ inherit "/cmds/base"; #define TP this_player() #define MAX_EMAIL_LEN 50 int cmd(string str) { write("Change finger information.\n"); write("Pressing return at the prompts will take the default. The default " "is the option in []'s.\n"); write("What real name do you wish to use ["+TP->query_real_name()+"] ? "); input_to("real_name"); return 1; } /* chfn() */ int real_name(string str) { string real_name; str = strip_colours(str); real_name = TP->query_real_name(); if (str && str != "") { if (str == "none") { real_name = 0; } else { real_name = str; } } if (real_name && strlen(real_name) > MAX_EMAIL_LEN) { write("Real name is too long, a maximum of " + MAX_EMAIL_LEN + " characters is allowed.\n"); write("What real name do you wish to use ["+TP->query_real_name()+"] ? "); input_to("real_name"); return 1; } if (real_name && real_name != "") { write("Ok real name set to "+real_name+".\n"); } else { write("Real name cleared.\n"); } TP->set_real_name(real_name); write("Enter your location (ie Perth, oz, whatever) ["+ TP->query_where()+"]\n(none for none) : "); input_to("get_where"); return 1; } /* real_name() */ int get_where(string str) { string where; str = strip_colours(str); where = TP->query_where(); if (str && str != "") { if (str == "none") { where = 0; } else { where = str; } } if (where && where != "") { write("Ok location set to "+where+".\n"); } else { write("Location cleared.\n"); } if (where && strlen(where) > MAX_EMAIL_LEN) { write("Your location is too long, maximum of " + MAX_EMAIL_LEN + " characters allowed.\n"); write("Enter your location (ie Perth, oz, whatever) ["+ TP->query_where()+"]\n(none for none) : "); input_to("get_where"); return 1; } TP->set_where(where); if(TP->query_birthday() == "Unknown") { write("Enter your birthday (ddmm) ["+TP->query_birthday()+ "] (none for none) : "); input_to("birthday"); } else { write("What email address do you wish to use. Set to none to clear.\n"); write("Putting a : in front of it means that only the creators " "can read it.\n"); write("["+TP->query_email()+"] : "); input_to("get_email"); } return 1; } /* get_where() */ string convert_birthday(string str) { #undef MONTHS #define MONTHS ({ "January", "February", "March", "April", "May", "June", \ "July", "August", "September", "October", "November", "December" }) /* we assume it is 4 characters long */ int day, month, tot; string retval; sscanf(str, "%d", tot); day = tot / 100; month = tot % 100; switch(day) { case 11: retval = "11th"; break; case 12: retval = "12th"; break; case 13: retval = "13th"; break; default: switch(day%10) { case 1: retval = day+"st"; break; case 2: retval = day+"nd"; break; case 3: retval = day+"rd"; break; default: retval = day+"th"; } } return retval + " of " + MONTHS[month-1]; } /* convert_birthday() */ int valid_birthday(string str) { #define LENGTHS ({ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }) int tot, month, day; if(strlen(str) != 4) { return 0; } if(!sscanf(str, "%d", tot)) { return 0; } month = tot % 100; day = tot / 100; if(month > 12 || month < 1) { return 0; } if(day < 1) { return 0; } return day <= LENGTHS[month]; } /* valid_birthday() */ void birthday(string str) { string birth_day; birth_day = TP->query_birthday(); if (str == "") { if (birth_day) write("Birthday unchanged from "+birth_day+".\n"); else write("Birthday left as blank.\n"); } else { if(birth_day != "Unknown") { write("You can't change when you were born! Please ask a Creator or " "a Lord to change it if you made an error.\n"); } else if(!valid_birthday(str)) { write("Invalid Birthday. Birthday cleared.\n"); birth_day = 0; } else { birth_day = convert_birthday(str); write("Birthday set to " + birth_day + ".\n"); TP->birthday_gifts(); } } TP->set_birthday(birth_day); write("What email address do you wish to use. Set to none to clear.\n"); write("Putting a : in front of it means that only the creators and lords " "can read it.\n"); write("["+TP->query_email()+"] : "); input_to("get_email"); } /* birthday() */ void get_email(string str) { string email; email = TP->query_email(); str = strip_colours(str); if (str == "") { if (!email || email == "") { write("Email address left blank.\n"); } else { write("Email address left as "+email+".\n"); } } else if (str == "none") { email = 0; write("Email address cleared.\n"); } else { email = str; write("Email address set to "+email+".\n"); } if (email && strlen(email) > MAX_EMAIL_LEN) { write("Your email address is too long, maximum of " + MAX_EMAIL_LEN + " characters allowed.\n"); write("What email address do you wish to use. Set to none to clear.\n"); write("Putting a : in front of it means that only the creators and lords " "can read it.\n"); write("["+TP->query_email()+"] : "); input_to("get_email"); return ; } TP->set_email(email); write("Please enter your home page (World Wide Web page address), " "type 'none' to clear it.\n"); if (!TP->query_homepage()) { write("[none] : "); } else { write("["+TP->query_homepage()+"] : "); } input_to("get_home_page"); } /* get_email() */ void get_home_page(string str) { str = strip_colours(str); if (str == "") { if (!TP->query_homepage()) { write("Home page left as blank.\n"); } else { write("Home page left as "+TP->query_homepage()+"\n"); } } else if (str == "none") { TP->set_homepage(""); write("Home page cleared.\n"); } else if (strlen(str) <= MAX_EMAIL_LEN) { TP->set_homepage(str); write("Home page set to "+str+"\n"); } else { write("Your home page address is too long, maximum of " + MAX_EMAIL_LEN + " characters allowed.\n"); write("Please enter your home page (World Wide Web page address), " "type 'none' to clear it.\n"); if (!TP->query_homepage()) { write("[none] : "); } else { write("["+TP->query_homepage()+"] : "); } input_to("get_home_page"); return ; } TP->save_me(); } /* get_home_page() */