[MUD-Dev] Experience System Differences

Malcolm Tester MTester at cambric.com
Wed Jan 17 10:09:41 CET 2001


-> -----Original Message-----
-> From: Hulbert, Leland [mailto:LHulbert at czn.com]
-> Sent: Tuesday, January 16, 2001 1:38 PM
-> To: 'mud-dev at kanga.nu'
-> Subject: RE: [MUD-Dev] Experience System Differences

-> What type of system do you use to give experience from exploring
-> and/or running shops?  The only thing that immediately comes to my
-> mind (I am ashamed to admit I never thought of doing something like
-> this before) is a XP award the first time you enter a given room,
-> adjusted for the difficulty in reaching that room, or difficulty in
-> finding it; and a flat rate of XP for every P2P transaction.  Of
-> course, that would require tracking to prevent abuse...  I'd really
-> like to know how you handle this.


For those fmailiar with TubMud (Amylaar driver), the system used is
basically a file filled with room locations.  I.e.:

  ---start file---
  1	/room/church
  2	/room/shop
  3	/room/adv_guild
  ---end file---

etc.

Then, in certain rooms, or even in certain actions, you can call a
function in the player, i.e. player->add_visit().  If the
environment(player) matches a room in the above file, the
corresponding number (1 for church, i.e.) is added to an array in the
player and they are given experience based on a percentage of their
total exploration.  If it already exists, nothing happens.  As well,
the player is not _told_ that they have gained anything.  Upon their
next trip to the guild they belong to, if they've reached the next
"explorer" level, they see a message like "You are an advanced
traveler now.".

My system is based on this original idea, but is varied slightly.
First, just entering a room is not enough.  You have to perform/find
something that isn't obvious.  Secondly, I do some different things
with how the player "sees" how much they've explored.  I don't like to
tell the player ("You've explored 30% of the known world.").  How do
they know how much they've explored?  There could be a new continent
undiscovered.  So numbers aren't used visibly.  There are a few other
things I do differently as well.  It works pretty nicely though.  And
since my leveling system requires more than just a particular kind of
experience to advance, you can't advance several levels just from
exploring.  Or just from killing.  Or just from <anything>.

Here's an example:

  inherit "/obj/room";

  int search_crack();
  int searched;

  void
  create() {
     set_bunch_of_stuff();
     set_search( (["wall":  "There appears to be a crack in it.",
                   "crack": #'search_crack,
     ]) );
     searched = 0;
  }

  int
  search_crack() {
     if(!searched) {
        this_player()->add_visit();
        searched = 1;
        do_other_stuff;
     }
     else
        write("You find nothing in the crack.\n");
     return 1;
  }

Now, as for shops.  This is still mostly in my head, as to how I will
make it work.  (My lib is still in the beginning stages, not open for
playing).  A Player owns a shop.  There is an NPC to run the shop (not
like diku though).  Basically, it's just a guard.  All the shop
functions are in the shop code, not the NPC code.  The player can sell
whatever they want, for however much they want.  However, they have to
"pay" their shopkeeper to stay on duty.  If the shopkeeper is killed,
the shop can be looted.  The player can hire a more powerful
shopkeeper if they wish, for more money of course.  The more they do
business, the more their economic status rises.  Put that in along
with other things the players need to do, and they gain experience
based on their economic status overall.  This is what I like to call
the "realistic experience".  It's hard to do, but I'm trying to
compare it with real life and everyday duties.  You have a job, you
earn a living, you vote, you sit on a council, etc., etc.

There are other things to keep in mind too, that I don't want to get
into much detail right now.  I.e., the more you sell of a particular
item, the less it is worth.  The shop will track (per reboot/manual
reset of the shop) who is sold what, and how much "sales" are for a
particular day.  Plus, it compares the real value of the object to the
"sold" value, so you can end up with a net loss for the day, which
results in less experience.

As I said, I'm still developing it.  So take it for what it's worth.

Malc is Mindless

_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list