Annotation of 43BSDReno/games/larn/Fixed.Bugs, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.