> I did a crappy little thing to make spells stay, using the innate code > from Pat, and my own little piece of ugliness =) > in do_start I added > ACMD( do_innate ); > int spl; > extern char *spells[]; > > switch (GET_RACE(ch)) { > case RACE_TROLL: > spl = SPELL_REGEN; > break; > case RACE_DRACONIAN: > spl = SPELL_FLY; > break; > default: > spl = 0; > break; > } > if (spl) { > mag_affects(LVL_IMMORT -1, ch, ch, spl, 0); > sprintf(buf2, "%s %s", GET_NAME( ch ), spells[spl]); > do_innate(ch, buf2, 0, SCMD_SINNATE); > } > > It is very ugly, and I right now you cant assign more than one spell, > but this is just mail code, which I did today just because I was going > to do it anyway. Hope it at least helps for now. Actually, what I did is something like the following: Make an array somewhere which has the spells each race gets innate. (Also, which immunities, resistances, special skills, etc.. but lets stick to spells for now) So, fairy mob/players have {SPELL_FLY, SPELL_SANCT, SPELL_NOTHING} and then in db.c when they're loaded, (and in act.wizard.c when race is set) first, all affects are removed, and then it goes through the array[race][] till it gets to SPELL_NOTHING. Its a little cleaner, and can be called by a simple function like race_abilities(struct char_data *ch); , right after everything is initialized. Huzzah. :) PjD +-----------------------------------------------------------+ | 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/08/00 PST