--------- MISC. DOCS --------- Tore the on-line help system apart, and rewrote about half of it from scratch. At long last, the various obsolete chunks of text from Moria are gone. Set up a system of sub-menus. Cleaned up a lot of formatting, spelling, style. Added new sections designed to tie in neatly with the expanded object and spell information code. More info on inscriptions, lighting, magical devices, spell projections, effects of spells on monsters, plenty more. More cross-references. Rewritten (and far shorter, since the help itself will now be the changes list) Oangband description, which I'll use as an "official blurb". Now, the only parts of the on-line help system that remain unchanged from Angband are Ben's maintainer statement, the Moria and Angband copyrights, information on loading and editing preference files, and special system commands. --------- *_INFO.TXT FILES --------- a_info.txt -added descriptions to all artifacts. -reorganized the artifact numbering system to allow more space for future additions. -same with artifact activation indexing. -tweaks to various artifacts. Some are much rarer, such as the two Oangband amulets, or deeper, such as the Arkenstone of Thrain (that activation is *awesome*, despite my tweak to wizard lighting, and I can't afford to let people get their mitts on it too soon!). Lots of other, various changes. -several new artifact armours. -fixed a sval error that prevented shadow cloak artifacts from being created. -changes to various artifact weapon and shield depths, base object kinds, base damage dice, base armour class, and certain flags to accomodate changes in k_info.txt. -lowered virtually all enchantments to armour classs granted by artifact gloves and footwear. -added four artifact staffs, four wands, and four rods. e_info.txt -added gloves of Magic Mastery, "(Dwarven)" armour, Whips of the Balrog, some changes elsewhere. -added descriptions for all ego items. -all ego items that suffer penalties to various things now display negative values. This will make more interesting ego-items possible in future. k_info.txt -complete reorganization of object list. Now object kinds are all together, there is lots and lots of space for new stuff to go where it belongs, and objects are sorted in sval order. -heavy revisions to weapons. replacement of lucerne hammer with (throwing) dart, reducing weights by between a fifth and a third for most weapons, tweaking level and cost, adding base armour classes to quarterstaffs, spears, pikes, and pole-mounted weapons, adding a flag that requires the weapon to be two-handed, and another that requires it for characters without massive strength. -additions to all non-body armours. Dwarven Boots, Ethereal Cloaks, Barbuts, Knight's Shields, and so on. -new rod. No, I'm not going to tell you what it does... -new scroll of elemental attacks -changes in the weight, base armour class, base damage dice, price, etc. of all existing shields. -addition of descriptions to most item types. Some accept the insertion of damage information. -value of diggers increased to compensate for loss of value increase for a normal tunneling bonus. -made scrolls of *id* a little more common. -made chests a little rarer. -added the base object kind templates for the twelve new magical device artifacts. -and various minor tweaks. r_info.txt -reorganized hound melee damages. Vibration hounds can now stun the player more easily, gravity hounds aren't so overly tough in melee, and plasma hounds inflict fire and electrical damage. -both Giant Paladins and Storm Trolls are now slightly less powerful. -Lokkak and both kinds of titans are now found much deeper in the dungeon. -The Cat Lord is now Tevildo, Prince of Cats. -upped player ghost HPs a bit (they needed to be in line with that of other uniques), replaced the Werewolf template with that of a Wight. -some new bird monsters -miscellanious minor tweaks. t_info.txt -created a file to hold themed level information. It currently has six themes, each of which will appear (if at all) only once per character lifetime. Much information about themed levels is hard-coded, including size, depth, and default monster restrictions. v_info.txt -corrected various minor errors, roughly halved the number of chests. Chests are *rare*. --------- SOURCE CODE --------- attack.txt (new source file) -whips of the Balrog do 3.0x flame damage if monster is not immune. -special temporary elemental and holy attacks do extra damage like brands and slays do. Paladin temporary elemental brands do not effect shooting. 1 time in twenty hits, a temporary Holy slay is cancelled. -fixed bugs in combat code that allows the table "Deadliness_conversion" to be improperly accessed. -players may bash their opponent automatically when engaging in melee combat. Only players good at melee combat and wearing shields on their arm are likely to bash. Bashing may hurt, stun, or confuse the monster, and cause the player to lose some or all of his combat blows. Wearing a big, heavy shield is the most important way to start bashing effectively. -regularized special attack types. New special attack allows rogues to hit a monster once, then do a phase door. -missile launchers of velocity and accuracy sometimes "supercharge" for a nearly guaranteed hit or a little extra damage. -adjusted assassin bonus to deadliness with missile weapons downwards just a tad. They were getting a little too cute with thse slings. -made weapons of perfect balance less likely to break. Now, normal weapons break 1 time in 10, throwing weapons 1 time in 50, and weapons of perfect balance 1 time in 100. -fixed a bug that prevented assassins from auto-tracking monsters when firing or throwing. -ammo of backbiting is dangerous... birth.c -added new races to player creation function. -rangers get a short bow and 25 arrows. cave.c -the magic mapping function may now optionally effect an extended area, or map around any given coordinate. cmd1.c -players may "feel" objects on the ground instead of "seeing" them if blind. -py_pickup function is now able to accomodate people who want convenience and those who want information by using the "pickup" variable to control access to Tim Baker's menu system. Menus can be forced, semi-forced, or not forced. Players can (depending on options and situation) pick up everything on the floor they have room for using either the old method of grabbing everything as the object list cycles or using the new style system of menus. -trap of software bug contained a nasty real software bug, reported by Frank Muzzulini -the second movement needed to enter trees and rubble is now automated. -regularized code from Tim Baker's Easy patch. cmd2.c -added confirmation dialogs to prevent the player leaving a themed level unless he really wants to. -added a bunch of chest traps. -fixed a bug that allowed both attacking and disarming or tunneling using control+a direction. -glyphs can be disarmed. This is good, because they are rationed. -the pickup command takes 10 energy for each object picked up, up to a maximum of 100. -the first 20 objects dropped by the player will pile up under his feet. -activation of automatic disarming and opening as player moves cleaned up. Now is aware of the repeat-obvious option. cmd3.c -inventory and equipment listings show total metric weights, if an option is set. -the "inspect" command now displays at least some information about virtually any object inspected, often (but not always) including general object kind, artifact lore or detailed listing of qualities (same as before, just reformatted), and specific object type information. -players automatically move any equipped shield to and from their backs when wielding, taking off, and dropping weapons that need both hands. -when the player attempts to destroy a known artifact, the inscription "special" will not appear. The message "you cannot destroy this item" should be sufficient. -"superstealth" aids stealing, but is lost in the process. cmd4.c -added a function to personalize, randomize, and print a challenge from a player ghost. This prevents players from missing out on any player ghosts. This is important, because they can now only appear once. -If the player is on a themed level, a special level feeling will be printed instead of the standard ones. cmd5.c -warrior pseudo-id, starting at level 35. learns about monster racial type and resistances. It only takes a turn, but is sometimes incomplete. the "browse" command gives the user more information on this ability. -function to temporarily elemental brand a weapon. -Athelas that the player makes himself is sold at 20% of normal price. -function to rebalance weapons. -rewrote the code that indexes spells for browsing, learning, and casting. Combined the pray and cast functions. Colorized various things for the spell realms. For the first time, I can actually /understand/ all the spell code! - -added priestly prayer "Holding". Can fully jam a door, or prevent a monster from either acting or being attacked for a short period. -combined the Enchant Weapon and Armour prayers. -various existing spells changed to use fire_sphere and fire_arc. -about fifteen new or reworked spells, too many to conveniently list. cmd6.c -scroll of elemental attacks. -made it possible for the effects of magical devices and non-artifact activatable items to become fully known through use, and made a message appear if the player has learnt something. This increase in knowledge applies to all items of that type. -upgraded and totally altered the effects of Staffs of Starlight. -Staffs detect traps, doors, and stairs further away, and also magic map more of the dungeon. -effects of twelve new artifact magical devices added, many with special functions to provide unique effects. -some damages for magical items adjusted downwards. -mages no longer get a speed bonus with wands and staffs. -some new normal artifact activations added. Ringil's activation greatly altered. Carlammas's activation upgraded. Some random activation timeouts shortened. -various existing spells changed to use fire_sphere, fire_meteor, and fire_arc. -activation added for whips of the balrog. config.h -undefined options to delay loading object, ego-item, and artifact descriptions. -created a new option to forbid the generation of themed levels. It is normally undefined, but the "angband_lite" option will toggle it on. -added undef ALLOW_TERROR to the "angband_lite" option. defines.h -added definitions for the six themed levels which are currently possible. These definitions are the bit flags of an integer in player info that stores the current themed level (if any). This means that up to 16 themed levels are possible. -added some shields, changed some weapons, added a cloak and two kinds of footgear. -added various other objects. -added three new races. -added some chest trap definitions. -added three bit flags to the function which controls bolts, beams, and balls: CLOUD: A ball spell that does not lose strength away from the center, up to radius given. ARC: Act as an arc spell (a portion of a caster-centered ball) SELF: Explicitly affect (usually hurt) the caster. -added a spell type definition, GF_HOLD, GF_HOLD_UNDEAD. -added an option to display metric measurments, removed testing_stack and testing_carry, moved some other options around dungeon.c -Adopted Ethan Sicotte's idea of providing an inscription-dependent notice when objects recharge. -"superstealth" is timed out. -timed esp is timed out. -Maiar recover quickly from all temporary negative conditions. -no random monsters are generated over time on themed levels. -both the 'p' and the 'm' commands activate the same function, so mages can use the 'p' key, and priests the 'm' key, if they so desire. -the 'g' command maps to a function renamed "do_cmd_pickup",which always and only picks up objects underneath the player. files.c -the character screen can calculate and display metric values for height, weight, and infravision range, if an option is set. GSNband idea. -'?' now exists on-line help, and ESC returns to the previous document. I find this more inuitive, and it conforms with the option interface. -maximized stats shown with a '!' on character screen. -Finally fixed an outdated display of flags on the character screen, thanks to prodding from Frank Muzzulini. -when dumping a character description to text, the last line of a 4-line character history was chopped off. -Angband omission corrected; increased and sustained stats now appear as dark green numerals in the character screen's listing of equipment effects on stats. -Maiar get half the score of any other race. generate.c -a little tweak to monster and symbol clone pits and nests: I suspect there won't be any more Blue Worm Pits at 3500'. -unique monsters are created less often by the code that restricts monster generation to members of any given racal char. -themed levels can be generated. They are rare, appear at most once per character lifetime, and use some special arrays in memory that are created and filled only when a themed level is asked for. Be warned - they can be extremely dangerous! -themed levels have various monster restrictions, and take advantage of miscellanious tweaks to the build_vault function. init1.c -the code now looks for weapons that require and desire two-handed use. -removed the blocks to some existing code allowing artifact, ego-item, and object descriptions. -ego-objects can now have penalties to Skill, Deadliness, armour class, and pval. All values from 0 to 128 are mapped to those values in the e_info array. All values from -1 to -127 are mapped to values 129 to 255. All other values are mapped to zero (for robustness' sake). -added a function (by copying and modifing v_info.txt) to read the new "t_info.txt" file containing themed level descriptions. Only one themed level (the one chosen in generate.c) will be loaded into memory. This allows an arbitarily large t_info.txt file. init2.c -functions to load themed levels into memory and free that memory when done. -tweaked what stores sell to match altered weapons and shields. -stores no longer sell scrolls of *ID*, since players have much less need for it, and knowledge should not be too easy. -added a function (by copying and modifing) to initialize the new "t_info arrays. info.c -added a table that displays information about the class of object. -added a table that displays extra numerical information for fully identified magical devices. -added a table that displays "user's tips" on every spell. Most are fairly obvious, and hardly worth reading, but some are definately helpful. -added a function to grab and output extra numerical information about a magical device. -added a function to build up an information string about an object or artifact. Object kinds whose effects are fully known may provide extra quantitative information. Standard artifacts and all ego items have associated information. -rewrote the code that displays exact attribute and flag information about an object to print conformation more concisely, work with the other object code, and use the "c_roff" function. -various changes to displayed information about artifact activations. new artifacts and one ego-item added. -the half-magic users no longer have a minimum failure rate of 5%. This means a Rogue can do just as well with his kind of magic as a Mage can with his. -function that prints a list of spells rewritten to take advantage of the new spell indexing system, also to add color and the spellbook name. The function accepts a spellbook tval and sval, and prints all spells in that book. It can therefore be far more easily expanded to read the spells contained in, say, staffs. load1.c -some of the artifact indexes are now greater than 128, so I fiddled with the table that converts old special names to artifact and ego-item names. load2.c -monster stasis is restored. -complete knowledge of an object kind is restored. -the index of any current themed level is loaded, as are flags indicating what themed levels have already been generated. -timed "superstealth" is loaded. -hackish new function to read oangband version information before the savefile loading code outputs various status and error messages. This will help debugging considerably. melee1.c -stunned monsters aren't as good in melee. -chance for thieves to steal from you now dependant on the relationship between your and their level, not just your level. Players have perfect protection from theft only from lower-level thieves. melee2.c -pack monsters will chase the player everywhere in arena levels. -monster will not waste time slowing an already (temporarily) slowed player. -monsters near the player will now run away if they are at least as fast as him. Two (very) minor speed optimizations to this function. -slight tweaks to monster fear. fear is still a little strange. -monster non-magical (GF_ARROW) missile attacks upgraded by 33% (since they can now miss or be deflected). -players with "superstealth" will almost never wake up monsters, regardless of aggravation status. Monsters found at depths less than twice the player's own exp level will often not be able to find where he is at all. If the monster fails to perceive the player, it can cast no spells and will move entirely randomly. -low-level monsters can instantly recover from stunning more readily, but high-level monsters aren't entirely immune. Stunning no longer paralyzes the monster. -monsters held in stasis cannot perform any action. speedy monsters take just as long to escape from stasis as average-speed monsters do. Uniques will escape slightly more quickly. -any changes to targeted monster conditions (fast, slow, etc.) will affect the monster health bar. -stunned monsters more frequently fail non-innate spells. -the player will be slowed for a longer time by a slowing spell that suceeds. -on themed levels, monsters must be half as far away from the player as normal to be processed. monster1.c -rangers learn about monster blows and armour faster than anyone else. -corrected a text string with swapped elements in the monster description code. -added racial information for monsters with no player kills. This allows effective probing for racial type *before* offing that tough unique. -tweaked a few class alterations to player ghosts. monster2.c -various player ghost variables are cleared, and the ghost itself forgotten, when the player leaves a level containing a player ghost. -player ghosts may only appear once. once deleted, they will not show up again. -the player can see monsters half as far away on themed levels, whether normally or with telepathy. -option to forbid monsters carrying objects has been removed. -extended the summoning code to allow scattered summons (up to 6 distance). -added some specific summons (used in the new chest trap code) object1.c -code to describe objects and activations in various levels of detail moved to new source file "info.c". -plenty of new object flavors added. -introduced a hack in "flavor_init" to make spellbooks with no usable spells appear grey. -inventory and equipment displays use metric weights if an option is set. -strings that describe the use of a shield now vary, depending on whether that shield is being carried on the back or on an arm. -the discount on objects that the player brands himself are not shown. -new chest traps are described. -if the player is wearing a shield on his back, the display of the shield's base and bonus AC is expanded to make it easier for the player to figure out why his armour class suddenly dropped. -hack added to inventory color processing code to make spellbooks with no useable spells appear grey. This warns the weaker spellcasters away from that expensive, useless book they were thinking about buying. object2.c -code to determine spell failure chance and print spells and information about spells moved to new source file "info.c". -level boosting code made less generous. -a new weapon, darts (light javelins), may sometimes appear in stacks of 2 to 4. -fixed a bug that caused the chest traps table to be improperly accessed. -option to forbid objects stacking has been removed. I had to suppress a twinge of nostalga... -reduced the magical AC bonuses for gloves and boots. This makes up for the higher base ac of shields. -made it impossible for melee weapons to have their damage dice sides boosted by more than 100%. However slight, a chance for 150% reduces the interest of artifacts - not good. -ammo is now 50% less likely to have boosted damage dice. -diggers do not get value increases for tunneling bonuses unless they exceed the normal amount. -various new ego-items added to generation code. Whips of the Balrog can be activated. -ego-item bonuses and penalties to Skill, Deadliness, armour class, and pval now only depend on information in e_info.txt. Cursed or broken status no longer has any effect. -function make_gold revised again. now object level works normally for these items. -staffs (if charges are identical) and wands (in all such cases) will stack together if they have known charges or are known to be empty. -pseudo and fully ID-ed ammo without plusses will stack together. -weapons of perfect balance will stack together if identical. randart.c -Object selection code rewritten. It is now shorter, and no longer hardcodes all the object types. -Reduced magical AC for gloves and boots. save2.c -fixed a faulty number display in an error message. -monster stasis is saved. -complete knowledge of an object kind is saved. -the index of any current themed level is saved, as are flags indicating what themed levels have already been generated. -timed "superstealth" is saved. spells1.c -electricity may stun the player. -added two "JL"s, for Julian Lighton, which I had earlier neglected to do. -acid attacks now fail to attack armour one time in three. People thought that the Water Hounds were getting a little out of hand, and I agreed. -elemental attack only reduce unsustained stats. -monsters held in stasis cannot be effected by spells. -new spell type to do damage to only weak monsters. -monster stunning from sound tweaked, monsters can be stunned by electricity. -monster already slowed by more than 10 will not be slowed even further by a spell of slow monster. Fair's fair - the player doesn't have to worry about that. -Holding magics can fully jam a door or freeze a monster in place. -objects are now not always destroyed by weak spells (less than 30 for acid, 20 for everything else) that melt, burn, freeze, or electrocute. -A special kind of Holding magic is more powerful, but only effects undead. -shadow fairies are hurt 4/3rds as much by light, and ents are hurt 4/3rds as much by fire. -arrows, boulders, and missiles can now miss or be deflected (but not very often). -shields may sometimes offer partial protection against shards. -monsters can be stunned by more spell types, and are slowed by gravity. Appropriate monsters are immune, of course. -players breathed on by gravity who get involuntarily teleported will now land somewhere outside the blast radius, preventing double jeopardy. People who land in lava are unlikely to thank me, however... -expanded the project() function to allow spells that form arcs, defined as balls centered on the caster constrained to form a cone centered on a line of projection. -expanded the project() function to allow spells with a diameter containing the energy source that is different (usually greater than) than 10 feet. The initial use of this capacity was to allow ball spells centered on the caster (which includes arcs) to do an intuitive amount of damage to adjacent monsters (this particular technique requires a source diameter of twenty feet) No more excessive-looking damages in the spell code - if it says it does 200 damage unresisted, that what it'll do. -ensured that the project() function would never try to affect more grids then the maximum (256), and so corrupt grids previously marked. This was necesary after I started coding enormous arc spells. Since I don't trust myself, I'll protect the code /from/ myself! spells2.c -functions that detect traps, doors, and stairs may optionally display these features at (slightly) extended ranges. Only staffs take advantage of this. -lite_line reduced in strength again. It now does 4d5 of damage to critters hurt by bright light. -function to put undead in line-of-sight into stasis. -functions to detect living creatures and to dispel weak monsters. -made the earthquake function dump rubble on top of monsters instead of making them coexist with rock if they survive but can't escape. Thanks to Tim Baker. -fully identifying a flavored object will also fully identify all objects of that type, except if it is a variable ring or amulet. -the same function now inflicts a variable amount of damage on players and monsters who can't find shelter. -objects that the player brands himself are sold at 20% of normal price. -new function to handle temporary elemental attacks. -rewrote the recharging code again to make it easier to read and understand. -new function to allow mages to perform "reverse recharging": draining energy from magical items to get mana. -new functions for staffs of starlight, the Staff of Gandalf, the Staff of Radagast, and so on. -spells of earthquake and *destruction* now decrease the trap/glyph count when destroying these features. -glyphs are now rationed. maximum: four. Hack - because Rogues use the same global variable, they actually have no limit, but I don't see this becoming a problem. -new function: "fire_arc". It is now possible to cast spells that form arcs around the caster. This function accepts a value that controls how wide the arc may be, uses a increased value for diameter of energy source (see notes in code), and can even be used as a (albeit rather expensive) defined-length beam spell. -two new functions to fire ball spells that do not lose strength up to a specified diameter (as opposed to a normal ball spell's ten feet) and that hurt the caster. Even though it duplicates code, I added these new functions (instead of expanding "fire_ball") to make them more convenient to use. store.c -New races added to racial price adjustment table. Realized that this table is so old that it dates back to the days when Hobbits were called "Halflings". Now that's old! -store pricing code tweaked in another attempt to fix a serious mac 68K-specific problem: prices of 47 million or 1. -because objects that the player makes himself are heavily discounted, and this discount does not normally appear in the object description, a store owner will warn the player if he tries to sell all that Athelas he made! -the BM will often sell potions and scrolls with a value less than 400 in *quantity*. This is where middle and high-level players can use their money to buy useful utility objects that wouldn't be worth just carrying around one or two. -listed store commands now include 'I' to inspect. Zangband idea, parts of its code. -store displays use metric values if an option is set. GSNband idea. -mega-hack: stores will not sell Longbows until the player is level 10. Rangers can't be allowed them too soon. -hack added to inventory color processing code to make spellbooks with no useable spells appear grey. This warns the weaker spellcasters away from that expensive, useless book they were thinking about buying. tables.c -The table with values for mana per level for each value of INT or WIS now calculates in 1/10th mana points. DarkGod's idea. -the strength input table to combat Skill has been deleted (for simplicity, and because strength is quite important enough). -Standard Angband strength input table into the blow/rnd table restored. This makes a high strength slightly more important. -revised the help text for the blows table to reflect various changes. Players will get three blows sooner, and get four blows later. The table promotes a balance of strength and dexterity. -there are now six possible shopkeepers per store. -three new races added to the racial definition table. Races now have level-dependant modifiers to abilities. Currently, only the "must do" abilities thus change: melee and archery/throwing. I hope that, at long last, Half-Troll Warriors will be a little more smooth-paced. -replaced the spellbook flags with indexes. This kills all the blank spots in spellbooks and allows total flexibility in how and what spells go into what spellbooks. The price paid was an executable almost a thousand bytes larger, and a maximum value for spell indexes of 255 (this can be easily increased to maxint, but doing so would take up more space). -Drastically revised the spell lists for each class to take advantage of this. Some classes will hardly be recognizable. -added various new spells to the spell names table. -reduced the size of the table that converts internal +dam values to Deadliness percentage modifiers by about 2/3rds. -added the new traps to the chest traps table. -cleaned up and reorganized the option tables, removed testing_stack and testing_carry, added an option to display metric measurements. xtra1.c -dungeon depth is displayed in meters if two options are set. -Mana increases much more smoothly with increases in spell stat. -because of this, and because I thought spellcasters were too powerful early on with near-guarenteed three mana, I lowered mana by one. Now, the cut-off point for three mana at level one is 18/30, and the cut-off point for five mana at level 2 is 18/50. -gloves with the magic mastery flag no longer reduce mage and necro mana. -ents do not love axes (and similar weapons). -simplified the code that controls blows in combat. All class-specific bonuses and penalties are gone. After many attempts at reform, I am finally satisfied with how blows work. -everyone gets two blows barehanded. -all level modifiers are now divided by 50. This allows me to far more easily calculate maximum intrinsic bonuses. -races also have bonuses and penalties to various skills. Currently, only melee and archery/throwing actually have any effect. -strength no longer affects combat Skill. -shadow fairies never aggravate. if they acquire that flag, cancel the aggravation, and reduce their stealth by three. -ents never have feather fall. They will learn to dig extremely well as they gain levels, but only with their hands. They increase STR and CON, and decrease DEX as they age (gain levels). -Added code to calculate the effects of the player's moving his shield on and off his back, also added messages. The character will automatically use his shield appropriately if conditions change. xtra2.c -monsters cannot be hurt while in stasis. -added a function to change the player's timed "superstealth", and "tim_esp" values. -the player loses any special stealth magics if he does damage to any monster. -looking at objects is more compatable with the roguelike keyset. util.c -fixed a small bug in the c_roff function that indented lines after a forced return. -expanded the c_roff function to accept any reasonable left and right margins. This makes it possible to print blocks of text anywhere I please. -added a function to convert standard to metric weights. -Tim Baker's repeat code is no longer #ifdef-ed. -added a table that returns the angle to any coordinate within 15 squares of the origin. This table requires a fair amount of input and output manipulation - see the comments for more info. It is used in the "project()" function to delineate the erea of effect of arc spells. variable.c -themed levels have their own level feelings, which are stored in a global variable called "themed_feeling". wizard1.c -spoilers can be generated with metric weights, if an option is set. z-rand.c -slight effeciency tweak to the "rand_div" function.