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