inherit "/std/races/standard";
#include "light_defs.inc"
// and you always wondered why they hated water
int query_swim_stamina(object player) { return 0; } // glug
int query_underwater_breathing(object player) { return 0; } // die
void setup()
{
set_long("A dark mysterious figure with very red lips and long sharp teeth.\n");
set_name("vampire");
set_light_limits(-100,50);
reset_get();
}
void set_racial_bonuses()
{
previous_object()->adjust_bonus_str(5);
previous_object()->adjust_bonus_con(-5);
previous_object()->adjust_bonus_dex(-5);
previous_object()->adjust_bonus_int(5);
previous_object()->adjust_bonus_cha(5);
}
int query_skill_bonus(int lvl, string skill)
{
return 0;
}
string query_desc(object ob)
{
return
"A dark and menacing form, yet somehow strangely compelling.";
}
void race_heartbeat(object player)
{
object *list;
object wraith;
int i;
if(!player) return;
if(!ENV(player)) return;
if(player->query_dead())
{
player->remove_static_property("noregen");
return;
}
list = all_inventory(ENV(player));
list -= ({ player });
for(i = 0; i < sizeof(list); i++)
{
if(list[i]->query_hp() > 5)
{
if(list[i]->query_property("evil")) // resist evil
{
player->adjust_hp(-4,list[i]);
}
else
{
list[i]->adjust_hp(-2,player);
player->adjust_hp(2,list[i]);
list[i]->adjust_gp(-2);
player->adjust_gp(2);
}
}
}
if(ENV(player)->query_property("no_undead"))
{
tell_object(player,"Some terrible force in the area fills your "
"dark heart with fear.\n");
player->run_away();
}
if(ENV(player)->query_outside() && ENV(player)->query_light() > 30 )
{
player->adjust_hp(-20,player);
}
player->adjust_hp(-1,player);
if(player->query_hp() < 5)
{
wraith = clone_object("/std/spells/wizard/waithform_sh.c");
wraith->setup_shadow(player);
player->remove_static_property("noregen");
}
if(!player->query_hide_shadow())
{
wraith = clone_object("/std/commands/shadows/hide");
wraith->setup_shadow(player);
}
::race_heartbeat(player);
}
void start_player(object player)
{
object ob;
player->add_static_property("undead",50);
player->add_static_property("noregen",1);
player->add_static_property("magical",200);
tell_object(player,"You must find life, and soon, or die.\n");
catch( ob = clone_object("/std/races/shadows/cloak_darkness"));
if(ob) ob->move(player);
::start_player(player);
}