root/trunk/changes.txt

Revision 684, 10.4 kB (checked in by takkaria, 4 months ago)

Update the changelog.

Line 
1 Angband 3.1.0
2 =============
3
4 This is an Angband development version -- it may be buggy, so be warned!
5
6 Thanks for this release go to: Eytan Zweig, pelpel, Kenneth Boyd,
7 J.D. White, and more
8 XXX fill in before release
9
10 Leon Marrick's dungeon generator from O was imported briefly, but since
11 he wasn't around to answer questions or improve it at all, it's been
12 reverted (see revisions 306 and 612).  Also, using the 3.0.x dungeon
13 generator makes it much easier to balance the object allocation changes.
14 The dungeon generator is scheduled for some attention sometime in the
15 3.1.x series, but it's not my main concern right now.
16
17 Noticeable up-front UI changes
18 ------------------------------
19
20  * Add EyAngband-style quickstart option.
21  * Notes, like NPP and FA, except with brand new code by J.D. White.
22    (#10)
23  * Add a trap detection indicator (#19)
24  * Make status bar display all timed effects, left-to-right, which
25    involves moving the dungeon level to the bottom of the left-hand
26    display. (#191)
27  * Add show_lists option, which is the same as always_show_lists in
28    Ey. (#25)
29  * Auto-wield birth items (#24)
30  * Change the object information screen quite a bit: (#214, #26)
31    - Show average damage for weapons and ammo (#26)
32    - Make descriptions a fair bit terser (#399)
33    - Show breakage chance for ammo
34    - Track item origin, so every item has a tag telling you where it
35      came from (#149)
36  * Recolour the monster recall: (part of #152)
37    - Monster's depth is in red if it's beyond maximum depth, light green
38      otherwise.
39  * Add how many items the player already has when buying something at
40    the store.  (closes #151)
41  * Allow use of the space bar to advance a screenful in all
42    menus.  (#244)
43  * Make all menus wraparound at the top/bottom.  (#244)
44  * Monster recall display now cycles through monsters in level order,
45    not in the order that the monster definition file is written
46    in.  (#302)
47  * Add an indication of maximum capacity in the inventory
48    display.  (#358)
49  * Menus should use 1234567890 as little as possible for "tags".  (#292)
50  * Remove the "depth_in_feet" option, instead displaying both the
51    dungeon level and the depth everywhere.
52  * Ensure that store-bought and birth-given torches have the same number
53    of turns for stacking purposes.
54  * Death screen now uses scrollable menu. (#416)
55  * Drop squelched items
56  * Append {tried} to tried items in the object browser (r606)
57  * Put {tried} items before untried items in the object browser
58  * The monster list display has a little more colour-coding
59  * Death menu now uses a scrolly menu.
60
61
62 Gameplay
63 --------
64
65  * Remove autoscum.  (#365)
66  * Make point-based points worth less gold.
67
68 Detection:
69 Try a different approach at detection: make all of magic mapping and
70 detect trap/door/stair/monster/item/treasure use the same width and
71 height rectangular area around the player.
72
73 Stores:
74  * Phase Door is now a staple item.
75  * Start stocking deeper items as the character descends.
76
77 ID:
78  * Make ID reveal all powers of an object, and remove *ID*.  (#158)
79  * Make pseudo-id not occur whilst resting, but also make pseudo-ID
80    lengths shorter (by a little over half) to compensate.
81  * Some items, when worn long enough, get automatically ID'd
82  * Items pseudo-id'd as {average} are automatically ID'd, and thus will
83    stack properly
84  * Make wands/staffs stack even when un-ID'd
85  * Remove "good" pseudo-ID, replace with "magical" -- for non-cursed
86    non-average non-ego non-artifacts
87  * Add "strange" pseudo-ID, for when items have mixed blessings
88  * Stop automatically cursing all bad weaponry
89  * Make weak pseudo-id notice the difference between magical and
90    excellent
91  * Stop making rings of Stupidity, Weakness, and Woe.
92  * Allow any/all rings/amulets to be cursed if the game wants to
93    generate a "bad" item.  This is liable to be rethought in the future.
94
95
96 Combat:
97  * On shooters, slays affect rolled damage, not total damage, like
98    combat.  Also, transfer slays and brands from the shooter to
99    ammunition. e.g. Cubragol is firebranded.  This tones down ranged
100    combat quite a bit at the high end.
101
102 Monsters:
103
104 Monsters have only had one change, but it's not a very noticeable one
105 (hopefully): monster HP is specified as an average value around which to
106 randomise, instead of using a "12d5"-type calculation.  Uniques always
107 have the number of HPs specified in the monster.txt file, like before.
108
109 Pack AI for trying to confront the player in rooms was exploitable: it
110 was not considering open spaces created by digging creatures or
111 stone-to-mud, making it possible for the player to clear "safe" open
112 space at the side of a room.  Now the pack AI tries to attack in any
113 open space where the player can be surrounded, not just room interiors.
114
115
116 Objects:
117 #310 #228 #311 #313 #316
118
119 There is a new object allocation algorithm, something like the Sangband
120 system but not quite the same.  This made it possible to rebalance the
121 object rarities with better accuracy and knowledge of how such changes
122 would affect the game.
123
124 As a result, object rarities have undergone fairly extensive changes,
125 especially with regard to consumables and rechargeables.  Some items
126 have been removed, some new ones have been added, and most rarities have
127 been changed.  There are a few quirks with the allocations as they
128 stand, like speed potions being abnormally common on the first few
129 dungeon levels.
130
131 A selection of the most notable changes appear below:
132
133  - Water and Apple Juice are gone.
134  - Various potions have a tendency to appear in stacks.
135  - Reduce the number of food varities in the game.
136  - Add a new timed telepathy effect to some items
137  - Make potions of CLW, CSW, CCW heal a proportion of wounds, not just
138    a set value.  In the process, make all the potions more useful, to
139    the point where even CLW can be used usefully; CSW is about as useful
140    as the old CCW, and CCW is now only found in the dungeon -- albeit in
141    piles.  (#313)
142  - Add a selection of "gain one, lose one" stat potions to replace the
143    old stat loss potions-- they guarantee a stat to raise and reduce one
144    randomly.
145  - Stop Broken Daggers being generated, make Filthy Rags [0,+0], and
146    make Broken Swords (+0,+0) by default.
147  - Stop fixing the flavour for slime mold juice.
148  - The Elven Rings have a variety of healings, at the suggestion of
149    Timo.  Also, apply some other changes from the TV-patch (r428)
150  - Bad potions (confusion and the like) have a more damaging effect than
151    good potions when thrown.  This is like a lazy version of potions
152    actually having the proper effect on monsters they hit.
153  - Make torches always be found at 5000 turns, and lanterns at 7500
154    turns
155
156
157 Port
158 ----
159
160  * X11: Add -x commandline option for choosing the location of the
161    settings file (#333, patch by morth)
162  * GTK2: Continue work; add term windows, graphics, etc. and also some
163    special dedicated display windows, like "messages" and "monster
164    list". (shanoah)
165
166
167 Code-level
168 ----------
169
170 A lot of code-level cleanup has been applied to this release, much of it
171 still in flux.  Many new files have been split out of existing files,
172 which should now have much more self-explanitory names.
173
174 There is also a new generic effects handler so that all item activations
175 and use abilities share the same code; this replaces use-obj.c and a lot
176 of descriptions from lib/edit/object.txt. (#234)
177
178 Memory handling has been reviewed.  Now, all code should assume that
179 allocation will succeed, just like it did already.  There is also a
180 realloc()-style function along with its own hook.  string_make() has
181 been modified to no longer return a "const char *", and so all the code
182 now only uses "const" when it means "const".  Some macros have been
183 removed.
184
185 "Elly" rewrote the message and quark packages, previously in util.c,
186 and in the process split them out into their own z- files.  The z-msg
187 package is now much more understandable but marginally less "efficient",
188 and certainly less "optimised".
189
190 Option definitions have moved to option.h, and the names and
191 descriptions for options have moved to option.c.  Option data is now
192 stored in a much more visually compact way, much more suitable for
193 editing than the old system was. (#64)
194
195 Additionally, a new file API has been introduced which combines the
196 previous mishmash of fd_*() and my_f*() calls into a simpler, better
197 documented interface.  (#137)
198
199 Set up an event system for UI display updates, where the game
200 communicates with the UI by sending messages saying that something's
201 changed that the UI might be interested in, rather than deciding that
202 specific things should be redraw.  The main screen updates all use this
203 system now.  Amongst other things, this system should help things like
204 the borg and graphical frontends, because they can hook right into
205 changes in state.  (#348)
206
207 object1.c and object2.c have been split out into a series of files,
208 obj-{desc,make,ui,util}.c.  This makes it much easier to remember what
209 is where.  Also, object_desc() has seen a rewrite, so hopefully it's a
210 lot more hackable now.
211
212 The beginnings of an organised code documentation scheme have started,
213 using doxygen.  Makefile.std provides an easy mechanism to generate docs
214 (try "make docs").
215
216 There is some new and preliminary load/save code, which has involved
217 creating a host of new files:
218  - z-blockfile deals with "tar"-like blocks of data, where each block
219    contains a number of records
220  - z-smap is a serialisable map type, used to store values in the
221    blockfile
222  - compress is a quick and space-efficient compression algorithm stolen
223    from "liblzf".
224
225 The new code is much easier to use and read, but it's not ready for use
226 by anyone who cares about their characters yet.
227
228 Other assorted changes:
229  * Remove a whole load of useless or unused configuration options from
230    config.h.
231  * "make -f Makefile.inc depgen" will output "Makefile.new", which then
232    contains up-to-date dependencies for the project.
233  * Add "flags" back to object_type, removing the need for the hacky
234    "xtra" bytes.  This paves the way for e.g. fireproofing scrolls
235    later. (#120)
236  * Makefile for MSVC/NMAKE command-line build.  Currently works with
237    MSVC 6+; flags could use tweaking for MSVC 8+.
238  * Clean up racial and class skill values into arrays.  (Kenneth Boyd)
239  * Use header file guards in all header files, and use a consistent
240    naming scheme for them ("Elly")
241  * Add a very basic test harness for "unit testing" of the game's code,
242    though this is barely used at present.  Thanks to Fennec for cleaning
243    this up a bit.
244  * Introduce the one_in_() notation to the game, for percentile dice.
245
Note: See TracBrowser for help on using the browser.