torch Zylara's Smaug 1.4 Bug-Fix List torch


Updated Aug. 20, 1999

SMAUG = Simulated Medieval Adventure multi-User Game

MUD = Multi User Dungeon

Ok, here is my bug-fix list for smaug 1.4



*********************MAIN 1.4 BUG/FIX LIST*********************

-------------WHO ARGUMENT REMOVAL
From:         "Li'l Lukey"   lpherson@mncs.k12.mn.us
If you want to type just "who" instead of "who 1". All you have to
do is remove the line near the top of mud.h that defines REQWHOARG.
#define REQWHOARG      to      /* #define REQWHOARG */
and in   act_info.c   comment out the stuff for   ifdef REQWHOARG

----------SHIELDWORK and POSSESS
ASSIGN_GSN: Skill shieldwork not found.
This is unfinished, just comment it out of the one line in mud.h
and two lines in db.c
ASSIGN_GSN: Skill possess not found.
Just an unfinished feature, doesn't hurt anything, don't remove it.
Removing it will cause problems instead of it just saying 'not found'.

-----------------HELL IS SET TO WRONG VNUM
From:         Rjael   mud@mini.axcomp.com
Hell apparently still has problems, although an unhell won't
crash the mud.
From:    Kevin London
I will fix hell, we use a different vnum on realms and I always
forget to set it back for smaug.
From:  me (Zylara)
In act_wiz.c in the funtions do_hell and do_unhell change the
victim->in_room->vnum != 8                to a 6 instead of 8
char_to_room(victim, get_room_index(8));           to 6 also.

-----------MOBS DEFPOSITIONS
From:          Sevoreria Dragonlight
I discovered mobs we created were not moving even when we installed
the area. In smaug 1.4 there are several new positions. Smaug 1.02a
defpos 8 was standing, but now it is sitting. All you need to do is
find the make_mobile function in db.c and scroll down to find the
defposition and position values (which should say 8 if you haven't
changed them) and change the values to 12 (which is the new position
for standing).

