date and time created 89/03/05 19:00:02 by bostic
authorKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Mon, 6 Mar 1989 11:00:02 +0000 (03:00 -0800)
committerKeith Bostic <bostic@ucbvax.Berkeley.EDU>
Mon, 6 Mar 1989 11:00:02 +0000 (03:00 -0800)
SCCS-vsn: games/larn/Fixed.Bugs 5.1

usr/src/games/larn/Fixed.Bugs [new file with mode: 0644]

diff --git a/usr/src/games/larn/Fixed.Bugs b/usr/src/games/larn/Fixed.Bugs
new file mode 100644 (file)
index 0000000..d2acae0
--- /dev/null
@@ -0,0 +1,216 @@
+This is a list of the fixes/enhancements made to larn V11.0 in Version 12.0.
+(Version numbers consist of 2 parts: ver.subver.  When the save file format
+changes, ver must be bumped.  This is why the next release of Larn is 12.0
+and not 11.1. This is used in the savefile routines to check for out-of-date
+save files).  This list was mainly meant to be a record of what changed,
+for my own sanity.  It's included for your benefit (Warning: SPOILER!):
+
+0.  lprintf() in fileio.c (now called io.c) has been changed to use varargs
+       so that its variable number of arguments usage is now portable.  Pyramids
+       primarily had this problem.
+
+1.     Panic handler was added to signal.c.  This routine catches fatal errors
+       like segmentation faults, bus errors, illegal instructions, etc., and
+       trys to performs a savegame() before dumping core.  This helps prevent
+       the loss of a good game due to a game malfunction.  Also, the name of the
+       signal received is printed, instead of just its number.
+
+2.     The version number of the program is now selectable from the Makefile.
+       see the symbols VER and SUBVER.
+
+3.     When at an altar, pray and donate 3000000000 gp. and ye used to receive
+       a whopping amount of gold due to a wraparound problem with the signed 
+       ints.  This has been fixed by using unsigned longs when asking for money
+       amounts.
+
+4.     It was possible that when compiled with work hours checking, checkpointing
+       enabled, and having "play-day-play" in the .larnopts file a segmentation
+       fault would occur at its first attempt to do a checkpoint.  This was due
+       to an improperly declared savefilename array in tok.c.  This has been fixed.
+
+5.     on level H, casting a missile weapon (mle cld ssp bal lit) off the edge of
+       the level would mess up the display, as it didn't know when to stop.  This
+       is needless to say, fixed.  Absolute bounds are now in effect for missile
+       type spells, see godirect() in monster.c.
+
+6.  The create monster routine will now create monsters in random positions
+       around the player.  Before, the 1st one would always be created to the
+       upper left.
+
+7.     If you vpr or lit at a throne, it would summon a gnome king that you
+       would have to deal with.  However, as each throne has only one king with it,
+       successive vpr's should not create more gnome kings.  Presently, successive
+       vpr's will create more kings.  This has been fixed.
+
+8.     The mechanism to manage spheres of annihilation has been reworked to provide
+       a cleaner design and to eliminate some possible problems.
+
+9.     The spell gen (genocide monsters) has been implemented.
+
+10.    When dropping a ring of strength and having been weakened to STR=3 the
+       player might end up with a negative strength.  Strength is now stored
+       in 2 variables, real strength, and strength bonuses.  Only real strength
+       can now be weakened down to a minimum of 3, so unless you have a ring of
+       strength -3 or less, strengths below 3 should not occur.
+
+11. larn -h will now print out a list of all available command line options.
+
+12. larn -o<optsfile> now lets you specify a .larnopts file on the command
+       line.  This was necessary as part of the solution to number 14 below.
+
+13.    The "savefile:" statement has been aded to the .larnopts format to allow
+       specifying the savefilename (full path) for the savegame operation.
+       This too was needed as part of # 14 below.
+
+14. A player id facility has been added to larn.  The complaint was that
+       the game used the userid to order the scoreboard, thus only one scoreboard
+       entry was allowed for each userid.  If the compile time symbol UIDSCORE
+       is defined at compilation time (see Makefile), this will still be true.
+       However, if this define is omitted, the game will create and manage a
+       file called ".playerids" where names are taken from the specified
+       .larnopts file (now a command line option) and assigned a unique playerid.
+       playerid's will now be used to govern scoreboard entry posting.  This
+       feature makes it easy for one person to have many characters, each
+       appearing on the scoreboard.  Be kind to your fellow players!
+       The philosophy of one score per player gives more players the opportunity
+       to bask in glory for all to see!
+
+15. It is no longer required that the player be WIZID to create the scoreboard
+       or to examine the logfile.  Anyone with the correct wizard's password can
+       now use these command line options (password is only needed to create/clear
+       the scoreboard).  If you want to prevent players from zeroing the 
+       scoreboard, change the wizard's password. (in config.c) By the way, wizards
+       may be alot of fun, but they are prevented from being placed on any
+       scoreboard. (for clarification)
+
+16. Monsters now have intelligence, that is some of them.  This determines if
+       the monster moves using the previously stupid movement method, or by using
+       the new IMM (intelligent monster movement) algorithm.  With IMM, monsters
+       will move around corners, avoid pits, traps, etc.  With increasing levels
+       of difficulty, more monsters will be using IMM.  Beware of IMM when 
+       aggravated!  Those little beasties can really find you!
+
+17. Added the scroll of life protection.
+
+18. Larn now consults the file ".holiday" to check for holidays if the TIMECHECK
+       option (no playing during working hours) is enabled.  Before, larn knew
+       nothing about holidays.  It should now let people play if it is a holiday.
+       The format for a .holiday entry is: "mmm dd yyyy comments . . .".
+
+19. In nap() and napms() it is possible that with nap(0) or napms(0) there
+       would be an infinite loop and the game would hang.  The case of nap(0)
+       is now looked for.
+
+20. The granularity of gold piles has been increased.  iarg[] has been changed
+       from char's to short's, so instead of 255 x 10^n granularity we now have
+       32767 x 10^n granularity.  This also means more than 255000 gp can be
+       dropped in one place.  Not realistic, but it prevents a worthless
+       annoyance.  Who said games were supposed to be realistic?
+
+21. Termcap capability has been added to larn.  If the symbol VT100 is defined
+       in the makefile, the game will be compiled to use only VT100 compatible
+       terminals (Much more efficient).  If the symbol VT100 is omitted, the game
+       will be compiled to use the termcap entry for whatever terminal you are
+       using.  This involves an extra layer of output interpretation, as every
+       byte sent to the terminal must be inspected for control tokens.
+       Only 3 termcap entries need be found for the game to be functional:
+       CM (cursor movement), CE (clear to end of line), and CL (clear screen).
+       For a better display, the following are optional: AL (insert line), DL
+       (delete line), SO (Standout begin), SE (Standout end), and CD (clear to end
+       of screen).  The .larn.help file was left as is, with VT100 escape
+       sequences in it.  If the termcap version of larn reads it, it is translated
+       for the desired terminal type.  The .mail60* files have been removed, and
+       their text is now included in bill.c so it can be used with any terminal.
+       Note:  If compiled for termcap, and using a VT100, the display will act
+       a little different.  This is because the VT100 does not have insert line/
+       delete line codes, and the scrolling region must be simulated with vertical
+       wraparound instead of scrolling.  Thanks goes to Michiel Huisjes for the
+       original termcap patch.
+
+22. When playing as wizard, if you go down stairs on 10 or V3, or up stairs
+       on H, 1, or V1, etc. you would be placed in a phantom zone where the display
+       was really weird ([-1] subscripting), and would eventually lead to a
+       segmentation fault.  Stairs and volcano shafts now check for the level
+       they are being used on.
+
+23. In response to some sites having only unsigned chars (flame the
+       manufacturer), the chars that were used to store positive and negative
+       numbers have been changed to shorts.  This includes diroffx[], diroffy[],
+       iarg[][][], ivenarg[], and some others.  I believe the changes are correct,
+       but I have none of these machines to try it out on. (Volunteers?)
+
+24. The function fullhit(n) in monster.c was supposed to return the damage
+       done by n full hits on a monster.  It only returned the damage for ONE hit,
+       thus severely limiting the usefulness of the web and sle spells.
+
+25. Someone said that they were getting segmentation faults when they were
+       reading scrolls as the wizard.  I couldn't find the problem, which may
+       have had something to do with the signed char problem mentioned above.
+       However, I've added a check in read_scroll() and quaff_potion() to trap
+       any scroll or potion types that are not in the game.
+
+26. "vt125" has been added to the acceptable terminal list
+       (checked only if compiled with -DVT100).
+
+27. In savegame() and restoregame(), there was a 6 hardwired into the i/o
+       statements which assumed the size of struct cel was 6.  On some machines
+       this caused the rightmost part of each level to not be saved in a savefile.
+       These 6's have been replaced with sizeof(struct cel), and should now be
+       portable.
+
+28. The option "no-beep" has been added to the .larnopts file.  When specified,
+       beeping is inhibited at the terminal.
+
+29. When becoming wizard, no longer to you wear the ring of protection, and
+       null scrolls and potions are no longer created.
+
+30. Many spelling errors have been fixed, both in player messages, and in the
+       code itself.  A thanks goes to Mars Gralia who sent me a detailed list of
+       the mistakes.
+
+31. When a player wins a game, if getlogin() fails, a segmentation fault will
+       result, because the NULL returned from getlogin() is used as a pointer.
+       This call has been replaced (now using loginname already determined).
+       Also, the mail creation upon winning has been rewritten, mainly to allow
+       termcapping of the text.
+
+32. The Larn Revenue Service will now always appear on level H.  Before, it
+       was only created if the player had outstanding taxes.  In that multiple
+       save files per player are now more possible, this was seen as incorrect.
+
+33. Input buffer flushing is now in effect.  If the input char queue exceeds
+       5 bytes, the excess is discarded.  Also, if the player hits or gets hit
+       all input bytes are flushed (within 1).  This relieves the situation
+       where many moves have been typed ahead of the display and the player keeps
+       getting hit while the queue of moves is processed.
+
+34. When a savefile has been altered, a warning message is displayed to the
+       effect that you've cheated, and you will not be placed on the normal
+       scoreboard.  If you then save the game, and start 'er up again, memory 
+       of the cheating was lost.  This has been fixed, by letting the scoreboard
+       routines consult the cheating flag.  Also, the I node number of the
+       savefile is written into the savefile, so cp'ing, etc., will avail the
+       cheater not.  If high security is needed, the game should be run suid.
+       This suid mode has not been made the default because most installations
+       do not want to install it that way.
+
+35. The sources have been run through lint, and most of lint's complaints have
+       been taken care of.  An attempt was made to adjust the code for 16 bit int
+       machines.  Many casts to long have been put in.  I don't know if it will
+       run on a 16 bitter, but it should be closer to that end.
+
+36. When larn starts up, if it can't find the scoreboard, it will now make a
+       blank one instead of complaining that there is no scoreboard.  It is not
+       necessary to do "larn -c" to initially create the scoreboard.
+
+37. When listing out the logfile (larn -l), the error message "error reading
+       from input file" has been fixed.  Also, the date & time of a player's
+       demise is now included in the logfile.
+
+38. When casting web or sle into a mirror, the game will no longer bash the
+       player.  Instead, the player will either fall asleep or get stuck in his
+       web.
+
+39. Items like cookies, books, chests, swords of slashing, and Bessmann's
+       flailing hammer can now be sold at the trading post.
+