In February, David Thornley released an alpha version of Cthangband 4.1.1. Unfortunately, it didn't compile because of a few simple mistakes it had. I've written a patch to make it so that it does compile, and a few to apply some of the features of it to my copy. 411-compile.diff is a diff which, if applied to the 4.1.1 alpha, produces something which compiles under Linux and possibly elsewhere, and mentions the RUN_AWAY flag in monster recall. 411-chifail.diff reduces the amount of chi wasted when mindcraft fails and the player is unlucky. 411-monster.diff changes golems to A, ghouls to G, icky things to people of Ib and quiver slots to archer mushrooms. 411-precog.diff causes precognition to detect doors and stairs at 30%, and invisible monsters only at 40%. 411-runaway.diff causes small children to vanish after using their "worship" attack. -- I've also made some changes not connected with that. They are: badhat.diff adds lines to identify_fully_aux() to indicate helmets which may/do inhibit mindcrafting and gloves which may/do inhibit spellcasting. daminfo.diff gives numbers for many of the spell attacks in monster recall. chardump.diff adds home info, detailed object descriptions and information about quests finished to the character dump. It gives a list of every item in each of the player's homes, dumpfix.diff causes screen dumps to be saved and loaded correctly whatever characters are used for objects. It still produces a dump in the original style, but it also produces a second dump which encodes everything as a representation which uses only characters in the range 32-95. It only loads the latter. feelings2.diff removes an unsafe quark_str() call that I hadn't noticed before. invstack.diff allows partial stacks to be rearranged so that the first stack of a type always contains 99 objects if the player has more than 98 of them in a similar way to storestack.diff. This change only affects store_carry() and combine_pack() because this avoids issues such as what to do if only part of a stack can be combined with other things. knowcol.diff replaces show_file() with the ToME version and uses this to make the knowledge displays more colourful (primarily through including the symbol used for each thing). This does contain the bug whereby it is impossible to have a non-white ]. I'm waiting for someone who understands the function better to fix it. knowledge.diff removes the incorrect reference to prayers potions of self knowledge can give. missiledam4.diff fixes an overflow error which could result in bogus negative damage claims, and creates a copy of p2_body so that pretending to wield a weapon doesn't have any permanent effects. It also now considers the vorpal flag in its calculations, although it doesn't consider criticals, underestimates the damage from weapons with negative modifiers and underestimates the damage from martial arts. moninfo.diff adds references to race, etc., in the monster recall and adds a precise figure for the monster's movement and attack speeds rather than a vague one to the former. monlist3.diff adds the monster symbol to each entry on the visible monster list. This does not track monsters which change colour or symbol. objinfo.diff rearrranges identify_fully_aux() so that pval-based flags, sustains, resistances and ability to be harmed by elements are displayed in a more compressed fashion (e.g. "It sustains your strength, dexterity and constitution."). It also separates identify_fully_aux() into a section which acquires the flags and one which displays it. pickgood2.diff causes 'x' to pick the cheapest object. pickupq.diff allows a 'q' response to a carry_query_flag prompt to abort the action altogether. placemon2.diff restricts the first (random selection) failure message to cheat_hear, as it is something that will happen during a normal game. prefreset.diff causes "X:---reset---" on a line in the preference to reset the type of attr/char mapping X points to, as in reset_visuals. This is automatically used as the first line in each section if mappings are saved in the visual preference menu, so that only those which differ from the default need to be listed. pseudoid6.diff makes the function to determine an item's known properties relatively complete and replaces the call to object_flags_known() in identify_fully_aux() to account for this change. pseudoid7.diff fixes a bug where worn objects were no longer known to be cursed/uncursed after amnesia. pseudoid8.diff causes objects to be flagged as uncursed/cursed if they are affected by holy orb, malediction or hellfire. rotatepile.diff causes ^W (not a particularly obvious key for a command, but I can't think of a good one) to cause the top object on the player's square to be moved to the bottom of the pile of objects. This takes no energy as it performs no in-game action. This makes identifying a huge pile of items looking for good stuff more convenient. shopspace.diff limits the list of objects to buy to those the shop has room for if it is full. shopvalue2.diff causes the relative greed of a shopkeeper to be independent of the player's charisma (and so just a function of his race, the shopkeepers race and the shopkeeper's internal greed setting). I thought I'd done this in shopwin.diff, but the stat I'd modified wasn't the one which was checked. shopwin2.diff adds an option on the "knowledge" menu which can display the shops in any town, so that you don't need extra windows to see a shop summary, and don't need to keep notes to know where the 30k weapon shop is. showtrap2.diff fixes a bug whereby squares which had been checked for traps were very likely to be shown on the small scale map. skill3.diff fixes a bug in which 100% skills could still be shown in yellow. spellenergy.diff prints the energy a given spell, favour or mindcraft power (but not cantrip) takes on the list display. This isn't definitive, but could easily be made so. spoilrp.diff causes the "this item has random stuff" flags to ignored by object_info_known() if the object is *identified*, as the random stuff is known. spoilstat6.diff fixes a bug whereby update_stuff() changed the player and hid some messages unnecessarily if a worn item's stat effects were tested. spoilstat7.diff allows items of unknown type which have been tried to have the effect of obvious stat effects revealed for them. storename2.diff fixes a bug in which the last message was cleared before the player could see it when forming a pact with a spirit. storestack2.diff fixes two bugs. Once, due to a typo, caused part of the patch to create extra items rather than destroying some if too many items were found during maintenance. The other, due to me only changing the return from store_check_num() for normal shops and not the home, prevented the player from dropping more than one item in a stack at once. I've also created a compile-time option to allow the sections which prevent similar stacks from being generated during maintenance to be turned off as neither way is obviously bad. trapdoordam2.diff fixes a silly bug where I'd put the line which makes this patch work in the wrong place, making most pits harmless. unident3.diff makes the game use the colour of the unidentified version of an item if the identified one is black, and the character if the identified one has a space as its character. vampmsg.diff suppresses messages from a weapon's vampiric drain if the object is identified and no HP are gained from it to make them less annoying to use. windowpri4.diff removes the character_icky++ call from window_stuff() (it doesn't really make sense to talk about how "icky" the display is, only whether it is safe to write to it or not), and replaces the character_icky checks with a function which checks character_icky and also checks whether the main screen is being displayed. This has no in-game effect. 3004.diff contains all of the above with the exception of compile.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.