-------------KICK and SLICE
From:         "Li'l Lukey"   lpherson@mncs.k12.mn.us
I found a bug in the do_slice function. It seems that do_slice was
probably a copy and paste of do_kick. In the first ifcheck located
in do_slice in skills.c, notice how it checks the gsn_kick instead
of checking gsn_slice like it should.
  if ( !IS_NPC(ch) && !IS_IMMORTAL(ch)
  &&   ch->level < skill_table[gsn_kick]->skill_level[ch->class] )
  {                                ^^^^ <----------change to slice
    send_to_char("You are not learned in this skill.\n\r", ch );
    return;
This skill still needs some work done on it to get it working.

------------PROFANITY CHECKER
From:         Kevin London   london@cs.utk.edu
init_profanity_checker doesn't work properly yet, you can comment
out the init_profanity_checker function if you wish to get rid of
the following errors when compiling:
act_comm.c: In function `init_profanity_checker':
act_comm.c:3180: warning: implicit declaration of function `re_comp'
act_comm.c: In function `is_profane':
act_comm.c:3295: warning: implicit declaration of function `re_exec'

------------------REQUEST PIPE
Error messages on request pipe and what does it do anyway?
From:           Altrag   altrag@realms.game.org
Requests are used for the web interface. try "echo webwho >>REQUESTS"
sometime and watch the WEBWHO file get updated. pretty snazzy, eh?
From:           Kevin London   Internet: london@cs.utk.edu
You know the webwho on the smaug page, this goes through the request
pipe. To get rid of it take -DREQUESTS out of the Makefile if you
aren't going to use REQUESTS.

----------NEW WEAR LOCATIONS BUG
From:         Gabriel Androctus
There is no equipment in the game that I have found to fit the
four new wear locations, and it crashes the mud if they are used
before being fixed. Viewing characters wearing items with these
wear locations causes the mud to crash.
From:         Barak Taylor
In mud.h #define MAX_WHERE_NAME 22  needs to be changed to
#define MAX_WHERE_NAME 26
Change where_name in act_info.c to
    "      ",
    "missile wielded   ",        <--- add a comma
    "worn on back      ",        <--- add the next 4 lines
    "worn on face      ",
    "worn on ankle     ",
    "worn on ankle     "         <--- no comma here
(NOTE: These places in the code actually have the greaterthan
and lessthan symbols placed around the wear location words..
but my html editor is giving me trouble and won't let me use
the shortcuts for them either.)
From:  me(Zylara)
I changed face to before ankle as every where I found the wear
flags, face always came before ankle. Also I noticed that these
new wear locations are not added into the ibuild (menu) options
nor are they added in to grub.c.... but neither will cause any
problems, just will not be an option available for choosing.

-----------IMMHOST AND PASSWORD PROBLEM
From:         "David Lear"   thelears@erols.com
We resolved the problem.  Seems as though one of the implementors
was trying out immhost.  He had added two sites for his character.
This seemed to cause the problem.  The immortals that were on when
he set his site info were able to continue logging on.  The others
became unable to, they received the "incorrect password"  message
when attempting to log in.  As soon as we removed the immhost data,
everyone was able to log in.      Uri
From:        Nivek---Kevin London
Realms uses immhost.c and it works just fine.  Have you changed
the code at all?  The code I have, says Wrong password, not
incorrect password. I did fix some things in immhost but I can't
remember if I did them before or after the 1.4 release.  Either
way 1.4a should be out soon.
---
From:         Xantha
okie, immhosts are nice, with one small problem.
I set up a host for my imm, Xantha.  typed immhost, and it showed
the host I could use.. That's wel and good, but sometimes I log in
from a different host.  I just wanted to see how it worked.
immhost delete xantha 127* doesn't work to get rid of it.
From:         Kevin London
First you can add multiple hosts for one immortal.
IE immhost add xantha 127*
immhost add xantha 281.21.2.3 
Or whatever.  Then any of those hosts will be allowed.
Also that is a quirk I forgot to fix 
immhost delete xantha 127  should get rid of it
(IE it doesn't strip the *)         Nivek

-----------RACIAL LANGUAGE BUG
I get bug reports of "Invalid racial language: Nanny"  
mostly in character creation. How do I fix it?
From: me(Zylara)
The directions are given as if you have not added any new races
or languages yet. The reason for this is Gnomes does not have a
language setting (set to 0), in the ../dist/races/ dir open up
the gnome race file and set it's language to 1048576. Then go
into act_comm.c, all the way down to the     
bool can_learn_lang      just before
int countlangs           add in gnomes here, like this:
LANG_CLAN, LANG_GITH, LANG_GNOME, LANG_UNKNOWN };
and add it here too, right below the first part:
 "halfling", "clan", "gith", "gnome", "" };
In mud.h where the languages are, right under races, add:
#define LANG_GNOME 	 BV20  /* Gnome Language */
right under the gith one. Then right below that in VALI_
LANGS add:  | LANG_HALFLING | LANG_GITH | LANG_GNOME )
Then make clean and make to put your changes in, log on
to the mud and do the following:
sset create skill gnome
slookup gnome              to find the sn of it
sset 265 type tongue       this was the # on mine
sset 265 guild -1
sset 265 code spell_null
sset save skill table
Then you need to go into all the class files in your
dist/classes dir and give them each the new language,
what level they get it at, and what their adept % is.
Which means adding the line between gith and goblin:
Skill 'gith' 1 99
Skill 'gnome' 1 99
Skill 'goblin' 1 99
If you want you can go into ../dist/system/tongues.dat
and create the different sounds of the language, or it
will just use the default one.

--------------MAX CLASSES and CHOOSING SEX AT CREATION CRASHES
From:         sammael@bigred1.rconnect.com
I have discovered that when new chars enter the game, I seg
fault and drop no core. Following a step by step log dump, I
find that my game seg faults on one of these lines from comm.c:
case m: case M: ch->sex = SEX_MALE; break;
case f: case F: ch->sex = SEX_FEMALE; break;
case n: case N: ch->sex = SEX_NEUTRAL; break;
-
From:         Matthew   mshirey@vetmed.wsu.edu
It appears that you can have MAX_RACE set to a number that is
actually greater than the number of Races that you have but
MAX_CLASS must be set to exactly the number you plan to use.
I get a core dump if MAX_CLASS is not set right.
-
From:  me(Zylara)
Smaug 1.4 crashes when the MAX_CLASSES in mud.h is not properly
set, usually after the 'what's your sex' question in the new
character's creation. The paladin and nephandi classes are not
working so change the MAX_CLASS to 8 if you don't want to use the
paladin class, 9 if you do. Paladin is useable but Nephandi is
unfinished. Make the following changes:
mud.h
#define MAX_REXITS           20
#define MAX_SKILL           400
#define MAX_CLASS             9  <-------- change to 8
#define MAX_NPC_CLASS        26          or leave at 9
#define MAX_RACE             15            and include
#define MAX_NPC_RACE         91               paladins
If using paladin, you may want to add the paladin to places it
has not been added...like act_obj.c for part of the 'object not
useable by' code, and other things like antiwarrior flag. Do a
grep for warrior or cleric to find the places. To clans.c and
also make them a guild, if you are using the guilds.
-
Kevin London wrote:
I am adding it so that won't happen with MAX_CLASS and also so
that you will be able to do everything online.  Should be out
in the next release which should be out -soon-, depending on
how long it takes me to write some of the docs.        Nivek

