#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "emlen.h"
int
get_warmth (CHAR_DATA * ch)
{
SINGLE_OBJECT *obj;
int cnt;
cnt = 0;
if (IS_MOB (ch))
return -1;
for (obj = ch->carrying; obj != NULL; obj = obj->next_content)
{
if (obj->wear_loc != -1 && obj->pIndexData->item_type == ITEM_ARMOR)
cnt += ((I_ARMOR *) obj->more)->warmth;
}
return cnt;
}
bool
too_warm (int warmth, CHAR_DATA * ch)
{
int temp = cur_temp (ch);
if (temp < 80)
return FALSE;
if (temp > 80 && temp < 91 && warmth > 48)
return TRUE;
if (temp > 90 && temp < 101 && warmth > 37)
return TRUE;
if (temp > 100 && temp < 111 && warmth > 24)
return TRUE;
if (temp > 110 && temp < 121 && warmth > 13)
return TRUE;
if (temp > 120)
return TRUE;
return FALSE;
}
bool
too_cold (int warmth, CHAR_DATA * ch)
{
int temp = cur_temp (ch);
if (temp > 44)
return FALSE;
if (temp > 37 && temp < 45 && warmth < 14)
return TRUE;
if (temp > 20 && temp < 38 && warmth < 21)
return TRUE;
if (temp > 1 && temp < 21 && warmth < 34)
return TRUE;
if (temp > -13 && temp < 2 && warmth < 44)
return TRUE;
if (temp > -33 && temp < -14 && warmth < 54)
return TRUE;
if (temp <= -33)
return TRUE;
return FALSE;
}
bool
check_body_temp (CHAR_DATA * ch)
{
int warmth;
bool shirt;
bool shoes;
bool pants;
SINGLE_OBJECT *obj;
int temp = cur_temp (ch);
if (!pow.weather)
return FALSE;
if (number_range (1, 3) != 2)
return FALSE;
shirt = FALSE;
shoes = FALSE;
pants = FALSE;
if (ch->in_room && ch->in_room->vnum < 1000)
return FALSE;
if (IS_MOB (ch) || !ch->in_room || ch->in_room->sector_type == SECT_INSIDE ||
IS_SET (ch->in_room->room_flags, ROOM_INDOORS) || IS_SET (ch->act, PLR_HOLYWALK))
return FALSE;
warmth = get_warmth (ch);
for (obj = ch->carrying; obj != NULL; obj = obj->next_content)
{
if (obj->wear_loc == -1)
continue;
if (obj->wear_loc == WEAR_BODY)
shirt = TRUE;
if (obj->wear_loc == WEAR_FEET)
shoes = TRUE;
if (obj->wear_loc == WEAR_LEGS)
pants = TRUE;
}
if (too_cold (warmth, ch))
{
if (ch->position == POSITION_SLEEPING)
{
send_to_char ("You awaken, wracked by shivering spasms from the cold...\n\r", ch);
NEW_POSITION(ch, POSITION_STANDING);
SUBHIT(ch, 4);
}
if (temp > 15)
{
send_to_char ("It's quite chilly out, considering your attire...\n\r", ch);
SUBHIT(ch,1);
if (!shirt)
{
send_to_char ("Your bare nipples are all prickly in the cold!\n\r", ch);
SUBHIT(ch,1);
}
if (!shoes)
{
send_to_char ("Your feet are numb and cold...\n\r", ch);
SUBHIT(ch,1);
}
}
else
{
SUBHIT(ch,2);
send_to_char ("You are FREEZING!! brrrrrr...\n\r", ch);
if (!pants)
{
if (SEX (ch) == SEX_MALE)
send_to_char ("Your manhood shrinks into boyhood as the cold grabs at your groin.\n\r", ch);
else
send_to_char ("The freezing air hits your bare legs and buttocks, causing shivering spasms.\n\r", ch);
SUBHIT(ch,2);
}
if (!shirt)
{
send_to_char ("Your nipples are all prickly in the freezing cold!\n\r", ch);
SUBHIT(ch,2);
}
if (!shoes)
{
send_to_char ("Your feet are completely numb and sore from the intense cold!\n\r", ch);
SUBHIT(ch,2);
}
}
}
if (too_warm (warmth, ch))
{
send_to_char ("You are HOT... Sweat covers your body, and your vision becomes fuzzy...\n\r", ch);
SUBHIT(ch,1);
if (ch->move > 8)
SUBMOVE(ch, number_range (3, 6));
}
if (ch->hit < 0)
{
send_to_char ("Your vision blurs, and the world slips away in front of you...\n\r", ch);
raw_kill (ch, FALSE);
return TRUE;
}
return FALSE;
}