/* mailer field loader/saver */ #include <mudlib.h> #include <levels.h> #include <restore.h> #define MAIL_FIELD_SAVE "ob_saves/mail_fld" mixed *fields; #ifdef NATIVE_MODE void create() { #else void reset(status arg) { if(arg) return; #endif /* native */ fields = ({ ({ "aspirant", "apprentice", "creator", "sage", "lord", "senior", "elder", "arch", "admin", }), ({ ({}), ({}), ({}), ({}), ({}), ({}), ({}), ({}), ({}), }), }); } void load_fields(object caller) { int i; if(!caller) return; restore_object(MAIL_FIELD_SAVE); for(i = 0; i < sizeof(fields[0]); i++) { caller->set_field(fields[0][i], fields[1][i]); } } string get_field_name(int sec_level) { return (sec_level >= SEC9) ? "admin" : (sec_level >= SEC8) ? "arch" : (sec_level >= SEC7) ? "elder" : (sec_level >= SEC6) ? "senior" : (sec_level >= SEC5) ? "lord" : (sec_level >= SEC4) ? "sage" : (sec_level >= SEC3) ? "creator" : (sec_level >= SEC2) ? "apprentice" : (sec_level >= SEC1) ? "aspirant" : 0; } void add_to_mail_field(string who, int sec_level) { int i, j; if(!who || !get_field_name(sec_level)) return; restore_object(MAIL_FIELD_SAVE); who = capitalize(who); for(i = 0; i < sizeof(fields[1]); i++) { if((j = member_array(who, fields[1][i])) != -1) { fields[1][i] = fields[1][i][0..(j-1)] + fields[1][i][(j+1)..(sizeof(fields[1][i])-1)]; } } i = member_array(get_field_name(sec_level), fields[0]); fields[1][i] += ({ who, }); save_object(MAIL_FIELD_SAVE); } void remove_from_mail_field(string who) { int i, j; if(!who) return; restore_object(MAIL_FIELD_SAVE); who = capitalize(who); for(i = 0; i < sizeof(fields[1]); i++) { if((j = member_array(who, fields[1][i])) != -1) { fields[1][i] = fields[1][i][0..(j-1)] + fields[1][i][(j+1)..(sizeof(fields[1][i])-1)]; } } save_object(MAIL_FIELD_SAVE); }