-----------------PALADINS TAKING DAMAGE IN PRE-AUTH
When a player comes in as a paladin, they start taking damage
right off because of their alignment. Also Paladins have not
been added to the program in the pre-auth area, so they do not
get a weapon when they exam the weapon chest in the tree.
From: me(Zylara)
To stop this you only need to set their alignment up a little,
in comm.c in the case CON_GET_NEW_CLASS section add these two
lines, you can set the # on what ever you want (1000 to 350):
if ( toupper(arg[0]) == toupper(class_table[iClass]->who_name[0])
         &&   !str_prefix( arg, class_table[iClass]->who_name ) )
         {
          ch->class =  iClass;
          if ( ch->class == 8 )    /* add these two lines */
          ch->alignment = +500;    /* to stop paladin damage */
          break;
         }

For the program on object 104 (the weapon chest), just opedit
the chest in room 104 to add a line for the paladin class:
command:  opedit 104 edit 1
17  if class ($n) == Warrior
18  or class ($n) == Ranger
19  or class ($n) == Paladin              <----add this line
20    mpoload 127 1

Other things for paladins...add a program on Mistress Tsythia
for the paladins coming into the game, so hvak1 will get an answer
from hvak2 about who is entering these realms.
You will also need to mpstat Silvina in the newbie academy and
add to the program a section for paladins and build on a hall for
the paladin class. As it is right now the paladins just sit there
because there is no hall for Silvina to portal them to.

-----------------VAMPIRE IN LIMBO.ARE
From: me(Zylara)
On running the startup or smaug:
Sun Sept 19 23:46:58 1998 : Reading in area files...
(help.are)
Exception: STATUS_ACCESS_VIOLATION  (or somthing close to this)
This is caused by mob #80 from limbo.are, to fix it I compared
smaug 1.02a limbo.are with the 1.4...a difference in this line:
1.02a has a line-         67 3 0 0 1769236847 1769236846 0
1.4 has-                  67 3 0 0 0 0 0
In the limbo.are file I just changed 1.4 so it looked like 1.02a
67 3 0 0 0 0 0
to look like this:
67 3 0 0 1769236847 1769236846 0

-----------DEITY ERRORS
From:               Tavolir
Last night when I first ran 1.4 it started core dumping on me. I
looked in the log file and it had stopped just after loading the
deity files. I looked in the code and found the following in db.c:
     log_string( "Loading councils" );
     load_deity( );
     log_string( "Loading deities" );
     load_councils( );
These are around the wrong way so change them to:
     log_string( "Loading councils" );
     load_councils( );
     log_string( "Loading deities" );
     load_deity( );
This is NOT the bug but it does help to keep the logs straight.
The bug lies in the /dist/deity/deity.lst file which reads:
     test.dty
     $
There is some problem with the test.dty file, so remove the
reference to it, so the deity.lst file reads:
     $
