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);
}