Bugfixes birthsave4.diff fixes a potentially fatal bug which can occur as more entries are added. Pre-requisites: 0811/birth.diff 1701/birthday.diff 1701/xpf.diff 1701/initgold.diff 1701/social.diff 1701/cleanup.diff 0903/birthsave.diff 0903/birthskill.diff 0903/birthrand.diff 0903/amax.diff 2105/birthclean.diff 2105/birthextra.diff 2105/birthname.diff 2105/birthquick.diff 2105/birthhelp.diff 2105/birthsave2.diff 0106/birthsave3.diff missiledam3.diff makes the game consider your equipped bow before a basic version when calculating the damage caused by a missile (only visible with spoildam.diff applied, but determined in a routine created by this patch), fixes a bug whereby the player was subjected to the effects of a weapon unnecessarily because of a missing call to calc_bonuses() and changes the calculation for ammunition type from being something hard-coded in calc_bonuses() to being something looked up in a table. Pre-requisites: 0811/weapon.diff 0903/tempfx.diff 2105/missiledam.diff 0106/missiledam2.diff moncol4.diff fixes a mistake where I had attempted to run a function which need not exist without checking this first. Pre-requisites: stormy/stormy.diff 1212/dropspecial.diff 1512/moncol.diff 0903/phial.diff 0903/deathevent.diff 0903/features.diff 2105/moncol2.diff 2105/idcol.diff 0606/randpower-x.diff 1807/charisma.diff 0606/unident.diff -0606/randpower-x.diff* 1807/moncol3.diff optdesc.diff changes the description of dungeon_small to remove the bogus claim that the game always generated small dungeons with it set. Pre-requisites: none panel.diff causes the game to always assume that the panel has changed if centre_view is set to remove the situations where the player can only look in some directions. Pre-requisites: none randpower4.diff fixes a bug where I'd given ego items with EGO_XTRA_POWER the RAND_POWER flag rather than the RAND_RESIST flag (as object_flags() only returns the flags? fields rather than a whole object_type, I'd have to work out if the player is assumed to know the xtra1 field before I could access it directly). Pre-requisites: 0811/objknow.diff 0811/worthless.diff stormy/stormy.diff 0412/curse.diff 1212/curse.diff 1212/autohaggle.diff 1212/saves.diff 1512/pseudoid.diff 1512/allart.diff 1701/artpower.diff 1701/spoiler.diff 0903/randpower.diff 0903/fullident.diff 2105/curse2.diff 2105/randpower2.diff 1807/randpower3.diff scimitar.diff removes a typo in xtra2.c which caused a warning at compile-time. Pre-requisites: none showpath3.diff fixes a silly bug in showpath.diff. I'd somehow managed to place some variable definitions outside the scope they should have. As one of these definitions gave a significant initial value, this caused the look command to behave incorrectly. Pre-requisites: 2105/violet.diff, 2811/showpath.diff 2811/showpath2.diff spirit2.diff causes the list of spirits to be redrawn if an experience drain renders a given spirit inaccessible. Pre-requisites: none spoilstat5.diff restricts the calls this makes to update_stuff() to the things that this function wishes to display instead of whatever happened to be in p_ptr->update at the time. This fixes a bug which caused a message not to appear when this was called from an unusual window (see 1807/objident.diff). Pre-requisites: 0811/objknow.diff 0811/worthless.diff 0412/curse.diff stormy/stormy.diff 1212/bypass.diff 1212/curse.diff 1212/autohaggle.diff 1212/saves.diff 1212/weapskill.diff 1512/pseudoid.diff 1512/allart.diff 1701/artpower.diff 1701/spoiler.diff 0903/randpower.diff 0903/fullident.diff 0903/spoilstat.diff 2105/curse2.diff 2105/spoilstat2.diff 0106/spoilstat3.diff 2811/spoilstat4.diff -- Changes to the small-scale map mapborder.diff causes the border around the small scale map of the level to be only slightly larger than the level, rather than always being slightly larger than the largest level the game can generate. Pre-requisites: None mapsize.diff makes the map the largest which will fit on the current screen. Pre-requisites: mapborder.diff mapextra.diff displays a copy of the world map to the right of the level map in the "overhead" term window if on the surface, and designates 1x1 maps as boring. Pre-requisites: mapborder.diff, mapsize.diff, r-init.diff, r-saves.diff r-windowpri.diff -- Changes to the GUI showtrap.diff causes squares which have been checked for traps but are otherwise unknown to be identified by an umber dot. It expands one of the fields in cave_type to save this information, so it changes the save file format to do so. Pre-requisites*: 0412/curse.diff 1212/curse.diff 1212/saves.diff 2105/curse2.diff * - contains extra hunks so that it will work with these patches and with a fuller set. Rejected hunks in src/defines.h or lib/edit/* will probably be harmless. skill2.diff changes the colour of skills which have been drained but can be increased to orange rather than grey. Pre-requisites: 2510/skill.diff -- Changes to preferences interface. optforce.diff causes options which have no effect on the game because of other option settings to be described as "N/A" and to be incapable of being selected. Pre-requisites: 0412/option.diff, optforce-c.diff* *Should be applied afterwards, and see below. optforce-c.diff removes two entries from force[] which are not present in 4.1.0. These are defined in 0106/confirmwear.diff and 2105/stacknotes.diff, but are not necessary for the purposes of this patch. Pre-requisites: 0412/option.diff, optforce.diff visualno.diff allows visual the numbers in visual prefs to be selected by number rather than having to scroll through the numbers manually. The patch has more pre-requisites than it needs to because it changes the parameters of the subsidiary functions to "uint"s. Pre-requisites: stormy/stormy.diff 1212/dropspecial.diff 1512/moncol.diff 0903/phial.diff 0903/deathevent.diff 0903/features.diff 2105/moncol2.diff 2105/idcol.diff 0606/randpower-x.diff 1807/charisma.diff 0606/unident.diff -0606/randpower-x.diff* 1807/moncol3.diff -- Extra window changes. windowpri3.diff changes the algorithm for choosing a display. Now, it takes one of the numbers from the preferences (the first if the display has just changed, the second otherwise), which helps to determine what to show next. If the display gives a list, but this list is currently empty, or if it has nothing useful to show for other reasons, the game will avoid showing it unless it can only show such displays. Next, it prefers displays with a high number (as stated above) for this display. If this does not create a single best display, it prefers windows which are changing now to those which are not changing. And, if it is one of the best displays, it will continue to show the current display. If the number above is blank for a given display and window, it is treated in a special way. If the first number is blank, it will never be shown. If the second is blank, it will only be shown briefly immediately after it changes. It also sets the "character_icky" flag as extra windows are being updated as the game checks this flag more often than it checks that an appropriate terminal is being used. Pre-requisites*: 0412/curse.diff 1212/curse.diff 1212/saves.diff 2105/curse2.diff 2105/violet.diff 1807/hack414.diff 1807/windowpri.diff 2811/windowpri2.diff * monlist.diff, skillwin.diff and objident.diff are required to create defines.h correctly, but I think the changes required are fairly obvious. monlist2.diff causes the monster list to be updated when the player starts/stops hallucinating. Pre-requisites: 0412/curse.diff 1212/curse.diff 1212/saves.diff 0903/plurals.diff 2105/curse2.diff 2105/dundepths.diff 1807/hack414.diff 1807/windowpri.diff 1807/monlist.diff objident2.diff causes the game to display an object when the player is asked to pick it up, and to give the character used in the prompt. Pre-requisites: (unchecked) shopwin.diff creates a window display which gives a list of the stores in the current town, including the type, owner, price limit and relative price. It doesn't allow you to discriminate between the two temples in Celephais, but it allows you to pick a store at a glance otherwise. It also makes the relative price clearer by excluding the effects of the character's charisma on prices. Pre-requisites*: 0412/curse.diff stormy/stormy.diff 1212/curse.diff 1212/saves.diff 1512/moncol.diff 0903/features.diff 2105/moncol2.diff 2105/curse2.diff 2105/stormy2.diff 2105/shopvalue.diff 2105/violet.diff 1807/hack414.diff 1807/windowpri.diff 2811/windowpri2.diff windowpri3.diff * similar to windowpri3.diff -- shopping changes afford.diff causes items which the player cannot afford the initial asking price of to have grey price tags rather than white ones. Pre-requisites: none storeid.diff fixes a bug whereby the alchemist only checked the player's inventory to determine what needs identification. Pre-requisites: 0412/curse.diff 0811/worthless.diff 1212/curse.diff 1212/autohaggle.diff 1212/saves.diff 1512/pseudoid.diff 1701/autohaggle2.diff 1701/quicksplit.diff 0903/autohaggle3.diff 0903/pseudoid3.diff 0903/servicehelp.diff 2105/curse2.diff storename.diff causes the game to print the stock list out more often when the player is manipulating the stores. This fixes a bug in idcol.diff, and means that modifications can be made without having to predict what needs to be redrawn. Pre-requisites: 2105/idcol.diff storepay.diff causes the enchantment services to only be charged for if an enchantment is actually attempted, doing nothing if the player aborts when asked to choose an item. Pre-requisites: none storestack.diff prevents the game from destroying items as you sell them to a store, restricting the number the player can sell if necessary. To prevent shops from becoming full of the most common items, all but the first 99 of an item are removed automatically during maintenance. Pre-requisites: 1701/sellquant.diff -- Miscellaneous changes pseudoid5.diff creates an IDENT_SENSE_POWER flag for items which are known to have abilities which are not implied by the base object (e.g. by modifying a stat, providing light or being unable to be lifted by a monster). If this ability is tied to the object's pval, the value attached to this effect is given as (+n?), the question mark being used primarily to make it clear that shopkeepers do not consider such numbers when buying from you. Pre-requisites: (unchecked) rconf.diff gives confusion resistance to artefacts which grant chaos resistance. Pre-requisites: None saves3.diff changes the format of the version designation to a set of flags which represent the features compiled into the game which are included in the save file. It uses compile-time options to control this so that it can contain all of the changes to the save file format that I have created without requiring some of the variables, etc., that these might need. Pre-requisites: (unchecked) spoilmod3.diff creates a spoil_flag option to select whether the effects of flags should be to replace the hard-coded value I'd forgotten to remove beforehand. Pre-requisites: 0811/objknow.diff 0811/worthless.diff stormy/stormy.diff 0412/curse.diff 1212/bypass.diff 1212/curse.diff 1212/autohaggle.diff 1212/saves.diff 1512/pseudoid.diff 1512/allart.diff 1701/artpower.diff 1701/spoiler.diff0903/randpower.diff 0903/fullident.diff 0903/spoilmod.diff 2105/curse2.diff 2105/spoilmod2.diff spoilvalue3.diff causes the game to display the value an object would have if it was uncursed if this is not 0 (it's value when cursed). It assumes in this that the player knows (e.g.) that a broken amulet of charisma is worthless, but not that a bad ego item is also worthless (you do, of course, know it to be worthless if you uncurse it). Pre-requisites: 0811/objknow.diff 0811/worthless.diff stormy/stormy.diff 0412/curse.diff 1212/bypass.diff 1212/curse.diff 1212/autohaggle.diff 1212/saves.diff 1512/pseudoid.diff 1512/allart.diff 1701/artpower.diff 1701/spoiler.diff 1701/pseudoid2.diff 1701/spoilvalue.diff 0903/spoilvalue2.diff 0903/randpower.diff 0903/fullident.diff 0903/spoilmod.diff 2105/curse2.diff 2105/pseudoid3.diff 2105/spoilmod2.diff 2105/notecurse.diff 0106/pseudoid4.diff all.diff contains all of the above. diffs beginning with r-* contain the same functionality as diffs elsewhere, but often combine several diffs, and are designed to avoid requiring many other unconnected diffs to be applied beforehand. They are: r-init.diff allows Cthangband to compile on my computer, and enables the number of windows and the size of each to be chosen at run-time. Pre-requisites: none r-saves.diff: As above. Pre-requisites: none r-windowpri.diff: As above. Pre-requisites: r-init.diff r-saves.diff r-monlist.diff adds a window display for the monsters visible to the player. Pre-requisites: r-init.diff r-saves.diff r-windowpri.diff r-objident.diff adds a window listing the information gained about an object by pressing 'I'. Pre-requisites: r-init.diff r-saves.diff r-windowpri.diff r-skillwin.diff adds a window listing the player's current percentage in each skill, as seen by typing "Chh". Pre-requisites: r-init.diff r-saves.diff r-windowpri.diff r-stormy.diff causes Stormbringer to be created from a template in a_info rather than as a randart. Pre-requisites: none r-curse.diff created an "AUTO_CURSE" flag which causes the item to become cursed on wielding, and after a few turns if the player reads a scroll of remove curse or equivalent. Pre-requisites: r-stormy.diff r-saves.diff r-quicksave.diff creates an autosave_q option to prevent the game from giving a message when autosave is triggered, and moves the is_autosave variable within the invocation of do_cmd_save_game(). Pre-requisites: r-saves.diff r-questsee.diff prevents the number of monsters the game says you still need to kill in a quest from being decreased if you kill a monster you cannot see. The effect disappears when you kill the last quest monster, however. Pre-requisites: r-saves.diff r-showtrap.diff: see above. Pre-requisites: r-saves.diff r-deathevent.diff moves the things that happen when a monster dies to r_info.txt, and creates a string in the monster memory if the player has observed this. See http://www.dimetrodon.demon.co.uk/diff0903.zip for details. Pre-requisites: r-saves.diff -- These should be fully functional, but they come without any guarantee about the behaviour of anything which incorporates them. I make no restriction on their use. Any comments, suggestions or but reports should be e-mailed to kieron@dimetrodon.demon.co.uk.