And the core dumps should go away.
From: me(Zylara)
This comes up when loading deities:
Wed Jul 29 :: Loading deities...
Wed Jul 29 :: test.dty
Wed Jul 29 :: [*****] FILE: $ LINE: 0
Wed Jul 29 :: [*****] BUG: Fread_deity: no match: Avatar
Wed Jul 29 :: [*****] FILE: $ LINE: 0
Wed Jul 29 :: [*****] BUG: Fread_deity: no match: 0
Wed Jul 29 :: [*****] FILE: $ LINE: 0
Wed Jul 29 :: [*****] BUG: Fread_deity: no match: Deityobj
Wed Jul 29 :: [*****] FILE: $ LINE: 0
Wed Jul 29 :: [*****] BUG: Fread_deity: no match: 0
Wed Jul 29 :: $
Wed Jul 29 ::  Done deities
The correct vnums for the avatar and deity object are:
As defined in mud.h
#define MOB_VNUM_DEITY           17
#define OBJ_VNUM_DEITY		 64
If these two are created in limbo.are you won't get the
FILE: $ LINE: 0  BUG: Fread_deity: no match: Avatar  lines.

---------------MISSING BODY PARTS AND OTHER LIMBO.ARE VNUMS
From: me(Zylara)
If you have players saying that a spell does not work, then
you are probably missing a spell object that is suppose to
be in limbo.are. So along with all the bodyparts from the
email below I have also added the whole list of objects you
need to have created in limbo.are. Right off of olist 1 99.
  From:         Ryan   supfly@oocities.com
I noticed that if you killed certain mobs you would get the
death_cry: invalid vnum bug. So I looked through the code
and figured out that the invalid vnum was for bodyparts that
were not included with limbo.are, but still included in the
part_vnums array. So here it is, if you are missing one of
these object vnums and one of your mobs is set to have that
bodypart, you get the bug when it dies and that bodypart is
called for.
    2) coin gold            (a gold coin)
    3) coins gold           (%d gold coins)
   10) corpse               (the corpse of %s)
   11) corpse               (the corpse of %s)
   12) head                 (the head of %s)
   13) heart                (the heart of %s)
   14) arm                  (the arm of %s)
   15) leg                  (the leg of %s)
   16) guts                 (the spilled guts of %s)
   17) blood                (the spilled blood)
   18) bloodstain           (the bloodstain)
   19) scraps               (the scraps of %s)
   20) mushroom             (a magic mushroom)
   21) ball light           (a bright ball of light)
   22) spring               (a magical spring)
   23) skin                 (a skin of %s)
   24) meat fresh slice     (a slice of raw meat from %s)
   25) shopping bag         (a bag)
   26) bloodlet             (bloodlet)
   30) fire                 (a magical fire)
   31) trap                 (a trap)
   32) portal               (a portal)
   33) black poison powder  (black poisoning powder)
   34) scroll scribing blank (a blank scroll)
   35) flask empty          (an empty flask)
   36) parchment paper note (a note)
   37) quill pen            (a quill)
   43) holy symbol faith    (a symbol of faith)
   44) brains               (the brains of %s)
   45) hands hand           (a hand of %s)
   46) foot feet            (a foot of %s)
   47) fingers              (the fingers of %s)
   48) ear                  (the ear of %s)
   49) eye                  (the eye of %s)
   50) tongue               (the tongue of %s)
   51) eyestalks eyestalk   (an eyestalk of %s)
   52) tentacles tentacle   (a tentacle of %s)
   53) fins fin             (a fin of %s)
   54) wings wing           (a wing of %s)
   55) tail                 (a tail of %s)
   56) scales               (the scales of %s)
   57) tusks                (the tusks of %s)
   58) horns horn           (the horn of %s)
   59) claws                (the claws of %s)
   63) extrademinsional portal (an extrademinsional portal)
   64) sigil deity symbol   (the symbol of %s)
   80) feathers             (the feathers of %s)
   81) forelegs foreleg     (a foreleg of %s)
   82) paws                 (the paws of %s)
   83) hooves               (the hooves of %s)
   84) beak                 (the beak of %s)
   85) sharpscales          (the sharpscales of %s)
   86) haunches haunch      (the haunch of %s)
   87) fangs                (the fangs of %s)
   99) final object         (a newly created final object)
For most of the bodyparts all you have to set on each one is
its short, long, type, weight, level 0, and if you want it to
be set as food you need to add the wear take flag, value0's
setting, and an actiondesc if you want it to have one. Just
oinvoke a heart or guts and ostat them to see their settings.
You also need to create the mob # 17 for the deities avatar,
if you have not made it yet. 

-----------------WATCH
The watch command is inhibited by the fact that the ../watch
directory is not included with the distribution. 
From:          Kevin London
Oops, just make the watch dir and that should work.

