inherit COMMAND_BASE; string *normal_types, *cre_types, player_format, cre_format; void create() { ::create(); normal_types = ({ "shout", "newbie", "remote-soul", "multiple-soul", "multiple-tell", "teach", "tell", "remote", "multiple-remote" }); cre_types = ({ "remote-spam" }); player_format = "{" + implode(normal_types, "|") + "}"; cre_format = "{" + implode(normal_types + cre_types, "|") + "}"; } /* create() */ int check_earmuffs() { string *on, *types; if( !on = TP->query_property("earmuffs") ) on = ({ }); types = normal_types; if( creatorp(TP) ) types += cre_types; write("Your earmuffs are "+( TP->query_earmuffs() ? "on" : "off" )+".\n"); if( !sizeof(on) ) { write("You have nothing set to be earmuffed.\n"); write("$I$5=Earmuffable events are "+ query_multiple_short(types)+ ".\n"); } else { write("$I$5=You have "+query_multiple_short(on)+" events earmuffed.\n"); types -= on; if( sizeof(types) ) { write("$I$5=You are not currently earmuffing "+ query_multiple_short(types)+ " events.\n"); } } return 1; } /* check_earmuffs() */ int do_earmuff_control( string str ) { string *types, *on; types = normal_types; if( creatorp(TP) ) types += cre_types; if( !on = TP->query_property("earmuffs") ) on = ({ }); switch( str ) { case "on" : if( !TP->query_earmuffs() ) { TP->toggle_earmuffs(); write("Earmuffs turned on.\n"); break; } write("Your earmuffs are already on.\n"); break; case "off" : if( TP->query_earmuffs() ) { TP->toggle_earmuffs(); write("Earmuffs turned off.\n"); break; } write("Your earmuffs are already off.\n"); break; case "all" : on = types; if( sizeof(on) ) write("$I$5=Your "+query_multiple_short(on)+" events will now be " "earmuffed.\n"); break; case "none" : if( !sizeof(on) ) write("You are not earmuffing anything already.\n"); else { write("Nothing will be earmuffed any more. " "(No news is good news?)\n"); on = ({ }); } break; } if( sizeof(on) ) TP->add_property("earmuffs", on ); else TP->remove_property("earmuffs"); return 1; } /* do_earmuff_control() */ int do_earmuff( string str, string onOff ) { string *types, *on, *off; types = normal_types; if( creatorp(TP) ) types += cre_types; if( !on = (string *)TP->query_property("earmuffs") ) on = ({ }); off = ({ }); switch ( onOff ) { case "on" : if( member_array( str, on ) == -1 ) { on += ({ str }); write("You are now earmuffing " + str + " events.\n"); break; } write("You are already earmuffing " + str + " events.\n"); break; case "off" : if( member_array( str, on ) != -1 ) { off += ({ str }); write("You are not earmuffing " + str + " events anymore.\n"); break; } write("You are not earmuffing " + str + " events already.\n"); break; default : if( member_array( str, on ) == -1 ) { on += ({ str }); write("You are now earmuffing " + str + " events.\n"); } else { off += ({ str }); write("You are not earmuffing " + str + " events anymore.\n"); } break; } on -= off; if( sizeof(on) ) TP->add_property("earmuffs", on ); else TP->remove_property("earmuffs"); return 1; } /* do_earmuff() */ mixed query_patterns() { if( creatorp(TP) ) { return ({ "", (: check_earmuffs() :), "{on|off|all|none}", (: do_earmuff_control($4[0]) :), cre_format, (: do_earmuff($4[0], "") :), cre_format + " {on|off}", (: do_earmuff($4[0], $4[1]) :) }); } else { return ({ "", (: check_earmuffs() :), "{on|off|all|none}", (: do_earmuff_control($4[0]) :), player_format, (: do_earmuff($4[0], "") :) , player_format + " {on|off}", (: do_earmuff($4[0], $4[1]) :) }); } } /* query_patterns() */