Posted Wednesday, August 12th @ 11:34:42 PM, by George Greer in the Players dept.
Added Dec 3, 1996. Click the link below to read it or download it.
From: Brian Williams <bmw@efn.org>
Subject: Races
-=-=-=-=-=-=-=-=-=-
structs.h
-=-=-=-=-=-=-=-=-=-
Search for:
#define CLASS_GIANT 5
Below it, add:
#define RACE_UNDEFINED -1
#define RACE_HUMAN 0
#define RACE_ELF 1
#define RACE_GNOME 2
#define RACE_DWARF 3
#define NUM_RACES 4
Search for:
#define CON_DELCNF2 16 /* Delete confirmation 2 */
Below it, add:
#define CON_QRACE 17 /* Race? */
Search for:
struct char_player_data {
char *name; /* PC / NPC s name (kill ... ) */
char *short_descr; /* for NPC 'actions' */
char *long_descr; /* for 'look' */
char *description; /* Extra descriptions */
char *title; /* PC / NPC's title */
byte sex; /* PC / NPC's sex */
byte class; /* PC / NPC's class */
Below it, add:
byte race; /* PC / NPC's race */
Search for:
struct char_file_u {
/* char_player_data */
char name[MAX_NAME_LENGTH+1];
char description[EXDSCR_LENGTH];
char title[MAX_TITLE_LENGTH+1];
byte sex;
byte class;
Below it, add:
byte race;
-=-=-=-=-=-=-=-=-=-
utils.h
-=-=-=-=-=-=-=-=-=-
Search for:
#define CLASS_ABBR(ch) (IS_NPC(ch) ? "--" : class_abbrevs[(int)GET_CLASS(ch)])
Below it, add:
#define RACE_ABBR(ch) (IS_NPC(ch) ? "--" : race_abbrevs[(int)GET_RACE(ch)])
Search for:
#define GET_CLASS(ch) ((ch)->player.class)
Below it, add:
#define GET_RACE(ch) ((ch)->player.race)
-=-=-=-=-=-=-=-=-=-
races.c(MAKE NEW FILE)
-=-=-=-=-=-=-=-=-=-
#include "sysdep.h"
#include "conf.h"
#include "structs.h"
#include "interpreter.h"
#include "utils.h"
const char *race_abbrevs[] = {
"Hum",
"Elf",
"Gno",
"Dwa",
"\n"
};
const char *pc_race_types[] = {
"Human",
"Elf",
"Gnome",
"Dwarf",
"\n"
};
/* The menu for choosing a race in interpreter.c: */
const char *race_menu =
"\r\n"
"Select a race:\r\n"
" [H]uman\r\n"
" [E]lf\r\n"
" [G]nome\r\n"
" [D]warf\r\n";
/*
* The code to interpret a race letter (used in interpreter.c when a
* new character is selecting a race).
*/
int parse_race(char arg)
{
arg = LOWER(arg);
switch (arg) {
case 'h':
return RACE_HUMAN;
break;
case 'e':
return RACE_ELF;
break;
case 'g':
return RACE_GNOME;
break;
case 'd':
return RACE_DWARF;
break;
default:
return RACE_UNDEFINED;
break;
}
}
long find_race_bitvector(char arg)
{
arg = LOWER(arg);
switch (arg) {
case 'h':
return (1 << 0);
break;
case 'e':
return (1 << 1);
break;
case 'g':
return (1 << 2);
break;
case 'd':
return (1 << 3);
break;
default:
return 0;
break;
}
}
-=-=-=-=-=-=-=-=-=-
class.c
-=-=-=-=-=-=-=-=-=-
Search for:
case CLASS_WARRIOR:
ch->real_abils.str = table[0];
ch->real_abils.dex = table[1];
ch->real_abils.con = table[2];
ch->real_abils.wis = table[3];
ch->real_abils.intel = table[4];
ch->real_abils.cha = table[5];
if (ch->real_abils.str == 18)
ch->real_abils.str_add = number(0, 100);
break;
}
Below it, add:
switch (GET_RACE(ch)) {
case RACE_HUMAN:
break;
case RACE_ELF:
ch->real_abils.dex += 1;
ch->real_abils.intel += 1;
ch->real_abils.con -= 1;
ch->real_abils.str -= 1;
break;
case RACE_GNOME:
ch->real_abils.intel += 1;
ch->real_abils.wis -= 1;
break;
case RACE_DWARF:
ch->real_abils.con += 1;
ch->real_abils.intel -= 1;
ch->real_abils.cha -= 1;
break;
default:
break;
}
-=-=-=-=-=-=-=-=-=-
constants.c
-=-=-=-=-=-=-=-=-=-
Search for:
"Self-Delete 2",
Below it, add:
"Select race",
-=-=-=-=-=-=-=-=-=-
db.c
-=-=-=-=-=-=-=-=-=-
Search for:
GET_CLASS(ch) = st->class;
Below it, add:
GET_RACE(ch) = st->race;
Search for:
st->class = GET_CLASS(ch);
Below it, add:
st->race = GET_RACE(ch);
-=-=-=-=-=-=-=-=-=-
interpreter.c
-=-=-=-=-=-=-=-=-=-
Search for:
extern const char *class_menu;
Below it, add:
extern const char *race_menu;
Search for:
int parse_class(char arg);
Below it, add:
int parse_race(char arg);
Search for:
SEND_TO_Q(class_menu, d);
SEND_TO_Q("Class: ", d);
STATE(d) = CON_QCLASS;
break;
Change it to:
SEND_TO_Q(race_menu, d);
SEND_TO_Q("Race: ", d);
STATE(d) = CON_QRACE;
break;
Below it, add:
case CON_QRACE:
load_result = parse_race(*arg);
if (load_result == RACE_UNDEFINED) {
SEND_TO_Q("\r\nThat's not a race.\r\nRace: ", d);
return;
} else
GET_RACE(d->character) = load_result;
SEND_TO_Q(class_menu, d);
SEND_TO_Q("Class: ", d);
STATE(d) = CON_QCLASS;
break;
-=-=-=-=-=-=-=-=-=-
act.wizard.c
-=-=-=-=-=-=-=-=-=-
Search for:
ACMD(do_set)
{
int i, l;
struct char_data *vict = NULL, *cbuf = NULL;
struct char_file_u tmp_store;
char field[MAX_INPUT_LENGTH], name[MAX_INPUT_LENGTH], val_arg[MAX_INPUT_LENGT
H]
int on = 0, off = 0, value = 0;
char is_file = 0, is_mob = 0, is_player = 0;
int player_i = 0;
int parse_class(char arg);
Below it, add:
int parse_race(char arg);
Search for:
{ "cha", LVL_GRGOD, BOTH, NUMBER },
Below it, add:
{ "race", LVL_GRGOD, PC, MISC },
Search for:
case 47:
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
RANGE(3, 25);
else
RANGE(3, 18);
vict->real_abils.cha = value;
affect_total(vict);
break;
Below it, add:
case 48:
if ((i = parse_race(*val_arg)) == RACE_UNDEFINED) {
send_to_char("That is not a race.\r\n", ch);
return;
}
GET_RACE(vict) = i;
break;
-=-=-=-=-=-=-=-=-=-
Makefile
-=-=-=-=-=-=-=-=-=-
Search for:
objsave.o olc.o shop.o spec_assign.o spec_procs.o spell_parser.o \
Change it to:
objsave.o olc.o races.o shop.o spec_assign.o spec_procs.o \
spell_parser.o \
Search for:
random.o: random.c
$(CC) -c $(CFLAGS) random.c
Below it, add:
races.o: races.c sysdep.h conf.h structs.h interpreter.h utils.h
$(CC) -c $(CFLAGS) races.c
^^^^^^^^
***MAKE SURE THIS IS A <TAB> OR ELSE THE MAKEFILE WILL PRODUCE ERRORS!!!!!***
That's all you need. Simple, eh? Hope this helps... - Nashak
<< Quest Shops [by Frollo] | Reply | View as text | Threaded | Races vs. Classes [by Nashak] >> |
|
Related Links |
|
|
|
CircleMUD Snippets |
|
|
Note: Not all of these snippets will work perfectly with
your version of code, so be prepared to fix one
or two bugs that may arise, and please let me know
what you needed to do to fix it. Sending a corrected
version is always welcome.
|
Finally, if you wish to use any of the snippets from this
page, you are more than welcome, just mention the
authors in your credits. If you wish to release any
of these snippets to the public on another site,
contact me FIRST.
|
|
|
|
|
|
|