/* -*- LPC -*- */
/*
* $Locker: $
* $Id: stop.c,v 1.9 2003/07/16 20:28:33 pinkfish Exp $
* $Log: stop.c,v $
* Revision 1.9 2003/07/16 20:28:33 pinkfish
* Increas eht random delay.
*
* Revision 1.8 2002/09/08 20:57:09 ceres
* Modified to make stopping combat slightly variable
*
* Revision 1.7 2002/08/03 19:28:58 ceres
* New combat system version
*
* Revision 1.5 1999/02/01 01:14:58 presto
* Removed checks for things on attacker list being living. It was stuffing
* up for things like training dummys. This is a test to see if anything else
* gets broken.
*
* Revision 1.4 1999/01/14 23:20:32 ceres
* Mods to support delayed searching.
*
* Revision 1.3 1998/04/14 02:28:16 pinkfish
* Changed to use add_command.
*
* Revision 1.2 1998/03/26 06:13:04 ceres
* Made it so when you stop fighting you don't stop fighting things in
* your environment.
*
* Revision 1.1 1998/01/06 05:29:43 ceres
* Initial revision
*
*/
inherit "/cmds/base";
int no_okay;
object tmp;
mixed cmd( string word ) {
object *atts;
switch( word ) {
case "debate" :
case "debating" :
this_player()->interrupt_debate();
break;
case "spell" :
this_player()->interrupt_spell();
break;
case "ritual" :
this_player()->interrupt_ritual();
break;
case "fight" :
case "fighting" :
atts = this_player()->query_attacker_list();
if ( !sizeof( atts ) ) {
write( "You are not fighting anyone.\n" );
return 1;
}
if ( (int)this_player()->query_hp() < 0 ) {
write( "You have already died; stopping now is pointless.\n" );
return 1;
}
write( "Stopping fight. Please wait.\n" );
call_out( "stop_fight", 5+random(10), this_player() );
return 1;
default:
no_okay = 1;
cmd( "debate" );
cmd( "spell" );
cmd( "ritual" );
cmd( "fight" );
no_okay = 0;
/*
* This gets called anyway, on its way through.
this_player()->drunk_check( "stop" );
*/
}
"/cmds/player/sea_rch"->interrupt_search(this_player());
if ( !no_okay )
write( "Okay.\n" );
return 1;
} /* cmd() */
void stop_fight( object who ) {
object *atts, ob;
if ( !who )
return;
atts = who->query_attacker_list();
atts -= ({ 0 });
tmp = who;
if(atts == ({ }))
return;
tell_object( who, "You stop fighting "+
query_multiple_short( map_array( atts,
(: $1->query_property( "dead" ) ? (string)$1->a_short() + " (dead anyway)" : $1 :) ) ) +".\n" );
foreach(ob in atts)
who->stop_fight(ob);
} /* stop_fight() */
mixed *query_patterns() {
return ({ "", (: cmd(0) :),
"{debate|debating|spell|ritual|fight|fighting}", (: cmd($4[0]) :) });
} /* query_patterns() */