// light_saber.c // Written by Dent@TMI-2 // Header added by Mobydick@TMI-2, 8-24-93. // This is a powered weapon, and has a limited charge. It can be turned // on or off. When on, it's a pretty good weapon, and runs its charge down. // When off, or out of power, it's a pretty lousy weapon. :) #include <mudlib.h> inherit WEAPON ; void create() { set ("id", ({ "saber", "light-saber" }) ) ; set ("short", "@@query_short"); set ("long", "@@query_long"); set ("mass", 60) ; set ("bulk", 35) ; set ("value", ({ 600, "credits" }) ) ; set ("weapon", 2) ; set ("damage", ({ 1, 4 }) ) ; set ("type", "blunt") ; set ("name", "light-saber") ; set ("power", 1000); set_verbs( ({ "attack", "swing at", "charge at", "swipe at" }) ) ; } string query_long() { int pow; if ( query ("on") ) { pow = remove_call_out("fizzle"); call_out ("fizzle", pow); return("This is a white police light-sabre. It's turned on and a long"+ " beam of\nlight shoots out from the handle.\n"+ "It has "+pow/10+"% energy left.\n"); } return ("This is a white police light-sabre. It's turned off.\n"+ "It has "+query("power")/10+"% energy left.\n"); } string query_short() { if ( !query ("on") ) return "a light saber (off)" ; return "a light saber (on)" ; } void init() { add_action ("turn_c", "turn"); } int turn_c ( string arg ) { string what; int turn; if (!arg) return 0; turn = query("on"); if ( !sscanf ( arg, "%s light-saber", what ) ) { if ( !sscanf ( arg, "%s saber", what ) ) { if ( !sscanf ( arg, "saber %s", what ) ) { if ( !sscanf ( arg, "light-saber %s", what ) ) return 0; } } } if ( what == "on" ) { if ( turn ) { notify_fail ("It's already turned on.\n"); return 0; } if ( !query("power") ) { write ("It seems to be out of power.\n"); return 1; } write ("Bzzzrrmmm! You turn your light-saber on.\n"); set ("on", 1); set ("weapon", 12) ; set ("damage", ({ 10, 20 }) ) ; set ("type", "cutting"); call_out ("fizzle", query("power")); return 1; } if ( what == "off" ) { if ( !turn ) { notify_fail ("It's not turned on.\n"); return 0; } write ("You turn off your light-saber.\n") ; set ("on", 0); set ("weapon", 2) ; set ("damage", ({ 1, 4 }) ) ; set ("type", "blunt"); set ("power", remove_call_out ("fizzle") ); return 1; } } void fizzle() { tell_object ( environment ( this_object() ), "Your light-saber fizzles and dies.\n"); set ("on", 0); set ("weapon", 2) ; set ("damage", ({ 1, 4 }) ) ; set ("type", "blunt"); set ("power", 0); }