inherit "/std/races/standard"; #include "light_defs.inc" #define HANDLER "/obj/handlers/weather" #define STONE "/std/spells/cleric/stoned" // Swims... like a rock. int query_swim_stamina(object player) { return player->query_con(); } void setup() { set_long("This has been set up as a monster race.\n"); set_name("troll"); set_light_limits(LIGHT_TROLL_LOW, LIGHT_TROLL_HIGH); reset_get(); } /* setup() */ void set_racial_bonuses() { previous_object()->adjust_bonus_con(3); previous_object()->adjust_bonus_int(-7); previous_object()->adjust_bonus_str(5); previous_object()->adjust_bonus_wis(-7); previous_object()->adjust_bonus_cha(-(previous_object()->query_cha()-3)); } /* set_racial_bonuses() */ int query_skill_bonus(int lvl, string skill) { return 0; } /* query_skill_bonus() */ string query_desc(object ob) { return "An ugly looking troll.\n"; } /* query_desc() */ void race_heartbeat(object player) { object stone, *obs; int i; if(!player || !ENV(player) || player->query_dead()) return; if(!ENV(player)->query_property("noguild")) { //if(!player->query_property("stoned")) { obs = all_inventory(ENV(player)); obs -= ({ player }); tell_room(ENV(player),player->query_cap_name()+" snarls viciously " "and attacks everything in sight.\n"); for(i=0;i<sizeof(obs);i++) { if(!living(obs[i])) continue; if(obs[i]->query_race() != "troll") player->attack_ob(obs[i]); } } if(ENV(player)->query_outside() && (HANDLER->query_day(ENV(player)))) { if(player->query_property("stoned")) return; tell_object(player, "You feel yourself slow, your body " "feels leaden slowing your every movement.\n"); stone = clone_object(STONE); player->add_static_property("stoned",1); stone->move(player); stone->reset_get(); stone->setup_shadow(player); return; } else // Yes, will allow the spell to remain, cause that's timed_prop. if(player->query_static_property("stoned")) { tell_object(player, "Out of the burning sun, your flesh " "soften and turn normal again.\n"); player->remove_static_property("stoned"); player->dispell_me(); } player->add_static_property("fire",-100); player->adjust_hp(30,TO); // trol regen } ::race_heartbeat(player); }