ToME 2.0.0 changes

Interface changes:
- IRC code for the XAW port. Caveat: it causes a linker error
  if you USE_X11 and USE_XAW at the same time... -- pelpel
- Removed hard-coded direction keys in the skills menu -- pelpel
- view_special_lite and view_granite_lite that work with non-white
  terrains (for ASCII mode only, already done for 16x16 tiles) -- pelpel
- Inven/equip/item choice in subwindows now clears to the bottom of screen,
  to avoid glitches and in accordance with the way it worked -- pelpel
- Identify and *Identify* don't list known/fully known items in
  object selection -- pelpel
- Auto-squelch menu now accepts ^R as an alternative to ^S, to be nice
  for those who USE_GCU. Thanks Skylar Thompson for the problem report
  -- pelpel
- Hopefully finished special lighting effects. Now it works this way
  (with all lighting effects options on):
  Perma-lit grids and lit walls/doors within sight, and remembered important
  features = f_info colours, Perma-lit floors and walls/doors out of
  sight = darker colours, torch-lit "boring" floor = yellow, torch-lit
  grids out-of-sight = dark grey, blindness = B&W -- pelpel
- Because I find detection no longer works on panels, added DTrap status
  line as well as a new disturbance option disturb_detect. Also removed
  hardcoded row/column positions in the status line code, in preparation
  for big-screen support -- pelpel
- Added scrolling target/look code, which is bastardised :) form of
  Z and V ones -- pelpel
- Big screen is sort of working now, but main-xxx.c (have
  to remove restrinction on size of the PernAngband window) and
  cmovie are still needing upgrade -- pelpel
- Big screen support for X11 and XAW ports (already done for Gtk, Mac
  and Windows ports). Also added an option -o to force the use of 8x8
  tiles in graphics mode. Say "-g -- -o" to activate it. And please note
  that because of the way transparency effect is implemented in
  X11/XAW/Gtk ports, it is available even with 8x8 tiles -- pelpel
- Moving onto quest entrance/exit no longer causes annoying automatic
  stair movements. You have to tell the game '>' or '<' to enter/leave
  -- pelpel
