/* A temple for raising..
* Needs money to work...
* Inherits collect.c that uses the bank-handler to handle accounts.
* Baldrick.
*/
#define HEALER "/baseobs/monsters/healer.c"
inherit "/std/collect";
int clean_up_room(int flag) { return 1; }
void clean_up(int flag) { }
string nurs;
void setup()
{
this_object()->add_property("no_undead",1);
set_short("Raiseroom Object.");
}
void init()
{
//this_object()->add_property("no_undead",1);
// it's kinda enough to do it in the setup :)
add_action ("do_raise", "raise");
add_action ("do_raise", "restore");
::init();
} /* void init */
void set_helper_name(string str)
{
nurs = str;
return;
}
/* Here is the raise thingie. It will start with checking if there is a jill
* in the room, so he can call upos the high priest for raise.
* Then the usual check on who.
* So will the moneystuff happen. It will check if the player has enoug money.
* and raise him if the player has.
*/
int do_raise(string str)
{
int cost; /* The cost in Gold. */
object priest, poor_guy;
object *olist;
if (str=="me")
poor_guy=this_player();
else
{
notify_fail("Raise who ?\n");
if(!str) return 0;
olist = find_match(str,this_object());
if(!sizeof(olist)) return 0;
poor_guy = olist[0];
if(!find_living(str)) return 0;
}
if(!poor_guy->query_dead())
{
notify_fail("Why ask for a raise when you don't need it?\n");
return 0;
}
//if (!find_match(nurs, environment(this_player())))
if(!sizeof(find_match(nurs, this_object())))
{
notify_fail("The priestess is not here to help you with the "
"raising. You have to wait for her.\n");
return 0;
}
if ((int)poor_guy->query_level() > 10)
{
cost = (int)poor_guy->query_level() * 5;
if(!get_money(cost))
{
tell_room(this_object(), "The Nurse says: Due to sad lack of "
"money we will not be able to raise you.\n");
return 1;
} /* if */
} /* if int poorguy.. */
priest = new(HEALER);
priest->move(this_object());
if(priest->do_raising(poor_guy)) {
tell_room(this_object(), "The Nurse"
" walks out and comes back with an old man "
"dressed in ceremonial clothing. He chants a spell.\n");
tell_room(this_object(), "The priest says: You are now alive again. "
"Be more careful this time.\n");
tell_room(this_object(), "The priest walks out of the room.\n");
}
else tell_room(this_object(),"The priest won't do the healing "
"for some reason.\n");
priest->dest_me();
return 1;
} /* do raise */