/*** temp shadow for Spirit Armour spell ***/
/* extra look wasnt being removed after it expired, i think i fixed it =)
Shaper, 14/IX/96 */
#include "tweaks.h"
int check_off=0;
object my_player;
void setshadow(object ob)
{
shadow(ob,1);
my_player = ob;
}
void destruct_spirit_armour_shadow()
{
destruct(this_object());
}
int check_duration()
{
if ( my_player->query_property(SPIRIT_ARMOUR_PROPERTY) )
return 0;
if(!check_off)
{
if ( (string)my_player->query_guild_name() != "necromancer" )
{
my_player->adjust_hp(-random(4)-random(4)-2,my_player);
tell_object(my_player, "%^RED%^You are wracked with pain as your "
"spirit armour burns away.%^RESET%^\n");
tell_room(environment(my_player), my_player->query_cap_name()+
" is wracked with pain as the surrounding mist disappears.\n",
my_player);
}
tell_object(my_player, "Your spirit armour fades away.\n");
my_player->remove_extra_look(load_object("/std/spells/wizard/sp_armour"));
check_off=1;
}
return 1;
}
varargs mixed move_player(string dir, string dest, mixed message,
object followee, mixed enter )
{
if ( check_duration() )
call_out("destruct_spirit_armour_shadow",0,0);
return my_player->move_player(dir,dest,message,followee,enter);
}
status wear_ob(object ob)
{
tell_object(my_player,
"You have no need of material protection with your spirit "
"to protect you.\n");
if (check_duration())
destruct_spirit_armour_shadow();
}
int do_wear(string str)
{
tell_object(my_player,
"You have no need of material protections with your spirit "
"to protect you.\n");
if (check_duration())
destruct_spirit_armour_shadow();
return 1;
}
int query_total_ac()
{
int i;
if ( !check_duration() )
{
i = ( (int)my_player->query_total_ac() - (SPIRIT_ARMOUR_BASE
+( (5+(int)my_player->query_level())*SPIRIT_ARMOUR_LEVEL_MOD)) );
if(i < -100) i = -100;
return i;
}
else
{
call_out("destruct_spirit_armour_shadow",0,0);
return (my_player->query_total_ac());
}
}
int query_spirit_armour_spell() { return 1; }