/* -*- LPC -*- */
/*
* $Locker: $
* $Id: health.c,v 1.14 2003/07/08 05:57:33 pinkfish Exp $
* $Log: health.c,v $
* Revision 1.14 2003/07/08 05:57:33 pinkfish
* Fix up to make sure people don't go out hiding.
*
* Revision 1.13 2003/02/21 03:45:22 pinkfish
* Fix up an error in the logic.
*
* Revision 1.12 2003/02/21 03:21:48 pinkfish
* Add in a 'wounded' setting.
*
* Revision 1.11 2000/09/01 01:59:04 presto
* Fixed up mistake with my replace()...needed ({ }) around the strings
*
* Revision 1.10 2000/08/16 01:15:10 presto
* Added coloring
*
* Revision 1.9 2000/08/12 14:13:51 presto
* Forcibly unlocked by terano
*
* Revision 1.8 2000/07/16 02:27:54 presto
* Fixed up the messages a bit, so that when you health yourself, it looks right
*
* Revision 1.7 2000/07/15 06:16:15 pinkfish
* Remove the 5 restriction.
*
* Revision 1.6 2000/07/13 00:30:28 pinkfish
* Make it tell someone their health is being c hecked out and also limit it
* to 5 people.
*
* Revision 1.5 2000/07/13 00:29:09 pinkfish
* Stop people getting the health of everyone at once.
*
* Revision 1.4 1999/10/25 23:06:09 pinkfish
* Some fixes to make things look better.
*
* Revision 1.3 1999/05/17 21:15:39 pinkfish
* Fix it up to work with offler.
*
* Revision 1.2 1998/09/27 20:35:00 ceres
* Fixed dark messages
*
* Revision 1.1 1998/01/06 05:29:43 ceres
* Initial revision
*
*/
// Health command by Ceres
inherit "cmds/base";
string *level_colors = ({ "", "%^BOLD%^%^RED%^", "%^RED%^", "%^YELLOW%^",
"%^CYAN%^", "" });
mixed cmd(object *who, int wounded) {
object person;
string health;
int level;
int found;
if(this_player()->check_dark((int)environment(this_player())->
query_light())) {
add_failed_mess("You cannot see well enough to examine someone's "
"health.\n");
return 0;
}
foreach(person in who) {
health = person->health_string(1, ref level);
if (this_player() == person) {
health = replace(health, ({ "is ", "are ", "appears ", "appear " }));
}
if (health) {
if (!wounded || level != 5) {
write(level_colors[level] + "$C$" + person->one_short(1) + " " +
level_colors[level] + health + ".\n%^RESET%^");
found++;
}
} else {
write(person->one_short(1) + " is so unhealthy they have forgotten "
"how healthy they are.\n");
}
if (person != this_player())
tell_object(person, this_player()->the_short(1) + " appears to be "
"checking out all your wounds.\n");
}
if (wounded && !found) {
add_failed_mess("Unable to find any wounded people.\n");
return 0;
}
say(this_player()->one_short(1) + " studies " +
query_multiple_short(who) + ".\n");
return 1;
} /* cmd() */
mixed *query_patterns() {
return ({ "<indirect:living>", (: cmd($1, 0) :),
"wounded <indirect:living>", (: cmd($1, 1) :) });
} /* query_patterns() */