Just a little sidetrack: Why does everybody bake the races into the initial menu? A lot of new players have no idea about races, even less about stats when they select a new char. I've coded it so people have to wait until level 5 to select a race (thus they would have a good idea what to be, and also the option to switch race.) I'll probably do the same for classes, make everybody born 'class-less humans', and let them do some research to find out which skills, spells etc. that exist for that class. IMHO. :) On Sun, 13 Oct 1996, Admin of The Keep wrote: > On Sun, 13 Oct 1996, Brian Williams - Nashak wrote: > > > I forgot what all you need to add to the code for races.. I had races a > > long time ago, but.. hey my memory is bad.. :P anyways.. could someone > > post the good old race.c, and a text of where to add everything? > > Never heard of race.c, myself, nor have I ever looked at any of the > public releases of races; I just know how I do it... The fun way... :) > Short of my nifty race selection mode (anyone seen that? heh, it's > actually easier than many people think :)), it's fairly basic. > > I use a table instead of seperate strings, etc. Like: > > struct race_data { > char *name; > char *abbrev; > int mod_stats[6]; > }; > > For most MUDs this is an adequate representation of the use of races > in the MUD... Of course, it can get MUCH more complex (eg., my races > have functions assigned to them, starting skills, etc., etc., etc.). > Basically we have a format of: > > struct race_data Races[NUM_RACES] = { > { "Human" , "Hum", { 0, 0, 0, 0, 0, 0 } }, > { "Elf" , "Elf", { -2, 2, 1, 1, -2, 0 } } > }; > > Presuming you have defined the following in 'structs.h': > > #define RACE_HUMAN 0 > #define RACE_ELF 1 > > #define NUM_RACES 2 > > Now you can make races modify stats (on my MUD races determine the roll > of stats, max/min) by doing: > > ch->real_abils.str += Races[GET_RACE(ch)].mod_stats[0]; > ch->real_abils.intel += Races[GET_RACE(ch)].mod_stats[1]; > ch->real_abils.wis += Races[GET_RACE(ch)].mod_stats[2]; > ch->real_abils.dex += Races[GET_RACE(ch)].mod_stats[3]; > ch->real_abils.con += Races[GET_RACE(ch)].mod_stats[4]; > ch->real_abils.cha += Races[GET_RACE(ch)].mod_stats[5]; > > Create your race selection code: > > -in "structs.h"- > #define CON_QRACE xx /* change 'xx' to first avail. > * nubmer */ > > -in "interpreter.c" (I think? I dunno, I moved nanny to a new file)- > case CON_QRACE: > for (x = 0; x < NUM_RACES; x++) > if (is_abbrev(arg, Races[x].abbrev)) > break; > if (x < 0 || x >= NUM_RACES) { > send_to_char("That's an invalid race!\r\n", d->character); > for (x = 0; x < NUM_RACES; x++) { > sprintf(buf, "[%s] %s\r\n", Races[x].abbrev, Races[x].name); > send_to_char(buf, d->character); > } > SEND_TO_Q("Race: ", d); > } > GET_RACE(ch) = x; > break; > > You'll need to add support for display the races (as show just below > "That's an invalid race!") to whatever con state you want to come > before it and make CON_QRACE call the next con state, too. Probably > you'll want to add passing to CON_QRACE to CON_QSEX and then have > CON_QRACE copy the code from the bottom of CON_QSEX that sends them > to CON_QCLASS so you end up going from gender selection to race > selection to class selection. > > BTW, you'll want to put: > extern struct race_data Races[NUM_RACES]; > > At the end of "structs.h" so that it's global to all files. > > <*=-+Daniel+-=*> > "Forgive me father, for I am sin." > > > +-----------------------------------------------------------+ > | Ensure that you have read the CircleMUD Mailing List FAQ: | > | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | > +-----------------------------------------------------------+ > * Classic@Cloud9.net * tpedersen@kraft.com * * http://www.cloud9.net/~classic * * visit Darklord MUD at pody.westnet.com 5000 * +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST