/* -*- LPC -*- */
/*
* $Locker: $
* $Id: protect.c,v 1.3 1999/04/13 01:01:44 pinkfish Exp $
*
*/
inherit "/cmds/base";
#define TP this_player()
mixed cmd(object *things) {
int i;
object *defendees;
things -= ({ TP });
if ( TP->query_property( "dead" ) ) {
add_failed_mess("You cannot provide much defense as a ghost.\n" );
return 0;
}
if ( !sizeof( things ) ) {
add_failed_mess("You cannot defend yourself!\n");
return 0;
}
if(TP->query_combat_response() != "parry") {
add_failed_mess("Dodging out of the way will not help " +
query_multiple_short(things) + ".\n");
return 0;
}
defendees = ({ });
for ( i = 0; i < sizeof( things ); i++ ) {
if ( things[ i ]->add_defender( TP ) ) {
defendees += ({ things[ i ] });
things = delete( things, i, 1 );
i--;
}
}
if ( !sizeof( defendees ) ) {
add_failed_mess("You cannot defend $I.\n", things);
return 0;
}
if ( sizeof( things ) ) {
write( "You cannot defend "+ query_multiple_short( things ) +".\n" );
}
add_succeeded_mess(({ "You will defend $I.\n",
"$N moves to defend $I.\n" }),
defendees);
return 1;
} /* cmd() */
int show_defenders() {
object *defend;
object womble;
defend = this_player()->query_defenders();
if (sizeof(defend)) {
write("You are being defended by " + query_multiple_short(defend) +
".\n");
} else {
write("You are not being defended by anyone.\n");
}
defend = ({ });
foreach (womble in all_inventory(environment(this_player()))) {
if (living(womble) && womble != this_player()) {
if (member_array(this_player(), womble->query_defenders()) != -1) {
defend += ({ womble });
}
}
}
if (sizeof(defend)) {
write("Of the people in this room, you are defending " +
query_multiple_short(defend) + ".\n");
} else {
write("You are not defending anyone in this room.\n");
}
return 1;
}
mixed *query_patterns() {
return ({ "<indirect:living>",
(: cmd($1) :),
"",
(: show_defenders() :) });
} /* query_patterns() */