object my_player; void dest_shadow(); int test_add() { return 0; } void setup_shadow(object ob) { shadow(ob,1); my_player = ob; my_player->add_alias("wolf"); } string *query_languages() { return ({ "werewolf", "grunt" }); } string query_current_language() { return "werewolf"; } string query_short() { string path = file_name(previous_object()); if (!my_player) return "Werewolf hide"; if((path[20..23] == "look") || (path[20..24] == "glance")) return "A wolf"; if((path[0..18] == "/global/player/cmds")|| (!previous_object()->is_player())) return my_player->short(); return "A wolf"; } string query_cap_name() { return capitalize(query_short()); } void remove_werewolf_shadow() { tell_object(my_player, "You return to your previous form.\n"); tell_room(environment(my_player), my_player->query_cap_name()+" returns "+ my_player->query_possessive()+" normal form.\n", my_player); my_player->remove_alias("wolf"); destruct(this_object()); } int adjust_hp(int i, object hp_remover) { if(!previous_object()) return my_player->adjust_hp(i, hp_remover); if(previous_object()->query_weapon()) { if(previous_object()->query_property("SILVER") || previous_object()->query_property("SILVER_BLADE")) i = i * 1.5; else if(previous_object()->query_enchant() < 1) i = 0; } return my_player->adjust_hp(i, hp_remover); }