[REQUEST][LONG] Best way to revamp spells/skills?

From: Owen Brodal-Robertson (obr@hisplace.net)
Date: 04/02/02


I'm changing the way my MUD handles skills and spells,
Instead of having people practice their skills at their
guildmaster I want to implement a method of gaining skill
points by actually using their skills.

For instance, every time someone uses skill_kick, there's a
slight chance it'll increment as they practice their skill in
the heat of battle... This code is relatively simple, what I
am looking for advice on, is how to "cap" skills based on
class, race, and level.

For example, a level 1 warrior can notch his kick skill up to
a level where the skill is incremented to 5, but to futher
the skill he has to gain a level. Also needing consideration
is the fact warriors kick skill maxxes at 100 at level 56
(highest mortal level), whereas an anti-paladin's kick skill
maxxes at 85 at level 56.

I've toyed with the idea of using an array, similar to the way
Circle currently handles maximum skill levels -
the [4][NUM_CLASSES] array in class.c (can't remember what the
array is called, sorry), hoever, this is quite unwieldy, as
the array would be huge... [TOP_OF_SPELLS][NUM_CLASSES] is
a 299 X 6 array (with more classes being added rapidly).

So I thought about creating a new struct called skill_type
and adding it into the player structure, something like

struct skill_type {
      int skill_num;
      int max_skill_level;
      int skill_max_per_level;

and changing skill_set so it sets each skill value for each
class... can anyone think of a better way?

The other thing (Sorry, this is a long post) is that I want
to assign spells in "circles" instead of per level, where a
player gets a certain number of spells each 5 or so levels
and has to "memorize" each spell to be able to cast it instead
of using mana... the number of memorization slots would
increase each level, however you'd only gain spells upon
reaching a level where a new spell circle is attained.


Level 13 sorcerer... has spell circles 1, 2 & 3.

At this level the char has 6 x 1st circle memorization slots,
5 x 2nd circle memorization slots and
2 x 3rd circle memorization slots.

This would be another change to char structures I guess.

So my question is, has anyone tried this before with the
circle codebase? If so can I have some example code? I am
capable of writing it all myself, however my current thoughts
leave me with a very unorganized and messy codebase.


Owen B-R.

   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |

This archive was generated by hypermail 2b30 : 06/25/03 PDT