void do_becomedragon(CHAR_DATA *ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
char arg1 [MAX_INPUT_LENGTH];
int race;
race = ch->race;
argument = one_argument( argument, arg1 );
if (IS_NPC(ch)) return;
if (ch->race != 5)
{
send_to_char("You must be a Draconian to become a Dragon.\n\r",ch);
return;
}
if (ch->pcdata->mkills < 1000)
{
send_to_char("You must have at least 1000 mob kills to become a Dragon.\n\r",ch);
return;
}
if ( arg1[0] == '\0' )
{
stc("Type becomedragon <color> to become that dragon type.\n\r",ch);
stc("{G*****************{x\n\r",ch);
stc("{Y–{CBlack Dragon\n\r",ch);
stc("{Y–{CBlue Dragon\n\r",ch);
stc("{Y–{CRed Dragon\n\r",ch);
stc("{Y–{CGreen Dragon\n\r",ch);
stc("{Y–{CWhite Dragon\n\r",ch);
stc("{Y–{CBrass Dragon\n\r",ch);
stc("{Y–{CGold Dragon\n\r",ch);
stc("{Y–{CSilver Dragon\n\r",ch);
stc("{Y–{CBronze Dragon\n\r",ch);
stc("{Y–{CCopper Dragon\n\r",ch);
stc("{G*****************{n\n\r",ch);
return;
}
if (!str_cmp(arg1,"black"))
{
ch->race = 30;
send_to_char("You have become a Black Dragon.\n\r", ch);
sprintf(buf,"%s has become a Black Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"blue"))
{
ch->race = 31;
send_to_char("You have become a Blue Dragon.\n\r", ch);
sprintf(buf,"%s has become a Blue Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"red"))
{
ch->race = 32;
send_to_char("You have become a Red Dragon.\n\r", ch);
sprintf(buf,"%s has become a Red Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"green"))
{
ch->race = 33;
send_to_char("You have become a Green Dragon.\n\r", ch);
sprintf(buf,"%s has become a Green Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"white"))
{
ch->race = 34;
send_to_char("You have become a White Dragon.\n\r", ch);
sprintf(buf,"%s has become a White Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"brass"))
{
ch->race = 35;
send_to_char("You have become a Brass Dragon.\n\r", ch);
sprintf(buf,"%s has become a Brass Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"gold"))
{
ch->race = 36;
send_to_char("You have become a Gold Dragon.\n\r", ch);
sprintf(buf,"%s has become a Gold Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"silver"))
{
ch->race = 37;
send_to_char("You have become a Silver Dragon.\n\r", ch);
sprintf(buf,"%s has become a Silver Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"bronze"))
{
ch->race = 38;
send_to_char("You have become a Bronze Dragon.\n\r", ch);
sprintf(buf,"%s has become a Bronze Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"copper"))
{
ch->race = 39;
send_to_char("You have become a Copper Dragon.\n\r", ch);
sprintf(buf,"%s has become a Copper Dragon.", ch->name);
do_info(ch,buf);
}
ch->affected_by = ch->affected_by | race_table[race].aff;
ch->imm_flags = ch->imm_flags | race_table[race].imm;
ch->res_flags = ch->res_flags | race_table[race].res;
ch->vuln_flags = ch->vuln_flags | race_table[race].vuln;
ch->form = race_table[race].form;
ch->parts = race_table[race].parts;
ch->weight = pc_race_table[race].weight;
ch->height = pc_race_table[race].height;
return;
}
void do_becomedragon(CHAR_DATA *ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
char arg1 [MAX_INPUT_LENGTH];
int race;
race = ch->race;
argument = one_argument( argument, arg1 );
if (IS_NPC(ch)) return;
if (ch->race != 5)
{
send_to_char("You must be a Draconian to become a Dragon.\n\r",ch);
return;
}
if (ch->pcdata->mkills < 1000)
{
send_to_char("You must have at least 1000 mob kills to become a Dragon.\n\r",ch);
return;
}
if ( arg1[0] == '\0' )
{
stc("Type becomedragon <color> to become that dragon type.\n\r",ch);
stc("{G*****************{x\n\r",ch);
stc("{Y–{CBlack Dragon\n\r",ch);
stc("{Y–{CBlue Dragon\n\r",ch);
stc("{Y–{CRed Dragon\n\r",ch);
stc("{Y–{CGreen Dragon\n\r",ch);
stc("{Y–{CWhite Dragon\n\r",ch);
stc("{Y–{CBrass Dragon\n\r",ch);
stc("{Y–{CGold Dragon\n\r",ch);
stc("{Y–{CSilver Dragon\n\r",ch);
stc("{Y–{CBronze Dragon\n\r",ch);
stc("{Y–{CCopper Dragon\n\r",ch);
stc("{G*****************{n\n\r",ch);
return;
}
if (!str_cmp(arg1,"black"))
{
race = 30;
send_to_char("You have become a Black Dragon.\n\r", ch);
sprintf(buf,"%s has become a Black Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"blue"))
{
race = 31;
send_to_char("You have become a Blue Dragon.\n\r", ch);
sprintf(buf,"%s has become a Blue Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"red"))
{
race = 32;
send_to_char("You have become a Red Dragon.\n\r", ch);
sprintf(buf,"%s has become a Red Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"green"))
{
race = 33;
send_to_char("You have become a Green Dragon.\n\r", ch);
sprintf(buf,"%s has become a Green Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"white"))
{
race = 34;
send_to_char("You have become a White Dragon.\n\r", ch);
sprintf(buf,"%s has become a White Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"brass"))
{
race = 35;
send_to_char("You have become a Brass Dragon.\n\r", ch);
sprintf(buf,"%s has become a Brass Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"gold"))
{
race = 36;
send_to_char("You have become a Gold Dragon.\n\r", ch);
sprintf(buf,"%s has become a Gold Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"silver"))
{
race = 37;
send_to_char("You have become a Silver Dragon.\n\r", ch);
sprintf(buf,"%s has become a Silver Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"bronze"))
{
race = 38;
send_to_char("You have become a Bronze Dragon.\n\r", ch);
sprintf(buf,"%s has become a Bronze Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"copper"))
{
race = 39;
send_to_char("You have become a Copper Dragon.\n\r", ch);
sprintf(buf,"%s has become a Copper Dragon.", ch->name);
do_info(ch,buf);
}
ch->affected_by = ch->affected_by | race_table[race].aff;
ch->imm_flags = ch->imm_flags | race_table[race].imm;
ch->res_flags = ch->res_flags | race_table[race].res;
ch->vuln_flags = ch->vuln_flags | race_table[race].vuln;
ch->form = race_table[race].form;
ch->parts = race_table[race].parts;
ch->weight = pc_race_table[race].weight;
ch->height = pc_race_table[race].height;
return;
}
void do_becomedragon(CHAR_DATA *ch, char *argument)
{
char buf[MAX_STRING_LENGTH];
char arg1 [MAX_INPUT_LENGTH];
int race;
race = ch->race;
argument = one_argument( argument, arg1 );
if (IS_NPC(ch)) return;
if (ch->race != 5)
{
send_to_char("You must be a Draconian to become a Dragon.\n\r",ch);
return;
}
if (ch->pcdata->mkills < 1000)
{
send_to_char("You must have at least 1000 mob kills to become a Dragon.\n\r",ch);
return;
}
if ( arg1[0] == '\0' )
{
stc("Type becomedragon <color> to become that dragon type.\n\r",ch);
stc("{G*****************{x\n\r",ch);
stc("{Y–{CBlack Dragon\n\r",ch);
stc("{Y–{CBlue Dragon\n\r",ch);
stc("{Y–{CRed Dragon\n\r",ch);
stc("{Y–{CGreen Dragon\n\r",ch);
stc("{Y–{CWhite Dragon\n\r",ch);
stc("{Y–{CBrass Dragon\n\r",ch);
stc("{Y–{CGold Dragon\n\r",ch);
stc("{Y–{CSilver Dragon\n\r",ch);
stc("{Y–{CBronze Dragon\n\r",ch);
stc("{Y–{CCopper Dragon\n\r",ch);
stc("{G*****************{n\n\r",ch);
return;
}
if (!str_cmp(arg1,"black"))
{
ch->race = 30;
send_to_char("You have become a Black Dragon.\n\r", ch);
sprintf(buf,"%s has become a Black Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"blue"))
{
ch->race = 31;
send_to_char("You have become a Blue Dragon.\n\r", ch);
sprintf(buf,"%s has become a Blue Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"red"))
{
ch->race = 32;
send_to_char("You have become a Red Dragon.\n\r", ch);
sprintf(buf,"%s has become a Red Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"green"))
{
ch->race = 33;
send_to_char("You have become a Green Dragon.\n\r", ch);
sprintf(buf,"%s has become a Green Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"white"))
{
ch->race = 34;
send_to_char("You have become a White Dragon.\n\r", ch);
sprintf(buf,"%s has become a White Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"brass"))
{
ch->race = 35;
send_to_char("You have become a Brass Dragon.\n\r", ch);
sprintf(buf,"%s has become a Brass Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"gold"))
{
ch->race = 36;
send_to_char("You have become a Gold Dragon.\n\r", ch);
sprintf(buf,"%s has become a Gold Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"silver"))
{
ch->race = 37;
send_to_char("You have become a Silver Dragon.\n\r", ch);
sprintf(buf,"%s has become a Silver Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"bronze"))
{
ch->race = 38;
send_to_char("You have become a Bronze Dragon.\n\r", ch);
sprintf(buf,"%s has become a Bronze Dragon.", ch->name);
do_info(ch,buf);
}
else if (!str_cmp(arg1,"copper"))
{
ch->race = 39;
send_to_char("You have become a Copper Dragon.\n\r", ch);
sprintf(buf,"%s has become a Copper Dragon.", ch->name);
do_info(ch,buf);
}
ch->affected_by = ch->affected_by | race_table[ch->race].aff;
ch->imm_flags = ch->imm_flags | race_table[ch->race].imm;
ch->res_flags = ch->res_flags | race_table[ch->race].res;
ch->vuln_flags = ch->vuln_flags | race_table[ch->race].vuln;
ch->form = race_table[ch->race].form;
ch->parts = race_table[ch->race].parts;
ch->weight = pc_race_table[ch->race].weight;
ch->height = pc_race_table[ch->race].height;
return;
}
/* race table */
const struct race_type race_table[] = {
/*
{
name, pc_race?,
act bits, aff_by bits, off bits,
imm, res, vuln,
form, parts
},
*/
{"unique", FALSE, 0, 0, 0, 0, 0, 0, 0, 0},
/* 1 */
{
"human", TRUE,
0, 0, 0,
0, 0, 0,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 2 */
{
"elf", TRUE,
0, AFF_INFRARED, 0,
0, RES_CHARM, VULN_IRON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 3 */
{
"dwarf", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 4 */
{
"giant", TRUE,
0, 0, 0,
0, RES_FIRE | RES_COLD, VULN_MENTAL | VULN_LIGHTNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 5 */
{
"draconian", TRUE,
0, 0, 0,
0, RES_FIRE | RES_COLD, RES_WEAPON | VULN_MAGIC,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 6 */
{
"gnome", TRUE,
0, 0, 0,
0, IMM_MENTAL, VULN_WEAPON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 7 */
{
"hobbit", TRUE,
0, 0, 0,
0, VULN_BASH, VULN_POISON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 8 */
{
"kender", TRUE,
0, 0, 0,
0, VULN_BASH, VULN_POISON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 9 */
{
"troll", TRUE,
0, 0, 0,
0, VULN_FIRE, RES_WEAPON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 10 */
{
"pixie", TRUE,
0, 0, 0,
0, VULN_BASH, VULN_POISON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
{ /* 11 */
"half-elf", TRUE,
0, AFF_INFRARED, 0,
0, RES_CHARM, VULN_IRON,
A|H|M|V,A|B|C|D|E|F|G|H|I|J|K
},
/* 12 */
{
"half-giant", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 13 */
{
"half-orc", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 14 */
{
"duergar", TRUE,
0, AFF_INFRARED, 0,
0, RES_POISON | RES_DISEASE, VULN_DROWNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 15 */
{
"minotaur", TRUE,
0, 0, 0,
0, RES_FIRE | RES_COLD, VULN_MENTAL | VULN_LIGHTNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 16 */
{
"centaur", TRUE,
0, 0, 0,
0, RES_FIRE | RES_COLD, VULN_MENTAL | VULN_LIGHTNING,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 17 */
{
"drow", TRUE,
0, AFF_INFRARED, 0,
0, RES_CHARM, VULN_IRON,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
/* 18 */
{
"storm giant", TRUE,
0, AFF_FLYING, 0,
0, RES_LIGHTNING, VULN_MENTAL|VULN_COLD|VULN_FIRE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 19 */
"cloud giant", TRUE,
0, AFF_FLYING, 0,
0, RES_WEAPON, VULN_MENTAL|VULN_LIGHTNING,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 20 */
"fire giant", TRUE,
0, 0, 0,
0, RES_FIRE, VULN_MENTAL|VULN_LIGHTNING|VULN_COLD,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 21 */
"frost giant", TRUE,
0, 0, 0,
0, RES_COLD, VULN_MENTAL|VULN_LIGHTNING|VULN_FIRE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 22 */
"cyclops", TRUE,
0, 0, 0,
0, 0, VULN_MENTAL|VULN_MAGIC,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 23 */
"hydra", TRUE,
0, 0, 0,
0, RES_BASH, VULN_MENTAL|VULN_MAGIC,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 24 */
"rockseer", TRUE,
0, AFF_INFRARED|AFF_SNEAK|AFF_PASS_DOOR, 0,
0, RES_CHARM, VULN_WOOD,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 25 */
"svirfnebli", TRUE,
0, AFF_INFRARED, 0,
0, RES_MAGIC|RES_POISON|RES_DISEASE, VULN_BASH,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 26 */
"arial", TRUE,
0, AFF_FLYING, 0,
0, 0, 0,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 27 */
"felar", TRUE,
0, AFF_INFRARED, OFF_TAIL,
0, RES_LIGHT|RES_COLD, VULN_FIRE|VULN_DROWNING,
A|H|M|V, A|C|D|E|F|H|J|K|Q|U|V
},
{ /* 28 */
"githyanki", TRUE,
0, AFF_INFRARED, 0,
0, 0, 0,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 29 */
"satyr", TRUE,
0, AFF_INFRARED, 0,
0, RES_WOOD|RES_DISEASE, 0,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 30 */
"black dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_ACID, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 31 */
"blue dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_LIGHTNING,
VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 32 */
"green dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_POISON, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 33 */
"red dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_FIRE, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 34 */
"white dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_COLD, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 35 */
"brass dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_FIRE, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 36 */
"gold dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_FIRE|RES_POISON,
VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 37 */
"silver dragon",TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_COLD, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 38 */
"bronze dragon", TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_LIGHTNING,
VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{ /* 39 */
"copper dragon",TRUE,
0, AFF_SANCTUARY|AFF_INFRARED|AFF_FLYING, 0,
0, RES_BASH|RES_CHARM|RES_ACID, VULN_PIERCE,
A|H|M|V, A|B|C|D|E|F|G|H|I|J|K
},
{
"bat", FALSE,
0, AFF_FLYING | AFF_DARK_VISION, OFF_DODGE | OFF_FAST,
0, 0, VULN_LIGHT,
A | G | V, A | C | D | E | F | H | J | K | P},
{
"bear", FALSE,
0, 0, OFF_CRUSH | OFF_DISARM | OFF_BERSERK,
0, RES_BASH | RES_COLD, 0,
A | G | V, A | B | C | D | E | F | H | J | K | U | V},
{
"cat", FALSE,
0, AFF_DARK_VISION, OFF_FAST | OFF_DODGE,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K | Q | U | V},
{
"centipede", FALSE,
0, AFF_DARK_VISION, 0,
0, RES_PIERCE | RES_COLD, VULN_BASH,
A | B | G | O, A | C | K},
{
"dog", FALSE,
0, 0, OFF_FAST,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K | U | V},
{
"doll", FALSE,
0, 0, 0,
IMM_COLD | IMM_POISON | IMM_HOLY | IMM_NEGATIVE | IMM_MENTAL |
IMM_DISEASE | IMM_DROWNING, RES_BASH | RES_LIGHT,
VULN_SLASH | VULN_FIRE | VULN_ACID | VULN_LIGHTNING | VULN_ENERGY,
E | J | M | cc, A | B | C | G | H | K},
{"dragon", FALSE,
0, AFF_INFRARED | AFF_FLYING, 0,
0, RES_FIRE | RES_BASH | RES_CHARM,
VULN_PIERCE | VULN_COLD,
A | H | Z, A | C | D | E | F | G | H | I | J | K | P | Q | U | V | X},
{
"fido", FALSE,
0, 0, OFF_DODGE | ASSIST_RACE,
0, 0, VULN_MAGIC,
A | B | G | V, A | C | D | E | F | H | J | K | Q | V},
{
"fox", FALSE,
0, AFF_DARK_VISION, OFF_FAST | OFF_DODGE,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K | Q | V},
{
"goblin", FALSE,
0, AFF_INFRARED, 0,
0, RES_DISEASE, VULN_MAGIC,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
{
"hobgoblin", FALSE,
0, AFF_INFRARED, 0,
0, RES_DISEASE | RES_POISON, 0,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K | Y},
{
"kobold", FALSE,
0, AFF_INFRARED, 0,
0, RES_POISON, VULN_MAGIC,
A | B | H | M | V, A | B | C | D | E | F | G | H | I | J | K | Q},
{
"lizard", FALSE,
0, 0, 0,
0, RES_POISON, VULN_COLD,
A | G | X | cc, A | C | D | E | F | H | K | Q | V},
{
"modron", FALSE,
0, AFF_INFRARED, ASSIST_RACE | ASSIST_ALIGN,
IMM_CHARM | IMM_DISEASE | IMM_MENTAL | IMM_HOLY | IMM_NEGATIVE,
RES_FIRE | RES_COLD | RES_ACID, 0,
H, A | B | C | G | H | J | K},
{
"orc", FALSE,
0, AFF_INFRARED, 0,
0, RES_DISEASE, VULN_LIGHT,
A | H | M | V, A | B | C | D | E | F | G | H | I | J | K},
{
"pig", FALSE,
0, 0, 0,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K},
{
"rabbit", FALSE,
0, 0, OFF_DODGE | OFF_FAST,
0, 0, 0,
A | G | V, A | C | D | E | F | H | J | K},
{
"school monster", FALSE,
ACT_NOALIGN, 0, 0,
IMM_CHARM | IMM_SUMMON, 0, VULN_MAGIC,
A | M | V, A | B | C | D | E | F | H | J | K | Q | U},
{
"snake", FALSE,
0, 0, 0,
0, RES_POISON, VULN_COLD,
A | G | X | Y | cc, A | D | E | F | K | L | Q | V | X},
{
"song bird", FALSE,
0, AFF_FLYING, OFF_FAST | OFF_DODGE,
0, 0, 0,
A | G | W, A | C | D | E | F | H | K | P},
{
"troll", FALSE,
0, AFF_REGENERATION | AFF_INFRARED | AFF_DETECT_HIDDEN,
OFF_BERSERK,
0, RES_CHARM | RES_BASH, VULN_FIRE | VULN_ACID,
A | B | H | M | V, A | B | C | D | E | F | G | H | I | J | K | U | V},
{
"water fowl", FALSE,
0, AFF_SWIM | AFF_FLYING, 0,
0, RES_DROWNING, 0,
A | G | W, A | C | D | E | F | H | K | P},
{
"wolf", FALSE,
0, AFF_DARK_VISION, OFF_FAST | OFF_DODGE,
0, 0, 0,
A | G | V, A | C | D | E | F | J | K | Q | V},
{
"wyvern", FALSE,
0, AFF_FLYING | AFF_DETECT_INVIS | AFF_DETECT_HIDDEN,
OFF_BASH | OFF_FAST | OFF_DODGE,
IMM_POISON, 0, VULN_LIGHT,
A | B | G | Z, A | C | D | E | F | H | J | K | Q | V | X},
{
"unique", FALSE,
0, 0, 0,
0, 0, 0,
0, 0},
{
NULL, 0, 0, 0, 0, 0, 0}
};
const struct pc_race_type pc_race_table[] = {
{"null race", "", 0, {100, 100, 100, 100},
70, 140, {""}, {13, 13, 13, 13, 13}, {18, 18, 18, 18, 18}, 0},
/*
{
"race name", short name, points, { class multipliers },
"height", "weight", { bonus skills },
{ base stats }, { max stats }, size
},
*/
{
"human", "Human ", 0, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 140, {""},
{13, 13, 13, 13, 13}, {18, 18, 18, 18, 18}, SIZE_MEDIUM},
{
"elf", "Elf ", 20, {100, 125, 100, 120, 120, 120, 100, 120, 125, 100},
72, 130, {"sneak", "hide"},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"dwarf", "Dwarf ", 20, {150, 100, 125, 100, 100, 100, 150, 100, 100, 130},
40, 170, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_MEDIUM},
{
"giant", "Giant ", 25, {200, 150, 150, 105, 120, 120, 200, 120, 150, 175},
120, 250, {"bash", "fast healing"},
{16, 11, 13, 11, 14}, {22, 15, 18, 15, 20}, SIZE_LARGE},
{
"draconian", "Draconian", 20, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
80, 170, {""},
{16, 12, 13, 11, 16}, {22, 15, 18, 15, 20}, SIZE_MEDIUM},
{
"gnome", "Gnome ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
35, 80, {""},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"hobbit", "Hobbit ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
40, 150, {""},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"kender", "Kender ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
35, 75, {""},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"troll", "Troll ", 25, {200, 150, 150, 105, 100, 100, 200, 100, 150, 175},
95, 220, {"bash", "fast healing"},
{16, 11, 13, 11, 14}, {23, 15, 18, 15, 22}, SIZE_LARGE},
{
"pixie", "Pixie ", 10, {100, 125, 100, 120, 120, 120, 100, 120, 125, 100},
6, 1, {"sneak", "hide"},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_SMALL},
{
"half-elf", "Half-elf ", 20, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 140, {""},
{13, 13, 13, 13, 13}, {18, 18, 18, 18, 18}, SIZE_MEDIUM},
{
"half-giant", "Hlf-Giant", 25, {125, 100, 125, 100, 100, 100, 125, 100, 100, 125},
80, 220, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_LARGE},
{
"half-orc", "Half-Orc ", 20, {150, 100, 125, 100, 100, 100, 150, 100, 100, 125},
70, 150, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_MEDIUM},
{
"duergar", "Duergar ", 20, {150, 100, 125, 100, 100, 100, 150, 100, 100, 130},
40, 160, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_MEDIUM},
{
"minotaur", "Minotaur ", 20, {200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
85, 230, {"bash", "fast healing"},
{16, 11, 13, 11, 14}, {22, 15, 18, 15, 20}, SIZE_LARGE},
{
"centaur", "Centaur ", 10, {100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
85, 260, {"berserk"},
{14, 12, 14, 10, 15}, {20, 16, 19, 14, 21}, SIZE_LARGE},
{
"drow", "Dark Elf ", 20, {100, 125, 100, 120, 120, 120, 100, 120, 125, 100},
80, 120, {"sneak", "hide"},
{12, 14, 13, 15, 11}, {16, 20, 18, 21, 15}, SIZE_MEDIUM},
{
"storm giant", "StormGia ",30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"cloud giant", "CloudGia ", 30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"fire giant", "FireGia ",30 ,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"frost giant", "FrostGia ",30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"cyclops", "Cyclops ",30,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"hydra", "Hydra ",20,{200, 150, 150, 105, 100, 100, 200, 100, 150, 150},
168, 600, { "bash"," enhanced damage" , "sword" },
{15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25 }, SIZE_HUGE},
{
"rockseer","Rockseer ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150, { "wand" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"svirfnebli", "Svirf ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
50, 120, { "lore", "identify" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_SMALL},
{
"arial", "Arial ",10,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150, { "" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"felar", "Felar ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150,{ "hand to hand" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"githyanki", "Githy ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150,{ "sword" ,"dagger"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"satyr","Satyr ",20,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
70, 150, { "camouflage" ,"ambush", "steal" },
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_MEDIUM},
{
"black dragon","BlaDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"blue dragon","BluDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"green dragon","GReDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"red dragon","RedDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"white dragon","WhiteDrag",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"brass dragon","BrassDrag",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"gold dragon","GoldDrag ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"silver dragon","SilverDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"bronze dragon","BronzeDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT},
{
"copper dragon","CopperDr ",30,{100, 100, 100, 100, 100, 100, 100, 100, 100, 100},
170, 800, { "hand to hand" , "bash"},
{ 15, 15, 15, 15, 15}, { 25, 25, 25, 25, 25}, SIZE_GIANT}
};
else if (!str_cmp(arg1,"copper"))
{
ch->race = 39;
send_to_char("You have become a Copper Dragon.\n\r", ch);
sprintf(buf,"%s has become a Copper Dragon.", ch->name);
do_info(ch,buf);
}
else
{
stc("Invalid type.\r\n",ch);
stc("Type becomedragon <color> to become that dragon type.\n\r",ch);
stc("{G*****************{x\n\r",ch);
stc("{Y–{CBlack Dragon\n\r",ch);
stc("{Y–{CBlue Dragon\n\r",ch);
stc("{Y–{CRed Dragon\n\r",ch);
stc("{Y–{CGreen Dragon\n\r",ch);
stc("{Y–{CWhite Dragon\n\r",ch);
stc("{Y–{CBrass Dragon\n\r",ch);
stc("{Y–{CGold Dragon\n\r",ch);
stc("{Y–{CSilver Dragon\n\r",ch);
stc("{Y–{CBronze Dragon\n\r",ch);
stc("{Y–{CCopper Dragon\n\r",ch);
stc("{G*****************{n\n\r",ch);
return;
}
stc("Invalid type.\r\n",ch);
stc("Type becomedragon <color> to become that dragon type.\n\r",ch);
stc("{G*****************{x\n\r",ch);
stc("{Y–{CBlack Dragon\n\r",ch);
stc("{Y–{CBlue Dragon\n\r",ch);
stc("{Y–{CRed Dragon\n\r",ch);
stc("{Y–{CGreen Dragon\n\r",ch);
stc("{Y–{CWhite Dragon\n\r",ch);
stc("{Y–{CBrass Dragon\n\r",ch);
stc("{Y–{CGold Dragon\n\r",ch);
stc("{Y–{CSilver Dragon\n\r",ch);
stc("{Y–{CBronze Dragon\n\r",ch);
stc("{Y–{CCopper Dragon\n\r",ch);
stc("{G*****************{n\n\r",ch);
stc( "Invalid type.\r\n"
"Type becomedragon <color> to become that dragon type.\n\r"
"{G*****************{x\n\r"
"{Y–{CBlack Dragon\n\r"
"{Y–{CBlue Dragon\n\r"
"{Y–{CRed Dragon\n\r"
"{Y–{CGreen Dragon\n\r"
"{Y–{CWhite Dragon\n\r"
"{Y–{CBrass Dragon\n\r"
"{Y–{CGold Dragon\n\r"
"{Y–{CSilver Dragon\n\r"
"{Y–{CBronze Dragon\n\r"
"{Y–{CCopper Dragon\n\r"
"{G*****************{n\n\r", ch );
I would like to have Draconians be able to become a dragon once they've reached 1K mob kills. Im not really sure how to do this.. i think id know how to write the function for changing, but im not sure how to work it in the race_table and the pc_race_table so that the regular dragon races wont be available in creation but will work fine later on.. Any help would be greatly appreciated..
Thanks,
Xrakisis, Ian Shirm.