--------------PLANES and PLANES.DAT file
From:         Rjael   mud@mini.axcomp.com
Tue Jul 28 19:34:55 1998 :: Reading in plane file...
../system/planes.dat: No such file or directory
Tue Jul 28 19:34:55 1998 :: [*****] BUG: load_planes: can't
  open planes file for read.
From:         Altrag 
Started on it but we got the "no new projects so we can clean
this thing up to release" message before i did much with it,
basically its just a couple pointers and a couple functions.
From:  me(Zylara)
To fix this error just go into ../dist/system/ and create a file
named planes.dat and in it put a:   #END   same as morph.dat file.

-----------------POLYMORPH
From:         Rjael   mud@mini.axcomp.com
While having its own .c file, does not have any but the mpcommands
in commands.dat. There is no revert command in tables.c. This may
not be a bug, but its a feature that everyone wanted to play with.
From:         Kevin London
The new code does not have a revert command anymore it is off of a
timer that you put on the morph. There is an immortal command morph
and unmorph that will work, as well as the spell polymorph that
checks to make sure you can morph into the thing.
From:         Moclamoose@aol.com
Since the commands are already in the code all you have to do,
in this order:
cedit morph create
cedit morphstat create
cedit morphcreate create
cedit morphset create
cedit morphdelete create
cedit save cmdtable
i hope this helps....Morph is pretty cool           Megaboz

------------------CLAN/GUILD VAULTS
From:         Rjael   mud@mini.axcomp.com
Clan vaults not found.
I noticed there isn't a Paladin guild setup for the Paladin class.
Vaults also a fixit feature of 1.02a.
From:   me(Zylara)
To fix the SMAUG clan vault errors seen in the startup log. The
easiest way to fix the 'can not open clan vault' is to GOTO each
of these rooms and drop a ball light or something else simple.
21434    21178    21188    21071    21210    21139    21240
21144 also in this room, the thieves guild storeroom, type:
    redit flags clanstoreroom   then do   foldarea newdark.are
  smaug 1.2a and 1.4 do not have the thieves clanstoreroom set.

---------------SKIN CODE
From:         LrdElder   tdison@swetland.net
I don't know if this is the reason it was not installed already,
but there is a bug in it, where a player can skin corpses as often
as they like. Also you have to setup the actual skin itself. If I
remeber right it should have the object vnum of 23.
cedit skin create do_skin
cedit skin level            <---level you want it to be set as
cedit save cmdtable
From: me  This skill also needs a little more work.

----------SOME BUILDING COMMANDS HAVE CHANGED LEVELS
From:         xantha@mud3.gator.net
If your character logs in and the mud crashes, here's a posible
explanation for it.  At least I know it's what was causing mine.
The new code restricts loadarea and savearea to level 54 (and a
few other things). So, if your player is a creator and at level
53, when they try to log in, the game loads their area. Well,
since they aint the level they should be, the game goes into a
tissy and throws everybody out. Solution: Raise them a level.
Either that or adjust loadarea and savearea. I know since I did
it, mine quit crashing.
From:  me(Zylara)
It is prolly a good idea to check and set ALL your building/Imm
commands and make sure they are set to the level you want them at.
As well as setting each help file to the same level as the command.
Open up commands.dat and help.are...or use cset, cedit, restrict,
and hset commands, while loged onto your mud. Don't forget to use
the file saving commands cset save, cedit save cmdtable, hset save.

--------------MPADVANCE only works if person doing it is level 58/+
From:         Rjael   mud@mini.axcomp.com
mpadvance is now crippled, but sufficiently high mobs can still be
forced to advance/demote at will.
One quick note: I looked back at the command which worked to demote
someone, and here it is...
force puff mpforce rjael advance self 2
A signifigantly high mob can demote or advance a player through
this chain. I imagine that it should work in both directions, with
advancing and demoting at will. I just did this with a 60th level
character to achieve level 65.
force puff mpat dorian mpforce dorian at rjael advance rjael 65
Now granted, the imm has to be on. But if you know what you're doing
you can bump the imp before he realizes anything has happened. Then
you just clean the wizlist and you've taken over a mud.
From:         Kevin London
Yes but immortals less than level 58 can not force a mob to do any mp
commands. In an up and coming release when you switch into a mob you
won't do mpcommands but there are reasons to allow that for now, so
just don't give switch or level 58+ to untrusted imms.    Nivek

-----------PAGER COLOR
From:         Cronel   pejro@sion.com
I found d->pagecolor is never initialized. So until some function
sets it (such as do_who for instance) your d->pagecolor is 0 (black);
this will cause pages 2 and subsequents of everthing you get through
the pager (such as help files) to be invisible. In 1.2, this was
initialy set in the CON_PRESS_ENTER case in nanny.c, so I just fixed
it by calling set_pager_color(white) there.

***********************  IMC STUFF  ***********************
Since I removed IMC from 1.4, I am not sure what the exact fix is
for the IMC lock errors, so I will just include what info I have.
Problem:
gcc -c  -O -g3 -Wall -Wuninitialized   -DREQUESTS -DSMAUG  imc.c
imc.c: In function `lock_prefix':
imc.c:1085: warning: implicit declaration of function `lockf'
imc.c:1085: `F_TLOCK' undeclared (first use this function)
imc.c:1085: (Each undeclared identifier is reported only once
imc.c:1085: for each function it appears in.)
imc.c: In function `unlock_prefix':
imc.c:1102: `F_ULOCK' undeclared (first use this function)
*** Error code 1           Stop.        *** Error code 1
---
From:         Altrag 
try flock
---
From:         Gerry Smith 
On FreeBSD 2.2.6, add an #include for unistd.h     
 in imc.c: replace line 1084
        if (lockf(imc_lock_file, F_TLOCK, 1) <0)
 with
        if (flock(imc_lock_file, LOCK_EX) <0)
 and line 1101
        lockf(imc_lock_file, F_ULOCK, 1);
 with
        flock(imc_lock_file, LOCK_UN);
Morpheus
---
From:         "Charles H. Gucker"   cgucker@toof.net
Might just want to add that to the imc.h file the alias 
 F_TLOCK        LOCK_EX
 F_ULOCK        LOCK_UN
for BSD machines, much like we have for sun.
---
From:         "Charles H. Gucker"   cgucker@toof.net
For anybody who wishes to get imc working, please read the following:
Imc uses one directory
In this directory, you should find the following files:
config
icec
iced
lock
mail-ids
mail-list
mail-queue
rignores
If you are missing any of these files, please make them.
There is one file that needs to be setup for the configuration
of Imc to work, the others are files maintained by Imc itself.
In the Config file, Please cut and past this, as a refference.
# Version       config_file_version
# LocalName     local_imc_name
# LocalPort     local_imc_port
# InfoName      long name of mud
# InfoHost      host and port #
# InfoEmail     admin email contact
# InfoWWW       mud web site
# InfoFlags     imc flags (use hide for building ports to "hide" it)
# Connection Name:Host:Port:ClientPW:ServerPW:RcvStamp:NoForward:Flags

here's a mock config file.
Version 1             --should be set to 1 on all muds
LocalName Storm       --IMC Mud Name (the "short" name Imc uses
                      for you mud, try to keep lessthan 8 chars)
LocalPort 4691        --Imc Port, an "odd" port not used by players
InfoName Storm:&r Call of the Knight&w  --long name of mud can use
                                            &color codes          
InfoHost storm.org port 4000            --host name and port number
InfoEmail wisdom@storm.org              --admin email contact      
InfoWWW www.storm.org                   --web site addy if appl    
Connection hub2:hub2.imc2.org:9010:BjASUAkL:7AhjaYaQ:0:0:reconnect
                      --Connection info setup by Imc, so you don't
                                          need to touch
[FYI, a Real config file won't have the spaces and no --comments]
Now, to get this information (passwords and all), Please send an
email to help@imc2.org with the following information:
Your Muds Name: (long name)
Your Muds Requested Imc Name: (shorter than 8 chars please)
Your Muds Game Port #:        (I.E. 4000 )
Your Muds Imc Port #:         (the "odd" port # (semi random))
And any other specific questions that are not answered in the
help imc   or help ice       files.
Also, if anybody is interested in information on how to run a "hub"
and help offset some of the load on the main hubs, please also 
ask.                  Charlie     Imc Network Admin

****************END OF BUG/FIX LIST




On to the first update to this list



Back to my Homepage


Feel free to email me with any comments, questions, corrections, or additions at...NEW EMAIL