-- Bug-fixes -- birthmagic.diff fixes a bug where mp_ptr was sometimes not set. As it's only ever set to &magic_info, it does it by defining mp_ptr in variables.c. Pre-requisites: diff0811.zip/birth.diff birthquick2.diff fixes a bug which sometimes caused the game to restart unnecessarily when an option menu is used. Pre-requisites: diff0811.zip/birth.diff diff1701.zip/birthday.diff diff1701.zip/xpf.diff diff1701.zip/initgold.diff diff1701.zip/social.diff diff1701.zip/cleanup.diff diff0903.zip/birthsave.diff diff0903.zip/birthskill.diff diff0903.zip/birthrand.diff diff0903.zip/amax.diff diff2105.zip/birthclean.diff diff2105.zip/birthextra.diff diff2105.zip/birthname.diff diff2105.zip/birthquick.diff diff2105.zip/birthhelp.diff diff2105.zip/birthsave2.diff changelevel2.diff fixes a bug whereby a safeguard apparently intended for negative level numbers was being triggered. Pre-requisites: diff0811.zip/birth.diff diff0412/curse.diff diff1212.zip/bypass.diff diff1212/curse.diff diff1212.zip/mainchoice.diff diff1212/saves.diff diff1512.zip/recall.diff diff1512.zip/trapdoor.diff diff1701.zip/cleanup.diff diff0903.zip/trapdoordam.diff diff2105.zip/curse2.diff diff2105.zip/getitem.diff diff2105.zip/quietsave.diff diff2105.zip/quietsave2.diff diff2105.zip/levelport.diff diff2105.zip/placemon.diff diff2105.zip/powers.diff diff2105.zip/changelevel.diff pseudoid4.diff replaces the n% off label in shops which I hadn't realised was still gone. It's now a separate inscription type. It also replaces shops' method of removing unnecessary "uncursed" inscriptions with one which uses a flag that indicates when an item is in a shop. Pre-requisites: diff0811.zip/objknow.diff diff0811.zip/worthless.diff diff0412.zip/curse.diff diff1212.zip/bypass.diff diff1212.zip/curse.diff, stormy.zip/stormy.diff, diff1212.zip/autohaggle.diff diff1212.zip/saves.diff diff1512.zip/pseudoid.diff diff1512.zip/allart.diff diff1701/artpower.diff, diff1701.zip/spoiler.diff, diff1701.zip/pseudoid2.diff diff1701.zip/spoilvalue.diff diff0903/randpower.diff diff0903/fullident.diff diff0903.zip/spoilmod.diff diff2105.zip/curse2.diff diff2105.zip/pseudoid3.diff diff2105.zip/spoilmod2.diff diff2105.zip/notecurse.diff spiritnum2.diff fixes the action of bypass.diff. As it's easier to find out which spirit something is from its order in the list than where it comes in the list from its number, I changed get_spirit to use the spirits' actual numbers. Unfortunately, I forgot to check for other places where spirits were specified, which meant that bypass.diff always chose the first life spirit. Pre-requisites: diff1212.zip/bypass.diff diff1701.zip/bypass2.diff diff2105.zip/spiritnum.diff spoilstat3.diff corrects a bug which prevented the routine for correctly calculating the number of blows the player has and prevents information from being given about items the player is not aware of. Pre-requisites: diff0811.zip/objknow.diff diff0811.zip/worthless.diff stormy.zip/stormy.diff, diff0412.zip/curse.diff diff1212.zip/bypass.diff diff1212.zip/curse.diff diff1212.zip/autohaggle.diff diff1212.zip/saves.diff diff1512.zip/pseudoid.diff diff1512.zip/allart.diff diff1701/artpower.diff, diff1701.zip/spoiler.diff, diff0903/randpower.diff diff0903/fullident.diff diff0903.zip/spoilstat.diff diff2105.zip/curse2.diff diff2105.zip/spoilstat2.diff -- Code "improvements" -- birthsave3.diff removes an unnecessary call to display_player_birth_details() from display_player_birth(). Pre-requisites: 0811/birth.diff 1701/birthday.diff 1701/xpf.diff 1701/initgold.diff 1701/social.diff 1701/cleanup.diff diff0903.zip/birthsave.diff diff0903.zip/birthskill.diff diff0903.zip/birthrand.diff diff0903.zip/amax.diff diff2105.zip/birthclean.diff diff2105.zip/birthextra.diff diff2105.zip/birthname.diff diff2105.zip/birthquick.diff diff2105.zip/birthhelp.diff diff2105.zip/birthsave2.diff identify.diff rearranges identify_fully_aux() so that it gives full information about an item if called appropriately. Pre-requisites: diff0811.zip/worthless.diff diff0412.zip/curse.diff diff1212.zip/curse.diff diff1212.zip/autohaggle.diff diff1212.zip/saves.diff diff1512.zip/pseudoid.diff diff1701.zip/autohaggle2.diff diff1701.zip/quicksplit.diff diff0903.zip/autohaggle3.diff diff0903.zip/servicehelp.diff diff2105.zip/curse2.diff -- Interface changes -- birthextra2.diff adds an extra 4 statistics to the alternative miscellaneous abilities display, makes the game use the second display otherwise (required by missiledam2.diff) and changed the short bow used for statistical purposes into a long bow. Pre-requisites: diff0811.zip/birth.diff diff1701.zip/birthday.diff diff1701.zip/xpf.diff diff1701.zip/initgold.diff diff1701.zip/social.diff diff1701.zip/cleanup.diff diff0903.zip/birthsave.diff diff0903.zip/birthskill.diff diff0903.zip/birthrand.diff diff0903.zip/amax.diff diff2105.zip/birthclean.diff diff2105.zip/birthextra.diff confirmwear.diff gives a prompt when the player attempts to wear something which isn't known to be uncursed (by identification or a previous attempt to wear it). Pre-requisites: diff0412.zip/curse.diff diff1212.zip/curse.diff diff1212.zip/saves.diff diff0811.zip/worthless.diff diff1212.zip/autohaggle.diff diff1512.zip/pseudoid.diff diff2105.zip/curse2.diff diff2105.zip/pseudoid3.diff daybreak.diff creates an option to allow disturbance at sunrise and sunset on the surface. As I don't like wandering the countryside during the night, being able to wait until the sun rises can be useful. Pre-requisites: None missiledam2.diff calculates the average damage for missile weapons. By default, it assumes (+0,+0) ammunition of the appropriate type with a sval of 1 (normal iron shots, arrows and bolts), but uses appropriate ammunition inscribed with @ff if available. It doesn't attempt to reflect the damage from martial arts in any way, so the figures for that are still nonsense. Pre-requisites: diff0811.zip/weapon.diff diff0903.zip/tempfx.diff diff2105.zip/missiledam.diff mondepth.diff causes the game to describe the real depth of unique quest monsters, rather than the base depth. Pre-requisites: diff1512.zip/moncol.diff namelen.diff replaces the length of the output strings for object_desc() and monster_desc() with #defines and increases the maximum length of o_name to 120 (all you need is an Executioner's Sword (Defender) (4d5) (+2 to stealth) {FreeAct, uncursed, 25% off, 18550} and you've lost information with a mere 80 characters). Failures from applying this patch are not, in general, dangerous. On the other hand, leaving a declaration of "char o_name[80];" in the source could be, so you should grep the source for "char o_name[80];" before compiling, replacing it with "char o_name[MAX_ONAME];". The same could be true with m_name[] and killer[], but I haven't changed their maxima. Pre-requisites: diff0412.zip/curse.diff diff1212.zip/curse.diff diff1212.zip/saves.diff diff0811.zip/worthless.diff diff1212.zip/autohaggle.diff diff1512.zip/pseudoid.diff diff1701.zip/pseudoid2.diff diff2105.zip/curse2.diff spoildam.diff calculates the mean damage done by a weapon against various methods, giving figures with and without slays and brands. It doesn't, however, include other effects such as vorpal and earthquake damage as these have a far higher variance than normal damage, and it felt like too much trouble. Pre-requisites: diff0811.zip/objknow.diff diff0811.zip/weapon.diff diff0811.zip/worthless.diff diff0412.zip/curse.diff stormy.zip/stormy.diff diff1212.zip/bypass.diff diff1212.zip/curse.diff diff1212.zip/autohaggle.diff diff1212.zip/saves.diff diff1512.zip/pseudoid.diff diff1512.zip/allart.diff diff1701/artpower.diff, diff1701.zip/spoiler.diff, diff0903/randpower.diff diff0903/fullident.diff diff0903.zip/spoilstat.diff diff0903.zip/tempfx.diff diff2105.zip/curse2.diff diff2105.zip/spoilstat2.diff diff2105.zip/missiledam.diff diff0106.zip/missiledam2.diff -- Other things -- 0106.diff contains all of the above in a single file. --------------- The pre-requisites list those patches which are required to use the patch in question in the form archive/filename. All archives are available from http://www.dimetrodon.demon.co.uk/roguelike.html If any failures occur in externs.h or variable.c, the changes should be applied manually. If a line is added, it can be added at any point in these files. If failures occur elsewhere as a result of applying a pre-requisite, this should not affect the patch included in this archive. If they occur as a result of applying a patch in this archive, or if the files which result from applying the listed patches to Cthangband 4.1.0b do not compile, and this is not anticipated above, please check that the patches you are using are the same as are available from the site above. If they are, please contact me so that I can make any necessary changes. In many cases, it is possible to get the desired effect without applying the given patches (for instance, patches which build upon diff0903.zip/spoiler.diff require none of the functionality of autohaggle.diff or pseudoid.diff), but the exact details of the necessary workarounds are not given here. Any comments should be sent to Kieron Dunbar at kieron@dimetrodon.demon.co.uk.