- Stats can now be displayed in a linear mode(from 3 to 37) instead of
  3 to 18/***, the option is off by default
- Added recall depth subcommand to the knowledge menu -- pelpel
- Removed the flavoured_attack option and made most 'silly' messages
  off by default. They are now controlled by 'insanity roll', which is
  d100 roll against (max_sanity - current_sanity) * 100 / max_sanity.
  The same roll is also used to determine if the game should use
  silly monster descriptions (in addition to the hallucination
  effects) -- pelpel
- The skill interface no longer asks question whenever you increase skills.
  Changes to skill values are made permanent if the player confirms them
  when s/he leave the skill menu, otherwise, they are simply ignored
  -- pelpel
- Bigtile patch for windows, x11 and mac ports thanks to Takeshi Mogami
- Asks for a last screenshot upon death
- You can now dump a frame of a cmovie as an html screenshot(while playing
  the movie)
- The commands for skills and spells are swapped. Please use 'G' to learn/
  check skills and '$' ('\$' in roguelike) to learn spells.
- The prompt to cast a spell now understand to press @, which will ask for
  a spell name, it'll look all books and cast it if you can.
  It EASES macros, a macro will now look like:
  02m@Manathrust\r*t
- Message recall now understands bigscreen thanks to pav
- Help now understands bigscreen thanks to pav
- Skill screen now understands bigscreen thanks to pav
- No more pickup prompt with autopickup when inventory is full, thanks to pav
- Took big screen code for horizontal scrolling of message recalls
  from Vanilla -- pelpel
- You can navigate through option menus with roguelike_keys -- in fact,
  I didn't know users of the original keyset can go up before I play
  the latest V and see its code... Taken from Vanilla CVS -- pelpel
- Added big screen support for GCU -- pelpel
- The skill screen cannot be abused to get more skills anymore

Gameplay changes:
- The adventurer quest reward is now either the adventurer or some skills

Monster changes:
- Added a command to dismiss companions in the pet menu
- Restored monster light code, modeled after Steven Fuerst's implementation
  insteand of APW one this time, but without his support for multiple radii.
  -- pelpel
- Made monster light a run-time option. CAVEAT: It'll cause display
  weirdness when you turn this option from ON to OFF while playing.
  Save/Restart or entering new level will fix the problem.
  Should call forget_mon_lite() when the game detects it... -- pelpel
- monster lite option is on by default
- Confusion, stunning, charming now works on uniques(those that dont have the
  corresponding resistance)
- Revision of the conf/stun/sleep resists for uniques thanks to Runescrye
- Monsters drop stolen gold when killed

Object changes:
- Elvish waybread renamed to lembas, thanks to nimloth
- Combining rod and rod tip now considers rod's cheapness flag.
  -- Kusunose
- There are 2 kinds of spellbooks for the magic schools, the ones that
  are named "a Spellbook of foo" where foo is a randomly choosen spell
  (selection is based on the dungeon level)
  and other names that are fixed books
- School spellbooks can be fireproof ego items
- Bound the wands & staves damage/power to the Magic skill, attack wands
  should actually be usefull now
- Reset recall now lists all the dungeons a player has visited and 
  additionally allow a player to select by name. -- Kusunose
- Enabled the generation of double ego items. An item cannot get 2 prefix
  or 2 suffix, it will always be a prefix and a suffix

Player changes:
- Changed the magic system, it now uses schools of magic instead of
  realms. A school contains much less spells than a realm. Each spell
  is unique and dont make others redundant. Also all spells tries to stay
  usefull for the whole game, by increasing in power and effects with levels.
  A spell can be assigned to more than more school, in which case all the
  schools need to be raised to obtain more power. All spells are implemented
  in lua, to make it easy to tweak them.
  All spells arent coded yet but my plans are for those schools:
  Mana, Fire, Water, Air, Earth, Mind, Conveyance, Meta, Temporal,
  Divination, Nature and Nether
  It may change somewhat but thats the general idea :)
  Books are not specific to a school, they can contain any spell from any
  schools, it is even imaginable to have randomly created books
- High intelligence increase mana regeneration rate
- The skill system is ready ! Some small tweakings are needed, but it is
  mostly ready. Each level you gain a few skill points that you can spend
  on various skills(like combat, weaponmastery, magic, ...). Most actions
  are now tied to skills.
- Classes revamped as more or less skill templates. Classes now can have
  specializations which allow starting with somewhat different skill set.
- New god system, each god will be much more different from all others.
  Altars are less vital. There are less gods.
- Magic skill now allows you to copy spells from books into various
  objects. Not all objects can contain spells naturally, but most object
  of the Magi can, and all mage staves
- Spectres loses HP while in walls, it was too abusable(and in fact, I never
  planned to remove it)
- Made running commands exempt from do_nothing processing, because this
  can be abusable and makes no sense -- you could, for example, hold down
  movment keys when following Eru and use running when following other
  deities -- pelpel
- Pseudo-id is now bound to the Combat skill(for weapons/armors) and the
  Magic skill(potions, ...)
- It is now possible to press @ at the 'm' key prompt to select a skill action
  by it's full name. Thus allowing unbreakable macro:
  m@Cast a spell\r@Manathrust\r*t
- New god Melkor Bauglir
- Weaponmastery, Archery and Barehand skills increase Combat skill much more
- Deathmold fetch ability pickups gold and objects(if autopickup is set) thanks
  to "kenderband" <kenderband@hotmail.com>
- New bounty quest available at the beastmaster shanty! Bring back a corpse
  and get some monster-lore skill and the ability to learn corpse-preservation
  skill if you couldn't already
- Replaced first necromancy spell with Horrify from the old Nether realm and
  the third spell with absorb soul, provides some health upon monster death

Misc changes:
- (Mac, Carbon)Graphics mode performance improvement. When a user
  chooses a fixed width font (as is almost always the case) and
  doesn't change tile width & height, the higher_pict method is
  used instead of *very* slow and inefficient always_pict to
  draw things -- pelpel
- The prf file loader always searches for the user directory first,
  then the pref directory if it can't find it there, so that user
  can override the system defaults keeping the distributed files
  intact. This also simpifies the pref loading codes in several
  places -- pelpel
- the html help file converter now gets it's header and footer
  from head.aux and foot.aux in lib/help to help website
  designer adapt the generated files to whatever they want
- The running code now uses DONT_NOTICE_RUNNING and CAN_RUN terrain
  feature flags for non-conditional checks, i.e. everything but doors,
  stairs and alike, and those requiring levitation or immunity -- pelpel
- Included the lua tutorials by Fearof4s
- Replaced the field of view code with that from Angband 2.8.3--
  -- pelpel
- los, player's field of view, and spell/breath projection now all use
  FF1_NO_VISION for the sake of consistency (in addition to the wall
  check in case of spell/breath projection) -- pelpel
- CAVE_TRDT wasn't cleared when a trap is disarmed, which had some
  subtle effects and forced coders to double check c_ptr->info and
  c_ptr->t_idx in various places -- pelpel
- Added FF1_DOOR flag to open doors for lightning effects in map_info()
  and have the trap creation code explicitly avoid them, because traps
  have and should never been performance bottlenecks -- pelpel
- Some process_world() sections (most notably monster generation and
  lingering spell effects) are conditionalised so that they don't run
  in the overhead map -- pelpel
- Changed all the signed (!) flags I was able to find to unsigned, because
  they don't make any sense. Savefile code should be modified as well
  if we ever care for savefile portability -- pelpel
- The tunnel code (ordinary one) now performs double check for
  feat_wall_outer and CAVE_ROOM (which was added a couple of weeks ago),
  so it is safe to use any terrain features for outer wall, including
  those identical to fill_type -- pelpel
- (Temporary note) Separated staying effect handling code from
  process_world() and made it a function, so that it can be called in
  any place with in dungeon() [can be activated by #define pelpel :)]
  I temporarily placed it after process_player(), but we have to spend
  some time testing this, seeking for the best turn structure -- pelpel
- Auto-squelch is performed *before* a player turn, just before the
  pack overflow code to prevent some interface problems. This means
  that squelching occurs as the very last action of a player turn,
  after monster drops or even after pseudo-ID, so that you don't have to
  press extra space to squelch items. Another possible arrangement
  would be within process_world(), right after sensing -- pelpel
- Added flush() before all the quest questions to prevent accidental
  loss/declination/acceptance of quest rewards/quests, also added
  very important flush_failure and flush() to the lua interface and
  put that in the spell failure code, so that spells can be macroed
  safely -- pelpel
- Depth/field name area is now 13 character long, so that names like
  "shallow water" will fit, and "Lothlorien" is not truncated in GCU.
  Also added short dungeon name prefix to the depth-in-feet mode -- pelpel
- Because map_info() is the #1 bottleneck routine and because I felt
  hack_map_info_default is incredibly ugly :(, I removed
  hack_map_info_default and added specialised version of map_info()
  for use by cmovie and the HTML screen shot saver -- pelpel
- Added 8x8 graphics support to trap display code -- pelpel
- Added another graphics mode variable called graphics_mode :),
  somewhat like use_graphics in ZAngband, but it doesn't
  require any changes to main-xxx.c. It's set within reset_visuals()
  and used by map_info(), so that it doesn't have to do streq()
  each time it is called -- pelpel
- Added term resize hooks so that one doesn't have to hit the redraw
  key and alike when s/he resizes windows. Hooked functions are placed
  in xtra2.c, because they are only related to big screen support
  and other panel related codes are there.  Don't like the way stuffs
  are initialised -- assumption about max number of terms, setting terms
  package hooks from within the upper layer codes -- but the existing
  implementations do it this way, and the "right" way requires changes
  to main-xxx.c, which I'm too lazy to do... -- pelpel
- Ego graphics code now only tries to use graphics overlays for
  monsters and players if and only if 16x16 tiles are used -- pelpel
- Shimmering terrain features no longer shimmer while running or resting
  to make themselves somewhat more bearable on slower machines -- pelpel
- Updated lighting effect code so that it works the same as rr9's Angband
  versions. Also removed hardcoded IBM pseudo graphics code points, so that
  if anyone is ever interested in updating its font & prf files, s/he
  can do so freely without editing the source code.
  And map_info / map_info_default is now fully aware of c_ptr->mimic,
  so that map edges will not have strange lighting effects etc.,
  hopefully -- pelpel
- Renamed see_wall() in cmd1.c to see_obstacle() also added a grid-based
  version of the function to be used by run_test(), so that those who have
  immunity and/or levitation can run over lava fields, deep water etc.
  -- pelpel
- Less platform-dependent savefile processing code for the game start
  menu, thanks again for kobayasi. It now uses files.c utility routines
  for building appropriate savefile names -- pelpel
- Added initialization code to add SPECIAL_GENE flag to final guardians
  and their artifacts (and DROP_RANDART if there are no final artifacts).
  -- Kusunose
- Moved squelch-on-sense code from process_player() to process_world()
  -- pelpel
- Changed repeated message code to V-CVS one -- pelpel
- Trap display now uses x_attr/x_char of FEAT_TRAP (f_info N:17)
  1) if a trap is set on a "boring" terrain in the ASCII mode, where
  only x_char is used and attr is taken from tr_info.txt XXX XXX XXX
  or 2) if attr/char for a trap is not defined in prf files in the
  graphics modes -- pelpel
- Removed FAKE_VER_*, because it has been quite long since we lost savefile
  compatibility with Angband 2.8.1 and info.txt files can be updated
  by sed/perl/whatever script in a snap -- pelpel
- To accommodate the practice of not upgrading version stamp of info.txt
  files at each release (never done in V-based variants, but common among
  Z-based ones for historical reasons), version stamp checks against game
  data files in lib/edit is made a compile time option
  (VERIFY_VERSION_STAMP), off by default.  With this option off, version
  stamp checks for the binary files are still performed and they always
  have version signature of the game, not those specified by the V: lines
  -- pelpel
- Upgraded the lua bitlib so it can handle stuff like bor(1, 2, 4, 8)
- Block comments( --[[...]] ) in Lua enabled
- Reorganised the linkage order of makefile.org a bit, so that similar
  files are grouped together, also frequently called files are not coupled
  together with rarely used ones. This *might* help on-demand-paging memory
  manager a bit -- pelpel
- Changed all occurances of " ?" in strings to "? ". --takkaria
- Renamed inappropriately called global array 'town' to 'town_info', also
  moved some boolean town_type members into 'flags', in order to support
  dungeon town information subcommand of do_cmd_knowledge -- pelpel
- Commented out or moved many local variables causing 'unused' warnings,
  because of badly placed if 0's -- pelpel
- Renamed 422colors.prf to 422color.prf, to make it fit with the 8.3 naming
  convention -- pelpel
- Entirely removed function definining macros from script.c, because
  it can confuse some compilers (a lcc case was reported), and some
  preprocessor reports syntax error for missing macro arguments -- pelpel
- Some, if not all, command line options are documented -- pelpel
- 1) Slightly reorganised menus in the Mac ports, because there were so
  many of them on the menu bar. 2) added a switch (-b) to the GCU port
  to select multiple terms or one big screen. 3) the GTK port issued
  huge number of fatal warnings if the graphics mode was turned on and off.
  4) Compiled latest V CVS with main-gtk.c in T.o.M.E. and fixed some
  portability problems.  -- pelpel
- Exported cur_hgt and cur_wid to lua by request of Fearof4s. (takkaria)
- Updated the lua help files thanks to Fearof4s and Chris Hadgis
- Updated lua_ques.txt to fix some misinformation. -- fearoffours
- More lua documentation fixes, particularly adding square brackets to field 
  names on lines that would allow this without mucking up colour formatting.
  -- fearoffours

Dungeon changes:
- A fair number of dungeon guardians lost their defined artifact drop
  and got a randart drop instead. The removed arts are back top normal
  behavior(can be found)
- There should be less not-at-all secret "secret" doors.
  This does *not* mean that ancient prob, but those mountains enbedded in
  plain wall in Barrow-Downs, for example -- pelpel
- Some spells can now stay in effect for a while, like a cloud of poison
  will stay in place and poison everything passing in it
- Streamers use small tress instead of trees, a la KAngband and
  variants that borrowed it's code. And they should look more like
  streamers in most dungeons -- pelpel
- Neither player or monsters can see through, breath, or cast spells
  over small trees, that are outer wall in Mirkwood -- arena levels
  were too nasty otherwise... -- pelpel
- Moved wiz_dark() implementing the maze level from move_player() to
  process_player(), so that a spellcaster can no longer do magic mapping--
  detect monsters--detect traps then casting teleport as often as s/he
  wishes to make things incredibly easy. Because of my laziness detected
  traps aren't displayed if they are out of sight. This would require
  tremendous hack. Anyway, don't worry, they are still remembered -- pelpel
- Added a dungeon flag that prevents generation of streamers, and
  gave it to those with water/lava rivers and places like Numenor
  and the Sacred Land of Mountains. Maze and evolving levels don't
  require this. Also made lava deeper (dlev 34 or below). Trees can
  appear on any flat levels. And eliminated undesirable calls to
  the RNG in the streamer code -- pelpel
- Rewrote place_new_way() so that it doesn't create unconnected dungeon
  sections, destroy outer walls of rooms, or dig room corners -- pelpel
- Angband dungeon now adjusts monster levels to the dungeon level.
  The monsters here will have a minimun level in the range of:
  level / 2 to level. So at level 67 the lowest monster you can encounter
  will be level 33. This means that if a white icky thing is generated
  it will be a level 33 white icky thing. If the base monster level is higher
  then nothing is adjusted.
- Altars now have CAN_RUN flag, so that you no longer see the
  message "You cannot run in that direction" when trying to run
  across them -- pelpel
- Put yet another fractal code (unlike the others it's quite simple)
  in the level filler generator, and added a F: parameter in d_info.txt
  to control its behaviour. Its syntax is FILL_METHOD_#, where # is
  0: use the first filler w/o calling RNG (for Angband, Mirkwood etc.),
  1: the same as the previous versions (default), 2: slightly smoothed,
  3: more smoothed, or 4: max smoothing (initial step of 8 grids) -- pelpel
- No more shafts in the halls of mandos
- Tweaked the door code a bit so that some doors are much harder
  to find -- pelpel
- The inn in Bree is now The Prancing Pony.  -- Kusunose
- Small levels cannot generate full levels anymore

Bug fixes:
- Normal (non-vampire) races didn't get mana regenerated at Inn -- pelpel
- Fixed the monster casting at other monsters but targetting you bug
- Sacrificing wands now decreases charges
- The random text code left files open in many error cases -- pelpel
- Fixed more running problems (FEAT_SAND and FEAT_ASH) -- pelpel
- Some routines called malloc/free instead of C_MAKE/C_FREE in
  the vault generation -- pelpel
- One wrong sign in the fractal cave code (vertical average) -- pelpel
- Fixed the store info file thanks to wrabhit23
- Ego items had extra spaces in their names -- pelpel
- (XAW)Terminals used wrong names. USE_EGO_GRAPHICS didn't even
  compile -- pelpel
- The Mathom house acted like a normal shop when selling.  -- Kusunose
- Many room walls didn't have the CAVE_ROOM flag set -- pelpel
- More running problem (small trees in Mirkwood) -- pelpel
- final artifacts were not generated if they are k_info artifacts.
  -- Kusunose
- Fixed get_com interface for lua
- Squelch on sense now destroys {good} items if it's told
  "destroy good", but only when the "strong" pseudo-ID is in
  effect. Doing so for the "weak" method would be too dangerous -- pelpel
- '-s' crashed the game. Thanks kobayashi for the fix -- pelpel
- Doors are remembered, so that they work better with easy_open.
  The easy_open code now performs checks for the perennially hard-to-handle
  feature mimic field -- pelpel
- monster_carry() could cause permanant artefact loss. A similar code
  in quests and guardian artefact generation are also fixed -- pelpel
- Do not drop from wild if player were not in wild mode in previous turn;
  it put player in wrong place and could crash the game.  -- Kusunose
- Summoning monsters from totems could crash the game.  -- Kusunose
- The Heavy Crossbow of the Elves was 'the ultimate armor' in the
  fully identified description.  -- Kusunose
- Fixed a bug in the hook code that may or may not be the cause of
  various quest-related bugs -- pelpel
- Fixed a bug in the 6 monster randquest thanks to Louis-Frederic Michaud
- Fixed the "automatic ego filter" bug in the squeltch filter -- pelpel
- Made panel_bound() more paranoid about the current dungeon size,
  to prevent many big screen-related crashes -- pelpel
- Beastmaster Shanty overpayed a bounty if monster's corpses are stacked.
  -- Kusunose
- A failure in disarming traps using easy-disarm caused another attempt
  at disarming traps (because it calls move_player_aux which calls
  do_cmd_disarm_aux which calls move_player_aux...), growing call
  stack infinitely. It's dangerous, and, in fact, players were totally
  safe from traps (messages said "You set off...", but traps were never
  activated) -- pelpel
- Black breath could crash the game (it's really evil, isn't it :) 
  Thanks Kevin W. Thomas for the patch -- pelpel
- map_info() had problem with walls mimicking floors -- pelpel
- Polymorphing random effect of Chaos Warriors could crash the game.
  Special thanks for Kevin W. Thomas for the detailed analysis
  of the problem -- pelpel
- Dungeon town generation could crash the game. Thanks Mogami
  for the analysis of the problem -- pelpel
- Supplied missing suid code in 1) savefile removal action in the startup
  screen, 2) dungeon savefile removal, and 3) bone file removal.
  Thanks kobayasi for the patch -- pelpel
- Special level names wherent corrently displayed if the N: line was the
  first of the file in lib/dngn
- '/' in item selection didn't update screen correctly -- pelpel
- Level generation could cause infinite loop in the Sacred Land of
  Mountains -- pelpel
- Player ghosts were disabled in a way causing special feeling on
  every level -- pelpel
- Took 64-bit safe RNG from Vanilla -- pelpel
- Wide light radius worked in the small scale wilderness map,
  where it should have been WILDERNESS_SEE_RADIUS -- pelpel
- Since streamers can create unconnected dungeon sections, the code for
  it is moved after stair and player allocation -- pelpel
- Some player_type fields and corresponding lua interface definitions
  were of different types. Fix thanks to rr9. -- pelpel
- Gave SPECIAL_GENE flags to the k_info.txt entries of SPECIAL_GENE
  special artefacts -- pelpel
- Player is now guaranteed to have initialive after entering a level.
  Thanks Joseph William Dixon for the patch -- pelpel
- The skill increase/decrease code was unable to detect underflow -- pelpel
- Full map command displayed only half of current dungeon level when 
  bigtile mode is used.  Thanks for Takeshi Mogami for tha patch
  -- Kusunose
- Various spell effects that polymorph monsters could crash the game.
  -- Kusunose
- Compare weapons command miscalculated muliplying bonus.  -- Kusunose
- Fixed junk artifacts and music instruments stacking bug in stores
  -- Kusunose
- Capped max number of extra blows at 2 when the limit_blow flag is set
  in two places -- pelpel
- Cancelling a scroll of reset recall didn't work.  -- Kusunose
- One was able to have another entry in the score file for a dead/retired
  character by loading him/her with the -w option, then answering 'n' to
  the wizard mode confirmation. Bug report and fix (for Angband 3.0.1, but
  applicable for all variants) by Hallvard B. Furuseth, Takeshi Mogami and
  Robert Ruehlmann -- pelpel
