Re: CODE: EXPERIENCE Based MUD

From: ShadowLord (dkoepke@california.com)
Date: 06/21/96


On Fri, 21 Jun 1996, zen wrote:

> I've come to the conclusion that levels are pretty pointless on my mud I
> would like to do away with them and opt for a system based on experience.
> My only problem is I'm not sure where to start.  I've already mirrored some
> of the LVL_defines with EXP_defines and some other small stuff but that's
> about it.  I was wondering if someone has tried to implement this on their
> muds and could help, or if some of you who switched to skill based systems
> could help.

Explain, first, what an experience based MUD is?  I did, btw, remove
levels.  And  must say I found quite a few things I deem stupid while
going through all the source code.  The one that really sticks out in my
mind is the 'kick' skill.  It has NOTHING to with strength.  It's just
your level halved, I believe.  That means a weak person the same level as
a strong person kicks just as hard.  <blink>

> 
> Also, I'm trying to add several more fields on to objects like weapon
> type(i.e. Sword, Pole arm, etc.) and I'm not sure how to do this.  I know
> that I need to make modifications to the obj structure in structs.h and add
> something in db.c and objsave.c but I'm not exactly sure what that is.  Any
> help would be greatly appreciated.

You can use object value 0 (unused) for the weapon types.  I also extended
values so I have 10 instead of 4.  It was easy to convert the world files,
if you have OasisOLC just go through each ?edit.c file, move the majority
of the code from the ?edit_save_to_disk functions to a seperate function
which takes a zone number as an argument.  In that functio nreplace all
the OLC_ZNUM calls with the name of the passed variable, and in the
?edit_save_to_disk function call the above function.  For instance:

  void Write_mobs_to_disk (int znum)
  { /* move bulk of the medit_save_to_disk function here, save the very
     * last line (excluding, of course, the closing brace
     */
  }

  void medit_save_to_disk(struct descriptor_data *d)
  { Write_mobs_to_disk(OLC_ZNUM(d));
    /* last line of medit_save_to_disk */
  }

Then just go into olc.c, play with the do_olc function, moving the
two_arguments() call before the subcmd check, then inside the subcmd
check check for an argument, if it's there, call all of the Write_*
functions. :)

Easy... (I'm sure the above confused the hell out of everyone)

	-dak



This archive was generated by hypermail 2b30 : 12/18/00 PST