tmi2_fluffos_v2/
tmi2_fluffos_v2/bin/
tmi2_fluffos_v2/etc/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/ChangeLog.old/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/Win32/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/compat/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/compat/simuls/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/include/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/clone/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/command/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/data/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/etc/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/include/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/inherit/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/inherit/master/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/log/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/compiler/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/efuns/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/single/tests/operators/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/testsuite/u/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/tmp/
tmi2_fluffos_v2/fluffos-2.7-ds2.018/windows/
tmi2_fluffos_v2/lib/
tmi2_fluffos_v2/lib/adm/
tmi2_fluffos_v2/lib/adm/daemons/languages/
tmi2_fluffos_v2/lib/adm/daemons/network/I3/
tmi2_fluffos_v2/lib/adm/daemons/virtual/
tmi2_fluffos_v2/lib/adm/daemons/virtual/template/
tmi2_fluffos_v2/lib/adm/news/
tmi2_fluffos_v2/lib/adm/obj/
tmi2_fluffos_v2/lib/adm/obj/master/
tmi2_fluffos_v2/lib/adm/priv/
tmi2_fluffos_v2/lib/adm/shell/
tmi2_fluffos_v2/lib/adm/tmp/
tmi2_fluffos_v2/lib/cmds/
tmi2_fluffos_v2/lib/d/
tmi2_fluffos_v2/lib/d/Conf/
tmi2_fluffos_v2/lib/d/Conf/adm/
tmi2_fluffos_v2/lib/d/Conf/boards/
tmi2_fluffos_v2/lib/d/Conf/cmds/
tmi2_fluffos_v2/lib/d/Conf/data/
tmi2_fluffos_v2/lib/d/Conf/logs/
tmi2_fluffos_v2/lib/d/Conf/obj/
tmi2_fluffos_v2/lib/d/Conf/text/help/
tmi2_fluffos_v2/lib/d/Fooland/adm/
tmi2_fluffos_v2/lib/d/Fooland/data/
tmi2_fluffos_v2/lib/d/Fooland/data/attic/
tmi2_fluffos_v2/lib/d/Fooland/items/
tmi2_fluffos_v2/lib/d/TMI/
tmi2_fluffos_v2/lib/d/TMI/adm/
tmi2_fluffos_v2/lib/d/TMI/boards/
tmi2_fluffos_v2/lib/d/TMI/data/
tmi2_fluffos_v2/lib/d/TMI/rooms/
tmi2_fluffos_v2/lib/d/grid/
tmi2_fluffos_v2/lib/d/grid/adm/
tmi2_fluffos_v2/lib/d/grid/data/
tmi2_fluffos_v2/lib/d/std/
tmi2_fluffos_v2/lib/d/std/adm/
tmi2_fluffos_v2/lib/data/adm/
tmi2_fluffos_v2/lib/data/adm/daemons/
tmi2_fluffos_v2/lib/data/adm/daemons/doc_d/
tmi2_fluffos_v2/lib/data/adm/daemons/emoted/
tmi2_fluffos_v2/lib/data/adm/daemons/network/http/
tmi2_fluffos_v2/lib/data/adm/daemons/network/services/mail_q/
tmi2_fluffos_v2/lib/data/adm/daemons/network/smtp/
tmi2_fluffos_v2/lib/data/adm/daemons/news/archives/
tmi2_fluffos_v2/lib/data/attic/connection/
tmi2_fluffos_v2/lib/data/attic/user/
tmi2_fluffos_v2/lib/data/std/connection/b/
tmi2_fluffos_v2/lib/data/std/connection/l/
tmi2_fluffos_v2/lib/data/std/user/a/
tmi2_fluffos_v2/lib/data/std/user/b/
tmi2_fluffos_v2/lib/data/std/user/d/
tmi2_fluffos_v2/lib/data/std/user/f/
tmi2_fluffos_v2/lib/data/std/user/l/
tmi2_fluffos_v2/lib/data/std/user/x/
tmi2_fluffos_v2/lib/data/u/d/dm/working/doc_d/
tmi2_fluffos_v2/lib/data/u/l/leto/doc_d/
tmi2_fluffos_v2/lib/data/u/l/leto/smtp/
tmi2_fluffos_v2/lib/doc/
tmi2_fluffos_v2/lib/doc/driverdoc/applies/
tmi2_fluffos_v2/lib/doc/driverdoc/applies/interactive/
tmi2_fluffos_v2/lib/doc/driverdoc/concepts/
tmi2_fluffos_v2/lib/doc/driverdoc/driver/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/arrays/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/buffers/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/compile/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/ed/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/filesystem/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/floats/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/functions/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/general/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/mappings/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/numbers/
tmi2_fluffos_v2/lib/doc/driverdoc/efuns/parsing/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/constructs/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/preprocessor/
tmi2_fluffos_v2/lib/doc/driverdoc/lpc/types/
tmi2_fluffos_v2/lib/doc/driverdoc/platforms/
tmi2_fluffos_v2/lib/doc/mudlib/
tmi2_fluffos_v2/lib/ftp/
tmi2_fluffos_v2/lib/include/driver/
tmi2_fluffos_v2/lib/log/
tmi2_fluffos_v2/lib/log/driver/
tmi2_fluffos_v2/lib/obj/net/
tmi2_fluffos_v2/lib/obj/shells/
tmi2_fluffos_v2/lib/obj/tools/
tmi2_fluffos_v2/lib/std/adt/
tmi2_fluffos_v2/lib/std/board/
tmi2_fluffos_v2/lib/std/body/
tmi2_fluffos_v2/lib/std/fun/
tmi2_fluffos_v2/lib/std/living/
tmi2_fluffos_v2/lib/std/object/
tmi2_fluffos_v2/lib/std/shop/
tmi2_fluffos_v2/lib/std/socket/
tmi2_fluffos_v2/lib/std/user/
tmi2_fluffos_v2/lib/std/virtual/
tmi2_fluffos_v2/lib/student/
tmi2_fluffos_v2/lib/student/kalypso/
tmi2_fluffos_v2/lib/student/kalypso/armor/
tmi2_fluffos_v2/lib/student/kalypso/rooms/
tmi2_fluffos_v2/lib/student/kalypso/weapons/
tmi2_fluffos_v2/lib/u/l/leto/
tmi2_fluffos_v2/lib/u/l/leto/cmds/
tmi2_fluffos_v2/lib/www/errors/
tmi2_fluffos_v2/lib/www/gateways/
tmi2_fluffos_v2/lib/www/images/
tmi2_fluffos_v2/old/
tmi2_fluffos_v2/win32/
  MudOS mudlib 0.9 doesn't have a system of either levels or experience
