/** * Haunt command. * @author Taffyd */ #define HAUNT_EARMUFF "remote-soul" inherit "/cmds/base"; string ooo() { return implode( allocate( 3 + random( 15 ), (: ({ "O", "o" })[ random( 2 ) ] :) ), "" ); } /* ooo() */ int haunt_player( object *victims ) { victims = filter( victims, (: !sizeof( $1->query_ignoring( ({ this_player() }) ) ) :) ); victims = filter( victims, (: !$1->check_earmuffs( HAUNT_EARMUFF, $(this_player()) ) :) ); victims = filter( victims, (: interactive( $1 ) || ( $1->query_property( "npc" ) && environment( $1 ) == environment( this_player() ) ) :) ); if ( !this_player()->query_property("dead") ) { add_failed_mess( "You are nowhere near wispy enough to " "haunt people. You could probably scare a table or " "chair, though.\n" ); return -1; } if ( !sizeof( victims ) ) { return 0; } add_succeeded_mess( "$N wave$s $p arms about anxiously and say$s: \"" + ooo() + "\" at $I.\n", victims ); return 1; } /* haunt_player() */ int cmd() { if ( !this_player()->query_property("dead") ) { add_failed_mess( "You are nowhere near wispy enough to " "haunt people. You could probably scare a table or " "chair, though.\n" ); return -1; } add_succeeded_mess( "$N wave$s $p arms about anxiously and intone$s: \"" + ooo() + "\".\n" ); return 1; } /* cmd() */ mixed *query_patterns() { return ({ "", (: cmd() :), "<indirect:any-living>", (: haunt_player($1) :) }); } /* query_patterns() */