/**
* The Phaerin race. Playable. Extra wis and int, less con and dex.
*/
inherit "/std/races/humanoid";
void setup() {
set_long("The Phaerin race. Intelligent and wise.\n");
set_name("phaerin");
set_weight(1400);
set_height(180);
add_ac( "blunt", "blunt", 3 );
add_ac( "pierce", "pierce", 2 );
add_ac( "sharp", "sharp", 2 );
set_sight( ({ 5, 20, 200, 300 }) );
set_stats( ({ -1, -1, 1, 0, 1 }) );
}
string query_desc( object thing ) {
return CAP(thing->HE)+" stands tall and thin, "+thing->HIS+" willowy "
"form shows that "+thing->HE+" is one of the Phaerin.\n";
} /* query_desc() */
void set_unarmed_attacks( object thing ) {
int number;
number = (int)thing->query_skill_bonus( "fighting.combat.melee.unarmed" );
number = 4 + sqrt( number ) / 2;
thing->remove_attack( "hands" );
thing->remove_attack( "feet" );
thing->add_attack( "hands", 75, ({ 2 * number, 8, number }), "blunt",
"unarmed", "unarmed_hands" );
thing->add_attack( "feet", 25, ({ 3 * number, 10, number }), "blunt",
"unarmed", 0 );
} /* set_unarmed_attacks() */
string temperature_effects(object thing, int temperature) {
string temperature_str;
// let creators survive whatever the weather :)
// Shaydz - 10/03/01
if(creatorp(thing) && thing->query_property("always warm"))
return "";
switch(temperature/3) {
case 101 .. 1000:
thing->dest_hide_shadow();
tell_object( thing, "The heat is just too much for you.\n" );
tell_room( environment( thing ), "Sweating profusely and turning "
"a nasty red-purple colour "+
(string)thing->the_short() +" expires.\n", thing );
thing->do_death();
temperature_str = "";
break;
case 81 .. 100:
temperature_str = "close to death from extreme heatstroke";
thing->adjust_tmp_wis(-1);
thing->adjust_tmp_int(-1);
break;
case 51 .. 80:
temperature_str = "sick from heatstroke";
if(!random(2))
thing->adjust_tmp_wis(-1);
if(!random(2))
thing->adjust_tmp_int(-1);
break;
case 21 .. 50:
temperature_str = "very hot";
tell_object(thing, "You feel really hot.\n");
break;
case 11 .. 20:
temperature_str = "rather warm";
tell_object(thing, "You feel quite warm.\n");
break;
case -10 .. 10:
temperature_str = "";
break;
case -20 .. -11 :
temperature_str = "rather cold";
tell_object(thing, "You feel quite cold.\n");
break;
case -50 .. -21 :
temperature_str = "very cold";
tell_object(thing, "You feel cold to your bones.\n");
break;
case -80 .. -51 :
temperature_str = "sick from hypothermia";
tell_object(thing, "You're so cold you feel your energy being drained.\n");
if(!random(2))
thing->adjust_tmp_str(-1);
if(!random(2))
thing->adjust_tmp_con(-1);
break;
case -100 .. -81 :
temperature_str = "close to death from extreme hypothermia";
tell_object(thing, "You're so cold you feel as though you're about to "
"expire.\n");
thing->adjust_tmp_str(-1);
thing->adjust_tmp_con(-1);
break;
case -1000 .. -101:
thing->dest_hide_shadow();
tell_object( thing, "The cold is just too much for you.\n" );
tell_room( environment( thing ), "Frost riming "+
(string)thing->query_possessive() +" skin in a thick crust, "+
(string)thing->the_short() +" expires.\n", thing );
thing->do_death();
temperature_str = "";
break;
}
if(temperature /5 > 10) {
thing->new_parser("sweat");
thing->add_effect("/std/effects/other/wetness",
temperature);
} else if(temperature/5 < -10) {
thing->new_parser("shiver");
/* They don't catch colds.
if(temperature < -30 && !random(250))
thing->add_effect( "/std/effects/disease/common_cold",
-(temperature*10));
*/
}
return temperature_str;
}