points. A player's abilities are completely summed up by his statistics,
which are permanent and unchanging, and his skills, which improve with use
at a rate depending on the underlying statistics. (For traditionalists, we
plan to offer a XP system in the not-too-distant future.)
  Statistics are meant to represent the player's intrinsic abilities. The
default mudlib comes with four: strength, intelligence, dexterity, and
constitution. They are stored as part of the player properties in a mapping
called stat. You can reference each individual stat by using the nested
mapping calls: ie, strength = query("stat/strength"). They are distributed
randomly from 5-25 with racial modifiers. At the moment, this is the only
impact race has on the game. There is no way to change them in the default
mudlib, by conscious design decision.
   Skills, in contrast, represent the part of the players' abilities that can
be improved. Skills are not stored as part of the player's properties.
Instead, it is declared as a seperate variable in /std/living/skills.c, and
all living objects inherit it.
  There are 12 player skills in the default mudlib; five combat skills, four
magic skills, and three miscellaneous skills. These skills are initialized when
the player's save file is created, and that is the only place where they
are explicitly listed in the mudlib, so that if you want to add new skills
or remove existing ones that is the only place you have to change them. In
all other places in the mudlib, the skills are stored in a mapping variable
and anything in the mapping is presumed to be a skill.
  Skills are set in the player object by calling set_skill(). Set_skill takes
three arguments. The first argument is the name of the skill, ie "Thrusting
weapons". The names are case-sensitive: in the default mudlib all skill
names start with capital letters. The second argument is the number the
skill is to be set to. The third argument is the statistic which controls
how rapidly the player can advance in the skill. This should only be called
once, from creation.c.
  For example, you might initialize a skill in your character creation
progam with something like this:
 
   set_skill ("Document writing", 12, "intelligence") ;

which would create a skill in the player (or possibly monster) called
Document writing (case matters) which is set at a level of 12 and whose
advancement is controlled by the intelligence statistic.
   Each time a player uses a skill, he is credited with a number of skill
use points for doing so. If he accumulates enough use points, his skill
level rises by one point. The number of skill points needed to increase
the skill level from level N to level N+1 is (50-stat)*(2N+1), where stat
is the relevant statistic (str, int, dex, con) set in the set_skill call.
Thus, the player's skill level is proportional to the square of his total
use points (trust me, that's how that formula works out). You give a player
use points by calling the function improve_skill(). Improve_skill takes two
arguments, the first being the skill to improve and the second being the
number of use points to credit. Since the combat skills are most frequently
used, using them earns one use point, and the points of other actions are
scaled to make each skill advance at about the same rate. For example, the
heal spell and the missile spell credit you with 5 use points for casting
them, while the fireball spell credits 10 (since it costs more sp). This
is the most common method of improving a player's skills.
  For example, when a player successfully steals an item from a monster, we
call this:

   improve_skill ("Theft", 10) ;

which credits the player with 10 skill use points in Theft.
   It is also possible to give a player a temporary increase in his skills,
say through a magic spell or through drugs or some such. To do this, you
can call the function modify_skill. It takes three arguments: the name of the
skill, the amount by which the skill level should be raised, and the time that
which the raise is to be in effect. The "raise" can be negative, so that this
can also be used to lower a player's abilities, although it does not check
for the skill to be non-negative: you have to do this yourself, unless you
want to permit negative skill levels (which you may or may not want.)
   You can find the player's current skill level, including temporary
modifications, with the function query_skill(). It takes one argument, which
is the skill name, and returns the skill level. There are two other query
functions: query_skills returns the skill levels mapping and query_skill_points
returns the mapping of the use points needed to improve to the next level.
As with all mappings, a pointer to the true object is returned so any changes
will be reflected in the player object.
  There are two other functions of note defined in the skill system which you
should not use generally but which may have some use. The first is init_skills,
which initializes the skill mapping if it does not already exist. This is
called at creation. The second is change_skill_level, which takes a skill name
and an int as arguments and sets the skill level to the int, without affecting
either the related statistic or the points. You should not use this to improve
skills through usage - call improve_skill for that - but you should use it
when you want to change the skill level other than by improvement with
use. In the default mudlib it is called only from the guilds, when a player
trains in a skill.

Mobydick@TMI-2
11-13-92