⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fixed.bugs

📁 早期freebsd实现
💻 BUGS
字号:
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 formatchanges, ver must be bumped.  This is why the next release of Larn is 12.0and not 11.1. This is used in the savefile routines to check for out-of-datesave 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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -