/**********************************************************************/
/* PALADIN'S HOLY AURA. Angel, August 1994. v2.00 November, 1994 */
/*********************************************************************/
/* defines */
#define PALADIN_BONUS 2
#define EVIL_ALIGNMENT -50
#define TITHE_AMOUNT 10
/*********************************************************************/
/* functions */
inherit "obj/shadows/shadow";
static object paladin;
void paladin_aura(object who) { /* called when cloned to paladin */
paladin = who;
shadow_object(who);
}
int hit_player(int dmg) {
if((int)this_player()->query_alignment() < EVIL_ALIGNMENT)
dmg -= PALADIN_BONUS; /* an equivalent of +2 ac */
return (int)paladin->hit_player(dmg);
}
int add_money(int money) {
if(money > 0) {
tell_object(paladin, "You set aside your tithe for the church.\n");
money -= money/TITHE_AMOUNT;
}
return (int)paladin->add_money(money);
}
/* Bonuses to saving throws */
int query_save_bonus() {
object guild_object;
int i;
guild_object = present("guild_object", paladin);
if(guild_object)
i += ((int)guild_object->check_alignment() ? PALADIN_BONUS : 0);
i += paladin->query_save_bonus();
return i;
}
int add_alignment(int amount) {
object guild_object;
guild_object = present("guild_object", paladin);
if(guild_object) guild_object->process_alignment(amount);
return (int)paladin->add_alignment(amount);
}
object query_paladin_aura_object() { return this_object(); }