/* the standard race... */
inherit "/std/races/standard";
#include "light_defs.inc"
void setup() {
set_light_limits(LIGHT_STRANGE_LOW, LIGHT_STRANGE_HIGH);
}
mixed *bits;
/* The amazing 'bits' array :
* at the mo has 3 elements per bit:
* name, alias, array
* where the array has the form:
* bit_come_from, weight, general_value, list_of_bits_on_this_bit
* All incredibly gruesome hey?
*/
void add_bit(string name, string alias, mixed *varr)
{
int i;
i = member_array(name, bits);
if (i >= 0) {
if (pointerp(bits[i+1])) i--;
bits[i] = name;
bits[i+1] = alias;
bits[i+2] = varr;
return;
}
bits += ({ name, alias, varr });
return;
}
void create() {
::create();
bits = ({ });
set_long("The standard boring race. Get a new one soon, this one is "
"pretty sad.\n");
set_name("strange");
reset_get();
add_bit("head", "", ({ 40, 0,
"left ear", "right ear", "left eye", "right eye", "nose", "scalp",
"tongue", "teeth", "skull" }) );
add_bit("left ear", "ear", ({ "head", 1, 0 }));
add_bit("right ear", "ear", ({ "head", 1, 0 }));
add_bit("left eye", "eye", ({ "head", 1, 0 }));
add_bit("nose", "", ({ "head", 1, 0 }));
add_bit("scalp", "", ({ "head", 3, 0 }));
add_bit("tongue", "", ({ "head", 2, 0 }));
add_bit("teeth", "", ({ "head", 2, 0 }));
add_bit("skull", "cranium", ({ "head", 20, 0 }));
add_bit("left arm", "arm", ({ 0, 80, 0, "left hand" }));
add_bit("right arm", "arm", ({ 0, 80, 0, "right hand" }));
add_bit("torso", "chest", ({ 0, 400, 0, "heart", "liver", "left kidney",
"right kidney", "left lung", "right lung", "spleen" }));
add_bit("left hand", "hand", ({ "left arm", 15, 0, "left pinky",
"left third finger", "left index finger", "left ring finger",
"left thumb" }));
add_bit("right hand", "hand", ({ "right arm", 15, 0, "right pinky",
"right third finger", "right index finger", "right ring finger",
"right thumb" }));
add_bit("left pinky", "finger", ({ "left hand", 1, 0 }));
add_bit("left third finger", "finger", ({ "left hand", 1, 0 }));
add_bit("left index finger", "finger", ({ "left hand", 1, 0 }));
add_bit("left ring finger", "finger", ({ "left hand", 1, 0 }));
add_bit("left thumb", "finger", ({ "left hand", 1, 0 }));
add_bit("right pinky", "finger", ({ "right hand", 1, 0 }));
add_bit("right third finger", "finger", ({ "right hand", 1, 0 }));
add_bit("right index finger", "finger", ({ "right hand", 1, 0 }));
add_bit("right ring finger", "finger", ({ "right hand", 1, 0 }));
add_bit("right thumb", "finger", ({ "right hand", 1, 0 }));
add_bit("heart", "", ({ "torso", 10, 0 }));
add_bit("liver", "", ({ "torso", 5, 0 }));
add_bit("left kidney", "kidney", ({ "torso", 5, 0 }));
add_bit("right kidney", "kidney", ({ "torso", 5, 0 }));
add_bit("left lung", "lung", ({ "torso", 5, 0 }));
add_bit("right lung", "lung", ({ "torso", 5, 0 }));
add_bit("spleen", "", ({ "torso", 5, 0 }));
add_bit("genitals", "", ({ 0, 5, 0 })); /* sex ???? */
add_bit("left leg", "leg", ({ 0, 300, 0, "left foot" }));
add_bit("right leg", "leg", ({ 0, 300, 0, "right foot" }));
add_bit("left foot", "foot", ({ "left leg", 50, 0 })); /* toes ... god */
add_bit("right foot", "foot", ({ "right leg", 50, 0 }));
}
/* armor querying one... I forget what it is called */
int query_number_type(string type) {
if (type == "ring")
return 2;
return 1;
}
/* number of weapons allowed to be wielded */
int query_number_wielded() {
return 1;
}
/* race description used on the player object...
* There will be a race varible on the player object which allows
* the race to keep needed information on it
*/
string query_race_description() { return "A small non descript person."; }
/* bonuses and minuses on given skills.
*/
int query_skill_bonus(int lvl, string skill) {
return 0; /* the standard race has no modifications */
}
/* when the player logs on this function is called.
* it allows you to start up the player with whatever he needs.
*/
int player_start(object player) {
return 1;
}
/* and guess what this does?
* Beware... If some is straight dested this will not be called,
* So remember that you still must check your array for null members.
*/
int player_quit(object player) {
return 1;
}
int query_dark(int light) {
if (light < 20)
return 1;
}
/*
* is used by monsters...
* You can trpa this and set up anything that a monster might get at
* certain level in this race
*/
void set_level(int lvl) {
}
mixed *query_bits()
{
return bits;
}
mixed *query_bit(string s)
{
int i;
i = member_array(s, bits);
if (i < 0) return ({ });
if (pointerp(bits[i+1])) i--;
return ({ bits[i], bits[i+1], bits[i+2] });
}