ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ChangeLog
(Generate patch)

Comparing deliantra/server/ChangeLog (file contents):
Revision 1.1 by root, Fri Feb 3 07:11:13 2006 UTC vs.
Revision 1.2 by pippijn, Thu Sep 7 20:50:20 2006 UTC

1Changes in top level CVS tree. A few notes when putting entries in this 1Not used
2file:
31) Please include a date in the form yyyy/mm/dd (yes, us americans are
4screwed up relative to most the world, but some consistent date format
5is needed for this file.)
62) You don't need to go into exacting detail of the changes. This file
7is mostly meant to give an idea to others what has changed - you don't
8need to recreate the code here. If you change fixes a reported bug
9on the mailing list, please provide a brief description of the bug
10fixed. But please do try to include a useful description of
11what changed. Saying something like 'General cleanup - just whitespace
12changes' is much more useful than 'misc edits' or 'code cleanup'.
133) Please include your name with the changes you make.
144) Whenever making an update, please update this file, no matter how
15small - this just lets others know that the file has changed if nothing
16else. With this, include the file(s) that you changed.
17------------------------------------------------------------------------------
18Changes for CVS:
19
20include/newserver.h, server/login.c, socket/init.c, socket/loop.c:
21 drop any connection that fails to login successfully after
22 MAX_PASSWORD_FAILURES attempts (defaults to 5)
23doc/Developers/protocol: document properly the byte counts of item flags,
24 and include documentation of the itemcmd setup option.
25Brendan Lally 2006-01-30
26
27Custom commands-related fixes.
28plugins/cfpython/cfpython.c: fix custom command handling.
29server/plugins.c: try all plugins for custom commands.
30-----
31Moved the global event 'LOGOUT' from when player actually disconnects to when
32 player logs out and is asked whether to play again or not.
33Modified files:
34 server/apply.c main.c
35Ryo 2006-01-15
36
37socket/request.c: In ReplyCmd() make sure the reply does not cause a buffer
38 overflow.
39Andreas Kirschbaum 2006-01-13
40
41socket/request.c: add some better checks in addspell packet formation, fix a
42 crash bug.
43Brendan Lally 2006-01-13
44
45server/c_object.c: stop rename crashing if there is no name to rename to
46 when object is passed by number
47--
48server/c_object.c: allow the rename command to take tag of the item to be
49 renamed, so that clients can form rename commands properly.
50Brendan Lally 2006-01-11
51
52server/c_range.c: allow spells cast by number to also have options passed to
53 them
54Changelog: Commit the changelog entry for the last commit.
55Brendan Lally 2006-01-10
56
57 Spell listing support:
58 allow 'spell_paths' to be sent to requestinfo, reply with number:path
59 change return type of SP_level_spellpoint_cost to sint16
60 add spellmon as a setup value, if it is set;
61 send path attunement/repulsion/denial in stats
62 send data about spells in addspell packets
63 send updates to that data
64 Affected files:
65 common/living.c
66 crossedit/stubs.c
67 doc/Developers/protocol
68 include/funcpoint.h, newclient.h, newserver.h, player.h, sockproto.h,
69sproto.h
70 random_maps/standalone.c
71 server/apply.c, login.c, spell_util.c, init.c, loop.c, request.c
72 --
73server/c_range.c: allow cast/invoke and prepare commands to take item tags
74 as well as spell names
75Brendan Lally 2006-01-09
76
77Apply modified patch #1396303 (add setting to disable stealing from players)
78by Terry Brown. It adds a new option "no_player_stealing" to the settings
79file. If set, it prevents players from stealing from other players. It
80defaults to ON.
81--
82doc/settings: Add documentation for new setting.
83include/global.h: Add new field to settings structure.
84lib/settings: Add new option no_player_stealing.
85server/init.c: In load_settings() recognizes the new option.
86server/skills.c: In attempt_steal() prevent stealing from PLAYER if option is
87 set.
88Andreas Kirschbaum 2006-01-08
89
90include/newserver.h, socket/{init.c,request.c}: Remove unused fields ext2 and
91 ext_title_flag from NewSocket structure.
92server/skills.c: Fix/improve feedback messages for stealing skill.
93plugins/cfpython/cfpython.c, server/plugins.c: Just whitespace changes to make
94 it conform to programming_guide.
95plugins/cfpython/cfpython.c: Make sure context->options always is initialized.
96server/main.c: Make code more readable; use snprintf where appropriate.
97crossedit/Cnv/CnvPrompt.c: Make file compilable with Ansi C89 compiler.
98Andreas Kirschbaum 2006-01-08
99
100Global event Python scripts now are in subdirectories. This makes it easier to
101 distribute "Python packages". Modified file:
102 plugins/cfpython/cfpython.c
103Ryo 2006-01-07
104
105common/{item.c,treasure.c}, server/{apply.c,gods.c,spell_effect.c}: Use named
106 constants instead of numbers.
107server/monster.c: Use correct field name in move_monster().
108Andreas Kirschbaum 2006-01-07
109
110Summon pets less often to the owner on tiled maps.
111--
112server/pets.c: In remove_all_pets() and pet_move() use on_same_map() to check
113 whether the pet is too far away.
114Andreas Kirschbaum 2006-01-07
115
116Change meaning of "items are on same map": for tiled maps now two objects are
117also considered to be on the same map if they are on diagonally adjacent maps.
118This solves the issue that a pet can be only one tile away from the owner but
119still considered not to be on the same map.
120--
121common/map.c: In on_same_map() also consider diagonally adjacent maps.
122Andreas Kirschbaum 2006-01-07
123
124Added regions support for plugins. Affected files:
125 include/plugin.h sproto.h
126 server/plugins.c
127--
128Added regions to Python plugin. Affected files:
129 cfpython/include/cfpython.h cfpython_map_private.h
130 cfpython/cfpython.c cfpython_map.c cfpython_region.c Makefile.am Makefile.in
131New files:
132 cfpython/include/cfpython_region.h cfpython_region_private.h
133 cfpython/cfpython_region.c
134--
135In Python's Object, Archetype is now a property and not a method. Affected files:
136 cfpython/include/cfpython_object_private.h
137 cfpython/cfpython_object.c
138--
139Cleaned obsolete include/plugproto.h.
140Ryo 2006-01-07
141
142Make teleporters hidden below the floor work again.
143--
144server/time.c: In move_teleporter() use object above floor instead above
145 teleporter to operate one.
146Andreas Kirschbaum 2006-01-07
147
148Fix issues with map tiling.
149--
150server/move.c: In move_ob() make sure inserting multi-part objects into tiled
151 maps work.
152server/spell_attack.c: In cast_cone() insert spell effect at correct position
153 for tiled maps.
154Andreas Kirschbaum 2006-01-07
155
156common/map.c: Allow map tiling paths to be reletive.
157server/main.c: Template maps: Impliment using fixed maps as templates, and
158 improve reletive path support for them.
159Alex Schultz 2006-01-06
160
161Make SIGNs (including Magic Mouths) trigger for DMs again. Does not reduce the
162counter if in 'wizpass mode.
163--
164server/apply.c: In apply_sign() ignore DMs.
165Andreas Kirschbaum 2006-01-04
166
167server/spell_effect.c: Apply patch 1394861 - fixes magic walls. In conjuction
168 with archetype changes, look at the spell object (and not created wall)
169 to see if it blocks.
170server/c_chat.c: Apply patch 1389113 - orcknuckle messages appear in
171 same window.
172MSW 2006-01-01
173
174Prefer marked item when throwing objects.
175--
176server/skills.c: In find_throw_ob() prefer marked item.
177Andreas Kirschbaum 2006-01-01
178
179Make EXITs affect DM players again.
180--
181common/object.c: In check_move_on() ignore only slow movement penalties for
182 DMs.
183server/apply.c: In move_apply() ignore anything but EXITs for DM players.
184Andreas Kirschbaum 2006-01-01
185
186Make forked lightning correctly traverse tiled maps.
187--
188server/spell_attack.c: In forklightning() insert forked part into correct map.
189Andreas Kirschbaum 2006-01-01
190
191Properly unready forgotten spells. Prevents crashing the server if casting a
192forgotten spell.
193--
194include/sproto.h: Add new prototype.
195server/{apply.c,gods.c}: Call player_remove_range_ob() when forgetting a
196 spell.
197server/player.c: Add player_remove_range_ob() to unready a given object.
198Andreas Kirschbaum 2006-01-01
199
200Improve the commands learn_spell and forget_spell: now these commands accept
201partial spell names and print sensible error messages if they fail.
202--
203include/sproto.h: Remove prototype for now static function.
204lib/wizhelp/{forget_spell,learn_special_prayer,learn_spell}: Update help files.
205server/c_wiz.c: Add parameter op to get_spell_by_name() for printing error
206 messages to op. Allow partial matches for spell name. In
207 command_learn_spell_or_prayer() and command_forget_spell() report an error
208 to the player instead of an error message to the server log file.
209Andreas Kirschbaum 2006-01-01
210
211Fix reference-related crashes.
212 plugins/cfpython/cfpython.c
213Ryo 2006-01-01
214
215Apply modified patch #1391648 (FIX: new movement code and generators) by Lalo
216Martins. This fixes bugs #1383398, #1383392, #1375643, #1372035, #1370409; all
217bugs are related to objects stacking which should not stack.
218--
219common/map.c: In ob_blocked() consider tiles with living objects as blocked.
220Andreas Kirschbaum 2005-12-31
221
222Don't print "file not found" for global events.
223 plugins/cfpython/cfpython.c
224Ryo 2005-12-31
225
226Changed the way Python scripts are called. Now script don't share variables anymore.
227 Fix a memory leak.
228 plugins/cfpython/cfpython.c
229Ryo 2005-12-28
230
231Applied patch #1383359 (Fix death message) courtesy Anton Oussik
232( https://sourceforge.net/tracker/index.php?func=detail&aid=1383359&group_id=13833&atid=313833 )
233 server/attack.c
234Ryo 2005-12-27
235
236server/skills.c: In steal() do not give exp for stealing from pets since this
237 can be exploited to gain exp over and over.
238Andreas Kirschbaum 2005-12-23
239
240server/c_party.c: fix crash with party obsolescence (->next on freed item). Added
241 get_firstparty() to get firstparty private var needed for plugin.
242
243-------
244Added party information to plugin functions. Plugins can change player's party
245 or marked item.
246 New files:
247 plugins/cfpython/include/cfpython_party.h cfpython_party_private.h
248 plugins/cfpython/cfpython_party.c
249 Modified files:
250 include/sproto.h: add new functions prototypes.
251 include/plugin.h: party-related defines
252 plugins/common/include/plugin_common.h: new party functions.
253 plugins/common/plugin_common.c: new party functions.
254 plugins/cfpython/include/cfpython.h: add new include.
255 plugins/cfpython/include/cfpython_object_private.h: marked item/party getter/setter.
256 plugins/cfpython/cfpython.c: add GetParties to Crossfire module.
257 plugins/cfpython/cfpython_object.c: MarkedItem setter, Party getter/setter.
258 server/plugins.c: new callbacks for party, marked item setter.
259Ryo 2005-12-17
260
261server/attack.c: Make spells destroy objects again.
262Andreas Kirschbaum 2005-12-15
263
264Moved natural dragon skin resistances from "statistics" to "resistances".
265 server/c_misc.c
266Ryo 2005-12-13
267
268Fix Windows compilation after Andreas's changes.
269include/win32.h: define WIFEXITED and WEXITSTATUS.
270Ryo 2005-12-11
271
272Fix buffer overflows which can be triggered remotely.
273--
274common/porting.c: Re-implement open_and_uncompress(). The new implementation
275 should not contain any buffer overflows anymore. It also fixes possible
276 exploits due to funny characters in file names.
277plugins/cfpython/cfpython.c: Use snprintf() to truncate long strings.
278server/login.c: Reject invalid user names.
279socket/loop.c: Make overflow detection work while reading from socket.
280 Properly re-allocate memory for listen command. Fix buffer overflow for too
281 long command names.
282Andreas Kirschbaum 2005-12-11
283
284lib/collect.pl.in: General cleanup - just whitespace changes.
285Andreas Kirschbaum 2005-12-11
286
287Prevent the map loader from crashing when loading maps with incorrect headers.
288Changes are based on patch #1275563 by Kevin Rudat.
289--
290common/map.c: Do not dereference NULL value for map headers without parameter.
291Andreas Kirschbaum 2005-12-11
292
293Apply modified second part of patch #1275563 (Crossedit: fix map attributes
294window) by Kevin Rudat: let crossedit save/load tiling paths as the mapmaker
295entered them, rather than saving the normalized version.
296--
297common/map.c: Delay path normalization from map loading time
298 (load_map_header()) to access time (load_and_link_tiled_map()) if running
299 as editor.
300Andreas Kirschbaum 2005-12-11
301
302server/move.c: In move_ob() print error message instead of crashing: check
303 passed arguments before accessing them.
304common/object.c, server/{pets.c,player.c,spell_attack.c,time.c},
305socket/request.c: Properly check for P_OUT_OF_MAP after calling
306 get_map_flags().
307Andreas Kirschbaum 2005-12-10
308
309common/path.c: add missing global.h include.
310make_win32/crossfire32.dsp: add path.c and some headers.
311Ryo 2005-12-09
312
313Apply slightly modified first part of patch #1275563 (Crossedit: fix map
314attributes window) by Kevin Rudat: make the map attributes dialogs work again.
315--
316crossedit/Attr.c: Remove code to handle map attributes dialogs.
317crossedit/Crossedit.ad, crossedit/Crossedit.ad.h: Update X11 resources.
318crossedit/Defines.h: Add typedef for MapAttr.
319crossedit/{Edit.c,Edit.h}: Remove/update code to handle map attributes
320 dialogs.
321crossedit/Makefile.am: Add new files MapAttr.c and MapAttr.h.
322crossedit/Makefile.in: Rebuilt.
323crossedit/{MapAttr.c,MapAttr.h}: New functions containing code to handle the
324 main map attributes dialog.
325crossedit/Cnv/CnvPrompt.c: Convert CnvPromptStr into char array.
326Andreas Kirschbaum 2005-12-09
327
328Remove a strange feature of normalize_path(): it did convert the path
329"<path1>//<path2>" into "/<path2>". Also add a stand-alone application for
330regression testing this function, and fix a few issues with ".." in path name.
331--
332common/path.c: New file containing the modified implementation and the
333 stand-alone application.
334include/path.h: Prototypes for path.c.
335server/main.c: Remove implementation; call renamed function.
336common/Makefile.am, include/Makefile.am: Add new files.
337common/Makefile.in, include/Makefile.in: Rebuilt.
338Andreas Kirschbaum 2005-12-08
339
340server/ban.c: General cleanup - whitespace changes, rename variable names.
341 Should not affect function.
342server/apply.c: In player_apply() do not consider DM PLAYERs to be DM-created
343 items. This prevents the server from destroying the player object (and
344 crashing shortly afterwards).
345Andreas Kirschbaum 2005-12-07
346
347Apply slightly modified patch #1293744 (Inversed ban entries) by Thomas
348Equeter.
349--
350server/ban.c: In checkbanned() recognize '~' prefix to allow entries. Also fix
351 possible buffer overflow.
352Andreas Kirschbaum 2005-12-07
353
354Apply modified patch #1293774 (Kick banned hosts at once) by Thomas Equeter:
355disconnect new connection for banned host right after connecting. Also add
356support for user name in ban files.
357--
358lib/ban_file: Update comments and examples to new syntax.
359server/ban.c: Allow a NULL user name to check for host name only.
360server/c_misc.c: In receive_player_password() check for banned user name.
361server/player.c: In add_player() remove check for banned host - this was
362 already done if we reach this state.
363socket/init.c, include/sockproto.h: Pass ip address as a string.
364socket/loop.c: In doeric_server() check for banned host after a new connection
365 was accepted.
366Andreas Kirschbaum 2005-12-07
367
368Apply patch #1371956 (code cleanup patch) by Stefan Huehner: fix old-style
369function declarations and prototypes to proper Ansi C syntax. This patch
370allows the compiler to check function arguments and also removes some warnings
371when compiling with -Wstrict-prototypes.
372--
373All affected files: Convert "void foo()" into "void foo(void)".
374Andreas Kirschbaum 2005-12-06
375
376Fix bug #1173563 (Creator created Bombs malfunction): Creators and Converters
377now copy items from inventory. Fallback (for empty inventory) is the old
378behavior to create the new item from other_arch. If the inventory contains more
379than one item, a random one is picked.
380--
381common/loader.l: Mark inventory of CREATOR and CONVERTER as
382 FLAG_CONTENT_ON_GEN.
383common/loader.c: Rebuilt.
384common/object.c: Update x/y/map for non-head parts to make inserting multipart
385 objects via insert_ob_in_ob_at() work.
386server/apply.c: In convert_item() consider inventory for item to create.
387server/time.c: In move_creator() consider inventory for item to create. In
388 process_object() ignore item flagged as FLAG_IS_A_TEMPLATE. (Otherwise
389 bombs in inventories would explode prematurely.)
390Andreas Kirschbaum 2005-12-05
391
392New plugin property for player: marked item, added Python wrapper.
393Modified files:
394 include/plugin.h
395 plugins/cfpython/cfpython_object.c
396 plugins/cfpython/include/cfpython_object_private.h
397 plugins/common/include/plugin_common.h
398 plugins/common/plugin_common.c
399 server/plugins.c
400
401plugins/cfpython/cfpython.c: fix invalid reference management. Don't return NULL but Py_None.
402Ryo 2005-12-04
403
404Fix bug #1372194 (stairways now block movement).
405--
406random_maps/exit.c: In unblock_exits() check correct field move_block to find
407 blocking exits.
408Andreas Kirschbaum 2005-12-03
409
410server/apply.c: In move_apply() properly decrement recursion counter.
411Andreas Kirschbaum 2005-12-02
412
413server/spell_attack.c: Add some missing P_IS_ALIVE checks - these weren't
414 needed in the past because living objects would block movement -
415 with new movement code, isn't always the case.
416server/time.c: Fix player movers so that if the victim doesn't have any
417 movement type, we move it.
418MSW 2005-11-30
419
420common/time.c: In move_teleporter() and move_player_mover() do not affect DMs
421 if FLAG_WIZPASS is set.
422common/object.c: In check_move_on() do not affect DMs if FLAG_WIZPASS is set.
423 This prevents DMs from triggering traps when walking over them.
424Andreas Kirschbaum 2005-11-30
425
426common/map.c: Replace code with OB_TYPE_MOVE_BLOCK - effectively same as what
427 it was.
428include/define.h: Update OB_TYPE_MOVE_BLOCK so that spaces that don't block
429 any type of movement doesn't block objects that also don't have movement.
430 This fixes cases of gates not pushing objects off them.
431server/c_party.c: Remove double use of ->next pointer/loop in
432 confirm_party_password() - fixes crash and likely makes setting party
433 password work more reliably.
434MSW 2005-11-29
435
436common/object.c: Fix wrong comparision operator in free_object2() to make
437 monsters drop loot again.
438Andreas Kirschbaum 2005-11-28
439
440Basically added a parameter to 'skills' command to filter skills. And one char/const char* fix.
441common/anim.c: use const char* for find_animation.
442include/libproto.h: find_animation uses a const char*.
443include/sproto.h: fix prototype.
444server/c_wiz.c: send parameter to show_skills.
445server/skill_util.c: add search parameter to show_skills command.
446Ryo 2005-11-27
447
448plugins/cfpython/cfpython_map.c: use wrappers instead of direct property access.
449plugins/common/include/plugin_common.h: new wrappers for maps.
450plugins/common/plugin_common.c: new wrappers for maps.
451Ryo 2005-11-26
452
453plugins/cfpython/Makefile.in: rebuilt.
454Andreas Kirschbaum 2005-11-23
455
456Plugins can now get archetypes. Added a check in cfapi_object_set_property to
457 prevent changing archtypes.
458Fixed some Python bugs related to map properties.
459Added Crossfire.GetArchetypes and Crossfire.GetMaps to get all archetypes/maps.
460Modified files:
461 include/plugin.h sproto.h
462 plugins/cfpython/include: cfpython.h cfpython_map_private.h cfpython_object_private.h
463 plugins/cfpython/cfpython.c cfpython_map.c cfpython_object.c
464 server/plugins.c
465New files:
466 plugins/cfpython/include/cfpython_archetype.h cfpython_archetype_private.h
467 plugins/cfpython/cfpython_archetype.c
468Ryo 2005-11-20
469
470server/shop.c: adjust minimum value that shop_specialisation_ratio can
471return to 0.1. This should stop some prices being exceptionally high.
472Brendan Lally 2005-11-19
473
474Commit for new blocking code. Not going to dictate all the changes -
475but will outline the broad points. Note also that the
476doc/Developers/objects is updated and goes into more details also.
477- check for P_WALL no longer used - instead, need to use GET_MAP_MOVE_BLCOK
478 and check against movement type of objects.
479- arch_blocked() changed to ob_blocked(), now takes object. Needed because
480 just looking at archetype move_ values is no longer sufficient.
481- find_first_free_spot() changed to take object, since it just calls
482 arch_blocked()
483- FLAG_FLYING removed, now in move type.
484- walk_on/walk_off/fly_on/fly_off removed - now based on move_on and
485 move_off fields.
486- Map space structure extended to hold the move_on/move_off, etc
487 values so that we can shortcut some processing by not having to
488 check every object on the space when something enters it if
489 move_on isn't set.
490- archetypes recollected - boulders needed move_walk to properly trigger
491 buttons.
492- Note that the new plugin code has to be fixed up for the new movement
493 code. Look for FIXME in plugins/cfpython/cfpython_object.c
494MSW 2005-11-15
495
496Apply patch 1352485 newpickup rings/amulets courtesy anonymous user.
497include/define.h: add PU_JEWELS
498server/c_object.c: handle new type.
499server/player.c: handle new type.
500Ryo 2005-11-12
501
502server/plugins.c: Properly update client view after removing objects.
503Andreas Kirschbaum 2005-11-10
504
505server/plugins.c: Properly update client view after changing object names.
506server/plugins.c: Return an empty string if an object has no message. This
507 makes Object.Message() always return a string object, which removes the
508 need for special case code to handle empty messages.
509include/sproto.h, server/monster.c: Declare parameter of communicate() as
510 "const".
511Andreas Kirschbaum 2005-11-09
512
513Implement new functions for the Python plugin: Object.WeightLimit,
514Object.InsertInto(Object), Object.NamePl. Change Object.Name to set both name
515and name_pl. This should prevents scripts from failing to set name_pl.
516--
517plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h:
518 Add prototypes.
519plugins/cfpython/cfpython_object.c: Add callback functions for new Python
520 functions.
521plugins/cfpython/include/cfpython_object_private.h: Add prototypes for
522 callback functions. Add callback functions to Python object descriptors.
523plugins/common/plugin_common.c: Add missing helper functions.
524Andreas Kirschbaum 2005-11-09
525
526server/shop.c: When we are counting unpaid items and their values, to check
527if a player may leave a shop, make certain that we count all of them, and
528don't stop when we have dropped into a container (such as a spellbook)
529Brendan Lally 2005-11-09
530
531plugins/cfpython/cfpython.c: Add missing 'PyType_Ready' calls for map and player,
532 failure to do so crashes with Python objects destructors set to 0.
533Ryo 2005-11-07
534
535server/spell_effect.c: fix WoR not executing on cursed ground with WIZCAST set.
536Ryo 2005-11-06
537
538server/skills.c: In do_throw() abort processing if the thrown object was
539 destroyed before it gets its first move.
540Andreas Kirschbaum 2005-11-06
541
542server/build_map.c: test FLAG_IS_FLOOR too, type == FLOOR is not always enough.
543Ryo 2005-11-05
544
545server/shop.c: In value_limit() return the unmodified item price if not in a
546 shop or not for a player.
547Andreas Kirschbaum 2005-11-05
548
549plugins/cfpython/cfpython.c: added GetPrivateDictionary and GetSharedDictionary
550 methods to keep data between runs and share data between scripts.
551Ryo 2005-11-05
552
553plugins/Makefile,plugins/cfanim/Makefile: Remove files to be generated by
554 configure.
555server/main.c: Fix possible out-of-bounds array access.
556Andreas Kirschbaum 2005-11-05
557
558Fix case for [sg]etReturnValue. Add compare operator for object and map (of course
559 only == is relevant).
560Modified files:
561 plugins/cfpython/include/cfpython_map_private.h
562 plugins/cfpython/include/cfpython_object_private.h
563 plugins/cfpython/cfpython.c
564 plugins/cfpython/cfpython_map.c
565 plugins/cfpython/cfpython_object.c
566Ryo 2005-11-05
567
568aclocal.m4, configure, utils/config.guess, utils/config.sub, utils/ltmain.sh,
569*Makefile.in, plugins/cfanim/Makefile, plugins/Makefile: Rebuilt.
570lib/Makefile.am: Add template-maps to list of directories to create while
571 install.
572Andreas Kirschbaum 2005-11-05
573
574lib/wizhelp/reset: document use of '.' as an argument
575Brendan Lally 2005-11-05
576
577random_maps/treasure.c: Fix out-of-bounds array access if place_chest() cannot
578 find a free spot to place a new chest.
579Andreas Kirschbaum 2005-11-01
580
581Fix bug #1082534 (monks with weapons): Now monks properly are denied from
582using weapons. Only newly created monks are affected since it now relies on a
583force named "no weapon force" in the player's inventory. The problem was that
584become_follower() assumed it was the only means do allow/disallow weapon use.
585--
586server/gods.c: Do not let the god allow using weapons if a "no weapon force"
587 object is present in the player's inventory.
588lib/treasures: add force to monk's treasure list.
589Andreas Kirschbaum 2005-11-01
590
591Fix bug #815620 (CFPython.SetQuantity() doesn't update client): now notifies
592 the client after changing nrof and/or weight.
593--
594server/plugins.c: Re-calculate player's weight and send item change
595 notifications in cfapi_object_set_property().
596Andreas Kirschbaum 2005-11-01
597
598Improve newpickup command: add new flag PU_NOT_CURSED to ignore cursed items.
599--
600include/define.h: Add flag #define.
601server/c_object.c: Add "notcursed" option to pickup command.
602server/player.c: Respect new flag in check_pickup().
603Andreas Kirschbaum 2005-11-01
604
605plugins/cfanim/cfanim.c: remove printf for properties. Export functions for DLL
606 for Win32.
607plugins/cfanim/cfanim.h: remove obsolete definitions (see plugin_common.h).
608plugins/cfanim/cfanim_proto.h: fix definition for exported functions.
609plugins/common/plugin_common.c: add gettimeofday for Win32.
610plugins/common/include/plugin_common.h: add gettimeofday for Win32.
611Ryo 2005-11-01
612
613server/plugins.c: Print error message for event_xxx objects with missing or
614 invalid parameters. Also remove the affected object to prevent multiple
615 error messages.
616Andreas Kirschbaum 2005-11-01
617
618Add new function object_get_env_recursive() to find the outermost environment
619object for a given object.
620--
621common/object.c, include/libproto.h: Add function.
622server/{rune.c,spell_attack.c}: Use function where appropriate.
623Andreas Kirschbaum 2005-11-01
624
625General cleanup of weather code.
626--
627server/weather: Declare many functions and variables as "static", add
628 prototypes for affected functions. Declare some variables as "const".
629include/sproto.h: Remove prototypes for now static functions.
630include/tod.h: Add "const" to strings.
631Andreas Kirschbaum 2005-11-01
632
633Fix bug #1102975 (Bronze items not keeping their + in alchemy): the problem
634was that a formula for full_helmet did exist but not for b_full_helmet. Since
635both helmet's names are "full helmet", the recipe was selected even if using
636the ingredient b_full_helmet. This fix adds new formulae for alternative
637archetypes with the same name as the base object, and makes the server code
638select the matching formula from multiple arch names in the "arch" field.
639--
640common/readable.c: Use new fields to build messages.
641common/recipe.c: Make alchemy work for recipes with multiple base archetypes.
642include/{libproto.h,sproto.h}: Update prototype.
643include/recipe.h: Split string field arch_name into string list fields
644 arch_name and arch_names.
645lib/formulae: Add archetype names to formulae for all items with same name as
646 the base object. Also fix a few name mismatches that prevent any object
647 from matching, and change transmution formulae to normal formulae where
648 base name does not match archetype name.
649server/alchemy.c: Disable debugging code. Make alchemy work for recipes with
650 multiple base archetypes.
651Andreas Kirschbaum 2005-10-31
652
653server/c_wiz.c: Don't crash on "create" a living thing that has some part
654 out of the map. Forbid removing a 'PLAYER' object.
655Ryo 2005-10-31
656
657random_maps/style.c: Pass correct sorting function to qsort(): the sorted
658 array contains pointers to strings, not strings.
659Andreas Kirschbaum 2005-10-29
660
661Fix bug #1236244 (Exp from scrolls): reading a scroll of charm monsters or
662meteor swarm now gives exp for use magic item, not summoning or pyromancy.
663--
664server/spell_attack.c: In mood_change() use skill from scroll, not from spell.
665 In move_swarm_spell() use the spell "owner" as the object casting the
666 spell.
667Andreas Kirschbaum 2005-10-29
668
669include/config.h: DEBUG just been defined, no need to define it again.
670include/win32.h: typedef for socklen_t.
671random_maps/random_map.c: generate_random_map can use a const char*.
672random_maps/rproto.h: fix generate_random_map definition.
673server/plugins.c: EVENT_CRASH doesn't really need a parameter, especially if
674 not initialized :)
675Ryo 2005-10-29
676
677
678Prevent problems (crashes) for large item piles. Now limit nrof to less than
6792^31.
680--
681common/object.c: In CAN_MERGE() pretend that the objects are not mergeable if
682 the nrof sum would overflow.
683common/porting.c: Fix buffer overflow for large numbers in ltostr10(). Also
684 make n=1L<<31 work correctly.
685plugins/cfpython/cfpython_object.c: In Object_SetQuantity() raise an exception
686 for negative nrof values.
687plugins/common/plugin_common.c: Reject negative nrof values in
688 cf_object_set_nrof().
689plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h:
690 Update prototype.
691server/plugins.c: Treat negative nrof as nrof=0 when setting
692 CFAPI_OBJECT_PROP_NROF property.
693server/time.c: In move_duplicator() limit nrof of created items.
694Andreas Kirschbaum 2005-10-29
695
696Fix compiler warnings. Most changes do not change the program (remove unused
697variables, convert "if(x = y)" into "x = y; if(x)"); a few actually fix
698(possible) problems (fix uninitialized variables, fix printf format
699specifiers, fix mismatches between signed and unsigned variables, add missing
700return and default statements).
701--
702Affected files:
703common/{arch.c,init.c,item.c,map.c,object.c,re-cmp.c,readable.c,region.c,
704shstr.c}, crossedit/{Attr.c,Edit.c,Cnv/CnvPath.c}, include/sproto.h,
705plugins/cfanim/cfanim.c, plugins/cfpython/{cfpython.c,cfpython_object.c},
706plugins/cfpython/include/{cfpython_map_private.h,cfpython_object_private.h},
707random_maps/{rogue_layout.c,special.c,square_spiral.c},
708server/{apply.c,attack.c,build_map.c,c_misc.c,c_object.c,c_party.c,init.c,
709main.c,monster.c,pets.c,player.c,plugins.c,shop.c,skill_util.c,spell_util.c,
710weather.c}, socket/{loop.c,request.c}
711Andreas Kirschbaum 2005-10-28
712
713Fixes my previous commit. Should now properly allocate/deallocate the
714faces_sent array.
715--
716common/player.c: Free faces_sent in free_player().
717include/newserver.h: Add field faces_sent_len to NewSocket struct.
718server/player.c: Allocate and copy faces_sent in add_player().
719socket/init.c: Use faces_sent_len in InitConnection().
720socket/loop.c: Initialize faces_sent_len in doeric_server().
721Andreas Kirschbaum 2005-10-28
722
723The archetypes now contain more than MAXFACENUM (5000) faces. The following
724changes remove the fixed limit of the number of faces. The server now
725allocates enough memory to handle all defined faces.
726include/newserver.h: Remove MAXFACENUM since it is not used anymore. Change
727 NewSocket.faces_sent from array into pointer.
728socket/{init.c, loop.c}: Allocate/initialize NewSocket.faces_sent.
729socket/request.c: Remove safeguard/error message since it depends on
730 MAXFACENUM.
731Andreas Kirschbaum 2005-10-24
732
733Code improvements:
734common/image.c: Declare some variables and functions as static or const; add
735 safeguards while loading config files; remove support for numeric face
736 names (no active archetype or map does use it); in free_all_images()
737 deallocate memory allocated for smoothing.
738crossedit/xutil.c: Remove assignment to nrofpixmaps since ReadBmapNames()
739 already sets this variable.
740include/{global.h, libproto.h, loader.h}: Remove now static variables and
741 functions.
742Andreas Kirschbaum 2005-10-24
743
744common/readable.c: Fix out of bounds access to max_titles[] in
745 init_book_archive().
746common/image.c, include/define.h, include/global.h: Remove unused variables
747 potion_face and POTION_FACE_NAME.
748common/image.c, include/global.h: Remove unused variable blank_look.
749Andreas Kirschbaum 2005-10-24
750
751Make shout command work in old socket emulation mode.
752common/commands.c: Sort all command arrays in init_commands().
753Andreas Kirschbaum 2005-10-23
754
755common/item.c - fix spelling mistake
756common/utils.c include/libproto.h - new function make_list_like that takes a
757 string of comma deliminated words, and puts an and in the right place.
758include/sproto.h server/apply.c server/shop.c -new function can_pay - checks
759 that a player can pay for every unpaid item that they are holding before
760 starting to purchase them.
761Brendan Lally 2005-10-21
762
763plugins/cfpython/{Makefile.in, Makefile.am}, plugins/cfpython/include/cfpython.h:
764 Corrected improper regeneration of the function prototypes using
765 "make proto" for the cfpython plugin.
766Gros 2005-10-20
767
768plugins/cfpython/{cfpython.c, cfpython_object.c, cfpython_map.c},
769plugins/cfanim/cfanim.c, plugins/common/plugin_common.c, server/plugins.c:
770 Added support for execution of python_init.py upon initialization of cfpython.
771 Reduced the console spam produced by various leftover debugging messages.
772Gros 2005-10-19
773
774plugins/common/include/plugin_common.h: add CF_PLUGIN macro.
775plugins/cfpython/cfpython.c: add CF_PLUGIN to exported functions.
776plugins/cfpython/include/cfpython_proto.h: fix prototypes.
777Ryo 2005-10-19
778
779plugin/*, plugin_logger/*, plugin_anim/*, plugins/*,
780server/{apply.c, attack.c, c_chat.c, c_object.c, c_wiz.c, gods.c, main.c,
781monster.c, player.c, skills.c, swap.c, time.c, timers.c}, include/{plugin.h,
782sproto.h}: Replaced the old plugin interface by the 2.0 one.
783 Upgraded the Python and Animator ones to the new interface.
784 Removed obsolete Logger plugin.
785Gros 2005-10-19
786
787server/main.c: Template Maps: Allow %x, %y, and %n in the path to respectively be
788 replaced with, the x coord, the y coord, and the parent map name.
789Alex Schultz 2005-10-18
790
791server/{main.c, swap.c}, common/map.c, include/{libproto.h, map.h}: Add support
792 for random template maps (still need to document, and still need to add support
793 for template maps created from non-random templates)
794Alex Schultz 2005-10-16
795
796common/info.c: fix -m1 crashing (34 chars, not 32!), and -m2 crashing under Win32.
797include/sproto.h: fix cast_change_ability definition.
798server/gods.c: fix cast_change_ability to hide the 'can't recast' message.
799server/spell_effect.c: don't stack word of recall forces. Add a 'silent' parameter
800 to cast_change_ability to not display 'can't recast xx while xx is in effect'
801server/spell_util.c: fix cast_change_ability call.
802Ryo 2005-10-16
803
804include/{global.h, sproto.h, config.h}, server/init.c, common/init.c, lib/Makefile.in:
805 Add directory in preparation for template (where the template can optionally be
806 from the random map generator) maps.
807Alex Schultz 2005-10-15
808
809server/c_wiz.c: make reset command show the names of other players on the
810map when it fails.
811Brendan Lally 2005-10-14
812
813server/c_party.c: fix another obscure party crash bug
814Brendan Lally 2005-10-12
815
816server/c_party.c: fix a couple of loops that could crash under certain circumstances
817Brendan Lally 2005-10-11
818
819common/object.c: use canonical_key instead of key, else == always fails.
820server/apply.c: drop "on_use_yield" item if required when applying potion, food or poison.
821 This lets players get empty bottles/vials/... when using potions.
822Ryo 2005-10-09
823
824Added GetMarkedItem to Python, cleaned compilation warnings.
825 plugin/plugin_python.c
826 plugin/include/plugin_python.h
827
828Moved gps code to Python script, thus cleaning relevant code from server core.
829 common/item.c: remove item description.
830 include/define.h: remove gps define.
831 server/apply.c: remove gps function.
832Ryo 2005-10-08
833
834Prevent objects from losing inventory when thrown.
835include/libproto.h, common/object.c: Add new parameter "free_inventory" to
836 free_object(). Is set, free inventory as well instead of dropping it on the
837 ground.
838common/object.c: In get_split_ob() prevent inventory of splitted object to be
839 dropped.
840Andreas Kirschbaum 2005-10-07
841
842common/object.c: Use object_create_clone in get_split_ob; Fixes things inside
843 of objects disappearing when throwing.
844Alex Schultz 2005-10-7
845
846Make damage done by area spells not depend on monster size.
847include/sproto.h, server/attack.c: Add additional parameter "full_hit" to
848 hit_map() and hit_player(). If set, do full damage, if unset scale down by
849 monster size.
850server/{apply.c, attack.c, disease.c, monster.c, player.c, rune.c,
851spell_attack.c, spell_effect.c, spell_util.c, time.c}: Change callers to set
852 "full_hit" parameter according to the attack used.
853Andreas Kirschbaum 2005-10-07
854
855common/{arch.c, object.c}, crossedit/{Attr.c, Defines.h, Edit.c},
856include/libproto.h, server/{plugins.c, time.c}: Rename functions with
857 mixed-case names to lower case only.
858crossedit/Defines.h: Remove prototypes for nonexisting functions.
859Andreas Kirschbaum 2005-10-07
860
861server/apply.c: In prepare_weapon() do not lose a reference to the item name.
862Andreas Kirschbaum 2005-10-06
863
864include/sproto.h, server/shop.c - make value_limit static, change its
865arguments to add some checking for NULL pointers
866Brendan Lally 2005-10-06
867
868server/monster.c: In move_monster() prevent hp/sp overflows for monsters with
869 very high maxhp/maxsp and very high regeneration rates.
870Andreas Kirschbaum 2005-10-05
871
872common/treasure.c - prevent crashes with some broken treasure lists.
873Brendan Lally 2005-10-05
874
875server/shop.c: convert val to sint64 - compilation issues with Win32. Checked with
876 patch author that it's fine.
877Ryo 2005-10-04
878
879common/map.c - fix output names in new_save_map
880--
881server/shop.c - don't assume that shop_specialisation_ratio only gets passed
882items with valid types.
883--
884common/map.c - /actually/ fix pointer issue
885--
886common/map.c - fix potential issue with NULL pointer
887Brendan Lally 2005-10-04
888
889common/map.c - fix an inequality in for loop - not sure if this actually
890fixes anything of note, but the previous form was definatly wrong.
891
892common/item.c - big item type table, function to deal therewith
893common/loader.l - add player_sold flag
894common/map.c - shop related header parsing
895include/define.h - define typedata, player_sold flag and some new shop flags
896include/libproto.h - define typedata related functions
897include/map.h - define new shop headers
898include/sproto.h - define new functions in shop.c
899server/apply.c - Change shop mat usage message
900server/c_object.c - Change display of price estimates
901server/shop.c - new functions describe_shop, value_limit, shopkeeper_approval,
902shop_greed, shop_specialisation_ratio, substantially alter query_cost_string
903and query_cost to make use of these
904server/skill_util.c - make bargaining a directly usable skill
905doc/Developers/shops - document the above
906doc/Developers/maps-technical - add shopheader names, and reference to shops doc
907Brendan Lally 2005-10-03
908
909server/disease.c: check for value <= 0 as some diseases get dumped on a map
910 with value == 0 (negative values will eventually underflox, but it'll take time).
911
912Apply patches courtesy quisar.
913 #1307880 Allow to add a param to the cast command
914 #1306987 Allow to summon lower level pet monsters
915Modified files:
916 include/player.h sproto.h
917 server/c_range.c login.c pets.c player.c spell_util.c
918Ryo 2005-10-01
919
920common/button.c: explicit cast of stats.food to uint32 when used as sacrifice count.
921common/image.c: strlen returns size_t. Remove unused FindFaceName.
922common/object.c: obj::count is tag_t. Can't decrease item's nrof by a negative value.
923include/libproto.h: fix prototypes.
924include/player.h: weight and weight_limit are sint32, so last_ should be the same.
925include/sproto.h: nrof is uint32, not int.
926server/apply.c: nrof is uint32, can't eat a negative number of items. obj::count is tag_t.
927server/c_misc.c: remove unused variable.
928server/c_object.c: use uint32 instead of int to specify number of items to drop/put.
929server/plugins.c: strlen returns size_t.
930server/spell_effect.c: distances are uint32 and not int.
931socket/loop.c: remove now obsolete cast of -1 to uint32 for last_weight.
932socket/request.c: explicit cast of weight_limit to sint32 when comparing to last_weight.
933Ryo 2005-10-01
934
935plugin/plugin_python.c: added CF[SG]etWeightLimit.
936plugin/include/plugin_python.h: function prototypes.
937server/plugins.c: update player inventory if item teleporter from that.
938Ryo 2005-09-30
939
940lib/collect.pl.in: can now use lines like "attacktype fire electricity poison" instead
941 of hard to remember numbers. Numbers are still supported, you can even mix both.
942Ryo 2005-09-28
943
944server/spell_effect.c: In recharge() verify that the object to charge is in
945 fact a wand or staff.
946Andreas Kirschbaum 2005-09-27
947
948Changed quest behaviour, now uses its own archetypes. Can change npc/magic ear
949 text based on quest status.
950Warning: not totally tested. Quest start/end works, rest needs some tweaks & fixes.
951common/quest.c: new functions, some cleaning.
952doc/Developers/quest: update (partially).
953include/define.h: new item types.
954include/libproto.h: new definitions.
955server/c_misc.c: update.
956server/monster.c: take into account quest overrides.
957server/time.c: markers now start/end tasks if needed.
958Ryo 2009-09-25
959
960server/c_party.c - fix another party list corruption bug, and a couple of
961possible infinite loops
962Brendan Lally 2005-09-25
963
964Clean some compilation warnings.
965 common/map.c: remove unused variable.
966 common/readable.c: strlen returns size_t.
967 include/object.h: objectlink id should be tag_t since it's the item's "count" field.
968 server/c_misc.c: strlen returns size_t.
969 server/c_object.c: strlen returns size_t.
970 server/c_party.c: remove_party returns void, value not used anyway. Fordward declaration.
971 server/c_wiz.c: settings.worldmaptiles[x|y] is uint32.
972 server/gods.c: strlen returns size_t.
973 server/hiscore.c: maxchar is const.
974 server/skill_util.c: strlen_returns size_t.
975Ryo 2005-09-25
976
977include/player.h sproto.h
978server/attack.c c_party.c player.c
979Fix several bugs in patch #1194964, including one that caused segfaults
980one that corrupted the party list, and one that broke party password recognition
981remove partyid from the party struct - use party pointers instead
982remove functions find_party() and find_party_struct() - no longer needed or used.
983make form_party a local function - it is only used by the party form command,
984and can't easy be used safely elsewhere.
985Brendan Lally 2005-09-25
986
987server/build_map.c: remove unused variable.
988--
989Commit patch #1194964 (party obsoletion) by cavesomething.
990Affected files:
991 include/player.h sproto.h
992 server/apply.c attack.c c_party.c login.c main.c pets.c player.c
993 skill_util.c skills.c spell_util.c
994--
995include/win32.h: turn off harmless warning.
996Ryo 2005-09-24
997
998Fix bug #744327 ('immortal' monsters): Prevent monsters from loosing hp or sp
999if they have negative Con/Pow. For hp, this made some monsters unkillable
1000because they eventually had negative hp.
1001--
1002server/monster.c: In move_monster() do gain hp/sp only if Con/Pow is positive.
1003Andreas Kirschbaum 2005-09-24
1004
1005Update client inventory view for players dieing in a shop with unpaid items in
1006inventory.
1007--
1008server/player.c: Send removed item to client in remove_unpaid_objects(). Do
1009 not call remove_unpaid_objects() multiple times in kill_player().
1010Andreas Kirschbaum 2005-09-17
1011
1012Allow directors/movers to specify a specific arch/name/race.
1013include/sproto.h: Add should_director_abort to here.
1014server/{apply.c, time.c}: Add should_director_abort for the logic code
1015 for this change, and add checks for it in director/mover code.
1016doc/Developers/objects: Add documentation for directors including this
1017 change, and update mover documentation.
1018Alex Schultz 2005-09-15
1019
1020Make untriggered TIMED_GATEs work again.
1021server/apply.c: Clear object speed only for connected objects.
1022Andreas Kirschbaum 2005-09-13
1023
1024This change is mostly cosmetic and a preparation for the new movement
1025type code. Basically, it just changes the old object movement_type
1026field to attack_movement. This makes sense because that is what that
1027field is called in saved and loaded objects/archetypes, and thus
1028frees up that name for the new movement code.
1029--
1030common/button.c: field name change
1031common/loader.{cl}: field name change
1032doc/Developers/objects: Add section on new movement types, update old
1033 documentation to note it is attack_movement and not movement_type
1034 field that is important.
1035include/object.h: field name change.
1036server/attack.c: field name change.
1037server/monster.c: field name change
1038server/pets.c: field name change
1039server/skills.c: field name change.
1040server/spell_attack.c: field name change
1041server/spell_effect.c: field name change
1042MSW 2005-09-12
1043
1044Allow a DM to cast spells and prayers in no-magic/no-prayer areas. Add new
1045command "wizcast" to toggle this setting.
1046common/loader.l: Set/reset FLAG_WIZCAST for flag "wiz".
1047common/loader.c: Rebuilt
1048include/define.h: Add new flag FLAG_WIZCAST; remove unused flag
1049 FLAG_NO_PRETEXT.
1050lib/Makefile.am: Add new help file for wizcast.
1051lib/Makefile.in: Rebuilt.
1052plugin_animator/plugin_animator.c: Set/reset FLAG_WIZCAST in animate_one().
1053server/apply.c: Always allow FLAG_WIZCAST to enchant weapons and armour.
1054server/c_misc.c: Add new function command_wizcast().
1055server/c_wiz.c: Set/reset FLAG_WIZCAST when entering/leaving DM mode.
1056server/commands.c: Add "wizcast" command.
1057server/spell_effect.c: Always allow FLAG_WIZCAST to use the spell probe.
1058server/spell_util.c: Always allow FLAG_WIZCAST to cast spells and prayers.
1059Andreas Kirschbaum 2005-09-09
1060
1061server/monster.c: Set FLAG_READY_SKILL in monster_check_apply() for monsters
1062 with skills. This fixes hill giants and trolls not throwing boulders
1063 anymore.
1064server/monster.c: Add missing "break" statement in monster_can_pick(). It did
1065 prevent some monsters from picking up scrolls.
1066Andreas Kirschbaum 2005-09-08
1067
1068common/{anim.c, image.c, los.c, map.c, porting.c, treasure.c},
1069include/define.h, random_maps/treasure.c,
1070server/{apply.c, c_misc.c, c_object.c, c_wiz.c, commands.c, daemon.c,
1071hiscore.c, init.c, login.c, player.c, plugins.c, resurrection.c, weather.c},
1072socket/{init.c, item.c, loop.c, lowlevel.c}: Use LOG() for error messages and
1073 debug output instead of stdout/stderr. Include filename in error messages.
1074server/resurrection.c: Fix error message in read_player().
1075Andreas Kirschbaum 2005-09-04
1076
1077socket/item.c: Make selecting objects from ground view work again.
1078common/object.c: Fix update of player's ground view in insert_ob_in_map().
1079 Previously the ground view was not updated after applying exits or after
1080 being hit by a spell.
1081Andreas Kirschbaum 2005-09-03
1082
1083Fix bug #1102991 (Duplicate grapical display of the same monster):
1084doc/Developers/protocol: Change semantics of map_scroll command to what the
1085 server actually does: big faces outside the viewable area are cleared. Add
1086 newmap command.
1087include/newserver.h: Increase MAX_HEAD_OFFSET to 8 (the size of a Greater
1088 Demon).
1089socket/request.c:
1090 MapRedrawCmd(): Disable mapredraw command; it is now just ignored.
1091 MapNewmapCmd(): Clear map state before sending newmap command.
1092 check_head(): Remove redundant code.
1093 update_space(): Move invariant condition out of loop to speed it up. Fix
1094 uninitialized variable. Remove redundant condition. Fix off-by-one array
1095 access.
1096 update_smooth(): Remove unused code. Properly send cleared big faces.
1097 draw_client_map(): Remove duplicate check. Properly clear newly visible
1098 area when scrolling the map.
1099Andreas Kirschbaum 2005-08-31
1100
1101common/{loader.l, map.c, object.c}, include/{define.h, map.h, object.h}:
1102 Accelerate map loading (a lot) and map saving (a bit) codes to improve map
1103 transition experience.
1104common/loader.c: Rebuilt.
1105
1106Add (slightly reformatted) patch #1276121 (Crossedit: handle big faces) by
1107 Kevin Rudat:
1108crossedit/CrEdit.c: UpdatePosition(): Use new drawing subroutines.
1109crossedit/CrFace.c: DrawObject(): Use new drawing subroutine.
1110crossedit/CrList.c: Redisplay(): Use new drawing subroutine.
1111crossedit/CrUtil.c, crossedit/CrUtil.h: Remove FaceDraw(), add DrawFacePart()
1112 and DrawPartObject().
1113crossedit/png.c: Upload the whole image, not just the top-left corner.
1114Andreas Kirschbaum 2005-08-30
1115
1116Fix bug #1256173 (Magic drain not exploding head):
1117server/spell_effect.c: Prevent mana transfer to/from caster himself; also
1118 create fireball for overcharges resulting from sucking mana.
1119Andreas Kirschbaum 2005-08-30
1120
1121Fix bug #1059537 (Chainmail mutations):
1122common/loader.l: Remove code that "fixes" broken item names by removing a
1123 leading material name. This effectively renames "mithril chainmails" into
1124 "chainmails".
1125common/loader.c: Rebuilt.
1126Andreas Kirschbaum 2005-08-29
1127
1128Fix player weapon speed/speed. There are a few bugs this fixes:
11291) when player hit something, a has_hit field was set to true, to denote
1130 they hit something and to use weapon speed. However, this was only
1131 cleared when player issued a command. Thus, if you are running
1132 and hit something, you'd continue at weapon_speed pace until you
1133 needed to change direction.
11342) Because has_hit was used, this basically put in a 1 tick lag - you'd hit
1135 something, but not until objects were processed and speed given would
1136 you get your extra speed. Likewise, after you killed something, you'd
1137 get your burst of speed for the next tick also.
1138--
1139server/main.c: Clear has_hit, change function to only do bounds checking,
1140 not actually do weapon_speed adjustments.
1141server/player.c: Give player speed boost when they hit something.
1142MSW 2005-08-28
1143
1144Add patch #1274385 by Kevin Rudat to make crossedit draw floors on tiles with
1145items.
1146crossedit/CrEdit.c: Add call to update_position() in UpdatePosition().
1147Andreas Kirschbaum 2005-08-28
1148
1149Add patch #1271417 by Kevin Rudat to stop crossedit losing regions. Patch is
1150slightly modified to properly handle all map fields.
1151crossedit/Edit.c: Copy all map fields in MapMoveScrollResize(). Do not add a
1152 msg header to already existing maps.
1153crossedit/crossedit.c: Call init_regions() at program initialization.
1154Andreas Kirschbaum 2005-08-28
1155
1156socket/init.c: Make setsockopt(REUSEADDR) work if using gcc in Ansi C mode on
1157 Linux.
1158Andreas Kirschbaum 2005-08-28
1159
1160common/map.c: Change default values for reset_timeout, enter_x, and enter_y
1161 map headers to zero. In set_map_reset_time() use MAP_DEFAULTRESET if
1162 reset_timeout is zero. This change prevents crossedit from adding these
1163 headers by just loading and saving a map.
1164include/config.h: Add MAP_DEFAULTRESET.
1165Andreas Kirschbaum 2005-08-27
1166
1167server/rune.c: Fix crash if casting disarm out of map bounds.
1168server/spell_effect.c: Fix crash if casting polymorph out of map bounds.
1169Andreas Kirschbaum 2005-08-25
1170
1171Apply patch 1200555 - addition of key/value lists which allows arbitrary
1172storing of data in objects - see doc/Developers/key-value for more
1173information
1174---
1175loader.l, loader.c: Add add_key_value() function which parses the unknown
1176 line in the object/archetype. Update get_ob_diff() to make differences
1177 for the key/value lists.
1178common/object.c: Add functions for properly comparing the key/value lists,
1179 setting and getting the vaues, clearing values upon freeing of object,
1180 etc.
1181doc/Developers/Makefile.am: Add key-value file.
1182doc/Developers/key-value: Documentation of this feature.
1183include/libproto.h: Rebuilt
1184include/object.h: Addition of key_value struct, addition of key_values
1185 field to object.
1186MSW 2005-08-22
1187
1188socket/request.c: Fix range checking of toggleextendedtext parameters.
1189Andreas Kirschbaum 2005-08-17
1190
1191The following fix code that basically does "for(x = pos-5; x < pos+5; x++)".
1192This is not correct because it includes "pos-5" but not "pos+5".
1193common/los.c: Make lighted distance equal in all directions.
1194server/disease.c: Make infection distance equal in all directions.
1195server/monster.c: Make lighted distance equal in all directions.
1196Andreas Kirschbaum 2005-08-17
1197
1198Add patch by Kevin Rudat for applyable but non
1199pickable objects to have item items.
1200doc/Dvelopers/objects: Update item types.
1201socket/item.c: Use the head of any objects we send. Should generally
1202 only be an issue for objects on the ground, as currently there is no
1203 large objects players can pick up. Also fix up some of the formatting/
1204 indenting in this file.
1205MSW 2005-08-16
1206
1207server/attack.c, include/define.h, common/loader.l doc/Developers/objects:
1208Add a flag FLAG_IS_LIGHTABLE, to make lightable objects such as lanterns
1209able to work again
1210lib/archetypes: recollect archs
1211Brendan Lally 2005-08-16
1212
1213server/build_map.c: Add support for buildable signs, and magic mouths/ears.
1214Alex Schultz 2005-08-15
1215
1216lib/Makefile.am, lib/Makefile.in: Actually install help file for showpets.
1217common/living.c, include/living.h: Make global arrays really const.
1218Andreas Kirschbaum 2005-08-15
1219
1220server/gods.c: Fix crash for monsters without appropriate god.
1221server/gods.c: Add missing braces around body of if statement.
1222Andreas Kirschbaum 2005-08-14
1223
1224NPCs instead of being given a random god are for preference given the god that
1225likes their race. If one can't be found, then we fall back to a random god.
1226Affected files:
1227server/gods.c include/sproto.h
1228Brendan Lally 2005-08-12
1229
1230String fields in structures using add_string are now const char*. Functions in
1231 shstr (add_refcount, add_string, free_string, ...) now take/return const char*.
1232More argument replacing from char* to const char*.
1233Fixed a potential string corruption in recipe.c (when dumping) and readable.c (was
1234 using strtok on a add_string-ed string, when strtok changes argument).
1235Fixed a few type mismatch on qsort calls.
1236Global char arrays (messages and such) are const char* too.
1237Removed unused typedefs / structures.
1238
1239Affected files:
1240 common/anim.c image.c info.c item.c living.c object.c quest.c readable.c recipe.c
1241 shstr.c treasure.c
1242 include/arch.h commands.h define.h face.h funcpoint.h global.h god.h libproto.h
1243 living.h map.h material.h object.h player.h race.h recipe.h skills.h sproto.h treasure.h
1244 random_maps/random_map.h reader.[cl] style.c
1245 server/apply.c attack.c c_object.c c_range.c c_wiz.c gods.c
1246 main.c monster.c pets.c player.c plugins.c resurrection.c shop.c skill_util.c skills.c
1247 spell_attack.c spell_effect.c time.c timers.c
1248 socket/item.c
1249
1250Ryo 2005-08-12
1251
1252Arguments are now const char* instead of char* when available. This ensures
1253the variable is not changed in random places.
1254Affected files:
1255 common/porting.c quest.c readable.c recipe.c re-cmp.c shstr.c treasure.c
1256 include/libproto.h sproto.h win32.h
1257 server/c_misc.c c_object.c c_party.c c_wiz.c egoitem.c gods.c hiscore.c init.c login.c
1258 main.c monster.c player.c resurrection.c rune.c shop.c skill_util.c skills.c
1259 spell_effect.c spell_util.c win32.c
1260Ryo 2005-08-12
1261
1262Add help for showpets, and update help for killpets
1263 lib/help/{showpets, killpets}
1264Add a new command 'showpets' to give a numbered list of the pets that a player
1265controls. These numbers can be passed to showpets to give more detail about one
1266pet, or they can be passed to killpets to control which pets are killed.
1267Also allow killpets to take a name as an argument. Affected files:
1268 include/sproto.h
1269 server/{c_misc.c, commands.c}
1270Make random maps take the region of the map creates them. Affected files:
1271 random_maps/{random_maps.h, random_maps.c}
1272 server/main.c
1273Brendan Lally 2005-08-11
1274
1275------------------------------------------------------------------------------
1276Changes for 1.8.0:
1277
1278Update for release 1.8.0.
1279include/Makefile.am: missing quest.h file
1280Rest automatic rebuild
1281MSW 2005-08-10
1282
1283Replaced "depletion" by ARCH_DEPLETION (defined in object.h). Affected files:
1284 common/living.c
1285 include/object.h
1286 server/apply.c gods.c spell_effect.c
1287Ryo 2005-08-10
1288
1289server/player.c: Set map for arrow as returned by get_map_flags -
1290 otherwise when firing at edge of tiled maps, arrows could end up
1291 in wrong place.
1292MSW 2005-08-09
1293
1294include/config.h: Make DEBUG default - appears last commit changed this
1295 as unrelated to actual changes in place.
1296include/sproto.h: Rebuild
1297server/player.c: fire_bow() - add checks for wall/out of map. fire_bow()
1298 wasn't using right coordinates on check, which caused problems in
1299 threewide mode at edge of maps.
1300MSW 2005-08-07
1301
1302plugin_logger/plugin_logger.c: make it compile under Win32.
1303Ryo 2005-07-30
1304
1305server/player.c: fix crash when news or rules > HUGE_BUF.
1306Ryo 2005-07-29
1307
1308server/{monster.c, pets.c}: Fix bugs in arena petmode and clean up most of
1309 it's logic into it's own function.
1310lib/help/petmode: Document the arena petmode in the "help petmode" output.
1311Alex Schultz 2005-07-28
1312
1313server/skills.c: use correct sp/grace for inscription.
1314Ryo 2005-07-27
1315
1316The following changes prevent spells in player's inventories from being
1317damaged by casting spells, using skills, or praying.
1318server/attack.c: Limit cancellation and acid attacks to visible objects only.
1319server/gods.c: Limit god granted remove curse/damnation to visible objects
1320 only.
1321server/skills.c: Limit the skills sense curse and sense magic to visible
1322 objects only.
1323server/spell_effect.c: Limit the spells detect curse and detect magic to
1324 visible objects only.
1325Andreas Kirschbaum 2005-07-26
1326
1327server/skill_util.c: don't try to send a message if monster killed/removed.
1328Ryo 2005-07-23
1329
1330socket/init.c: settings values to 0 before using'em works better, usually ^_-
1331Ryo 2005-07-22
1332
1333random_maps/random_map.h: Add prototype for set_random_map_variable().
1334server/main.c: Remove prototype for set_random_map_variable().
1335lib/Makefile.am, lib/Makefile.in, lib/help/whereabouts: Add help for
1336 whereabouts command.
1337server/apply.c: Properly terminate destination string with '\0' in
1338 apply_item_transformer(). Avoid clearing the string buffer multiple times.
1339Andreas Kirschbaum 2005-07-20
1340
1341doc/Developers/item_transformation: fixed documentation.
1342server/apply.c: remove incorrect comment. Item transformer uses food for max use.
1343Replaced some hardcoded values with define. Modified files:
1344 common/arch.c
1345 include/object.h
1346 plugin/plugin_python.c
1347 server/apply.c attack.c build_map.c spell_attack.c spell_effect.c time.c
1348Ryo 2005-07-19
1349
1350include/win32.h: add PLUGIN_SUFFIX definition.
1351Ryo 2005-07-18
1352
1353server/plugins.c: Merge mostly identical code from #ifdef WIN32 and #else
1354 blocks. Use opendir/readdir/closedir instead scandir for Unix because WIN32
1355 probably does not have these functions. Prevent loading one plugin multiple
1356 times.
1357include/sproto.h: Update prototypes for plugin functions.
1358server/c_wiz.c: Add success/failure messages to plugin and plugout commands.
1359 Do not crash due to missing parameter.
1360Andreas Kirschbaum 2005-07-18
1361
1362server/pets: Fix off-by-one error in follow_owner().
1363server/c_wiz: Allow the summon and teleport commands to place the summoned
1364 player/DM north-west of DM/player.
1365Andreas Kirschbaum 2005-07-17
1366
1367Use const char* instead of char* when possible. Remove unused variables in weather code.
1368Affected files:
1369 common/map.c region.c utils.c
1370 crossedit/stubs.c
1371 include/funcpoint.h libproto.h sproto.h
1372 random_maps/standalone.c
1373 server/weather.c
1374Ryo 2005-07-17
1375
1376server/apply.c: Make converters that increase value non-functional.
1377Andreas Kirschbaum 2005-07-17
1378
1379server/{monster.c, pets.c}: Fixed bug in previous commit of arena petmode
1380 that cause pets that should be friendly to eachother to fight.
1381Alex Schultz 2005-07-16
1382
1383common/{map.c, readable.c, treasure.c},
1384crossedit/{Attr.c, png.c, Cnv/{CnvFiles.c, CnvPath.c}},
1385plugin_animator/plugin_animator.c,
1386plugin_logger/maps.c,
1387server/{alchemy.c, c_misc.c, c_wiz.c, init.c, main.c, monster.c, pets.c,
1388player.c, resurrection.c, rune.c, skills.c, spell_effect.c, time.c,
1389weather.c}:
1390 Fix spelling errors in string constants.
1391server/c_misc.c: Remove superfluous trailing '\0' from strings.
1392Andreas Kirschbaum 2005-07-15
1393
1394server/{c_misc.c, monster.c, pets.c}, include/player.h: Add new "arena"
1395 petmode which allows pets to attack players and other pets while in the
1396 arena.
1397Alex Schultz 2005-07-16
1398
1399*Makefile.in, aclocal.m4, configure: Rebuilt generated files.
1400lib/Makefile.am: Update list of help files to install.
1401server/skills.c: Do not reveal a hidden DM in attempt_jump().
1402server/skills.c: Do not reveal a hidden DM in steal().
1403server/player.c: Ignore hidden DM in stand_near_hostile(). Formerly it always
1404 returned false if a hidden DM was present.
1405Andreas Kirschbaum 2005-07-15
1406
1407server/c_object.c: Improved pickup. You can now do pickup +bow, or pickup -shield.
1408 Much simpler then fiddling with sums of 2^x values.
1409Ryo 2005-07-15
1410
1411server/c_party.c: Make party passwords with a length of 8 characters work
1412 again.
1413lib/artifacts: Fix type of lockpicks of quality/high quality.
1414Andreas Kirschbaum 2005-07-15
1415
1416Those commits remove the dependency on the plugin towards the library. All functions
1417 used from the plugin are hooked, instead of being called directly. This fixes bugs
1418 under Windows, and simplifies compilation. Also, many new callbacks were defined.
1419Affected files:
1420 include/plugin.h plugproto.h sproto.h
1421 plugin/plugin_python.c
1422 server/plugins.c
1423Note that at some point some functions could be moved out of plugin_python and put in
1424 plugin_general to be shared between different plugins.
1425Ryo 2005-07-15
1426
1427Those commits remove the whole "glue/callback" logic. Instead functions are just
1428defined as external, and should be implemented (even as dummy) by all programs.
1429Affected files:
1430 common/arch.c button.c glue.c init.c item.c living.c logger.c los.c map.c object.c
1431 time.c treasure.c
1432 crossedit/stubs.c: new file with dummy functions.
1433 crossedit/Makefile.[in|am]: add this new file.
1434 include/funcpoint.h libproto.h sproto.h
1435 random_maps/standalone.c: add dummy functions for those externals.
1436 server/init.c: remove obsolete setup_library()
1437
1438Added a wrapper function for check_trigger from plugins.
1439 include/plugin.h: new function
1440 server/plugins.c: wrapper for check_trigger.
1441
1442Ryo 2005-07-15
1443
1444plugin/plugin_python.c: (add|free)_string should *not* be called directly under Win32.
1445 Therefore let's use the hooks. Also, when removing an object, better check it's not the
1446 current object (CFPython.RemoveObject(CFPython.WhoAmI()) anyone?).
1447Ryo 2005-07-15
1448
1449server/spell_util.c: use on_same_map instead of checking directly map pointers.
1450Ryo 2005-07-15
1451
1452Those changes implement a quest tracking system. Check the doc/quests document for more info.
1453common/quest.c: new file with a few quests-related functions.
1454doc/Developers/mapguide: point to quests file for instructions on quests.
1455doc/Developers/quests: new file with instructions on how to use quests,
1456 and implementation details.
1457doc/Developers/README: added quests file.
1458include/libproto.h: new functions in quest.c.
1459include/quest.h: new file with a few defines for quests.
1460include/sproto.h: new function command_quest, update talk_to_wall definition.
1461lib/help/quests: new help file for quests command.
1462server/c_misc: new command_quests function.
1463server/commands.c: link command_quests to "quests".
1464server/monster.c: update talk_to_wall and talk_to_npc to check for quests.
1465server/time.c: modify marker behaviour to handle quests.
1466Ryo 2005-07-14
1467
1468common/{button.c, treasure.c, utils.c}, server/{c_wiz.c, login.c, shop.c,
1469skill_util.c, spell_effect.c}, socket/{image.c, item.c}: Fix printf like
1470 format specifiers. At least one of them fixes a means to crash the server.
1471Andreas Kirschbaum 2005-07-14
1472
1473Those changes introduce party spells. Casted spell should be defined through 'other_arch'
1474 field. Note that this needs through testing to make sure it works as intended.
1475include/spells.h: new spell type, 'party spell'.
1476server/spell_util.c: new spell type, party spell.
1477Ryo 2005-07-10
1478
1479server/{login.c, player.c}: Fix buffer overflow with pl->title. Based on patch
1480 by Scott Kullberg.
1481crossedit/{Edit.c, Cnv/CnvPrompt.c}, server/{ban.c, hiscore.c, login.c,
1482player.c, shop.c, win32.c}: Properly terminate destination string of strncpy
1483 with '\0'.
1484server/init.c: Fix error message.
1485Andreas Kirschbaum 2005-07-10
1486
1487configure.ac, configure, aclocal.m4, Makefile.in: Add AM_MAINTAINER_MODE
1488 macro to configure.ac - this should hopefully supress auto regeneration of
1489 makefiles.in
1490MSW 2005-07-08
1491
1492Add a --with-python option to configure. Also, update the python
1493detection script to check for 2.5 (not out yet, but might as well be prepared.)
1494Will try to commit files in proper order so that dependency checking is correct
1495and it won't try to rebuild makefiles or other files.
1496--
1497acinclude: Updated checks for --with-python
1498aclocal.m4: updated
1499configure.ac,configure: Updated checks for --with-python
1500config.sub, config.guess - update to latest versions
1501INSTALL: Updated build directions
1502MSW 2005-07-08
1503
1504lib/Makefile.am, lib/Makefile.in: Remove map_check from normal distribution
1505 due to different license on file.
1506random_maps/monster.c: Reduce monster density on random maps - take into account
1507 size of monsters when calculating density.
1508utils/metaserver.pl.in: At a timeout value that limits how often clients can
1509 ask for metaserver info.
1510MSW 2005-07-08
1511
1512lib/settings: Turn of fastclock as default option.
1513socket/loop.c: Change behaviour of metaserver/flushmaps/watchdog
1514 calls if fastclock is set - don't do those any faster than normal.
1515MSW 2005-06-22
1516
1517Server can now be used as a Windows server, with command-line options
1518 -regsrv (register server and exit), -unregsrv (unregister server and exit)
1519 and -srv (should not be used directly, for the service control manager call).
1520server/init.c: add command-line options.
1521server/main.c: loop is no more infinite under Windows. Save and clean after it, too.
1522server/win32.c: add service routines.
1523Ryo 2005-06-22
1524
1525common/living.c: Print correct message when (un-)wearing items with negative
1526 luck.
1527Andreas Kirschbaum 2005-06-14
1528
1529include/living.h: Patch from Kari Pahula to remove obsolete variable
1530 declarations.
1531Andreas Kirschbaum 2005-06-01
1532
1533server/skill_util.c: Print correct permanent experience ratio for experience
1534 values >2 billion.
1535Andreas Kirschbaum 2005-05-22
1536
1537server/apply.c: Do not unlock LAMP items when turning them on or off.
1538server/apply.c: Fix CONVERTER items with slaying "money" to trigger for MONEY
1539 items only.
1540server/player.c: Generate proper plural name for player's gravestones.
1541Andreas Kirschbaum 2005-05-21
1542
1543Ensure that object->msg always has a trailing \n character. This is necessary
1544to prevent corrupted map files.
1545plugin/plugin_python.c: Add trailing \n to message set by
1546 CFPython.SetMessage() if not already present.
1547server/plugins.c: Add trailing \n to message set by HOOK_TELEPORTOBJECT if not
1548 already present.
1549server/rune.c: Add trailing \n to rune messages.
1550Andreas Kirschbaum 2005-05-21
1551
1552Apply qal21's patch [ #1205421 ]: Implement new Python functions:
1553GetArchType, GetFacing, GetLevel.
1554plugin/plugin_python.c, plugin/include/plugin_python.h: Add new functions.
1555doc/Developers/python: Describe new functions.
1556Andreas Kirschbaum 2005-05-20
1557
1558server/monster.c: Fix monsters to cast spells from spellbooks.
1559Andreas Kirschbaum 2005-05-15
1560
1561Fixed compilation issue.
1562server/apply.c: can't declare a variable after some function call.
1563socket/info.c: removed unused variable.
1564Ryo 2005/05/07
1565
1566Corrected code to compile under -ansi gcc flag:
1567 * correction of some non posix compatible calls around scandir
1568 * changing configure to detect the absence of 'alphasort' prototype
1569 * converted some '//' comment to /**/ one
1570 * reran automake1.8/autoconf2.50/autheader2.50
1571Note even it it compiles with -ansi -pedantic, it still need cleanup to
1572get 64 bits experience code working!
1573Tchize 2005/05/07
1574
1575Applied Casper1's patch [ #1193516 ] for Hurd support.
1576 * socket/lowlevel.c: #ifdef some code part that won't work.
1577Change some char* to const char*, when values shouldn't be changed. Changed files:
1578 * include/libproto.h
1579 * common/arch.c
1580 * common/living.c
1581Ryo 2005-05-03
1582
1583Change some char* to const char*, when values shouldn't be changed. Changed files:
1584 * include/sproto.h
1585 * socket/info.c
1586 * socket/item.c
1587Ryo 2005-04-30
1588
1589Change some char* to const char*, when values shouldn't be changed. Changed files:
1590 * include/sproto.h
1591 * server/apply.c
1592 * server/ban.c
1593 * server/spell_util.c
1594Ryo 2005-04-27
1595
1596server/skills.c: Change it so that jeweler skill is used to identify
1597 amulets, not alchemy skill.
1598MSW 2005-04-27
1599
1600Apply patch 1190107 so server compiles on HURD.
1601common/porting.c: Add define for MAXPATHLEN
1602socket/init.c: Add check for __GNU__ for setsockopt()
1603MSW 2005-04-27
1604
1605Change to have objects generated by creator properly fixed up (material,
1606for potions, spell object, etc).
1607---
1608common/treasure.c: add GT_MINIMAL flag to change_treasure() to do minimal
1609 processing for objects created.
1610include/treasure.h: Add GT_MINIMAL define.
1611server/apply.c: Add call to fix_generated_item() in convert_item()
1612MSW 2005-04-27
1613
1614Various minor bugfixes.
1615common/los.c: Patch to fix negative lighting. Use isqrt instead of sqrt,
1616 so we only want integer values anyways.
1617include/libproto.h, include/sproto.h: Rebuilt as there were some improperly
1618 matching prototypes.
1619random_maps/rogue_layout.c: Replace sqrt with isqrt calls.
1620server/c_misc.c: Make name_cmp() a static declaration so it won't be put
1621 in the sproto.h file.
1622server/init.c: Remove /* within comment string.
1623server/monster.c: Change sqrt to isqrt
1624MSW 2005-04-16
1625
1626Those changes are just changing char* to const char* in some function
1627prototypes.
1628Affected files:
1629 common/recipe.c
1630 common/region.c
1631 common/treasure.c
1632 common/utils.c
1633 include/libproto.h: match headers.
1634 server/main.c
1635Ryo 2005-04-16
1636
1637Those changes add the ability to transform items through 'item_transformer'
1638 (163)-type items
1639 See doc/Developers/item_transformation for more info.
1640common/item.c: don't display 'slaying' field for food.
1641include/define.h: add new 'ITEM_TRANSFORMER' type.
1642include/sproto.h: add new function 'apply_item_transformer'.
1643server/apply.c: new 'apply_item_transformer' function to handle that item type.
1644Ryo 2005-04-15
1645
1646common/map.c: map pathnames are now const char*, no reason for something else.
1647common/region.c: remove unused variable.
1648include/libproto.h: update functions definitions.
1649include/sproto.h: weathermap_to_worldmap_corner now returns a const char*.
1650include/win32.h: define missing NAME_MAX as MAX_BUF.
1651server/c_misc.c: remove unused variable. Use const char* when possible.
1652server/weather.c: weathermap_to_worldmap_corner now uses const char* as
1653 return type.
1654Ryo 2005-04-14
1655
1656Random map code improvements - add support for subdirectories in the
1657style maps for random maps. Add difficulty_increase parameter for random
1658maps to control how fast they get harder.
1659doc/Developers/random-maps: Add notes about difficulty_increase parameter.
1660random_maps/Makefile.am: Update proto directive to use cproto, not cextract.
1661random_maps/random_map.c: Update to use difficulty_increase when figuring
1662 difficulty of maps. Add code to save it in list of parameters.
1663random_maps/random_map.h: Add difficulty_increase field to structure.
1664random_maps/reader.l, reader.c: Add code to find difficulty_increase parameter.
1665random_maps/rproto.h: rebuilt.
1666random_maps/special.c: Pass in difficulty increase to
1667 write_parameters_to_string()
1668random_maps/style.c: Remove old scandir - replaced by our own load_dir() -
1669 necessary because we need to check type of files, which scandir doesn't
1670 easily let us do. Since it is now our own routine, just return
1671 array of file names instead of dirent structures.
1672MSW 2005-04-13
1673
1674utils/Makefile.am: Add cfmeta-rrd to list of files to add to distributions
1675utils/cfmeta-rrd: Example of sample script that takes data and stores it into
1676 rrd file and draws graphs (new file).
1677utils/metaserver.pl.in: Add recording of useful stats to external file so they
1678 can be processed by other external scripts.
1679MSW 2005-04-13
1680
1681server/shop.c: Pass in player object to pay_from_container() - code was
1682 trying to deref pouch->contr which was null. Only occurs when player
1683 has 2 different money objects of the same type, but 2 crashes observed
1684 on metalforge.
1685MSW 2005-04-13
1686
1687socket/image.c: Change esrv_send_face to check for <=0 instead of <0 on face
1688 number.
1689socket/request.c: Change if statement that acted improperly to determine when
1690 to send faces.
1691MSW 2005-03-27
1692
1693include/sproto.h: get_who_escape_code_value is void, not void*.
1694server/c_misc.c: move local function outside the function.
1695server/c_wiz.c: remove sleep( 1 ) that would cause whole server to sleep one
1696 sec.
1697Ryo 2005-03-23
1698
1699common/living.c: Allow luck to drop back to zero. Limit bad luck object to
1700 +/-100 to prevent overflows.
1701Andreas Kirschbaum 2005-03-22
1702
1703common/living.c: When randomly adjusting luck, change both op->stats.luck and
1704 the applied bad_luck object.
1705server/attack.c: Do not decrease luck if a player kills himself with a spell
1706 or pet.
1707Andreas Kirschbaum 2005-03-20
1708
1709server/c_wiz.c: change command_free() and command_remove() to always
1710 process the head of the object - doing this operations on the non head
1711 will typically always cause problems.
1712MSW 2005-03-19
1713
1714This change makes it so that the smoothing information is pushed to the client
1715(if the client is using smoothing) instead of a process were we tell the
1716client the smoothlevel and the client then has to request the face info for
1717smoothing. If we know the client wants the info, much easier to push it to
1718the client. This simplifies the client code (doesn't have to keep track
1719of what is requests). It also fixes the 'problem' that when you join the
1720game, you get a few frames with no smoothing and then the smoothing shows
1721up, which seems a bit odd. My testing shows that old clients that want
1722smoothing use this new logic withouth any problems.
1723--
1724common/image.c: add smooth_face default so that we don't have to look it
1725 up everytime.
1726include/define.h: Add SMOOTH_FACE_NAME used by image.c
1727include/global.h: Add smooth_face extern declaration.
1728include/newserver.h: Update comment on what faces_sent is used for,
1729 add NS_FACESENT_* values which determines what info for the face was
1730 sent.
1731socket/image.c, socket/init.c, socket/item.c: Update faces_sent checks/set
1732 to check against NS_FACESENT bitmask.
1733socket/request.c: Update faces_sent as mentioned above. And SendSmooth(),
1734 rewrite AskSmooth() to use SendSmooth(). Modify update_smooth()
1735 to send smoothing information to the client.
1736MSW 2005-03-19
1737
1738common/map.c: Clean up if statement ins blocked_link() which caused warning
1739 messages - broke it apart to make it a little clear. Add check for
1740 premature end of map header - make code more resilent in case of truncated
1741 saved maps. Fix saving of region name in new_save_map() - saving the
1742 pointer to the region isn't what the loader is expecting, and is highly
1743 non portable even if it was.
1744MSW 2005-03-18
1745
1746Applied patch:
1747* #1145089 (cavesomething): Region support.
1748common/Makefile.am: add new 'region.c' file.
1749common/init.c: add 'REGIONS' setting.
1750common/map.c: add 'region' map key.
1751include/config.h: add regions file default name.
1752include/global.h: add 'first_region' global variable and settings.
1753include/libproto.h: add region.c functions prototypes.
1754include/map.h: add region structure.
1755include/sproto.h: add new region-related command.
1756lib/Makefile.am: add 'regions' file.
1757lib/regions (new): regions definition file.
1758server/c_misc.c: add region information to current_map_info. Add new 'whereami' command.
1759server/commands.c: add 'whereami' command.
1760server/init.c: add regions settings, and load data.
1761Ryo 2005-03-15
1762
1763Applied patches:
1764* #1119366 (salathar): wiz food, DMs don't use food anymore.
1765* #1161816 (cowboyatheart) : Add wands/staves/rods/horns to new pickup.
1766* #1119762 (salathar): afk command.
1767common/loader.[lc]: add 'FLAG_AFK'.
1768include/define.h: add 'PU_MAGIC_DEVICE. Add 'FLAG_AFK'.
1769include/sproto.h: add 'command_afk'.
1770server/c_misc.c: add 'AFK' to who display, add command_afk.
1771server/c_object.c: add new flag to dump.
1772server/commands.c: add command_afk.
1773server/player.c: wiz don't use food. Check for rod/wand/horn for new pickup flag.
1774Ryo 2005-03-13
1775
1776*Makefile.in, aclocal.m4, configure, utils/config.guess, utils/config.sub,
1777utils/ltmain.sh: Rebuild generated files.
1778acinclude.m4: Check whether Python supports the "L" format specifier. Do not
1779 build python plugin if not.
1780Andreas Kirschbaum 2005-03-09
1781
1782common/{map.c, readable.c, treasure.c}, crossedit/Attr.c, server/{apply.c,
1783attack.c, c_wiz.c, init.c, monster.c, pets.c, shop.c, skill_util.c, skills.c,
1784spell_attack.c, spell_effect.c, time.c}, socket/{info.c, request.c}: Add
1785 missing newline character to LOG() messages.
1786common/living.c, include/living.h: Change type of weight_limit to uint32.
1787socket/request.c: Remove non-portable assignment to rvalue.
1788doc/{README_PLUGINS.doc, README_PYTHON.txt, plugins}, doc/Developers/{README,
1789plugins, python}: Update plugin documentation.
1790plugin/plugin_python.c, plugin/include/plugin_python.h: Whitespace changes,
1791 remove obsolete comments.
1792plugin/plugin_python.c: Only set WhoAmI when running the command registered by
1793 CFPython.RegisterCommand. Set default result value to "success".
1794plugin/plugin_python.c: Fix memory leaks by freeing old strings before
1795 assigning a new value.
1796plugin/plugin_python.c: Use correct format specifiers for item values and
1797 experience values.
1798plugin/plugin_python.c: Make CFPython.IsCanBePicked return whether the object
1799 can be picked up. (Did return whether the object cannot be picked up.)
1800plugin/plugin_python.c: Do not return a pointer to a variable on the stack.
1801server/plugins.c: Fix pointer type mismatch while processing
1802 CFPython.RegisterCommand.
1803plugin/plugin_python.c: Change second parameter of CFPython.CheckMap to use
1804 a map object instead of a map name. Now it works for tiles maps.
1805acinclude.m4: Add check for python 2.4 to match this file with aclocal.m4.
1806Andreas Kirschbaum 2005-03-06
1807
1808plugin/plugin_python.c: Increase limits of values the Python script may set
1809 to the ranges given by objects in the archetypes file.
1810Andreas Kirschbaum 2005-02-28
1811
1812common/object.c, include/libproto.h: change nrof parameter of get_split_ob to
1813 uint32 type.
1814server/c_object.c, include/sproto.h: change nrof parameter of drop_object to
1815 uint32 type.
1816plugin/{plugin_python.c, include/plugin_python.h},
1817plugin_animator/{plugin_animator.c, include/plugin_animator.h},
1818server/{apply.c, attack.c, gods.c, monster.c, player.c, skills.c, time.c,
1819 timers.c}: Change type of CFParm.Value[5] and StackParm1[] to uint32 to be
1820 able to pass an "nrof" value.
1821plugin/plugin_python.c, plugin/include/plugin_python.h: Remove spell wrapper
1822 functions.
1823plugin/plugin_python.c, plugin/include/plugin_python.h: Replace skill-IDs by
1824 skill names. Remove skill-ID wrapper functions.
1825Andreas Kirschbaum 2005-02-20
1826
1827------------------------------------------------------------------------------
1828Changes for 1.7.0:
1829
1830configure, configure.ac, include/autoconf.h.in: Update for
1831 version 1.7.0. Add check for libz - needed by libpng (at least on my
1832 system), which is needed for the editor.
1833MSW 2005-01-23
1834
1835common/object.c: Change CAN_MERGE() from an inline function, since
1836 it calls itself and inline functions are not supposed to do that.
1837 Update type check in insert_ob_in_map() to check against defined
1838 type (EXIT) instead of hardcoded integer value (66).
1839crossedit/xutil.c: Update to just include Defines.h, which then includes
1840 all the other necessary files, including global.h.
1841include/global.h: Add #ifdef checks for the UINT*_MAX types, as some
1842 systems already define these values, which results in a redefinition
1843 error. Also fix up // style comment.
1844include/shstr.h: Include proper cast in TOPBIT definition.
1845server/main.c: Don't display 'xyz left the game' messages if the player
1846 is only at the get name or get password prompt. Prevents possible
1847 spoofing of that message.
1848server/player.c: Clean up formatting of check_pick() function. If player
1849 is using newpickup to pick up booze, also pick up poison unless
1850 they know it is cursed.
1851socket/request.c: AskSmooth() - change buffer type to uint8 so that
1852 it matches what the SockList structure wants.
1853utils/scores.pl.in: Use skill_praying to find players god, and not the
1854 deprecated experience_wis object.
1855MSW 2005-01-23
1856
1857aclocal.m4, configure: Add check for python 2.4.
1858common/re-cmp.c: Fix improper comparison *(str+1) instead of str+1
1859server/login.c: don't allow null names.
1860server/main.c: Disable logging of removed objects - filling up log
1861 files on archmage of all the errors.
1862server/player.c: Fix improper initialization of attacktype in
1863 for loop. Give players max grace, sp when they die - also, if they
1864 are near starvation, give them a bunch of food.
1865server/spell_effect.c: Put cap on duration of godly retribution - it
1866 can otherwise last so long that if a player is killed by it at
1867 their savebed location, spell could still go on after players
1868 temporary immunity ends. Retribution as increases in damage,
1869 so no need to really increase damage and duration to really high
1870 amounts.
1871server/spell_util.c: In fire_arch_from_position(), and check that
1872 player isn't casting spell on top of wall - fixes for many
1873 spells, including ball lightning.
1874server/time.c: Change comparsion on return of get_map_flags() from
1875 == P_OUT_OF_MAP to & P_OUT_OF_MAP - keeps syntax consistent.
1876MSW 2005-01-11
1877
1878plugin/plugin_python.c, plugin_animator/plugin_animator.c,
1879plugin_animator/plugin_animator.c: Use script return value set by
1880 CFPython.SetReturnValue(): access to stack was off by one. Do not return a
1881 pointer to a local variable on the stack.
1882plugin/plugin_python.c, plugin_animator/plugin_animator.c: Handle all defined
1883 events.
1884Andreas Kirschbaum 2005-01-10
1885
1886server/spell_attack.c: apply patch #1096921 courtesy Salathar.
1887 Charmed monsters now lose the 'generator' flag, to prevent
1888 things like mice outbreak in bigworld maps.
1889Ryo 2005-01-07
1890
1891plugin/plugin_pyhton.c, plugin/include/plugin_python.h: Remove obsolete
1892 functions: SetGender, SetRank, SetAlignment, SetGuildForce, GetGuildForce,
1893 CreatePlayerForce, CreatePlayerInfo, GetPlayerInfo, GetNextPlayerInfo,
1894 SetPreviousObject, SetNextObject.
1895plugin/plugin_python.c, plugin/include/plugin_python.h: Add missing attack type
1896 wrapper functions, function CFPython.SetDamned(), wrapper functions for
1897 missing cost flags, and wrapper functions for event types.
1898plugin/plugin_python.c: Add an optional parameter to CFPython.SetName() to
1899 specify name_pl as well. Always set name_pl.
1900plugin/plugin_python.c: Fix a buffer overflow in CFPython.RegisterCommand():
1901 allocated memory was not sufficient to hold the trailing '\0'.
1902plugin/plugin_python.c: Use #define constants.
1903plugin/include/plugin_python.h, plugin/plugin_python.c,
1904plugin_animator/plugin_animator.c, server/plugins.c: General cleanup - merge
1905 duplicate code, remove debugging code, rename variables, rename C function
1906 names to match the Python function name, use hook functions where
1907 appropriate.
1908include/sproto.h, plugin/plugin_python.c, server/plugins.c, server/shop.c:
1909 Use uint64 type for variables holding money. Use Python long integers to
1910 pass these variables to/from the Python plugin.
1911Andreas Kirschbaum 2005-01-07
1912
1913plugin/plugin_python.c: Check values passed in from the Python code; generate
1914 proper Python exceptions for invalid values.
1915plugin/plugin_python.c, plugin_animator/plugin_animator.c: Make sure all
1916 fields on the stack are initialized. Prevent stack overflow: check was one
1917 off, causing a buffer overflow. Decrement stack pointer in error case.
1918Andreas Kirschbaum 2005-01-06.
1919
1920common/regexp.c: Fixed couple flaws in regexp handling. First, there was an
1921 off by one error in the handling of matches (if the match was for example
1922 eureca, player could just say eurec, and it would treat that as a valid
1923 match). Second case was that the regular expression logic would not
1924 try comparing the rest of the passed in string after a partial match -
1925 In the eureca case above, if the passed in string was 'where is eureca',
1926 after matching the first e (in where), it then fails to match the
1927 next letter and would give up. It now tries comparing the rest of
1928 the passed in string with the regex (so after that failure, it
1929 will try to match 're is eureca'.
1930server/apply.c: Add missing 'return 0' to shop_mat code that is needed
1931 to prevent unpaid objects from teleporting out of the shop. Also
1932 extend code so that non living objects can't use shop mats.
1933server/player.c: Insert force into the player when they die making them
1934 immune to any spells on the space they reappear on - this prevents
1935 multiple deaths if there is large spell effect going on in the
1936 savebed location. Duration of force should be long enough for most
1937 spells to run their course, but no so long that the player can use
1938 it for much of an advantage (plus, killing yourself to get such
1939 an advantage seems odd, and the force only makes the player immune
1940 to the attacktypes currently on the space)
1941server/spell_effect.c: Fix spell casting walls (lighting wall,
1942 firewall, etc) in that the spell object they cast was not being
1943 inserted, resulting in the walls not doing anything.
1944MSW 2004-12-28
1945
1946Applied patch (bug misc/zoo2) by Lalo
1947server/time.c: creators can now create multi part objects.
1948Applied patch 1086102 by Salathar:
1949server/attack.c: If player kills another player, add (pk) to the death
1950 message.
1951Applied patch 1086103 by Salathar:
1952server/move.c: If player pushes another player, send message to both players
1953 that pushed happened. Previously, when pushing another player, the pusher
1954 wouldn't get any notice.
1955MSW 2004-12-28
1956
1957
1958Applied patch 1001079 - make alchemy books say what skill & equipment
1959 is needed - by Kevin Rudat.
1960common/readable.c: Update code that generates book title, contents
1961 to denote what skill and equipment is needed.
1962random_maps/{random_map.c, reader.l, reader.c}, server/main.c:
1963 Remove generate_treasure_now as an option
1964 for random maps - none are using delayed treasure, and IMO, if someone
1965 did, it would horribly break things, so it should never be used - given
1966 that, no reason to leave the code there.
1967server/main.c: Add additional debugging for process events on removed
1968 objects - trying to track down occasional disease crash.
1969server/time.c: Fix crash in move_player_mover() - it was never map tile
1970 aware, but even more so, appears to have always been broken if the
1971 player move tried to push the player off the edge of a map. Check
1972 for out of map condition, as well as make it map tile aware.
1973MSW 2004-12-28
1974
1975Applied patches #1086095 and 1088385 courtesy Salathar:
1976 common/map.c: hidden DM is non blocking
1977 server/c_chat: can't do emotions towards hidden DMs. Player's emotions
1978 always displayed in split window.
1979 server/c_wiz.c: add an extra player leave message when DM hides
1980 server/main.c: don't display leave messages for hidden DM when connection timeout
1981server/c_party.c: party password max length is 7, due to buffer size.
1982 (i think it was a patch from Casper?)
1983Ryo 2004-12-25
1984
1985server/c_wiz.c: Remove item when 'free' by DM if not removed, avoiding crash.
1986Ryo 2004-12-22
1987
1988server/c_party.c: Make party passwords of 8 characters work, disallow longer
1989 passwords. Based on patch #1080096 from Casper.
1990 Correct help message for party commands.
1991Andreas Kirschbaum 2004-12-10
1992
1993plugin/plugin_python.c: change 'long long' so 'sint64' (typedef).
1994Ryo Saeba 2004-11-29
1995
1996common/object.c: apply patch #1066665 courtesy Salathar for exits with
1997 blockview 1.
1998lib/formulae: apply patch #1064643 courtesy Salathar to fix broken formulae.
1999lib/wizhelp/speed: remove file, command changed name.
2000lib/wizhelp/server_speed: updated 'speed' command help.
2001server/c_wiz.c: apply patch #1063051 courtesy Salathar to update muzzle message.
2002server/commands.c: apply patch #1052224 courtesy Casper to change
2003 'speed' to 'server_speed' as name is ambiguous.
2004Ryo Saeba 2004-11-25
2005
2006common/loader.l: Fix passed size in FAST_SAVE_LONG() - was one too long,
2007 causing truncated diffs after "dam_modifier" entry.
2008Andreas Kirschbaum 2004-11-15
2009
2010This commit adds the functionality of patch 991916, although the patch
2011as submitted was used as a baseline to start from.
2012include/sproto.h: rebuilt
2013server/c_chat.c: Rename command_chat() to command_tell_all() which takes
2014 a few more optional parameters. Add command_shout() and command_chat()
2015 that invoke command_tell_all() with the appropriate changes.
2016server/commands.c: Add chat to list of command table.
2017MSW 2004-11-08
2018
2019plugin/plugin_python.c: Run the script python_init.py right after
2020 initializing the interpreter.
2021Andreas Kirschbaum 2004-10-21
2022
2023server/c_party.c: actually warn party members of password change. Notify when
2024 someone joins party.
2025Ryo 2004-10-21
2026
2027plugin/plugin_python.c, plugin/include/plugin_python.h, server/plugins.c:
2028 Fix comments, change whitespace.
2029Andreas Kirschbaum 2004-10-19
2030
2031Fix some bugs I introduced in my last commit.
2032common/map.c: Add back in call to sum_weight that got removed when removing
2033 the object checking code.
2034common/treasure.c: Have fix_generated_item() blank out the randomitems
2035 field after it has created treasure.
2036server/apply.c: Only clear randomitems after create_treasure() - don't
2037 presume it should get blanked out for other reasons - with change
2038 to treasure.c above, this should be more reliable and fix starting
2039 skill issue, as randomitems was getting blanked out for CLASS object.
2040server/main.c: Change processing of players a little - found crash where
2041 autosave was called for a removed player (map had got swapped out) -
2042 don't do autosave logic if player is removed. Move the autosave code
2043 to after the players action, so that can just have a single check of
2044 removed status.
2045MSW 2004-10-17
2046
2047include/sproto.h, server/egoitem.c: Change create_artifact() to return whether
2048 the artifact was created.
2049server/plugins.c: Change CFWCreateArtifact()/HOOK_CREATEARTIFACT to return
2050 whether the artifact was created.
2051plugin/plugin_python.c: Define new function create_object() to create
2052 objects. Use this function to fix CFPython.CreateObjectInside() and
2053 CFPython.CreateObject(): creation of artifacts does work now.
2054plugin/plugin_python.c: Fix CFPython.GetNextPlayerInfo() to work with long
2055 force names. Remove duplicate variable initialization.
2056server/plugins.c: Remove the use of malloc() in initOnePlugin().
2057Andreas Kirschbaum 2004-10-18
2058
2059plugin/plugin_python.c, plugin_animator/animator_box.c,
2060plugin_animator/plugin_animator.c, plugin_logger/arena.c,
2061plugin_logger/plugin_logger.c: Use HOOK_FREEMEMORY to free memory allocated
2062 by HOOK-functions. Fix memory leaks.
2063plugin/plugin_python.c, server/plugin.c, plugin_animator/animator_box.c: Fix
2064 some more mismatches between plugin interface and implementation.
2065 CFPython.Get/SetSkillExperience() use 64-bit exp values now.
2066 CFPython.CastAbility() works again.
2067Andreas Kirschbaum 2004-10-16
2068
2069plugin/plugin_python.c, server/plugin.c: Fix type mismatches between plugin
2070 interface and implementation.
2071plugin/plugin_python.c, server/plugin.c: Add/remove "static" to/from some
2072 variables. Fixes a memory leak in CFPython.SaveObject().
2073plugin/plugin_python.c: Fix reference counting for Python objects.
2074Andreas Kirschbaum 2004-10-15
2075
2076common/living.c: Fix exp functions to use the player objects expmul
2077 value when determining level gains, and not the skills. Also,
2078 fix bug where players last hp/sp/grace gain I think was being
2079 re-rolled when player gained level in skill.
2080common/loader.l, loader.c: Add better recording of non existant objects
2081 (no archetype for them) in maps. Also, handle such objects in
2082 players inventories properly (which is to just discard them)
2083common/map.c: Add better logging about discarded archetypes. Since the
2084 loader now deals with objects without archs in inventories, that
2085 code doesn't need to be in the server.
2086common/object.c: copy_object() was not properly nulling out the
2087 next field in the event object, pointer to event list was also
2088 incorrect, causing events to not be copied properly.
2089doc/spoiler-html/spoiler.html: Rebuilt.
2090server/apply.c: Apply patch by MT that fixes problem of entire inventory
2091 not being copied properly. Fix problem that objects in creatures
2092 were not having any sub treasure created (eg, put a pyro_book in
2093 a monster on the map, and the pyro_book wouldn't have a spell in
2094 it) - now we make sure we process inventory objects as well as map
2095 objects, creating treasure as needed.
2096server/monster.c: Reverse order of cast_spell() and drain_rod() in
2097 monster_use_range() - drain_rod() should go first, because
2098 case_spell() can in rare cases destroy the rod.
2099MSW 2004-10-14
2100
2101server/c_misc.c: Add natural skin resistances to 'statistics' output for
2102 dragon players.
2103Ryo 2004-10-10
2104
2105common/readable.c: Apply patch by Kevin Rudat to add some alchemy book names.
2106common/readable.c: Apply patch by Kevin Rudat to fix buffer overrun while
2107 generating book titles.
2108Andreas Kirschbaum 2004-10-09
2109
2110include/sproto.h: Add function prototype.
2111server/c_wiz.c: Add 'command_stack_clear' to clear DM item stack.
2112server/commands.c: Link function to function array.
2113Ryo 2004-09-26
2114
2115server/player.c: Allow to 'reply' to players that logged out but did not yet
2116 drop the connection. Now reply works like other communication commands.
2117common/utils.c: Fix random_roll() and die_roll() to not return out of range
2118 values.
2119include/define.h: Add parentheses around arguments of FABS macro.
2120Andreas Kirschbaum 2004-09-19
2121
2122server/rune.c: Prevent creation of level 0 runes. Re-enable runes to cast
2123 multiple spells.
2124Andreas Kirschbaum 2004-09-14
2125
2126include/config.h: fix Win32 log path so there actually is a log.
2127plugin/plugin_python.c: uint doesn't exist under Win32, use uint32 instead.
2128
2129Patches from tracker, courtesy Kurtat:
2130patch 1022942: Random documentation updates
2131 doc/SurvivalGuide
2132 doc/Developers/programming_guide
2133 doc/Developers/protocol
2134 lib/settings
2135 lib/help/cast
2136patch 1022973: Words for numbers in spellbook description
2137 server/c_object
2138Ryo 2004-09-12
2139
2140server/attack.c: Pass in skill (string) to change_exp instead of skop->skill -
2141 skop can be null, resulting in a crash here. In addition, other calls
2142 to change_exp in this function use the skill string, so it is good to
2143 be consistent.
2144MSW 2004-09-09
2145
2146server/c_wiz.c: Don't forget to skip blanks after reading item number or stack
2147 position. Works better for commands like patch :)
2148Ryo 2004-09-06
2149
2150common/object.c: Fix insert_ob_in_map so right coordinates and map
2151 value are used on GET_MAP_OB call - was using values before changes
2152 for tiling were applied.
2153MSW 2004-09-02
2154
2155server/player.c: allow to 'talk' to players with ambiguous names: use a
2156 perfect match even if other partial matches exist.
2157Andreas Kirschbaum 2004-08-30
2158
2159include/define.h
2160server/shop.c
2161 add new flags F_IDENTIFIED and F_NOT_CURSED to query_cost() to pretend
2162 the item to be identified/not cursed or damned.
2163server/alchemy.c
2164 fix possible abuse of shadow alchemy: do not allow the generated items
2165 to be more valuable than the ingredients when using alternate recipes.
2166Andreas Kirschbaum 2004-08-24
2167
2168common/map.c: Add extra check to make sure variable is set before calling
2169 strcmp - this can happen if the map file that is being loaded is
2170 0 bytes - without this, the server would crash.
2171MSW 2004-08-23
2172
2173
2174server/disease.c: fix crash when casting diseases on tiled maps.
2175server/move.c: fix problem with multi-tile monsters and pass thru walls.
2176server/spell_effect.c: fix magic walls sometimes appearing in wrong place.
2177Andreas Kirschbaum 2004-08-20
2178
2179common/loader.l, loader.c: in check_loaded_object() - don't give spell
2180 objects inventory if we are in the arch_init phase. When loading objects
2181 in common loader routine, if object doesn't have arch, set the object
2182 name to the arch name so that it is more meaningful than 'singularity'.
2183common/map.c: If object has inventory, check to make sure the inventory
2184 objects have an archetype set - if not, remove and free the object -
2185 objects without archetypes causes crashes.
2186MSW 2004-08-17
2187
2188server/apply.c: fix_auto_apply() - add some debugging statements, as I've
2189 seen crashes caused by monsters with scrolls with no spells - need to
2190 figure out how those are showing up.
2191server/c_wiz.c: command_kick() - fix occasional crashes when player isn't
2192 on any map when kicked. command_create() largely rewritten so it doesn't
2193 crash the server on any malformed values passed in, add some more features
2194 so it should be easier to create objects.
2195MSW 2004-08-16
2196
2197server/apply.c: better to not create a treasure for spellbooks that already have
2198 something in inventory. Else you get 2 spells in the book, which then
2199 mutates when loading (first spell is the book's spell, and order changes every
2200 load/save...)
2201Ryo 2004-08-16
2202
2203Those changes mostly add an item stack for DMs. It makes it easier to dump & patch &
2204manipulate items without having to copy numbers all the time.
2205Basically, you can use '$x', meaning item at position x on stack. Or even
2206omit argument, defaulting to stack top.
2207When using an object number, it gets stacked automatically (up to 50 items).
2208Also add a 'diff' command, letting the DM see the result of 'get_ob_diff' on items,
2209to spot differences easily.
2210
2211common/player.c: free item stack when freeing player structure.
2212include/player.h: add item stack to player structure.
2213include/sproto.h: new functions for stack.
2214include/win32.h: missed commit for 1.6.1 version.
2215server/c_misc.c: push item dumped with 'deumpbelow' on dm stack.
2216server/c_wiz.c: add stack functions. Use'em on patch, create, remove, free, and such.
2217 Add 'diff' command.
2218server/commands.c: add new stack & diff commands.
2219Ryo 2004-08-15
2220
2221server/spell_attack.c: fix mood_change when spell has no attacktype.
2222 In this case, do a specific saving throw, to ensure a level 1 player
2223 can't charm a level 125 monster.
2224Ryo 2004-08-14
2225
2226random_maps/exit.c
2227random_maps/random_map.c
2228random_maps/random_map.h
2229random_maps/reader.l
2230random_maps/rproto.h
2231random_maps/special.c
2232random_maps/wall.c
2233 added fix for random maps with single arch walls,
2234 added level indicator on random map signs
2235 added new parameter 'exit_on_final_map'- see documentation
2236TM 2004-08-07
2237
2238include/plugin.h
2239plugin/plugin_python.c
2240server/c_wiz.c
2241server/plugins.c
2242 add event hooks for Kick and Muzzle(toggle_shout) commands.
2243 fix CFSetQuantity by changing the int to uint and remove 100000 item limit.
2244 pythonplug now looks for event scripts in maps/python/events.
2245TM 2004-08-02
2246
2247server/skills.c: xp for writing is now multiplied by skill level, to
2248 make it possible to level.
2249Ryo 2004-07-17
2250
2251common/loader.c: add #ifndef for non-existant Win32 header
2252include/win32.h: #define vsnprintf _vsnprintf to fix linking issue
2253Ryo 2004-07-03
2254
2255server/skill_util.c: Fix skills command so that it properly displays
2256 percentage of permanent exp.
2257server/time.c: Modify move_arrow() so that it removes thrown objects
2258 with no inventory.
2259MSW 2004-06-22
2260
2261socket/info.c: Replace sprintf() calls with snprintf() - got metalforge
2262 crash with apparent buffer overun - going to snprintf should prevent
2263 the problem in the future.
2264MSW 2004-06-21
2265
2266server/c_wiz.c: for command_create() - check to see if 'of' parameter
2267 is a spell archetype name, and do the right thing if it is. This
2268 allows things like 'create rod_heavy of spell_large_lightning'.
2269 Note that the command_create is still a seriously broken function
2270 in many regards.
2271server/rune.c: Fix write_rune() when trying to find the spell in encase
2272 in the rune - assignment was incorrect, so it always took the last
2273 matching spell in the players inventory, not the best matching spell.
2274server/spell_util.c: Change the call to prayer_failure() so that its
2275 potency is based on how badly short the player is short of grace. Eg,
2276 if only 1 point short, potency of 1. This changes from before where
2277 the potency was always the difference in mana.
2278MSW 2004-06-17
2279
2280server/attack.c: Fix hit_with_arrow() so that it uses the proper map
2281 when inserting the arrow.
2282server/c_wiz.c: Add note about brokeness of command_create()
2283server/spell_effect.c: execute_word_of_recall() - don't attempt recall
2284 if player isn't on any map.
2285MSW 2004-06-15
2286
2287common/object.c
2288include/define.h
2289include/player.h
2290include/sproto.h
2291server/attack.c
2292server/c_object.c
2293server/player.c
2294server/shop.c
2295socket/item.c
2296socket/loop.c
2297socket/request.c: Remove explicit calls to
2298 esrv_update_item(UPD_WEIGHT, pl, pl) for player objects. Instead
2299 send the new weight whenever it changes.
2300Andreas Kirschbaum 2004-06-13
2301
2302server/spell_attack.c: cast_destruction() - have it change the skill
2303 for the caster so that exp is properly awarded.
2304common/object.c: insert_map_in_ob() - remove CAN_MERGE checks after the
2305 map translation - otherwise, we can have bogus coordinates
2306 that are used for GET_MAP_OB.
2307random_maps/style.c: pick_random_object() - have it return null object
2308 (and probably crash) instead of getting into an infinite loop.
2309server/c_wiz.c: command_kick() - check FLAG_FREED of player. Remove all
2310 the broken skill/exp object granting code in command_possess() - this
2311 is probably still a broken function.
2312common/item.c: describe_monster() - if the creature/player is stealthy,
2313 mention it when the object is described.
2314common/loader.l, loader.c: Fix passed in size to get_ob_diff() - was one
2315 to long, causing string corruption.
2316server/spell_attack.c: mood_change() - fix get_map_ob call - wasn't using
2317 correct coordinate variables, resulting in crash.
2318MSW 2004-06-10
2319
2320server/c_party.c: gsay improvements, courtesy Katia.
2321Ryo 2004-06-09
2322
2323server/commands.c: Disable 'possess', that crashes server.
2324server/monster.c: Make monsters use wands/horns/... again. Also make'em
2325 ignore DMs all the time (even when not invisible).
2326server/skill_util.c: Fix the change_skill when called for monsters.
2327Ryo 2004-06-06
2328
2329server/c_misc.c: Add sum_weight() call to fix_me command so that players
2330 weight is properly recalculated.
2331server/skills.c: Fix up attempt_steal() so that it doesn't improperly
2332 remove object from target when person doing the stealing can't pick
2333 it up.
2334server/spell_attack.c: Set maxhp properly, so multipled fireballs, etc
2335 can be going off at the same time.
2336server/spell_effect.c: Fix up cast_create_missile() so more esoteric
2337 missiles can be created.
2338MSW 2004-05-31
2339
2340include/sproto.h: new 'dmhide' command.
2341server/commands.c: new 'dmhide' command.
2342server/c_wiz.c: added 'dmhide' command. Player becomes DM, and 'hide's immediately. Others
2343 only see him/her leave the game, they don't know s/he's DM.
2344Ryo 2004-05-24
2345
2346include/book.h: Increase the size of BOOK_BUF, so inscribed books can hold
2347 more informatin.
2348lib/Makefile.am, lib/Makefile.in: Add the 'rename' to the list of help
2349 files.
2350lib/archetypes: update the glyph/rune spells to have proper face.
2351lib/bmaps, lib/crossfire.* - add glyph.111 image.
2352server/gods.c: Modify tailor_god_spell() to look harder to find a god -
2353 necessary for glyph spells.
2354server/spell_attack.c: Give players 50% of exp for monsters they charm.
2355MSW 2004-05-19
2356
2357common/object.c: Correct get_search_arr() to return a proper permutation.
2358Andreas Kirschbaum 2004-05-18
2359
2360server/main.c: Have process_events display information from dumped object.
2361 also, more refinement on checking of object status.
2362MSW 2004-05-16
2363
2364server/build_map.c: change 'player' variable to 'pl', since a player
2365 structure already exists. Also fix disappearing pedestals on non-unique
2366 maps (put'em over floor, they are visible but hey, can't have everything :p)
2367server/c_wiz.c: fix learn_spell.
2368Ryo 2004-05-16
2369
2370server/main.c: freeing removed objects appeared to have more of a
2371 consequence than expected - only remove the object if it was on a map
2372 (op->map). It turns out that the artifact code uses objects that
2373 are removed to store what the new object is.
2374server/spell_effect.c: Fix cast_create_food() to call
2375 find_archetype_by_object_name() instead of find_archetype(). In this
2376 way, players can use invoke without having to know the archetype name.
2377server/c_wiz.c: Modify command_banish() to record dm name, player name,
2378 and date of command.
2379server/acinclude.m4: Patch by acinclude.m4 to add python 2.3 support.
2380 Rebuilt files (Makefile.in, aclocal.m4, configure, configure.in). add
2381 config.guess, config.sub since automake now includes them in the Makefile.in
2382 file.
2383MSW 2004-05-15
2384
2385
2386Added a new item type: ground positioning system (GPS).
2387This lets a player know his/her location in the world.
2388Only works in 'world_xxx_xxx' maps.
2389
2390include/define.h: add new item type, 'GPS' (162).
2391include/sproto.h: add new function, 'apply_positioning_system'.
2392server/apply.c: handle new item type.
2393Ryo 2004-05-15
2394
2395server/spell_util.c: SP_level_spellpoint_cost() - never have a spell
2396 cost 0 spellpoints due to attunement or other bonuses - spell always
2397 cost at least 1 sp/grace.
2398server/main.c: Fix process_events() so it doesn't purge removed players
2399 from the list - players get in the removed state at play again
2400 prompt.
2401server/apply.c: Fix fix_auto_apply() so we don't generate additional
2402 spells for spellcasting objects that already have them (regression
2403 from fix from 5/11 below)
2404MSW 2004-05-13
2405
2406server/pets.c: Fix summon golem, summon pet monsters so that the summoned
2407 monsters are not worth any exp. Fixes bugs were players could
2408 summon monsters and then kill them.
2409server/skills.c: Fix do_skill_detect_curse() and do_skill_detect_magic()
2410 so that they don't process objects the player is incapable of picking
2411 up (eg, floors). Fixes experience exploit.
2412server/apply.c: modify fix_auto_apply() so that it properly generates
2413 items for creatures that start with objects in their inventory.
2414MSW 2004-05-11
2415
2416server/spell_util.c: Fix cast_spell() so that failed spells (due to
2417 encumberance or other penalties) still cost some random number of grace/
2418 mana points.
2419MSW 2004-05-10
2420
2421common/treasure.c: Change the loading of the artifacts file to actually
2422 calloc() the object - reset_object() doesn't clear all the values,
2423 like active_next, active_prev, so better to just do it there.
2424server/main.c: Add code in process_events() that checks for removed objects -
2425 have seen occasional crashes caused by them.
2426MSW 2004-05-08
2427
2428Armor enchantment now uses setting values.
2429common/init.c: new values to init in settings.
2430include/global.h: new setting values.
2431include/config.h: new default values for settings.
2432lib/settings: explanation for those new values.
2433server/apply.c: change armor improvement code to use setting values.
2434server/init.c: read new settings.
2435Ryo 2004-05-08
2436
2437common/init.c: there's a #define LOGFILE, use it instead of hardcoded value.
2438include/config.h: change default logfile path to previous value in init.c.
2439server/c_wiz.c: Fix 'nodm' displaying incorrect messages, and forgetting to
2440 update player count on map.
2441Ryo 2004-05-08
2442
2443server/apply.c: Fix apply_special() to properly deal with LAMP objects - it
2444 wasn't dealing properly with the split off lamp compared to the one it
2445 was supposed to deal with - was crashing server.
2446MSW 2004-05-04
2447
2448common/item.c: describe_monster() - print luck when describing players (fixex
2449 perceive self not showing luck)
2450server/attack.c: kill_object() - don't give player exp if he kills himself -
2451 compare owner against what was killed, not the hitter.
2452server/pets.c: summon_object() - move breaking out for last treasurelist
2453 after we set the last valid treasurelist - otherwise, the list entry for
2454 the treasurelist was never used. Change summoned creatures so that
2455 the items they have are god given, and thus disappear when they
2456 are killed - prevents players from summoning and then looting their pets.
2457server/spell_attack.c: explode_bullet() - Get owner of the spell so that we
2458 can properly tailor the explosion portion of the spell for the god
2459 of the worshipper.
2460MSW 2004-05-03
2461
2462server/shop.c: patch from Andreas Kirschbaum for Windows compilation.
2463server/spell_effect.c: patch from Andreas Kirschbaum for Windows compilation.
2464Ryo 2004-05-03
2465
2466common/porting: changed open_and_uncompress to use const char* instead of
2467 char*, since value shouldn't be changed (and isn't).
2468include/libproto.h: changed prototype for open_and_uncompress
2469Ryo 2004-04-28
2470
2471------------------------------------------------------------------------------
2472Changes for 1.6.0:
2473
2474configure, Makefiles: Rebuilt for 1.6.0 release
2475doc/*/Makefile.am: Modified to use one makeps.pl utility in scripts directory.
2476doc/scripts/makeps.pl: Make this the definitive copy - fix problem with it
2477 trying to combine big images when it doesn't need to. Remove other copies.
2478doc/playbook/chap1.tex, doc/playbook/chap5.tex: Fix some obvious errors,
2479 but overall, the playbook is still quite out of date.
2480doc/playbook/treas2-extract: Have it not include abilities in given items,
2481 have it properly deal with multiple underscores in arch names.
2482doc/spoiler-html/spoiler.html, doc/spoiler.ps: Rebuilt
2483MSW 2004-04-26
2484
2485server/apply.c: apply_savebed() - make call to terminate_all pets before
2486 call to remove_ob() so that pets are properly removed.
2487common/item.c, server/c_object.c: Fix code so that skill tools (talismans,
2488 holy symbols, etc) are properly describe. Clean up formatting of long_desc()
2489MSW 2004-04-25
2490
2491
2492Change most shop buy/sell functions to use 64 bit values. Problem arises
2493where player would sell valuable item, and if they wanted to buy them back,
2494it would overflow a 32 bit value, so they could buy them back for free.
2495Note quite as odd when you consider the buy/sell price for really valuable
2496items to be very different.
2497include/global.h: Add UINT32_MAX and other max type defines for our typedef
2498 values so that we have standard setting of what the cap is.
2499server/apply.c: Change get_payment call to take second argument.
2500server/plugins.c: Add note about bug in handling of query_cost in this
2501 function.
2502server/shop.c: query_cost() now returns 64 bit. Many other functions
2503 updated to also take/return 64 bit cost values. Have cost_string
2504 nicely deal with values that are beyond affordability. Rename get_payment2()
2505 to get_payment(), and remove the later, which was just a simple wrapper
2506 function that called get_payment2.
2507server/spell_effect.c: Update alchemy code. Remove some suspect use of
2508 static values.
2509MSW 2004-04-24
2510
2511server/apply.c: fix check_weapon_power() so it operates on overall character
2512 level and not skill level - this matches up what the out of skills
2513 displays.
2514MSW 2004-04-20
2515
2516common/button.c: Patch by Bernd Edler to have proper speed set for items
2517 activated by buttons.
2518server/apply.c: Apply the 'special prayer' marker stuff, since it wasn't
2519 used anymore.
2520server/gods.c: Check for FLAG_EQUIP on spells and not for a special prayer
2521 marker to guess if a spell is a god given spell or not.
2522server/spell_util.c: Patch by Bernd Edler so that firewalls are immune
2523 to casting time.
2524MSW 2004-04-17
2525
2526server/shop.c: Decrease adjustment limit for expensive items to 10000 to get a
2527 continuous adjustment function. That is you will get much less when selling
2528 items with a value between 800pp and 2000pp.
2529Andreas Kirschbaum 2004-04-16
2530
2531common/map.c: Change blocked_link() to take a map parameter. Also, change code
2532 in blocked_link() to assume that the caller has set up appropriate map and
2533 coordinates related to tiling (in all functions that currently call
2534 blocked_link, this is the case)
2535include/libproto.h: Rebuilt.
2536server/move.c, server/player.c: update call to blocked_link to include the map.
2537MSW 2004-04-15
2538
2539common/object.c: Change CAN_MERGE() so that it compares the stats structure of
2540 the objects being merged. Fixes problems of rings improperly merging with
2541 other rings that have different stat values.
2542server/monster.c: Modify check_earthwalls() and check_doors() to take a
2543 map structure as an option parameter, and use that structure when
2544 calling get_map_ob. Fixes a crash in cases where earthwalls/doors
2545 were at the edge of a tiled map, and creature was on other map moving into
2546 it.
2547server/move.c: Change move_ob() to adjust coordinates for tiling, and
2548 pass in these adjusted coordinages (and map) to the check_() functions
2549 in monster.c
2550random_maps/treasure.c: Apply patch by Andreas Kirschbaum so that it does
2551 more work in trying to place keys on maps.
2552MSW 2004-04-13
2553
2554common/living.c: Patch by Bernd Edler to remove cap on exp for players.
2555MSW 2004-04-09
2556
2557common/item.c: If potion wasn't given a random spell, use the archetype
2558 name when it is identified.
2559common/treasure.c: Fix potion codes so that healing and magic power potions
2560 get the proper spell inserted into them. Also fix line termination issue.
2561server/skill_util.c: Add check in skill_attack() to make sure current_weapon
2562 is not null - there has been some crashes here, but I can't figure out
2563 how it gets to this state, so better to at least handle it.
2564MSW 2004-04-07
2565
2566server/player.c: In flee_player(), make sure the enemy to the player is
2567 on an actual map - fixes crashes.
2568MSW 2004-04-06
2569
2570common/potion.c: Fix up change_abil() to more properly deal with potions -
2571 characters could get 0 stat values. Also, messages were not being properly
2572 displayed. Patch is slightly modified from one sent in by Bernd Edler.
2573MSW 2004-04-05
2574
2575server/main.c: Add extra checking for valid map coordinates after we grab
2576 them from the destination map itself - if a map is broken and has
2577 default enter_ coordinates outside the maps range, this previously
2578 resulted in a crash.
2579server/pets.c: Pass the correct map object into insert_ob_in_map().
2580MSW 2004-04-03
2581
2582server/monster.c: fixed wiz's hidden mode not working on monsters.
2583Ryo 2004-03-28
2584
2585common/porting.c
2586include/libproto.h
2587include/win32.h: added 'const' specifier to str-related functions.
2588Ryo 2004-03-26
2589
2590common/exp.c
2591common/living.c
2592common/loader.[cl]
2593common/porting.c
2594server/c_misc.c
2595server/c_wiz.c
2596server/hiscore.c
2597server/resurrection.c: fixed %lld to %I64d for Windows.
2598Ryo 2004-03-26
2599
2600server/attack.c: Add scare_creature() function, which sets FLAG_SCARED
2601 and also sets up appropriate enemy. Clean up some formatting in
2602 other functions, and fix friendly fire - move it out of the loop for
2603 all attacktypes (can be after we have figured out max damage). Also,
2604 has a bug where if an attach wasn't doing any damage, friendly fire could
2605 actually make it do damage (eg, fear spell).
2606server/player.c: Fix up flee_player() to be map tile aware. Also, add
2607 call to flee_player() in handle_newcs_player() so player will run away.
2608MSW 2004-03-24
2609
2610server/attack.c: Add missing skill=NULL in kill_object() - can be rare
2611 cases where the proper skill can't be found.
2612server/move.c: Fix push_object() so that it also updates the pushers/
2613 pushees map - should only happen in tiled map cases.
2614server/pets.c: Fix summon_object() so that if a summon cult monsters was
2615 cast, we try to find the god from the owner. If still can't find the
2616 god, just return instead of crashing.
2617server/rune.c: Change trap_disarm() to call destroy_object() on the
2618 trap object, so that all the trapss inventory is also destroyed
2619 and not dumped on the ground.
2620server/skills.c: Only players without arms to steal.
2621server/spell_util.c: Change cast_spell to set up the skill pointer for the
2622 caster even if the caster is the wizard.
2623MSW 2004-03-22
2624
2625server/treasure.c: patch from Bernd Edler to enable multiple
2626 'allowed' lines in artifacts.
2627Ryo 2004-03-12
2628
2629Those fixes make DMs more 'stealthy' (when hiding/unhiding).
2630Also use yet unused colors for player join/leave, and DM join/leave.
2631This way those messages appear in a different window in split window
2632mode, to make the messages easier to spot.
2633server/apply.c: change color for player leave message.
2634server/c_misc.c: let DMs see hidden DMs.
2635server/c_wiz.c: make DMs more stealthy.
2636server/login.c: change color for player joining message.
2637server/main.c: change color for player joining/exiting message.
2638Ryo 2004-03-12
2639
2640common/item.c: Fixed calc_item_power() to return valid item power for
2641 items with high enchantments.
2642Andreas Kirschbaum 2004-03-07
2643
2644server/spell_effect.c: small patch by Karla Stenger to put player's name
2645 in the 'race' field of marking runes. This way, a DM can know who wrote
2646 a rune, in case it has some bad vocabulary :)
2647Ryo 2004-03-06
2648
2649server/spell_attack.c: change check_cone_push function to use arch weights.
2650move function up for resuability and change to check_spell_knockback
2651include/sproto.h: change function name
2652TM 2004-02-28
2653
2654
2655common/image.c: removed unused variables.
2656common/item.c: conditionally remove unused variables.
2657common/map.c: conditionally define variables, unused under Windows.
2658include/global.h: turned off a conversion warning under Windows.
2659Ryo 2004-02-28
2660
2661
2662common/living.c: changed 'signed char' to 'sint8' for set|get|change_attr_value.
2663common/map.c: map size is sint16, for arch_blocked.
2664include/libproto.h: update prototypes for set|get|change_attr_value and arch_blocked.
2665random_maps/rproto.h: changed prototype for surround_flag3.
2666random_maps/wall.c: changed surround_flag3 to use sint16 instead of int for map
2667 coordinates.
2668server/apply.c: attribute values are sint8 in eat_special_food and
2669 apply_changes_to_player. Some explicit casts.
2670server/player.c: map coordinates are sint16, in hideability.
2671server/spell_attack.c: map coordinates are sint16, not int.
2672server/spell_effect.c: stats are sint8 in cast_change_ability. Map coordinates are
2673 sint16 in move_aura.
2674server/time.c: generate_monster doesn't return a value.
2675Ryo 2004-02-27
2676
2677
2678common/living.c: Have give_skill_by_name() update the skill pointers in the
2679 player object.
2680server/spell_attack.c: Properly set maxhp in the cone spell - this is used
2681 in ok_to_put_more() to make sure one spell doesn't hit a single space
2682 too many times.
2683MSW 2004-02-23
2684
2685common/object.c: Change CAN_MERGE() so that we never merge applied objects -
2686 whether or not they are rings.
2687lib/*: different spell for dragons vs players for firebreath - update
2688 treasures so monsters use ability version.
2689server/gods.c: Add missing call to link_player_skills(), resulting in players
2690 having multiple praying skills.
2691server/skill_util.c: Change learn_skill() so we don't create a skill pointer
2692 for the player if they didn't learn the skill (even if they can't use
2693 such a created skill, it is still a bit confusing). Fix finding of
2694 hand to hand skills to make sure the player can in fact use the skill
2695 in question.
2696server/spell_attack.c: Fix cast_cone() so that it properly hits all directions.
2697MSW 2004-02-22
2698
2699
2700include/define.h,server/shop.c: Apply patch by Bernd Edler that gives
2701 bargaining experience based on the amount of money a character saves.
2702 Higher the bargaining skill, the more money they can save.
2703MSW 2004-02-16
2704
2705doc/Developers/spells: Update type on casting_time - include suggested value
2706 for times so that results are hopefully more coherent.
2707lib/archetypes, treasures.bld: rebuilt.
2708lib/treasures: Change some of the 'spelldirect' types to just the actual spells,
2709 so that two seperate archs don't have to be maintained.
2710server/c_wiz.c: Add some basic sanity checking to command_remove() so that
2711 we don't unnecessarily crash.
2712server/skills.c: write_scroll() - have it reset value of the scroll so that
2713 the scrolls so inscribed by players have better chance of merging.
2714server/spell_attack.c: cast_cone() - if the caster is a trap, have it hit
2715 the center space, so that characters who detonate cone traps will get hit
2716 by the effects. Also, reduce range of cone spells if they are going
2717 in all directions, compared to being targetted in a speciifc direction.
2718server/spell_util.c: cast_spell() - put lower limit on player speed_left value
2719 when casting spells - since higher up the calling stack, the player speed
2720 is also reduced, we need to set the lower limit here so that the player
2721 isn't out of action longer than they should be.
2722MSW 2004-02-16
2723
2724include/map.h: removed unused fields from wmapdef..
2725include/object.h: removed unused field from object.h. Changed glow_radius to sint8 to be
2726 coherent with struct MapSpace.
2727include/player.h: removed unused fields from player structure.
2728server/apply.c: removed unused known_spell field.
2729Ryo 2004-02-16
2730
2731common/object.c: change get_owner() so that it also returns no valid owner if
2732 the owner is removed. This fixes a crash if a player quits but is still
2733 sitting at the play again prompt when something he owns kills something.
2734server/skill_util.c: Fix show_skills() so that if the character has too many
2735 skills for whatever reason, we don't crash, and instead print an error
2736 to the player.
2737server/spell_attack.c: Fix typo - not sure actual effect, but probably nothing
2738 good. '+ +' should just have been '+'
2739MSW 2004-02-12
2740
2741common/Makefile.am: Clean up proto - lex seems to toss some new symbols in
2742 now days.
2743common/map.c, common/object.c, server/player.c, socket/item.c,
2744 socket/request.c: change parameters of get_map_from_coord from int to
2745 sint16, so the op->x,op->y can get passed directly in. Update callers of
2746 this function.
2747lib/archetypes: Add damned 1 to the shop floors.
2748server/pets.c: Fix problem with big (multisquare) pets following the owner
2749 across tiled map boundaries.
2750socket/item.c: Fix problem of players being able to see everything within
2751 containers by just looking at them.
2752MSW 2004-02-10
2753
2754common/treasure.c: add_abilities(): For potions and horns (spell casting
2755 objects) convert the other_arch into a spell and put into the object -
2756 otherwise, the spell casting object casts the wrong spell.
2757common/object.c: Clean up formatting of copy_object. Only real code change
2758 is to fix events - copied event data wasn't getting malloc'd, and thus
2759 when another object of that event was freed, it freed the event data
2760 for all objects derived from it.
2761common/treasure.c: Fix fix_generated_item() so that books generated by
2762 monsters with no_pick set don't inherit that for the book itself.
2763 Still do it for other objects of the creator type.
2764MSW 2004-02-08
2765
2766server/c_object.c: fixed sack_can_hold for the 'won't fit' cast,
2767 missing 'return 0'
2768server/gods.c: applied Karla Stenger's patch, making sure 'praying' is
2769 applied when becoming fellower of a god
2770Ryo 2004-02-08
2771
2772Changed map-building to work on non-unique maps too.
2773server/build_map.c: removed check for unique map.
2774Ryo 2004-01-19
2775
2776
2777Added map-building code. This lets players change unique maps,
2778 adding & removing walls, doors, stuff like that.
2779 New item types BUILDER & MATERIAL. New item flag FLAG_IS_BUILDABLE.
2780 New range attack (builder).
2781----
2782Changelog: change prescribed date format to be coherent with usage :)
2783common/loader.l: added 'is_buildable' flag.
2784include/define.h: added defines for item types & subtypes, and item flag.
2785include/player.h: new range type 'builder'.
2786include/spropo.h: new function apply_map_builder.
2787server/apply.c: handle new range type.
2788server/build_map.c: new file, handles all build-related code.
2789server/c_object.c: added 'buildable item' to examine function.
2790server/Makefile.am: added build_map.c to compilation.
2791server/player.c: handle new range type.
2792socket/info.c: handle new range type.
2793Ryo 2004-01-18
2794
2795
2796Fix a crash related to plugin hooks
2797common/object.c: clear_object(): object's event's hook/plugin/options
2798 are initialized with FREE_AND_COPY, so they are shared strings.
2799 Better to release'em with FREE_AND_CLEAR_STR instead of
2800 FREE_AND_CLEAR, else nice crashes...
2801Ryo 2004-01-16
2802
2803Fix writing not inserting correctly item in inventory, and Windows-
2804 specific stuff too
2805server/skills.c: write_scroll(): Better to insert spell in scroll,
2806 and not the other way around
2807server/skill_util.c: fix Windows-specific int64 stuff.
2808Changelog: fix Mark's 2003 to 2004 :)
2809Ryo 2004-01-16
2810
2811Fix a bunch of crashes observed on metalforge:
2812server/player.c: do_hidden_move(): Move call to find skill so that it is
2813 always called.
2814server/skills.c: write_scroll(): Fix freeing of spell object in
2815 scroll - newscroll->inv isn't valid after calling remove_ob, so
2816 need to copy object to temporary pointer first.
2817server/spell_effect.c: cast_detection(): Pass in skill to use. If no
2818 skill in use, use the caster object - fixes pointer derefence
2819 as op->chosen_skill wasn't always set.
2820server/spell_util.c: modify caster_level() to always return at least 1.
2821 Fixes pointer potential divide by zero problems - also guarantees
2822 that players will be able to cast first level spells even if
2823 repelled to that spellpath. ok_to_put_more() - Fix to use correct
2824 map pointer variable. find_target_for_friendly_spell() - make it
2825 so it handles tiled maps OK.
2826MSW 2004-01-15
2827
2828common/object.c: fix the monsters on tiled maps bug that I may have
2829 mentioned a while ago. Seems that the server assumed that all
2830 parts of a multi part monster are on the same map as the head
2831 while moving.
2832DVS 2004-01-12
2833
2834common/living.c: fix fix_player() so that character gets benefits/penalties
2835 for sp/hp/grace/etc regen bonuses as related to the god they worship.
2836server/player.c: dragon_ability_gain(): Modify so that character now gets
2837 attacktype of new ability that they gain. Also, add code so that
2838 the characters face/animation can change (getting set to values the bonus
2839 ability).
2840MSW 2003-12-27
2841
2842common/object.c: Set op->events=NULL in reset_object(), and move the
2843 clearing of the op->events structure to be before the memset in
2844 clear_object() - this was otherwise resulting in a memory leak,
2845 as memset would clear the pointer without actually freeing the data.
2846server/attack.c: Fix indentation of hit_map(), modify it so that attacks
2847 won't destroy items with no_pass set.
2848server/login.c: set op->speed=0, call update_ob_speed() before calling
2849 reset_object() - fixes problem with players not moving with recent
2850 changes to initting the active lists to NULL.
2851msw 2003-12-20
2852
2853
2854server/skills.c: changed NDI_UNIQUE to NDI_BLACK for the meditation
2855 message (so that messages can correctly be grouped, also makes it
2856 coherent with praying).
2857Ryo 2003-12-20
2858
2859Those fixes deal with gcc3.3 infinite loop.
2860Fixes (except sizeof/memset) courtesy Bernd Edler.
2861---
2862common/item.c: use right buffer size for safe_strcat.
2863common/object.c: clear active_next and active_prev when cleaning an object.
2864include/define.h: fixed *curlen=maxlen-1; instead of *curlen=maxlen=1;
2865socket/init.c: initialize whole ns->inbuf.buf, instead of setting first
2866 element only to 0. Also allocated with a sizeof( unsigned char ) * size,
2867 in case size changes one day. And initialize some more fields.
2868Ryo 2003-12-18
2869
2870
2871Those changes deal only with warning cleaning under Windows.
2872Mostly, using the right type at the right place, or doing explicit casts.
2873---
2874common/object.c: changed free_arr_[xy] to short[] instead of int[].
2875include/global.h: changed free_arr_[xy] to short[] instead of int[].
2876 Changed Windows-specific comments to C-style comments, not C++-style.
2877include/sockproto.h: play_sound_player_only takes sint8, not int, for
2878 coordinates. play_sound_map takes a short for the sound number.
2879socket/image.c: some type fixing, explicit casts.
2880socket/init.c: Windows-specific type fixing.
2881socket/lowlevel.c: explicit casts to char for SockList_AddInt64
2882socket/request.c: fixed types to match function parameters, or added
2883 explicit casts when needed.
2884socket/sound.c: play_sound_player_only takes sint8, not int, for
2885 coordinates. play_sound_map takes a short for the sound number.
2886Ryo 2003-12-14
2887
2888server/rune.c: Fix it so that players won't be hit by traps if they are
2889 not next to them when set off (firing arrows at a door for example).
2890server/spell_util.c: Fix spell_failure() to properly damage player if they
2891 fumble. Fix cast_spell() to not complain about not having enough
2892 grace if the spell doesn't take grace. Add same check for mana, but that
2893 is much less likely, as harder to get negative mana.
2894socket/request.c: Fix problem where map sending code was not properly avoiding
2895 duplicating the head of a big image on multiple layers. This bug most often
2896 manifested itself of player standing on lower right corner of large building,
2897 and something else standing on other portion of building - player would seem
2898 to disappear.
2899MSW 2003-11-30
2900
2901lib/adm/collect_images.pl: forced binary mode for written files.
2902 This lets the script work correctly under Windows.
2903Ryo 2003-11-29
2904
2905server/apply.c: correctly display learned skill's name, and not the
2906 scroll's.
2907server/skills.c: make 'sense curse' and 'sense magic' check items
2908 on the ground too.
2909Ryo 2003-11-25
2910
2911common/loader.l, loader.c: Fix firewalls so that their spell is properly
2912 initialized - uses 'dam' and not sp for those objects
2913server/apply.c: Fix check_weapon_power so that it finds proper wc object.
2914 Fix unapply_for_ob so that it won't unequip cursed/damned weapons if
2915 player switches objects.
2916MSW 2003-11-11
2917
2918bulk of this is to fix exp loss when changing gods if you have more than
29192 billion exp, removal of spells when you switch levels, and not giving you
2920all new spells when you switch religions.
2921--
2922common/living.c: Update exp functions to be fully 64 bit aware. Don't
2923 take away from player total exp if SK_SUBTRACT_SKILL_EXP is passed in.
2924common/utils.c: Add 64 bit version of random_roll(), called random_roll64()
2925lib/treasures: Make indentation consistent for some treasures.
2926server/apply.c: Use the FLAG_STARTEQUIP to denote god given spells, instead
2927 of using special prayer markers. This simplifies the spell learning
2928 and removal code.
2929server/gods.c: Make exp loss for changing religions 64 bit compliant.
2930 Fix become_follower() so that it doesn't give all the new gods special
2931 spells if you switch religions. Fix code so that it properly removes
2932 all special prayers from previous god, and also print out message on what
2933 spells you lost. Don't set the prayer skill as applied in various
2934 areas - this results in two skills being applied, which isn't proper.
2935MSW 2003-11-09
2936
2937common/living.c: Win32 compilation fix (levels is sint64, not uint64)
2938include/plugin.h: new hooks for free & fix_player. Required for Win32.
2939include/plugproto.h: new prototypes for CFWFreeMemory and CFWFixPlayer,
2940 wrappers for free( ) and fix_player( ). Required for Win32.
2941include/sproto.h: added prototypes for new plugin hooks and improved tell
2942 command helper.
2943plugin/plugin_python.c: wrap calls to fix_player, free and free_object
2944 with plugin ones when memory allocated by CF's main exe. Required for
2945 Win32 to work correctly.
2946server/c_chat.c: improved 'tell' command to accept first letters of player
2947 name only, case-insensitive. If 2+ players match, returns with a failure
2948 message.
2949server/player.c: new function find_player_partial_name. Returns player whose
2950 beginning of name matches specified string, NULL if more than one matches.
2951 Fix move_player to check specified direction's validity.
2952server/plugins.c: added wrappers for free( ) and fix_player( ). Required for
2953 Win32 compatibility.
2954Ryo 2003-11-07
2955
2956common/treasure.c, doc/Developers/spells: Fix generation of rods so they have
2957 enough charges to cast the spells. Update documentation on what maxhp for
2958 the archetype of rods means.
2959MSW 2003-11-01
2960
2961server/player.c: Fix crash in stand_near_hostile when it is called on
2962 tiled maps with player near edge.
2963MSW 2003-11-01
2964
2965Various bug fixes:
2966common/arch.c: Fix item_matched_string() so that it only passes in the length
2967 of the pssed in name in the strncasecmp(), and not the shorter of the
2968 passed in string or item name. Otherwise, if player does a 'drop wand of',
2969 unidentified wands (name just wand) would match. Similarly, if a player
2970 did 'drop ringmail', unidentified rings would match, etc.
2971common/living.c: Fix fix_player() to always process the praying skill with
2972 respect to resistances and whatnot. This is necessary because the
2973 god give abilities are put in this skill, and those shouldn't go away
2974 depending on if the skill is in use or not. Also fix bug in add_exp
2975 routines which wasn't multiplying permanent exp by PERM_EXP_GAIN_RATIO
2976common/object.c: Fix find_obj_by_type_subtype() - had extraneous semicolon
2977 after the for loop, so the if code that was supposed to be for each object
2978 was never called and instead would crash as it would get called with tmp
2979 was null.
2980server/attack.c: Fix problem with kill_object() not finding proper skill -
2981 it would use the skill object instead of the skill. Fix problem of
2982 poisoning not setting up proper skill name in poisoning object.
2983server/c_range.c: If player is invoking a spell, don't update their
2984 range_magic value.
2985server/skill_util.c: Fix divide by zero problem if improperly passed
2986 skill object.
2987MSW 2003-10-26
2988
2989TRIGGER_MARKER:
2990common/glue.c, common/button.c, include/define.h, funcpoint.h, libproto.h
2991 server/init.c: Add trigger_marker (type #52) which is a Marker that can be
2992 triggered. Useful for placing forces in player when connected trigger is tripped.
2993TM 2003-10-26
2994
2995common/glue.c, common/object.c, common/player.c, include/funcpoint.h,
2996 server/init.c, server/monster.c, server/shop.c, server/skill_util.c: add
2997 find_skill_by_number() function - this replaces find_skill. Locate new
2998 function in skill_util.c, which is more a proper place than
2999 common/player.c - this change necessitated adding glue function pointers
3000 so the other common files can call it.
3001server/spell_effect.c: Fix cast_heal() so if the spell is not one that heals
3002 hit points, don't process the code that checks for that and sets
3003 a false success value.
3004socket/metaserver.c: Clean up formatting - no code changes.
3005MSW 2003-10-25
3006
3007server/apply.c: small fix to apply_spellbook in the rare case when
3008 the spellbook contains no spell (happens when DM issues a bad
3009 'create' command for instance :).
3010Ryo 2003-10-04
3011
3012server/c_new.c: fix command_run and command_fire so they check
3013 the given direction is [0..8]. This enabled weird things like
3014 hitting non-adjacent monsters.
3015 Patch by Karla Stenger on cf-devel, slightly modified by me.
3016Ryo 2003-10-21
3017
3018common/arch.c: fix item_matched_string() so that matching makes sense -
3019 the ordering was wrong, so that we would match something with a low
3020 priority, and skip over looking to see if that same object would get
3021 a better match. Order the function so that we look for the best
3022 matches first.
3023MSW 2003-10-08
3024
3025socket/request.c: Clean up some compile warnings. Improve big face
3026 handling - there were cases where data wasn't being sent when
3027 it should have, and vice versa. Basically, do better checking
3028 to see if we should send a big face for a particular layer, and
3029 also better checking to make sure we don't send the same face more
3030 than once for the same layer. Also, change esrv_map_scroll()
3031 to clear out spaces that appear into view - adds a little extra bandwdith,
3032 but necessary because otherwise the fact there is a big face on the edge
3033 doesn't always get sent.
3034MSW 2003-10-07
3035
3036TODO: various updates.
3037common/button: Old patch by David Seikel: change inventory checkers so that
3038 the monster/player is also checked against. And do more proper for checkers
3039 that check against slaying or race - if the trigger doesn't have
3040 those set, we don't want to compare a null against another null and
3041 get success).
3042server/apply.c: Change apply_shop_mat() so that it removes unpaid objects from
3043 monsters (or thrown containers for that matter). Old patch by Bernd Edler
3044 to improve messages dragons get for eating various food types.
3045server/player.c: Add another missing call to fix_player(). Modify
3046 move_player_attack() so that the target player doesn't hit back if
3047 they are the WIZ or on a battleground
3048MSW 2003-10-06
3049
3050utils/player_dl.html utils/player_dl.pl.in: New files - scripts for allowing
3051 character directories to be downloaded over the web.
3052configure.ac: Add check for 'tar', so that we can put it in the script above.
3053Makefile.in (All of them): Changed because TAR variable propogated to them.
3054MSW 2003-09-30
3055
3056server/time.c: Real change is to add a missing call to fix_player - without
3057 this new players would be getting messed up maxsp/maxgrace values. Cleaned
3058 up formatting in move_player_changer() while doing the other change.
3059 MSW 2003-09-28
3060
3061common/living.c, include/libproto.h: Update some functions to take 64 bit int
3062 values for exp usage.
3063random_maps/random_map.c: Don't ever make rogue maps symmetric -
3064 creates unconnected maps. Clean up layoutgen() to not have a bunch
3065 of duplicated code.
3066MSW 2003-09-25
3067
3068server/skill_util.c: Call esrv_send_inventory on the cauldron if we
3069 performed alchemy. Needed for cauldron's contents to get updated.
3070 MSW 2003-09-23
3071
3072 Modified files:
3073 TODO common/anim.c common/arch.c common/button.c common/exp.c
3074 common/init.c common/item.c common/living.c common/loader.c
3075 common/loader.l common/logger.c common/object.c
3076 common/re-cmp.c common/readable.c common/recipe.c
3077 common/treasure.c doc/Developers/objects
3078 doc/Developers/protocol doc/Developers/python
3079 doc/Developers/skills doc/Developers/spells
3080 include/Makefile.am include/Makefile.in include/attack.h
3081 include/config.h include/define.h include/global.h
3082 include/includes.h include/libproto.h include/living.h
3083 include/map.h include/newclient.h include/newserver.h
3084 include/object.h include/player.h include/plugin.h
3085 include/skills.h include/sockproto.h include/spells.h
3086 include/sproto.h include/timers.h lib/Makefile.am
3087 lib/Makefile.in lib/animations lib/archetypes lib/artifacts
3088 lib/bmaps lib/bmaps.paths lib/collect.pl.in lib/crossfire.0
3089 lib/crossfire.1 lib/faces lib/formulae lib/settings
3090 lib/treasures lib/treasures.bld lib/adm/collect_images.pl
3091 plugin/plugin_python.c plugin/include/plugin_python.h
3092 server/Makefile.am server/Makefile.in server/alchemy.c
3093 server/apply.c server/attack.c server/c_misc.c server/c_move.c
3094 server/c_object.c server/c_party.c server/c_range.c
3095 server/c_wiz.c server/commands.c server/disease.c
3096 server/gods.c server/init.c server/login.c server/main.c
3097 server/monster.c server/pets.c server/player.c
3098 server/plugins.c server/resurrection.c server/rune.c
3099 server/shop.c server/skill_util.c server/skills.c
3100 server/spell_effect.c server/spell_util.c server/swamp.c
3101 server/time.c server/weather.c socket/info.c socket/init.c
3102 socket/item.c socket/loop.c socket/lowlevel.c
3103 socket/metaserver.c socket/request.c socket/sounds.c
3104 Added Files:
3105 server/spell_attack.c
3106 Removed Files:
3107 include/skillist.h lib/skill_params lib/spell_params
3108
3109 Updated code for skill + spell code. skills and spells are now objects.
3110 tuning these now means changing the archetypes. New spells can now
3111 be added just by making a new archetype. Lots of code cleanup
3112 also done.
3113 MSW 2003-09-12
3114
3115
3116TRAPS:
3117 include/define.h
3118 common/object.c, treasure.c
3119 server/attack.c, skill_util.c, skills.c, rune.c, time.c, player.c,
3120 apply.c Established new type traps distinguished from runes. Traps
3121 are more mechanical in nature, not impacted by detect magic or
3122 counterspell (maybe in future once skills are settled out more fine
3123 tuning changes in detecting and disarming these too...). Traps also
3124 can now trigger connected objects if they are detonated. Migrated
3125 traps to new type and made new generic trap archetype for more complex
3126 trapping (ye olde red shaded tile...) TM -2003-09-04
3127
3128
3129friendly_fire:
3130 Added friendly_fire to attack.c, called from hit_player.
3131 Will put a cap on maxdam that is a percentage (1-100%) of damage (min
3132 1) based on SET_FRIENDLY_FIRE value when players attack in peaceful
3133 mode. Changed who, statistics to show this setting better and added
3134 help file for peaceful. It would be nice to have a indicator in the
3135 client for this as well. TM - 2003-08-25
3136
3137protocol/doc/code:
3138 Changed the way smoothing is done. Switched the smooth
3139 command to binary mode, rebuild archetype files, added doc
3140 on smoothing, updated protocol file.
3141 Changed a the "togglemapextended smoothing" to "togglemapextended
3142 smooth" to prevent problem of compatibilities with previous cvs
3143 smoothing releases.
3144Tchize 2003-07-08
3145
3146protocol:
3147 Added new command to send extended map informations to the
3148 client. Mainly used for now to send smoothing informations.
3149 Also commented the modifications in the protocol file ind doc/
3150lib/Makefiles:
3151 Changed to install the smooth file too. Needed by smooth code
3152common/loader.l and loader.c
3153 completly reworked get_ob_diff to improve speed at mapsave time.
3154 For now function is interlaced with commented old code. Will clean
3155 up when code will be proved working. (hope middle of july)
3156Tchize 2003-07-03
3157
3158server/apply.c: Fix auto_apply - missing else, causing extra
3159 treausres to be generated inside of shop tiles.
3160server/monster.c: Fix npc_call_help to be map tile aware.
3161MSW 2003-06-18
3162
3163lib/collect.pl.in: Modify it so that it will collect .trs (treasure) files and
3164 build a treasures.bld from that as well as the existing treasures file. In
3165 this way, treasure information for objects can be put in the arch
3166 directory.
3167lib/Makefile.am, Makefile.in: Modified so that it copies over the
3168 treasures.bld to treasures in the destination directory. Have
3169 the collect directive also build the images, so that a double
3170 make isn't necessary.
3171lib/treasures.bld: Added file - like the archetypes, this is the pre-
3172 build treasure file. Until .trs files are added, this will just
3173 match the treasures file with some additional comments.
3174MSW 2003-05-26
3175
3176common/map.c: Fix bug causing unnecessary crashes - ok for the map
3177 to match if the object has been removed.
3178socket/loop.c: Only make call to draw_client_map() if we have a valid
3179 map to draw.
3180MSW 2003-05-26
3181
3182common/anim.c: Patch by AV to make sure multipart monsters animations
3183 stay in sync. MSW 2003-05-25
3184
3185server/apply.c: Fix bug in that we weren't calling esrv_map_scroll()
3186 when player used a shop map but lacked sufficient funds to pay
3187 for his items.
3188MSW 2002-05-23
3189
3190common/item.c, common/utils.c, include/config.h: Add #define NEW_MATERIAL_CODE
3191 and checks in the other files for this - if this is commented out
3192 (default), then the new material naming code is disabled - material
3193 names won't be put in the items names as shown in the inventory
3194 (can still see material by examining an object), and objects that are
3195 created will be created with the default material (eg, iron for
3196 most armor/weapons, eg, brass, bronze, copper items won't show
3197 up anymore).
3198lib/settings: Add comments from the old config.h file that describes
3199 what the options already does. Having no comments in this file
3200 or in config.h anymore is very unfriendly.
3201MSW 2003-05-20
3202
3203server/player.c: Have players start at max hp/grace/sp.
3204MSW 2003-04-14
3205
3206server/c_range.c: Add check to make sure we are actually removing a
3207 golem and that the object hasn't been freed/recycled and the
3208 player not updated. Fixes crashes.
3209MSW 2003-04-13
3210
3211acinclude.m4: Update path to find python includes, since aclocal.m4 gets
3212 derived from this file.
3213configure.ac, configure: Add utils/scores.pl to list of files to substitute on.
3214common/loader.l, loader.c: Add subtype for objects - will be used in future work.
3215common/object.c: Add subtype diff check in CAN_MERGE()
3216common/porting.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have
3217 hardcoded 777 permissions.
3218doc/Makefile.in, doc/Makefile.am, doc/Developers/Makefile.am,
3219 doc/Developers/Makefile.in: Move some of the spell docs around and merge
3220 them together
3221doc/Developers/objects: Add notes about subtype.
3222doc/Developers/spells: New file, contains preliminary work on spell objects.
3223include/config.h: Remove command about DM_MAIL and LIBDIR from file, as they
3224 are options no longer present. Update comment about SAVE_MODE, and add
3225 SAVE_DIR_MODE
3226include/object.h: Add subtype field to object.
3227server/login.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have
3228 hardcoded 6700 permissions.
3229utils/Makefile.in: Updated to know about scores.pl
3230utils/scores.pl.in: New file - reads player file to generate HTML score
3231 file.
3232MSW 2003-04-04
3233
3234TODO: Various update
3235aclocal.m4,configure: Update path to find python (fix again)
3236common/image.c: Minor update to a ocmment in the code.
3237common/los.c: Add missing P_OUT_OF_MAP checks that resulted in some incorrect
3238 LOS calcuations.
3239include/funcpoint.h: Remove draw_func function pointer.
3240lib/Makefile.am, in: Remove bmaps.paths to from being installed or being part
3241 of distribution - bmaps.paths is only needed when collecting the image
3242lib/*: Rebuilt
3243server/c_object.c: Patch by Bernd Edler to have the apply functions take into
3244 acount if the item is equipped or not when looking for good matched items.
3245server/commands.c: Move printlos to normal commands. I don't think it reveals
3246 any information that is in any way harmful. And since it dumps the
3247 output to the players screen, no concern of it filling up log files.
3248 Also, when doing LOS debugging, it is pointless to have it as a DM command
3249 because LOS is ignored for DM's.
3250server/disease.c: Modify remove_symptoms to remove all symptoms the player
3251 may have a disease. Modify infect_object() to not allow a creature to
3252 have more than one instance of the same disease.
3253socket/info.c: remove draw() - instead, draw_client_map() can be used,
3254 as that is most the only thing draw() did anyways.
3255socket/loop.c: Update draw() calls to draw_client_map()
3256socket/request.c: Remove special handling for darkness==4 cases (first
3257 space that is in full darkness) - this is extra complications and causes
3258 display problems. Update draw_client_map() to include the little bit
3259 of logic that draw() had that this function did not have.
3260MSW 2003-04-01
3261
3262
3263common/glue.c, include/funcpoint.h: remove draw_func() pointer - no longer
3264 needed, so code that sets up pointer removed.
3265lib/*: rebuilt - facings added to old player animation information.
3266 ruined_temple archetype added.
3267server/init.c: remove set_draw() function
3268server/player.c: remove call to draw() - socket code takes care of this.
3269MSW 2003-03-24
3270
3271server/spell_effect.c: Some code cleanuip to cast_change_attr - mostly
3272 to combine the processing of the stat improving spells together.
3273 The actual change to playability is that bless and holy possession
3274 don't stack if cast multiple times.
3275server/spell_util.c: Modify create_aura so that player can't have more than
3276 one aura (of the same type) active at a time.
3277MSW 2003-03-20
3278
3279server/apply.c: Change weapon improving code to only use up the number of
3280 potions that it needs, and not all on the ground. Required adding
3281 another arg to eat_item() which is the number of items to consume.
3282include/sproto.h: Rebuilt for new eat_item() (actually, a static, so no
3283 longer shows up in this file)
3284server/attack.c: Change did_make_save to strip out magic attacktype when making
3285 saves for objects - otherwise, things like poison cloud destroy objects.
3286server/time.c: deal with player animations special in process_object - need to
3287 pass in the facing value, and not direction, since direction gets reset.
3288MSW 2003-03-19
3289
3290common/anim.c: Pass direction to animate_object() - needed for player
3291 animations as player's facing may not match direction.
3292crossedit/Attr.c, server/main.c, server/time.c: Update calls to animate_object()
3293include/libproto.h: rebuilt
3294include/newserver.h, plugin_animator/animator_box.c, socket/init.c,
3295 socket/request.c: Remove newanim field from socket structure - not needed -
3296 how to animate is determined by object, not by socket.
3297server/move.c: Add check to P_OUT_OF_MAP in teleport function.
3298server/player.c: change move_player to call animate_object, so it gets full
3299 power of functionality it supports instead of 4 way hardcode animation
3300 information.
3301server/spell_effect.c: When altars are consecrated, don't look to arch name
3302 for first portion of name - always call them Altar of %s - fixes problem
3303 where altar is special god altar that has god's name in archetype, resulting
3304 in altar of .. of ...
3305MSW 2003-03-18
3306
3307Patch for 64 bit experience total, as well as flexible number of levels.
3308Basically, max level is now dynamic, set in exp_table file. Experience
3309is now a 64 bit value, so much higher totals now allowed. To
3310allow for flexible levels, add new function - did_make_save() which is used
3311for players/monsters to see if they make their saving throw - this is
3312necessary because the savethrow[] array may not be as large as max level -
3313did_make_save takes this into account.
3314NOTE: If your updating a server, you will need to copy over/set up a
3315new exp_table file that has max_levels defined and at least one of the
3316tables uncommented. There are no longer any compiled in defaults
3317--
3318configure, configure.ac: Add AC_CHECK_SIZEOF calls for long and long long
3319 so we can know which one to use for 64 bit support (other checks
3320 may need to be added)
3321common/exp.c: Remove levels table, replace it with a 64 bit pointer.
3322 Change init_experience to allocate appropriately sized table, have it
3323 read max_level value from exp_table file. Replace atoi calls with
3324 atoll to get 64 bit value. Update dump_experience to properly
3325 print 64 bit values.
3326common/info.c: Update dump routines that dump exp to properly print
3327 64 bit values.
3328common/init.c: Add initializing for settings.max_level value.
3329common/item.c: Update sprintf's to handle 64 bit output of exp (speed)
3330 value in objects.
3331common/living.c: change MAX_EXP define, update MAX_EXP_IN_OBJ define,
3332 add MAX_SAVE_LEVEL which corresponds to how large the savethrow
3333 table is. Change MAXLEVEL to settings.max_level. Change level_exp()
3334 to return 64 bit value, other updates in functions to use 64 bit
3335 values. Add did_make_save() function.
3336common/loader.l, common/loader.c: Update load/save routins of exp to
3337 deal with 64 bit values.
3338common/map.c: Update calculate_difficulty to use 64 bit values when
3339 storing exp - unlikely to make a difference, since unlikely any map
3340 will get to a point where it has that much exp on it.
3341common/porting.c: Remove dead code from save_long(), add save_long_long()
3342 to save 64 bit values.
3343include/autoconf.h.in: SIZEOF_LONG and SIZEOF_LONG_LONG values added.
3344include/global.h: Add code to typedef sint64/uint64 types based on what
3345 type gives us those values. Add max_level to settings array.
3346include/libproto.h: rebuilt.
3347include/living.h: Replace exp field with 64 bit value.
3348include/player.h: Update party kill log exp tracking to have 64 bit
3349 values.
3350lib/exp_table: Udpate comments about max_level, uncomment what
3351 was the default table so new installs have working table.
3352 Add 5 levels to all the tables.
3353random_maps/monster.c: Update place_monsters to use 64 bit when storing
3354 exp total for map/per square.
3355server/apply.c: Replace MAXLEVEL with settings.max_level, add
3356 did_make_save calls where appropriate
3357server/c_misc.c: have statistics command properly print 64 bit
3358 exp value.
3359server/c_wiz.c: Have stats command properly display 64 bit value.
3360server/hiscore.c: Replace exp values with 64 bit values, update to
3361 properly load/display them.
3362server/player.c: replace savethrow[] reference with did_make_save()
3363server/skill_util.c: Update skills command to properly show 64 bit exp values.
3364server/spell_effect.c: replace savethrow[] reference with did_make_save(),
3365 allow players to cast directors right beneath themselves, but other
3366 walls must be on empty space.
3367MSW 2003-03-07
3368
3369Various bug fixes.
3370crossedit/Attr.c: Minor cleanup to eliminate some compile time warnings.
3371plugin/plugin_python.c: Remove some unused variables, thus fixing up some
3372 compiler warnings.
3373random_maps/random_map.c, random_maps/random_map.h, random_maps/special.c:
3374 Add MIN_RANDOM_MAP_SIZE values instead of hardcode constants.
3375server/monster.c: Fix communicate - odd bug can be map gets swapped out
3376 just after player is transferred to another map, causing crashes as
3377 map that was originally spoken on is no longer in memory.
3378server/rune.c: add missing free_object call when erasing runes.
3379server/skills.c: Change write_on_item to determine type of writing based
3380 on content of mesage, or lack thereof, and not the marked object.
3381 Fix problem of buf not being initalized.
3382MSW 2003-03-06
3383
3384
3385Various bug fixes.
3386Makefile.am, Makefile.in: Put crossedit as the last directory, so any build
3387 errors for crossedit doesn't effect anything else.
3388README: Update ftp site listing.
3389TODO: More things aded.
3390aclocal.m4, configure: Add missing / when checking in /usr/local for
3391 python headers.
3392common/map.c: Add some debugging in free_all_objects that checks to make sure
3393 there are not objects remaining that belong to the map just freed -
3394 only active if MANY_CORES is set.
3395random_maps/random_map.c: Increase minimum random map size to 10x10 - this
3396 is need for square spirals to work properly I think.
3397server/spell_effect.c: Have perceive self tell dragon players what they are
3398 currently focused on. Fix town portal to remove force objects from
3399 players if destination is no longer available.
3400server/swap.c: Reset maps reset_time when loading them in in read_map_log() -
3401 this is only used if recycle temp maps is on. Also, do sanity checking
3402 on reset_time value - bogus values were observed on metalforge.
3403socket/request.c: Update map timeout in draw_client_map() - in this way,
3404 we don't swap out a map within a players view only to swap it back
3405 in.
3406MSW 2003-03-01
3407
3408------------------------------------------------------------------------------
3409Changes for 1.5.0:
3410
3411*/Makefile.in, related files: Updated for 1.5.0
3412server/attack.c: Don't change weak wall image if no damage was actually done.
3413server/c_object.c: Include math.h - needed for pow()
3414server/spell_effect.c: fix infinite loop in town_portal
3415MSW 2003-02-24
3416
3417common/anim.c: Fix for 8 way facing animations.
3418lib/treasures: Add sheep treasures
3419lib/* (rest) - rebuilt
3420server/spell_effect.c: Fix up counterspell - mainly fix a bug in that if
3421 counterspell hit a multipart magic that used magic as an attacktype,
3422 it would also crash. However, code also woudln't work properly on
3423 tiled maps, and I'm dubious if it would work properly if there was more
3424 than one effect on a space.
3425MSW 2003-02-23
3426
3427server/skills.c: Fix jump so that it updates the clients map properly.
3428server/spell_effect.c: insert town portals below the player so it
3429 works better with apply.
3430MSW 2003-02-20
3431
3432server/move.c: Fix transfer_ob so that it sends newmap command to client
3433 if we're moving a playing - otherwise fog of war displays bad
3434 information on the client.
3435MSW 2003-02-19
3436
3437More bugfixes:
3438server/c_wiz.c: Fix reset command - while it deleted the maps, it made things
3439 so that it never got removed from the map listing - instead, just let
3440 flush_old_maps do most of the work.
3441server/main.c: If player tries to enter a random map that has been reset
3442 and that we have no informatino about (eg, going up in a dungeon),
3443 just say the exit is closed instead of making a completely random map
3444 that usually isn't in keeping with the dungeon (and still won't lead
3445 outdoors)
3446server/move.c: In move_teleporter(), change it so that if a player uses
3447 a shop map yet there is no place to put the player, just drop him on
3448 top of a monster - this fixes problem of players getting trapped inside
3449 of shops in random dungeons.
3450MSW 2003-02-16
3451
3452random_map/random_map.c: Include parameters used to make map in msg of map -
3453 this can hopefully be used to debug what is really happening when bad
3454 maps are made.
3455server/rune.c: Modify dispel_rune function (called from disarm spell)
3456 to erase marking runes. While at it, fix it so that it does the right
3457 thing with respect to tiled maps.
3458MSW 2003-02-15
3459
3460include/sproto.h, server/move.c: Modify try_fit() to take mapstruct parameter
3461 for which map we are trying to fit this on - fixes problems with rolling
3462 boulders accross map (only function that currently uses this).
3463MSW 2003-02-14
3464
3465common/item.c: make item_power stop showing up in ring short descriptions.
3466 fix some of the items that were double-displaying materialnames, like
3467 mithril mithril chainmail.
3468common/loader.l: add tooltype
3469common/utils.c: Unless the object is armour or weapons, pick the first
3470 materialname we find. Now, newly generated diamonds will stack.
3471 Fix name_to_material to return NULL if it finds nothing, fixes
3472 navar_city/museum crash.
3473 Change set_materialname to take a materialtype_t argument, allowing
3474 functions to manually set the materialname, rather than let the
3475 randomizer pick for them.
3476include/define.h: Add TOOL and BUILDFAC for item building.
3477include/object.h: add tooltype for item building.
3478include/materials.h: add M_SPECIAL. Set this in an object, to prevent things
3479 like mithril mithril chainmail. This is primarily only needed in
3480 artifacts, because they change the base material of the arch. Also
3481 useful in things like the demonspawn shield, and on maps.
3482lib/artifacts: sprinkle M_SPECIAL around.
3483server/player.c: remove auto_heal. This never should have been
3484 committed, and was never referenced by any code.
3485server/c_object.c: add item building, but add it disabled. Too many
3486 bugfixes were tied in with this code to cleanly add them. When
3487 enabled, this code will add player item building, similar to
3488 create to take place. Requires a host of graphics and arches
3489 to be useable.
3490garbled 2003-02-13
3491
3492random_maps/special.c: Fix possible bug with placement of special maps.
3493Add lore/endlore to object structure to hold general information about objects:
3494common/loader.c, common/loader.l: Add loading and saving of lore field.
3495common/object.c: handle lore field for copy/free/other object operations.
3496 Also, update CAN_MERGE to look at materialname also.
3497doc/Developers/objects: Add notes about lore.
3498include/object.h: add lore field to object.
3499server/apply.c: Fix bug in that cursed weapons were not equipped/
3500 unequipped.
3501MSW 2003-02-11
3502
3503doc/Developers/objects: Add nodes about shared strings in objects.
3504server/c_misc.c: Remove check for name length - check_name takes care
3505 of that for us.
3506server/monster.c: store return value from get_map_flags - seen some
3507 crashes traced back to this area, want to see what it returned.
3508 Allow objects with no msg to still use scripts that listen.
3509server/player.c: Fix potentional issue of freeing/adding players name
3510 when they enter play again - seen some crashes attributed to
3511 odd names.
3512MSW 2003-02-08
3513
3514
3515More bugfixes:
3516server/player.c: Fix permadeath without resurrection - wasn't deleting
3517 player save files as it was supposed to. If permadeath +
3518 resurrection was in use, I believe it all worked as expected.
3519include/shop.h: remove _SHOP_H after endif, causing compiler warnings.
3520include/skills.h: Add check to USING_SKILL to make sure chosen_skill
3521 is not null.
3522server/c_chat.c: Add some missing return values, resulting in compiler
3523 warnings.
3524server/skill_util.c: Remove unused variable. compiler warnings again.
3525server/spell_effect.c: Change dimension door so that you can't go
3526 through spaces that block passsage and also block view (eg walls).
3527 This goes back to the more traditional behaviour. Remove
3528 some unused variables.
3529server/spell_util.c: Add missing P_OUT_OF_MAP to move_missile, resulting
3530 in crashes.
3531server/time.c: if generator is not on a map, don't have it generates.
3532 Fixes crashes.
3533MSW 2003-02-02
3534
3535New materialtype system for crossfire. Based in concept on my original
3536design, but rewritten from scratch to make it easily extensible.
3537
3538In a nutshell:
3539
3540Each of the old materialtypes (metal, glass, stone, wood) are now a class
3541of materials. When an item in the game is created, if it does not have a
3542specific materialname of it's own, a materialname is generated randomly
3543from the matching entries in the "lib/materials" file. This file
3544contains all of the saving throws, and other material specific
3545modifications for each of the expanded materials.
3546
3547Materials can be manually specified in the arch with the "materialname"
3548directive. Such as the gold coins, which are specified to be made of,
3549you guessed it, gold.
3550
3551Saving throws have been slightly rewritten to use the new materialtypes,
3552and a few other minor details associated with materialtypes have been
3553patched up.
3554
3555Adding a new type of stone or wood, is as simple as adding a new entry in
3556the lib/materials file. The game will automatically start distributing
3557them around randomly.
3558garbled 2003-01-29
3559
3560Various bug fixes:
3561common/item.c: If nrof of an item is 0, have it print singular name and
3562 not plural name.
3563server/c_object.c: Fix typo when printing value of optoins - had an
3564 extra 'the' in place. Also, don't print value of objects with
3565 no pick flag set.
3566server/login.c: Enforce maximum name length for new characters.
3567server/monster.c: Change parsing code for messages/@match code -
3568 new code is simpler, and should also be simpler and less bug
3569 ridden, but otherwise functionally equivalant. Also fix up
3570 communicate to work properly on tiled maps.
3571server/spell_effect.c: fix up move_aura to not crash hopefully.
3572MSW 2003-01-26
3573
3574More bug fixes:
3575common/item.c: Add missing braces - was resulting in some items getting
3576 display like 'gauntlets of strength (Str+1)(Str+1).
3577include/map.h: Add MAGIC_MAP definitions to the file.
3578server/shop.c: Put back in code that uses magic_mapping_mark to determine
3579 what items to display in inventory. Update for new one magic mapping
3580 code stores information away.
3581server/spell_util.c: Add missing P_OUT_OF_FLAG check, which resulted
3582 in crashes.
3583socket/info.c: Move MAGIC_MAP definations to map.h. Add check for
3584 P_OUT_OF_MAP. Remove code that stops on P_NO_MAGIC - with that
3585 it wouldn't search the shops.
3586MSW 2003-01-16
3587
3588server/move.c: fix try_to_fit and roll_ob to work properly on tiled maps.
3589Also some performance improvements to those functions.
3590MSW 2003-01-12
3591
3592Bulk of this commit is to improve code for tiled maps - replace
3593wall/blocks_magic/blocks_cleric, etc with get_map_flags which
3594also does map tiling translation as needed. This should fix a lot
3595of the bugs related to map tiling (there are sure to be more out
3596there - all the get_map_ob still need to be checked).
3597Other changes - many spells stopped progressing on spaces that
3598blocked view - that is now removed - didn't make a lot of sense.
3599Other fixes - some cleric spells (eg, word of recall) checked to
3600see if magic was prohibited, didn't check to see if cleric
3601was prohibited.
3602Clean up some bugs in the lighting code that would cause erroneous
3603results. Also, allow players to see immediately around them on
3604outdoor maps no matter how dark the map really is - behaviour
3605on indoor maps is the same.
3606Lots of code reformatted, and lots of obsoleted/dead code removed.
3607Add max range to dimension door.
3608Fix magic map - got broken when the layer stuff was redone - was
3609not showing proper colors. IT also works sensibly on tiled maps
3610now - rather than display based on the map, it gives the player a
361150x50 area centered on where the player is.
3612Change fire_bow - move special player fire modes into own function -
3613makes code much cleaner.
3614Hopefully this fixes more bugs than it introduces.
3615common/los.c, common/map.c, common/object.c, crossedit/Edit.c,
3616include/libproto.h, include/sockproto.h, include/map.h,
3617include/spellist.h, include/sproto.h, random_maps/treasure.c,
3618random_maps/wall.c, server/attack.c, server/c_misc.c,
3619server/c_wiz.c, server/disease.c, server/main.c, server/monster.c,
3620server/pets.c, server/player.c, server/rune.c, server/shop.c,
3621server/skill_util.c, server/skills.c, server/spell_effect.c,
3622server/spell_util.c, server/time.c, socket/info.c: See note above
3623server/apply.c: Limit number of times weapon can be enchanted so
3624 that it won't overflow item_power. Modify enchant armor
3625 to enchant as normal armor is enchanted, also only allows one
3626 item to be enchanted.
3627MSW 2002-01-07
3628
3629common/item.c: Add 'unidentified' to display of examined items if the
3630 item has not been identified. Only display spell regen penalty
3631 for armour if there is in fact a penalty.
3632lib/archetypes: rebuilt for updated demon speed, pick up other new archs.
3633lib/animations, lib/bmaps lib/bmaps.paths lib/crossfire.0 lib/crossfire.1
3634lib/faces: rebuilt
3635server/main.c: Name random maps based on final map component (if available)
3636 or map they are spawned from - this gives so clue in 'who' command
3637 where the players really are.
3638server/monster.c: Fix code that would cause monsters to ignore golems/
3639 avatars.
3640server/pets.c: Clean up a few warnings, fix bug in pet_move that caused
3641 crashes - owner of a pet isn't always a player.
3642server/player.c: Remove on_same_map check - can_detect_monster also
3643 performed check, so no need to have extra call.
3644server/spell_effect.c: modify alchemy to properly deal with tiled maps,
3645 change behavior for spells that block view - they no longer block
3646 alchemy, but spaces that block magic will.
3647MSW 2002-01-05
3648
3649TODO - add notes about item damage - clear it out of my mailbox.
3650common/loader.l, loader.c: Add check at load time to see if monsters
3651 hp is higher than its maxhp and print a debug message if so.
3652devel/Makefile: Remove - makefiles shouldn't be in CVS, only .in versions.
3653server/attack.c: Fix calculation of max_damage in kill_object - this
3654 was being done incorrectly, resulting in fired spell objects causing
3655 incorrect amounts of damage, resulint in some monsters ending up with
3656 a lot of hp. Fix call to kill_object to pass in correct damage value.
3657server/monster.c: Put in check so that monster won't regen to more hp
3658 than they should have.
3659server/spell_util.c: Removed unused variable from move_missile.
3660server/weather.c: fix bug that causes crash if empty space is encountered
3661 on map.
3662MSW 2003-01-03
3663
3664socket/request.c: Fix buffer (malloc) overrun in esrv_send_stats - more
3665 stuff has gotten to be added, without ever increasing the size of the
3666 buffer to hold it.
3667MSW 2003-01-01
3668
3669server/time.c: Fix bad code in stop_arrow that caused crashes/improper
3670freeing of data.
3671MSW 2002-12-30
3672
3673common/treasure.c: Fix initialization of treasure structs to use calloc.
3674server/player.c: Fix infinite loop.
3675socket/loop.c: Make sure we put in null terminator for socket data.
3676MSW 2002-12-26
3677
3678
3679New Arrow and Pet Code:
3680Add bowmode and petmode commands. Allowing the player to change the firing
3681style for bows to one of either threewide, or spreadshot.
3682Allow players to change the operating modes of his pet with petmode. Can be
3683either seek and destroy, defend, or normal historical behavior.
3684Change bows to impart speed to arrows based on damage and other magical
3685plusses. Damage decays over distance, to stop arrows from flying forever.
3686Very fast moving arrows will pierce multiple targets. An arrow moving at a
3687speed greater than 10.0 will go straight through a target, losing 1.0 of
3688speed in the process.
3689Change magic missile to use spell_find_dir instead of find_dir to stop it
3690from flying in a circle and hitting the caster, and to make it stop
3691flying into walls to hit creatures behind the walls.
3692
3693Various bug fixes:
3694common/living.c: Reset glow_radius for players, so they stop glowing
3695 after they snuff out their torch or whatever.
3696server/apply.c: Fix message about improving armour so that it is now
3697 accurate.
3698server/monster.c: Add some debug lines that may show cause of excess
3699 monster hp.
3700server/spell_effect.c: fix compile warning in summon_pet(). Clean up
3701 indentation of alchemy functions, but functional changes is to
3702 insert gold nuggets below player (so more of the actions work),
3703 as well as to reset the view position, so that it won't have the
3704 'previous 50' object selection. Add suggested parens in
3705 cast_detection.
3706server/weather.c: Fix crash in weather code if snow was only object
3707 on space.
3708MSW 2002-12-20
3709
3710+++
3711server/weather.c:
3712More weather routines:
3713
3714Now the game will attempt to completely reformat the world, and modify it
3715with the weather and elevation. When dynamiclevel is set to 5 or above,
3716the game looks at each tile, and the weather conditions present in that
3717tile. It then consults a table of different terrain types, and what
3718conditions they prefer to grow under. If the conditions match the spot,
3719and there is nothing special about the spot (like a house, or a road),
3720then we drop the new tile type on the overlay map on that location.
3721
3722Tuning of this can be done at the top of weather.c, by changing the
3723weather_tile array.
3724
3725Also.. add a feather_map() routine which tries to break up the blockiness
3726of some of the weather effects by spreading the tiles around.
3727
3728This code works.. but needs tuning, and probably a little more testing.
3729Some of the conditions for the various tiles really need to be looked at,
3730and fiddled with.
3731garbled 2002-12-08
3732+++
3733
3734common/exp.c: Fix bug were drain attacks added exp.
3735MSW 2002-12-05
3736
3737server/player.c: Change move_player_attack() so that we look for monsters
3738 to attack even after finding a rollable object - there can be non
3739 blocking rollable objects with monsters on top - we want to attack
3740 the monster, not roll the object.
3741MSW 2002-12-03
3742
3743TODO: Move more items from my mailbox to the TODO list.
3744common/living.c: Init item_power in player to zero in fix_player() -
3745 bogus results were getting generated as it just kept getting incremented.
3746common/porting.c: fix remove_directory so it works properly - checking
3747 for . and .. entries too late, calling unlink instead of rmdir.
3748include/sproto.h: rebuilt
3749lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.0,
3750 lib/crossfire.1, lib/faces: Rebuilt - new archs added, catch is_thrown
3751 addition to thrown rock/boulder archs.
3752server/c_move.c, server/c_range.c: Add another parameter to do_skill() - part, which
3753 is closest part of creature to target object - current only used
3754 for the throw code. Update calls to this function to add additional
3755 parameter.
3756server/c_object.c: Remove the NDI_UNIQUE from the 'item is too heavy
3757 to pick up' so that it won't flood the client with them if players
3758 goes onto space with lots of objects.
3759server/main.c: Minor cleanup to fix compiler warning about ambigous
3760 if/else.
3761server/monster.c: Pass closest part of monster when having it use
3762 a skill so that it doesn't throw rocks into itself. Update calls to
3763 do_skill as described above.
3764server/player.c: Cal delete_player() when player quits - this properly
3765 cleans up any per player unique maps they have. Also, check for
3766 any such maps currently in memory, and delete those so that unique
3767 maps don't get 'gifted' to the next character of the same name.
3768 Update calls to do_skill as described above.
3769server/shop.c: Combine items of the same name together in the output
3770 of the shop listings. Include the number of items, remove special
3771 casing of some objects so that query_base_name is used for all item
3772 types.
3773server/skill_util.c: Modify do_skill() to take additional param as
3774 described above. Also, have do_skill return 1 on success,
3775 0 on failur to use skill, and not return exp - otherwise,
3776 monster code has no idea if skill was successfully used, as throw
3777 doesn't grant exp, and this caused monsters to move into the
3778 object they just threw. Update calls to do_skill as described
3779 above.
3780server/skills.c: Clean up skill_throw function to return meaningfull
3781 value. Also, pass along extra part of closest monster part
3782 to target. Modify do_throw to return value, use closest
3783 part of body as origin point for thwon object.
3784server/spell_effect.c: Use isqrt function instead of definining
3785 ISQRT that used float version. Cleans up compile warning - most
3786 likely not seen before as spell was #ifdef SPELL_ENCUMBERANCE out.
3787server/time.c: Put sanity checking for players speed_left in
3788 move_player_mover() - got some reports of infinite negative speed
3789 on metalforge, and this is the only place in the code where I could
3790 see that happening given the description of the events.
3791utils/arch2xml.py, utils/cfarches.xsl: New script (and template) by
3792 Todd Mitchell. Script can convert archs to xml, and the template
3793 is usuable with mozilla to look at the output.
3794MSW 2002-12-02
3795
3796
3797common/object.c, include/object.h: Add INS_BELOW_ORIGINATOR flag to
3798 insert_ob_in_map - this is used for treasure chests so the
3799 treasure is put below the player. Also fix insertiong of items
3800 on spaces that block view - put them in proper order, and not just
3801 directly above the floor
3802server/apply.c: Tell player what level they need to be if they are not
3803 of sufficient level to improve armor. Modify apply_treasure to
3804 use INS_BELOW_ORIGINATOR flag, clean up some of the other logic
3805 in apply_treasure.
3806server/c_object.c: Modify command_take to use the container inventory
3807 when doing a pickup, and not the container itself.
3808MSW 2002-11-30
3809
3810TODO: Updated with dm 'follow' command.
3811common/loader.l: Rebuilt.
3812common/map.c: Fix up some formatting - no code change.
3813include/player.h, server/apply.c, server/player.c, socket/info.c: Remove
3814 chosen_item_spell field - isn't needed anymore as that information
3815 is determined each time player fires wand/rod/horn. This fixes
3816 those items firing magic bullets if they were equipped when player
3817 saved and rejoined. Some additional cleanup done in rangetostring() -
3818 mostly formatting changes, but minor code changes.
3819MSW 2002-11-29
3820
3821
3822include/shstr.h: Update REFCOUNT_TYPE to be an int - seems to at least fix
3823 the bug of server crashing when running around the bigworld - given the
3824 size of the maps, quite possible that enough objects of the same name
3825 would be in memory to overflow the size size of a short.
3826MSW 2002-11-19
3827
3828Changed a ton of #ifdefs into settings:
3829convert #ifdef NOT_PERMADETH into settings.not_permadeth.
3830SET_TITLE and RESURRECTION are now settings.
3831#ifdef SEARCH_ITEMS -> settings.search_items
3832#ifdef SPELL_ENCUMBRANCE -> settings.spell_encumbrance
3833#ifdef SPELL_FAILURE_EFFECTS -> settings.spell_failure_effects
3834#ifdef CASTING_TIME -> settings.casting_time
3835#ifdef REAL_WIZ -> settings.real_wiz
3836#ifdef RECYCLE_TMP_MAPS -> settings.recycle_tmp_maps
3837#ifdef SPELLPOINT_LEVEL_DEPEND -> settings.spellpoint_level_depend
3838#ifdef EXPLORE_MODE -> settings.explore_mode
3839make explore mode actually *work*.
3840#define MOTD -> settings.motd
3841#define DM_MAIL -> settings.dm_mail
3842garbled 2002-11-12
3843
3844
3845New alchemy code, as discussed on the developer list. Now recipies include
3846two new tags: skill and cauldron. With skill, you can set which skill
3847activates this recipie, and the cauldron, corresponds to the arch name of
3848the facility you will use when creating the item. In this way, item
3849creation is now more generalized than just alchemy, and specific formulae
3850can be written to utilize different skills, or perhaps special formulae
3851would require a hard-to-find cauldron.
3852
3853Functionally, the alchemy, or alchemy-like-skills are now activated by
3854the use_skill command. The secondary use of the alchemy spell has been
3855withdrawn, so now it functions in the way it was originally intended again.
3856garbled 2002-11-11
3857
3858socket/loop.c: add a setting fastclock. This makes the server's clock run
3859*really* fast. For now, it's good for debugging purposes, but in the
3860future it will allow a dm to ravage a world with weather quickly.
3861include/define.h: add FLAG_IS_WATER
3862include/global.h: add fastclock to settings
3863include/map.h: add water to weathermap structure
3864include/sproto.h: add tons of new functions in weather.c
3865common/init.c: update for FLAG_IS_WATER
3866common/loader.l: update for FLAG_IS_WATER
3867server/init.c: add code to read fastclock setting
3868server/weather.c: Complete update, largely rewritten. Now the world is
3869cut into a 100x100 matrix of weathermaps. Each one of these maps is
3870computed at initial boot, and written to disk, following which, they are
3871simply read from disk at boot. For each of the main weather types
3872(pressure, humitidy, base temperature, wind direction, wind speed) the
3873game recomputes the entire weathermap, applying smoothing algorithims, or
3874derriving each map from it's predecessor. Weathermaps are only used if
3875you have set your dynamiclevel to 1 or greater, and, are using the bigmap
3876set. At this time, there is still no functional change to the game,
3877bigmap, or not.
3878utils/maps.c: This program will generate ppm files from each of the
3879weathermaps. Mostly for debugging, but curious DM's might find it useful
3880to see the weather.
3881garbled 2002-10-27
3882
3883server/c_chat.c: Fix some buffer overflow issues - use snprintf or
3884 use new_draw_info_format instead.
3885lib/artifacts: Update some cloaks not to require a minimum magic level,
3886 since that will never be met.
3887MSW 2002-10-16
3888
3889Minor bugfixes:
3890common/living.c: Fix it so that if you die, you won't _gain_ exp in any
3891 skills - could happen if new table is harder - 3 level loss could still
3892 mean having higher exp total.
3893common/map.c: Fix on_same_map so check to see if either object has null
3894 map value - prevents crashes.
3895MSW 2002-10-13
3896
3897
3898Experience cleanup - the main functional change is that no upper limit of
3899 exp in an individual skill, save for the limit that there is an upper
3900 limit of total exp a player can have. Thus, if a player concentrates
3901 complete in one skill, he could get to level 110 in it. A lot of
3902 code cleanup was done - so much had gotten added to the exp code that it
3903 was a real mess.
3904common/living.c: re-arrange some of the code, so all the exp related
3905 functions are together. remove adjust_exp(), change check_dm_add_exp_to_obj()
3906 to check_exp_adjust. Add new functions add_player_exp(), check_exp_loss(),
3907 check_exp_add(), subtract_player_exp().
3908include/libproto.h: rebuilt.
3909server/c_wiz.c: Update command_addexp() to use new exp functions.
3910server/gods.c: Update lose_priest_exp() to use new exp functions.
3911MSW 2002-10-11
3912
3913configure, configure.ac: Remove --enable-old-layout option - that is more than
3914 3+ years old now. Add --enable-dmalloc option so code can be compiled
3915 with dmalloc debugging without needing to change/rebuild the configure
3916 files.
3917common/porting.c: Add stdarg.h to list of included files.
3918include/autoconf.h.in: rebuilt, HAVE_LIBDMALLOC undef added.
3919random_maps/square_spiral.c: fix bound checking value.
3920MSW 2002-10-07
3921
3922common/item.c: Fix bug with identified potions not getting set to proper name.
3923MSW 2002-10-03
3924
3925Bugfixes: Add golem_count element to player structure so we can properly
3926 detect when golem is destroyed. This fixes a crash in some places as the
3927 code tried to remove this already removed golem.
3928 Fix crash when null player maps.
3929include/player.h: Add golem_count element to player structure.
3930server/player.c: Add code in handle_newscs_player() that checks status of
3931 golem, clears op->contr->golem is value is bogus
3932server/spell_effect.c, server/spell_util.c: Initialize golem_count
3933 value when golem is created.
3934socket/request.c: Check for null map value.
3935MSW 2002-10-02
3936
3937Mostly bugfixes, but the addition of a wiz 'hide' command which makes the
3938 wiz out of sight so to speak.
3939--
3940common/loader.l, common/loader.c: Fix bug where flag values were being saved
3941 with actual value of the flag (eg, 32768, 16, etc) instead of 1/0 value -
3942 Code effectively worked the same, just was a bit odd looking at save files.
3943include/player.h: Add hidden element to player structure.
3944include/sproto.h: Add command_hide(), update proto for players_on_map()
3945lib/Makefile.am, lib/Makefile.in: add wizhelp/hide file.
3946server/apply.c: Add error checking to converts so it doesn't crash if the
3947 converter doesn't have a proper other_arch. Modify shopmats so that they
3948 don't transport spell effects, like fireballs an burning hands.
3949server/attack.c: Modify code so players can drain other players exp.
3950server/c_misc.c: Modify various functions to not show info on hidden DM.
3951server/c_wiz.c: Add command_hide(), clean up command_invisible() a bit.
3952server/commands.c: Add hide command to dispatch table.
3953server/main.c: Add code to not update players on map for hidden dm.
3954server/player.c: Give hidden dm perpetual invisiblity.
3955server/skills.c: Only get exp if you actually stole an item - fixes abuse
3956 whereby players who couldn't carry item could continually 'steal' it from
3957 monster and just gain exp.
3958server/swap.c: modify players_on_map() to take addition arg to determine if
3959 real players on map should be shown, or if we shouldn't count hidden dms.
3960socket/info.c: Modify code so that oldsockets don't get reports on high verbose
3961 messages.
3962socket/metaserver.c: Modify metaserver update to not include hidden dms.
3963utils/Makefile.in: update datestmp.
3964MSW 2002-09-27
3965
3966
3967server/pet.c: Add check to pet_move() to make sure the space we are
3968 checking is within the map, and handle map tiling.
3969MSW 2002-09-23
3970
3971Various updates:
3972NOTE - You need to install the updated archetypes (included below)
3973 if you run this code without the updated archs, you will likely find
3974 many things do not work.
3975acinclude.m4 aclocal.m4 configure: more refinements for libpython detection.
3976common/button.c: Two push_button() changes - have it check for ACTIVATE_ON_
3977 PUSH/RELEASE to determine if the object should get activated. Also,
3978 change behaviour of TIMED_GATE so that multipart timed gates work.
3979common/loader.l, loader.c: Update with acttivate_on_push/release
3980doc/Developers/objects: Add notes about how to add flags to objects.
3981include/define.h: add new FLAG_ values
3982include/win32.h: update by pstolarc so it compiles on Win32.
3983lib/archetypes: rebuilt
3984MSW 2002-09-17
3985
3986common/map.c: Fix problem with ordering in check_linked() - checking
3987 for NO_PASS was before checks for inventory checkers, resulting in
3988 inventory checkers that require the player to have an item not working.
3989MSW 2002-09-15
3990
3991
3992------------------------------------------------------------------------------
3993Changes for 1.4.0:
3994
3995server/disease.c: Change move_disease() somehwat - before, if you were
3996 not susceptible to a disease, it would never run its course. Yet you
3997 would still get stuck with the symptoms. there was a case on
3998 metalforge where a character had a symptom with no disease, and
3999 had immunity, yet was still getting stuck with the symptoms. Not sure
4000 if this change will help prevent that in the future or not.
4001include/player.h: Change item_power in player structure to be 16 bits -
4002 8 bit values were getting overflowed.
4003MSW 2002-09-14
4004
4005INSTALL: Update directions with new automake method.
4006common/Makefile.am, common/Makefile.in: Fix code for building the libproto.h
4007 file - it was including loader.l and not loader.c
4008common/exp.c: Add init_experience() and dump_experience() functions -
4009 init_experience() loads the experience table from a file. Add default
4010 experience table into this file
4011common/init.c: Add call to init_experience()
4012common/living.c: Remove experience tables - players can select the one they
4013 want by changing the exp_table file. Remove reference to new_levels[] -
4014 only levels[] is used now for the formentioned reason.
4015include/config.h: Update notes about SIMPLE_EXP system.
4016include/libproto.h: rebuilt.
4017lib/Makefile.am, lib/Makefile.in: Add exp_table to list of files.
4018lib/exp_table: New file that contains experience information.
4019server/c_object.c: Modify command_take() to look for objects above the player
4020 to pick up, then objects below. This fixes the bug with not being able
4021 to use the take command on items from a chest the player opens without
4022 moving off the space.
4023server/init.c: Add -mexp dump switch to dump the experience table. Allow
4024 the simple experience system to be set in the settings file.
4025server/skill_util.c: Fix oddness in calc_skill_exp() which could result
4026 in add amounts of exp given.
4027MSW 2002-09-10
4028
4029
4030include/sproto.h: rebuilt
4031lib/help/killpets: New file
4032lib/Makefile.in: Add help/killpets file.
4033server/c_misc.c: Add command_kill_pets().
4034server/commands.c: add killpets command which kills your pets.
4035server/monster.c: Add some code in check_enemy so that the enemy
4036 has to be a monster/generator/player to be considered valid -
4037 I was seeing things like arrows ending up as target enemies.
4038MSW 2002-09-07
4039
4040More bugfixes:
4041common/loader.l, loader.c: Fix up the handling with speed with respect
4042 to style maps - the objects were still getting put on the active
4043 list.
4044common/map.c: Fix up blocked_link() to behave more like the
4045 blocked_two() function - inventory checkers and door handling.
4046 Comment out blocked_two since it isn't used anymore. Modify
4047 load_objects to remove objects on style maps from the active
4048 list. Remove some of the debug messages about map loading.
4049common/object.c: Add remove_from_active_list() function for use
4050 in map.c to remove objects from active list.
4051common/porting.c: Comment out debug message if open_and_uncompress()
4052 can open a file - caller of the function should print out messages,
4053 and it really isn't much of an error in any case.
4054include/libproto.h: rebuilt.
4055random_maps/special.c: Modify place_special_exit() - this should fix
4056 bug of very large treasure maps - problem was if the generated map
4057 size was too small, when generate_random_map was called, it would
4058 generate a newly sized map that was much larger. Code was also
4059 re-arranged some to make it a little more readable.
4060server/attack.c: Fix crash when creature may not have an owner and
4061 it kills something else.
4062server/move.c: comment added - no code change.
4063socket/request.c: Fix off by one error in esrv_send_animation() -
4064 rare condition as it only showed up when trying to send the last
4065 animation (zombie) - only an issue if the player is put on top of
4066 a zombie for some reason (no other space for them) - observed when
4067 leaving the random dungeon in the undead church in scorn without
4068 clearing out all the zombies first.
4069MSW 2002-09-06
4070
4071
4072CHANGES: Update build instructions for the plugin.
4073random_maps/square_spiral.c: Fix bug that could cause the search
4074 function to go off the edge of the map looking for a clear space.
4075 Doesn't happen often, but one crash did happen here.
4076server/monster.c: Fix some bugs with monsters and wakeup - remove
4077 check for friendly that could never be true, and also fix
4078 logic so that monsters will now find the players.
4079MSW 2002-09-05
4080
4081common/button.c: Fix do_mood_floor() to look at all objects on space for
4082 something to effect, not just things above the moodfloor.
4083server/attack.c: Add missing check to make sure the plugin exists before
4084 we try to access the plugin function.
4085common/readlable.c: Fix crash caused by passing null value to mon_desc -
4086 check for non null was at end of { } do loop - check should be at the
4087 start.
4088server/monster.c: Make it so that monsters with see invisible are not
4089 immune to blind - monster can be given appropriate resistance to make
4090 it so it is not effected by blind.
4091MSW 2002-09-04
4092
4093server/main.c: Move #endif in crypt_string to more proper place.
4094server/monster.c: Fix bad if statement that may have been waking up
4095 monsters when they shouldn't have been.
4096MSW 2002-09-03
4097
4098This change mostly deals with improving behaviour of pet monstes.
4099Most of the code is from K. Reinert - however, I did some code cleanup/
4100fixes related to pet monsters, so it is difficult to note where
4101each piece of code came from. One thing this does fix is handling of
4102multipart pets - these now work properly.
4103common/map.c: Update comment for get_rangevector() - no code change.
4104common/object.c: Add get_search_arr() which is used in pet monster code.
4105 This returns a semi random scrambling of the freearr array.
4106doc/Developers/protocol: Update documentation about map1a protocol command.
4107include/libproto.h, include/sproto.h: rebuilt.
4108server/attack.c: Have drain attacks return 1 damage so that it is clear
4109 that you are actually hitting your opponent. Otherwise, you would
4110 get messages that 'you missed xyz', even though you are draining it.
4111 This extra point of damage shouldn't change balance in any significant
4112 way.
4113server/monster.c: Update hnadling of enemies for pet monsters. It should
4114 more intelligently choose the monsters and not switch/clear the
4115 enemy field for no reason anymore. Change find_nearest_living_creature to
4116 use the get_search_arr() to more randomly choose direction of target -
4117 before, there was a proclivity to always look in the north direction.
4118 Modify can_hit() to look for closes part of enemy - otherwise, monsters
4119 may not attack opponents even if they were right next to them because
4120 they couldn't get to the enemies head. Remove move_object from
4121 this function - merged with move_ob in move.c
4122server/move.c: Fix move_ob to use 'cleaner' code of move_object, but
4123 also have specific features that move_ob had (player handling).
4124 Before move_ob didn't handle multipart objects correctly, and the
4125 two functions were largely the same. Now move_object() just calls
4126 move_ob - the only difference in the functions is that move_ob()
4127 takes 3 parameters instead of 2 of move_object() (added
4128 parameter is originator). I think this should now mean multipart
4129 player objects may now work.
4130server/pets.c: get_pet_enemy enhanced to be much smarter about
4131 selecting/finding things for the pet to attack.
4132server/player.c: Remove commented out line of init_beforeplay
4133MSW 2002-08-31
4134
4135server/attack.c: Modify drain attack code so that if some agent of the
4136player is doing the drain (eg, avatar, summoned monster, or even spell),
4137player gets exp added to his total. Otherwise, the agent could suck all
4138the exp out of the monster, resulting in no gain for the player.
4139Also, fix bug in drain code where uninitialized value was being used
4140if enemy had 0 protection to drain.
4141MSW 2002-08-30
4142
4143Various bugfixes:
4144common/map.c: Change so that same logic is used to determine pclose/fclose
4145 that is used to determine popen/fopen - otherwise, compressed map
4146 files probably don't work properly.
4147common/treasure.c: Do a memset to make sure entire treasureslist is
4148 set to sane values.
4149lib/archetypes: Fix 'slaying' field (which determines spell name) in
4150 god_spelldirect_face_of_death and god_spelldirect_finger_of_death
4151server/apply.c: Fix infinite loop if the player had cursed items
4152 that needed to be unapplied to apply an item - setting up next
4153 item iteration was inside if check when it shouldn't be. Also,
4154 print message to player if this is the case.
4155server/monster.c: Better format some of the code for improved readability.
4156 Fix indentation of can_see_enemy. Clean up invisiblity check - may
4157 have fixed a bug - old code should have worked, but wasn't very
4158 readable.
4159server/move.c: Fix some bad code from last checkin - didn't fix
4160 the crash on no floor for door type, and instead removed
4161 check type from next line by accident.
4162server/player.c: Remove call for init_beforeplay - this is already
4163 properly called, and re-calling it resulted in some things being
4164 redone when they shouldn't be.
4165server/skills.c: Add message if there is nothing to steal form the monster.
4166server/spell_effect.c: Improve message when invisiblity duration is
4167 maximized.
4168socket/init.c: change O_NDELAY to O_NONBLOCK of fcntl.
4169MSW 2002-08-25
4170
4171doc/Developers/objects: Update with new (better) information from
4172 Todd Mitchell. Doc is more complete, and now has an index which
4173 should make it easier to find things.
4174server/move.c: Fix dereferencing NULL problem - was looking at op->above,
4175 but op could be NULL if the map had no objects on a space (typically
4176 not the case, but...) No reason I can see that we care about the object
4177 above - just process in normal order.
4178MSW 2002-08-21
4179
4180server/time.c: Possible fix for bug seen on metalforge -
4181 in move_player_mover, make sure we are working with the head of the
4182 monster.
4183MSW 2002-08-13
4184
4185More spoiler-html fixes - was not including attacktype information, but
4186also fixed some formatting issues.
4187common/item.c: Include attacktypes in describe_monster.
4188doc/scripts/Makefile.in: Add monsters-extract.pl file.
4189doc/spoiler-html/Makefile.in: Update to use ../scripts/monster-extract.pl
4190 file, remove monster-extract file.
4191doc/spoiler-html/spoiler.html: rebuilt.
4192MSW 2002-08-11
4193
4194Fix spoiler-html generation to show resistances. Need to do normal spoiler
4195next. Add a new docs/scripts directory to hold the common scripts,
4196instead of spoiler, spoiler-html, playbook, and playbook-html each having
4197their own copies.
4198configure, configure.in: Add doc/scripts directory.
4199doc/spoiler-html/Makefile.in: Update build directions to use
4200 ../scripts/items-extract.pl
4201doc/spoiler-html/spoiler.html: Rebuilt with updated information.
4202doc/scripts/Makefile.in: Makefile for directory.
4203doc/scripts/items-extract.pl: perl version of the items-extract file.
4204doc/spoiler-html/items-extract: awk version - no longer used.
4205MSW 2002-08-02
4206
4207common/item.c: Have describe monster show resistances of monsters - useful
4208 for spoiler output, as well probe spell.
4209server/disease.c: Fix typo.
4210MSW 2002-08-02
4211
4212include/global.h: add FREE_AND_CLEAR_STR macro, relocate DELETE_STRING
4213 by the other macros.
4214server/c_misc.c: Fix string printout in applymode function.
4215server/disease.c: Update name_pl in diseases.
4216server/player.c: replace FREE_AND_CLEAR with FREE_AND_CLEAR_STR - was
4217 freeing data that shouldn't be freed.
4218MSW 2002-08-01
4219
4220Various fixes:
4221INSTALL: Update with note about --with-includes configure option.
4222common/loader.c, common/loader.l: Add comment about flag_invis_undead
4223include/define.h: Add FLAG_INVIS_UNDEAD
4224lib/adm/map_info: Modify to not follow symbolic links.
4225server/monster.c: Modify can_detect_enemy to be a bit more straightforward
4226 in its logic. Also, modify detection of invisible creatures - don't
4227 reduce duration, just return that the monster can detect the player.
4228 There were also spurious messages about the player being seen.
4229 Modify can_see_enemy to check FLAG_INVIS_UNDEAD, also fix broken
4230 comparison
4231server/player.c: Clear FLAG_INVIS_UNDEAD when invisibility ends. Fix
4232 action_makes_visible() - had reverse logic on FLAG_MAKE_INVIS check,
4233 and a typo in the printed message.
4234server/spell_effect.c: cast_invisible() to use FLAG_INVIS_UNDEAD -
4235 also check for maximum duration, and only search active objects when
4236 clearing enemy.
4237server/weather.c: Fix off by one on comparision when intializing maps
4238 darkness when loading map from disk. In dawn_to_dusk, don't do
4239 further processing if the light hasn't changed.
4240MSW 2002-07-29
4241
4242
4243
4244Various bug fixes, add glyph spell:
4245TODO: Updated
4246common/map.c: Fix change_map_light() - if darkness was reduced to zero,
4247 it wouldn't properly notify the players or update the maps they are
4248 on. Also, make it more robust to handle changes by more than one.
4249include/define.h: Increase NROFREALSPELLS
4250include/spellist.h: Add glyph spell.
4251include/spells.h: Add SP_GLYPH entry.
4252server/attack.c: Fix up kill_object() - it has had some many various
4253 additions that it was difficult to follow the logic. It should also now
4254 do better check on skill objects when awarding experience.
4255server/player.c: Add some checks/addition to properly deal with freeing the
4256 name_pl in the player object. Fix it so that if you are braced, you
4257 still won't attack friendly creatures.
4258server/rune.c: Add cast_generic_rune() to handle the glyph and rune spell.
4259server/spell_effect.c: Fix up some pointers in cast_cause_disease() -
4260 needed so that it works properly when embedded in a glyph. Have it
4261 return 1 even if no one caught anything - you still cast the spell, so
4262 you should lose the grace for it.
4263server/spell_util.c: Fix some formatting. Break out the code dealing
4264 with rune into cast_generic_rune()
4265socket/loop.c: Add flag to player command mapping, and update structure -
4266 if flag is set, command can only be issued when player is in play,
4267 and not when waiting at the quit or login prompt - fixes crashes where
4268 players could wait for the map to get swapped out (after quitting), and
4269 then looking at a space.
4270socket/request.c: Fix map2cmd so that invisible players are drawn.
4271MSW 2002-07-24
4272
4273Add dm command 'freeze' which freezes a player from doing anything for some
4274amount of time.
4275include/sproto.h: rebuilt.
4276lib/Makefile.in: Add freeze to wizhelp files.
4277lib/wizhelp/freeze: New file.
4278server/c_wiz.c: Add command_freeze(). Also, break out
4279 get_other_player_from_name() - several functions need the same logic
4280 of getting a player named X that is not us - making it a function
4281 reduces the duplicate code. Fix some formatting for some functions.
4282server/commands.c: Add command_freeze to the dispatch table.
4283MSW 2002-07-17
4284
4285lib/Makefile.in: add a 'archonly' directive that only collects archetypes
4286 and doesn't collect images.
4287lib/archetypes: rebuilt for fixes made to arches.
4288lib/collect.pl.in: modified to take second parameter -ARCHONLY, that causes
4289 it not to save out animation, bmaps and faces file.
4290server/apply.c: Change order of print when applying/unapplying - print out
4291 the 'you apply/unapply' before we print out the changes that applying
4292 the item does. It seems odd for it to be 'you feel stronger. you apply
4293 xyz'. Fix can_apply_object() so that if a player needs to unapply
4294 several items, the right return code is returned and we don't say
4295 the player has a choice.
4296server/player.c: Fix missing clearing of player->next.
4297MSW 2002-07-15
4298
4299-- Start body commit notes --
4300Major commit. This adds body locations which is used for equipping items.
4301Equipment has information which body part it gets equipped to, and monsters
4302have information on how which body locations they can have.
4303
4304As part of this work, I also did a lot of code cleanup.
4305
4306To use this, you must use up to date archetypes - the ones included
4307in this commit are fine - just make sure you install them. If
4308you don't, players will not be able to equip items.
4309
4310common/arch.c: Initialize body_used to be same as body_info for
4311 archetypes - this way when monsters are created, they can
4312 start equipping items right away.
4313common/exp.c: update new_exp() - some flags it checked for before no longer
4314 exist or have new names.
4315common/info.c: describe_item() now takes second parameter - update
4316 dump_abilities to use new calling convention.
4317common/item.c: Add table that describes the body_info locations and
4318 their names. Add functions that calculate item power for objects
4319 that don't have it set. Update display functions to show
4320 item_power in items. Update describe_monster() - use_horn/wand/rod
4321 merged into just use_range. Modify describe_item() to take second
4322 paramater - who the item is being described for. Show item_power
4323 in describe_item.
4324common/living.c: Pull out MAXLEVEL from being defined in this file -
4325 define in in define.h, since other files use it. Add NUM_STATS
4326 define - replace hard coded values of having just 7 stats with it.
4327 Update change_abil to not display that the player has a new
4328 attacktype when equipping a bow that has it - fix_player() ignores
4329 the attacktype of the bow, so it was incorrect information.
4330 fix_player(): Initialize player ranges structure to null -
4331 will get filled in by code in function, updated to deal with
4332 updating the body_used data from body_info in the objects.
4333 Replace instances of last_heal with gen_sp_armour. Rearrange
4334 some code to make function more readable.
4335common/loader.c, common/loader.l: Remove the variable_const information - no
4336 longer needed and confusing for new people when adding in new object
4337 elements. Add set_body_info() - parses the string from the load file and
4338 sets the appropriate array element. Add check_loaded_object() - does
4339 sanity checking for an object after finished loading - replaces need for
4340 long processing directive in the actual rules by having seperate function.
4341 Remove unused flags from load directives (apply_once, no_pretext,
4342 can_apply), add some new ones (item_power, gen_sp_armour), update others
4343 to can_use_range. Replace flag_links with simple array that contains the
4344 name for each corresponding flag. Update get_ob_diff to not use the V_
4345 values and just include the actual string name - all recent changes have
4346 done this, just updated for old stuff. Update get_ob_diff to save new
4347 values that have been added.
4348common/object.c: clear_object: Modify to use memset to clear
4349 the structure to zero - this is less error prone than listing
4350 all the specific values, and probably faster. Also, makes it
4351 easier to add new elements - no need to update object.c in most
4352 cases.
4353common/player.c: Remove get_player_ob routine - this is now merged
4354 in with get_player_ob in server/player.c. Remove generate_ext_title -
4355 not used.
4356common/readable.c: Update to pass second argument to describe_item.
4357common/treasure.c: Update to calculate item_power of generated items.
4358 Clean up a lot of code formatting. Update add_abilities
4359 to use gen_sp_armour values, not last heal (note, it appears
4360 the last_heal values weren't being used before). Update
4361 calls to describe item to take second parameter.
4362doc/Developers/objects: Update will_apply notes, add note about
4363 item_power, body location.
4364include/define.h: Comment out unused flags (flag_apply_once, flag_paralyzed,
4365 flag_no_pretext, flag_ready_rod, flag_read_horn). Add flag_use_shield.
4366 rename flag_use_wand to flag_use_range. rename flag_ready_wand to
4367 flag_ready_range. Add flag_ready_scroll. Update ARMOUR_SPELLS access
4368 macro. Add AP_PRINT flag to apply flags. Add CAN_APPLY_.. return types
4369 for can_apply_object function.
4370include/includes.h: add strftime, mktime checks to this file.
4371include/libproto.h: rebuilt.
4372include/living.h: Add NUM_STATS define, update extern declarations
4373 to use it for sizing.
4374include/loader.h: remove the V_.. info and xbm_.. externs that were not
4375 used.
4376include/newserver.h: Remove ext_tile information.
4377include/object.h: Add Body_Locations structure, NUM_BODY_LOCATIONS define.
4378 Add definitions for WILL_APPLY values. Clean up object structure -
4379 formatting is now consistent, ordering of values groups values
4380 together more logically. Update all types to use the int8/int16/int32
4381 types. Several unused fields removed.
4382include/player.h: Update rangetype enum. Add unapplymode enum.
4383 Clean up player structure - type updates, unused fields removed,
4384 formatting fixed up.
4385include/spells.h: remove range_name extern. Update SpellTypeFrom
4386 field to combine wand/rod/horn into spellMisc - none of the
4387 spell casting code was differentiating these.
4388include/sproto.h: rebuilt.
4389lib/Makefile.in: Add new help files (applymode, bind, brace)
4390lib/archetypes: rebuilt for body_info, gen_sp_armour, item_power,
4391 can_use_shield information.
4392lib/artifacts: updated for item_poer and gen_sp_armour changes.
4393lib/treasures: remove unused _force for player treasure.
4394plugin/plugin_python.c: Change FLAG_USE_WAND to FLAG_USE_RANGE.
4395server/apply.c: Move stftime, mktime to include/includes.h. Remove
4396 draw_find() - one line function can just as easly be in the
4397 code itself. Update calls to long_desc to pass second parameter.
4398 move gravestone_text() to player.c file. Add direction parameter to
4399 apply_scroll() - in this way monsters can use it properly.
4400 Remove dead code. Update apply_special function. Add
4401 unapply_special(), get_item_from_body_location(), unapply_for_ob(),
4402 and can_apply_object() functions.
4403server/attack.c: Remove SET_FLAG(op, FLAG_PARALYZED) line - no code
4404 was ever checking status of FLAG_PARALYZED.
4405server/c_misc.c: add command_body() which dumps body information for
4406 player. Update who as idle element in player structure removed -
4407 was not being used by anything. Add command_applymode() to
4408 set players prefered unapply method. Remove calls to unlock_player()
4409 in various functions - unlock_player() has not done anything
4410 meaningful for a while.
4411server/c_object.c: Modify long_desc to take a second parameter
4412 which is who is examing the object. this is needed so that we
4413 can pass it down to some of the lower level functions.
4414 Update calls to describe_item to pass this second parameter.
4415 remove FLAG_NO_PRETEXT code - no archetyps were using it. When
4416 examining objects, also tell player where to put them on.
4417server/c_range.c: Update legal_range() - we now store the object that
4418 is responsible for a range in the player object, so code is
4419 much simpler. Update change_spell() to not destroy golem
4420 just by readying another spell - we now let players regain control
4421 of golems after switching to another range. Update change_spell
4422 to use item name of object for range description.
4423server/c_wiz.c: remove reference to count_left from player object -
4424 field removed from structure.
4425server/commands.c: add new commands (applymode, body) to command dispatch
4426 table.
4427server/login.c: Remove unlock_player() and lock_player() and calls to it -
4428 current checking of names at login should be sufficient to
4429 prevent duplicates. Remove dead code from check_name. Update
4430 load/save code for unapply mode value. Add set_flag(op,
4431 FLAG_USE_SHIELD) if player is allowed to use armor - needed since
4432 flag_use_shield is really a class feature and so is not automatically
4433 updated for old player files.
4434server/main.c: Remove references to count_left. memset marker object to
4435 NULL - seems to increase stability on metalforge server.
4436server/monster.c: Many updates related to the body info - monsters follow some
4437 rules as players. Add monster_should_cast_spell function - monsters will
4438 use this for all spellcasting related actions (abilities, scrolls, wands,
4439 etc). Update for merged rod/horn/wand ranges. Update bow use by monsters
4440 - they don't actually need to equip it to fire - this way we don't need to
4441 constantly swap the monsters weapons between the bow and melee item. Use
4442 fire_bow from player.c for most of the work. Modify scroll usage -
4443 monster will use it when player is near, not when it first picks it up.
4444 Add FLAG_READY_SCROLL to denote the monster has a scroll to use. Also,
4445 monster now casts it in appropriate direciton. Merge the
4446 monster_use_wand/rod/horn into monster_use_range. Modify
4447 check_good_weapon and check_good_armour to just look at the stats of the
4448 two items without needing the monster to apply it first.
4449server/player.c: Print motd in green so it is more noticable. Update
4450 get_player function to do work it did before as well as that of
4451 get_player_ob. Have get_player take a parameter which is the object of
4452 the player if he has one. Modify to use memset to clear the player
4453 structure - more sure fire than explicitly listing values to initialize.
4454 Remove calls to unlock_player. Modify fire_bow so that monsters can also
4455 use the function. Add fire_misc_object() to fire_wand/rod/horn - removes
4456 code from fire(). Add gravesetone_text() to this file.
4457server/shop.c: Update to pass second parameter to describe_item().
4458server/skill_util.c: Update check_skill_to_fire since there are fewer
4459 rangetypes now. change range_scroll name to range_golem, as that is
4460 a bit more accurate for what it actually does. Modify show_skills()
4461 to show player his item power and total of items he has equipped.
4462server/skills.c: Add second paramater to long_desc, remove references to
4463 count_left.
4464server/spell_effect.c: Add second paramater to long_desc, remove references to
4465 count_left. Update range_scroll to range_golem
4466server/spell_util.c: remove references to count_left. Update messages
4467 if player trying to cast where he can't with new range names.
4468socket/info.c: Update range information and how we display what it is -
4469 we will use the object name of the range if available. Remove
4470 reference last_known_spell, last_shoot, last_spell, last_value
4471 player structure fields.
4472socket/init.c: Remove ext_title information.
4473socket/request.c: Add element for life_stealing in the resistance array.
4474 Remove references to idle, count_left in player structure. remove
4475 ext2 title information.
4476MSW 2002-07-14
4477-- End body commit notes --
4478
4479common/anim.c, common/button.c, common/friend.c, common/glue.c,
4480 common/init.c,common/logger.c, common/los.c, common/porting.c,
4481 common/time.c, common/utils.c, crossedit/png.c, crossedit/xutil.c,
4482 include/attack.h, include/config.h, include/map.h, include/material.h,
4483 include/newclient.h, include/skills.h, include/treasure.h,
4484 random_maps/decor.c, random_maps/door.c, random_maps/floor.c,
4485 random_maps/monster.c, random_maps/special.c, random_maps/standalone.c,
4486 random_maps/style.c, random_maps/wall.c, server/alchemy.c,
4487 server/c_chat.c, server/c_party.c, server/gods.c, server/hiscore.c,
4488 server/init.c, server/pets.c, server/resurrection.c, server/rune.c,
4489 server/time.c, socket/metaserver.c: Update banner copyright
4490 with proper contact information.
4491MSW 2002-07-14
4492
4493server/disease.c: Fix propogation of diseases with negative damage (these
4494 do a percent of the creatures damage). The new disease was getting
4495 a damage rating of 1 in all cases because we were passing a negative
4496 value to random_roll for the top end of the range.
4497MSW 2002-07-08
4498
4499common/arch.c: Add 'unlocked' match for item_matched_string.
4500lib/help/drop, lib/help/dropall: Help files for these commands.
4501lib/Makefile.in: Update to include help commands above.
4502server/spell_effect.c: Fix formatting of summon_pet() function. Modified so
4503 that it no longers sucks player spellpoints when casting it via scroll -
4504 scrolls should not cast the player spellpoints. No idea why that code was
4505 there - in fact, casting off a scroll used more sp than casting from
4506 memory. Modify cast_cause_disease() function so that if the passed
4507 direction is 0, we refer to the facing and cast in that direction - this
4508 means spells of cause disease now work. Also perform some minor formatting
4509 changes in the function.
4510TODO: Add not about inscription.
4511MSW 2002-07-05
4512
4513common/arch.c: Fix bug in item_matched_string which was matching all
4514 values (inverse in fact) when passed with count > 1 in matching
4515 string - missing ! operator.
4516README: Update - remove note about windows client, since it is currently
4517 unsupported and could stop working in some future release.
4518MSW 2002-07-05
4519
4520------------------------------------------------------------------------------
4521Changes for 1.3.0:
4522
4523socket/request.c: If players were using the original map command with
4524 an even map size, server would try to send too much data to client -
4525 checking in server would result in an abort. Modify code to now properly
4526 send right number of spaces.
4527lib/Makefile.in: remove extraneous / in front of motd entry in file list.
4528include/version.h: Update for version 1.3.0
4529Makefile.in: Update for version 1.3.0
4530lib/archetypes: rebuilt.
4531MSW 2002-07-01
4532
4533doc updates: Rebuild the doc files, but most of this is fixing some of the
4534doc build stuff to correctly working with the new image set naming
4535scheme and fixing some bugs. Some doc is certainly out of date - the
4536playbook doesn't mention the classes for example.
4537doc/handbook.ps, doc/spoiler.ps: rebuilt
4538Note: all the doc/playbook changes also apply to the same files in
4539 doc/playbook-html.
4540doc/playbook/Makefile.in, doc/playbook/makeps, doc/playbook/makeps.pl:
4541 replace the awk makeps script with the perl one.
4542doc/playbook/items-extract: Don't show invisible items.
4543doc/playbook/levels-extract: Update so that it properly finds the declaration
4544 of the levels in living.c
4545doc/playbook/treas1-extract: Clear type when we get a new Object header. was
4546 resulting in duplicate entries for the characters.
4547doc/playbook/treas2-extract: Don't include forces of the no_class_face_change
4548 as part of characters treasures
4549doc/playbook-html/chap1.html: Update ftp site information.
4550doc/spoiler/Makefile.in, doc/spoiler/makeps.pl, doc/spoiler/makeps:
4551 replace the awk makeps script with the perl one.
4552doc/spoiler/items-extract: Add a space after the name match so that it won't
4553 match on the name_pl field.
4554doc/spoiler-html/items-extract: Add a space after the name match so that it won't
4555 match on the name_pl field.
4556doc/spoiler-html/makeps.pl: Update to handle new naming scheme for images.
4557doc/spoiler-html/spoiler.html: rebuilt.
4558lib/Makefile.in: Fix error in variable not being surrounded by parens.
4559MSW 2002-06-30
4560
4561
4562server/rune.c: Fix bug that allowed players to use marking runes to create
4563 arbitrary objects by embedding a endmsg in the string.
4564MSW 2002-06-26
4565
4566lib/ban_file: Update comments to describe how it actually works.
4567server/commands.c: Add some time cost to shout, say, and tell commands. This
4568 prevents abusive players from issuing huge number of these commands.
4569MSW 2002-06-20
4570
4571doc/playbook-html/Makefile.in: Remove some superfluous blank lines
4572 in the file.
4573configure, configure.in, plugin/Makefile.in: Modify configure script to
4574 subtitute PLUGIN_TARGET, have plugin/Makefile not build/install
4575 plugin if necessary support libraries are not in place.
4576common/item.c, include/material.h: Move the declaration/initialization
4577 of materialtype from material.h to item.c
4578server/main.c: Modify crypt_string so that on Freebsd systems, it will
4579 use des_crypt if available, if not, won't encrypt.
4580MSW 2002-06-18
4581
4582TODO: Additional updates.
4583Add support for loading the EMERGENCY_.. locations from a .emergency file in
4584the map directory. This makes it easy to switch map distributions without the
4585need to recompile. The emergency information is now stored in the settings
4586structure.
4587common/init.c: add EMERGENCY_ defines to default values in setting. Add
4588 init_emergency_mappath which loads the information.
4589include/config.h: Remove NEW_WORLD_MAP definition, as it is no longer
4590 needed. Update some of the EMERGENCY_.. information as we don't need
4591 to include the information for the new world map.
4592include/global.h: Add emergency_.. fields to settings structure.
4593server/login.c, server/main.c, server/player.c: Update references from
4594 the EMERGENCY.. values to settings.emergency values.
4595MSW 2002-06-15
4596
4597lib/Makefile.in: modified so that it doesn't overwrite commonly customized
4598 files (eg, motd, dm_file, ban_file). These files will get installed
4599 on new installations.
4600MSW 2002-06-14
4601
4602common/item.c: break out monster description into describe_monster
4603 function from describe_item - the later was a really long function.
4604 Reveal weapon speed for identified weapons, spell point regen
4605 penalty and max speed for identified armor - this was discussed about
4606 6 weeks ago. Clean up the code to reduce the number of redundant
4607 if statements and otherwise confusing code in describe_item.
4608MSW 2002-06-14
4609
4610configure.in, configure, plugin/Makefile, plugin/Makefile.in,
4611 plugin/Makefile.old: Modify the plugin module to gets its needed
4612 information from configure. configure.in modified to look for Python.h and
4613 to find the python library. plugin/Makefile.in is a new file.
4614 plugin/Makefile.old is the old plugin/Makefile (removed) - may be useful
4615 for sites where configure does not work for some reason. The use of
4616 --with-includes=-I/usr/include/python2.2 (or the like) will likely be
4617 needed for configure to find the Python.h file. Note - if you
4618 are doing a CVS update, you will need to re-run configure with the
4619 appropriate options for this change to take effect.
4620MSW 2002-06-13
4621
4622server/main.c: If on freebsd system, don't crypt the password.
4623Crypt on freebsd behaves diferently, and since there is little reason
4624to encrypt passwords, easier to just leave them decrypted.
4625Fix for sourceforge bug 469017
4626MSW 2002-06-13
4627
4628More minor changes, including a fix for the disappearing object bug -
4629this was caused by the flag_links not getting updated the last
4630time new flags were added. Problem probably only showed up now
4631because loader.c wasn't rebuilt until recent changes.
4632--
4633common/loader.c, common/loader.l: add extern to arch_init, when
4634 loading and get an object from a file, complain and ignore it if
4635 arch_init is not set (only time we should get object (vs arch) for
4636 names is when we load the archetypes file). Add missing entries
4637 to flag_links array.
4638common/treasure.c: Fix code so that proper plural names are generated
4639 for custom items (potions, flesh items, etc).
4640include/define.h: Add note about updating flag_links when NUM_FLAGS is
4641 increased.
4642server/skills.c: don't let players steal from players with FLAG_WIZ set.
4643MSW 2002-06-09
4644
4645Mostly bugfixes. I'm not sure if this will fix the disappearing arch problem-
4646none of the changes made in the original multiple name would seem to
4647cause it, so hard to say if any of these changes may fix it.
4648--
4649common/arch.c: Change get_archetype_by_name to be more efficient and
4650 not leak memory. Modify code that frees all archetype data to free
4651 the name_pl information. Make sure the clone.name_pl is set to
4652 NULL. When singularites are created, set the name_pl for them.
4653common/loader.l, common/loader.c: Modify code that fixes up name_pl
4654 to be more correct when it fixes up name_pl for old objects.
4655common/map.c: Modify load_map_header so that tile_paths will be normalized -
4656 need for editor to be able to load maps that have a multipart object
4657 that spans the maps.
4658crossedit/Edit.c: Modify some calls of out_of_map to OUT_OF_REAL_MAP, since
4659 tiling code really isn't fully in place for the editor. Modify
4660 EditPerformFill so that it actually works and doesn't crash the editor.
4661include/global.h: Move FREE_AND_COPY macro from loader.l to here so that
4662 all source code files can use it.
4663lib/adm/map_info: Modify to actually be able to examine just a sub
4664 portion of the map directories, and not all of them. Don't always
4665 show the unused objects - information isn't very interesting if only
4666 a portion is being examined. Modify the exit examining code to properly
4667 deal with random maps (if there is a finalmap component, make sure
4668 that does exist.) Loade the bmaps file and not the faces file to
4669 find valid faces.
4670plugin/plugin_python.c: Add missing %s that described what script
4671 was actually loaded.
4672random_maps/special.c, server/alchemy.c, server/c_misc.c, server/gods.c,
4673 server/login.c, server/player.c, server/spell_effect.c: Set up proper
4674 name_pl value for code that changes the name of objects.
4675server/apply.c: Use FREE_AND_COPY to set up names. Set up proper
4676 name_pl values for cases that change name. In apply_lighter, call fix_player
4677 if player is lighting an object in his inventory - necessary for the
4678 players glow_radius to get updated so the change actually takes effect.
4679socket/request.c: Modify esrv_map_scroll so that it properly clears cells
4680 that are moving out of view - failure to do this was resulting in the
4681 map1a updating these spaces with empty faces. This was causing
4682 fog of war wackiness with the client.
4683MSW 2002-06-06
4684
4685
4686common/button.c: Fix mood floor code - before, it was changing the moods
4687 of all sorts of objects (luggage, itself, etc). Now, it only
4688 changes objects above the floor, and only monsters.
4689MSW 2002-05-31
4690
4691
4692Main change is the addition of name_pl and client_type to object
4693structure. The name_pl contains the proper plural name instance - fixes
4694problem of '2 tooths'. client_type is sent to the client so that client
4695doesn't need to figure out sorting on its own. Client_type is an object
4696attribute, so can be modified in maps to hide the real type.
4697--
4698common/arch.c: item_matched_string() modified to use the name_pl field
4699 when trying to match names, and not to try to make the name plural
4700 itself.
4701common/item.c: query_short_name(),query_base_name() modified to
4702 use name_pl instead of trying to make the name plural.
4703common/loader.c, common/loader.l: Add code to load and save the name_pl
4704 value and client_type. Add logic when object is finished loading
4705 to set name_pl value to same as name or arch name if no name_pl
4706 is specified - this supports old maps/characters in which the objects
4707 dont have a name_pl field yet. Disable logic for need_an and need_ie
4708 flags since they are no longer needed. Fix bug that caused
4709 elevation not to get saved.
4710common/object.c: Add client_type check for CAN_MERGE function. Add
4711 appropriate logice in functions to handle setting, clearing, and
4712 copying of name_pl values. Remove unused anim_... fields
4713 initialization.
4714doc/Developers/objects: Add information about the name_pl field and
4715 client_type.
4716doc/Developers/protocol: Remove item protocol command info - it has
4717 been obsoleted. Add information about item2 protocol command.
4718include/define.h: Remote ST1_* values - they were not being used.
4719 comment out FLAG_AN and FLAG_NEED_IE values.
4720include/newserver.h: Add itemcmd to socket structure - this is the
4721 version of the item protocol command that will be sent to the client.
4722include/object.h: Add name_pl and client_type field to object structure.
4723 Remove unused anim_* values.
4724lib/archetypes: rebuilt with new archetypes that contain client_type
4725 and name_pl information.
4726lib/bmaps, lib/bmaps.paths, lib/crossfire.1, lib/crossfire.0, lib/faces:
4727 rebuilt.
4728server/monster.c: Remove anim_ references that were not being used.
4729socket/init.c: Initialize itemcmd version in the socket to 1.
4730socket/item.c: Remove special handling for clients of old versions - all
4731 clients now have to be at least sc_version 1024 (which has been around for
4732 a long time). This simplifies a lot of the object code that deals with
4733 sending or not sending plural names to the client - now always send them.
4734 Change code that sends item to client to use the item revision (currently
4735 1 or 2) that the client wants. If version 2, send along client_type
4736 information.
4737socket/request.c: Handle 'itemcmd' parameter in setup command. Make
4738 sure it is in proper range. If client is very old (sc_version < 1024)
4739 tell them so.
4740MSW 2002-05-30
4741
4742
4743crossedit/png.c, crossedit/xutil.c: Increase size of temporary buffers that
4744 are used when loading images - necessary to allow the editor to run without
4745 crashing.
4746include/newserver.h: Remove quick_pos from the MapCell structure.
4747server/main.c: Add code to set the coordinates to the EMERGENCY_X/Y
4748 values if using the EMERGENCY_MAP.
4749socket/request.c: Fix code that was causing darkness to get repeatedly
4750 sent for some spaces.
4751MSW 2002-05-19
4752
4753The bulk of this commit is to modify the server to only send the lower
4754rightmost part of multipart archetypes that use the same head. This allows
4755support of big images in the client.
4756
4757common/arch.c: Modify first_arch_pass to figure out the tail_x/y values for
4758 multipart archs. Rename the prev variable to head, as that it really what
4759 it is. Remove quick_pos info.
4760common/object.c: remove quick_pos info from object.
4761doc/Developers/images: Add notes about using merged images.
4762doc/Developers/protocol: Add information about the map1a command, which
4763 is used to for big image support. Remove map2 documentation.
4764include/map.h: Add MAP_LAYERS define instead of using hardcoded value of 3.
4765include/newserver.h: Change the MapCell to use MAP_LAYERS - saves
4766 considerable memory. Add defines for MAX_CLIENT_ map sizes.
4767 Remove map1cmd, map2cmd elements from socket structure - instead use enumeration
4768 of mapmode - only one map type will be used at any time by the client, so
4769 no reason to have individual elements - it also makes it easier to add new
4770 mapmode commands.
4771include/object.h: remove quick_pos, update_tag from object structure.
4772 Add tail_x, tail_y values to archetype structure.
4773include/player.h: Remove some now unused values from the player structure
4774 (drawn, floor, floor2, darkmask). These have been superseded by the
4775 map cells in the socket structure for quite a while.
4776include/sockproto.h: rebuilt
4777server/player.c: Remove code that initialized the drawn values in the player
4778 structure since they no longer exist.
4779socket/init.c: Replace map1cmd, map2cmd elements in socket structure with
4780 mapmode element. Modify init_ericserver so that it properly passes an
4781 int when setting the SO_REUSERADDR field.
4782socket/request.c: Modify code in SetUp function to use the new mapmode
4783 enumeration in the socket structure. Add support for map1acmd setup
4784 option. Throughout map code, replace MAXMAPCELLFACES with MAP_LAYERS.
4785 modify map_clearcell to take options for values to clear the cell to.
4786 Add have_head, check_head, and update_space commands - used with the
4787 map1 command to store and find head information.
4788 draw_client_map1 modified to support map1a extensions, as well as added
4789 logic for checking for heads in blocked and out of viewable map spaces.
4790 Some of the code is simplified by using the update_space function, since
4791 the logic for processing each layer was otherwise the same. remove
4792 draw_client_map2 function. esrv_map_scroll has same logic - some
4793 variables and code formatting changes.
4794MSW 2002-05-18
4795
4796server/login.c, server/c_misc.c: Don't save characters with 0 experience.
4797This apparantly fixes some abuses. MSW 2002-05-18
4798
4799server/attack.c: Don't generate PLAYER_KILL_PLAYER messages if kill
4800happened on battleground. Also, datestamp the messages.
4801MSW 2002-05-13
4802
4803server/attack.c: Generate log message when a player kills another player -
4804include the ip address of the killer to make it easier to add them to
4805ban files. MSW 2002-05-06
4806
4807------------------------------------------------------------------------------
4808Changes for 1.2.0:
4809Makefile.in, include/version.h: Update for 1.2.0 release
4810lib/Makefile.in: have it make an archive for the archetypes.
4811MSW 2002-04-28
4812
4813
4814doc/Developers/protocol: Add documentation about the map2 protocol command.
4815socket/request.c: Fix bad indentation for the map2 function. No actual
4816 functional code changes, but some comments updated. Running diff with the
4817 -w option will make the changes, or lack thereof, more viewable.
4818MSW 2002-04-28
4819
4820crossedit/xutil.c: Update to use name of png file.
4821lib/archetypes: collected - pl_dragon arch changed a while back, with no
4822 new collect.
4823lib/collect.pl.in: Add some notes about usage if no option is given or
4824 if --help is given.
4825server/gods.c: Fix that resulted in weapon/armor restrictions not working.
4826MSW 2002-04-23
4827
4828Various minor bugfixes. Note the changes may appear larger than they
4829really are due to formatting/indentation changes. Run diff -w to
4830supress those:
4831make_win32/installwin32.bat: Update for new image files.
4832server/c_object.c: Fix SAVE_INTERVAL #ifdef block. It failed to compile
4833 as it was written. Simplify code, but it should have the same effect.
4834server/move.c: Modify push_object so that if a player swaps position
4835 with his pet, we send a esrv_map_scroll. This should save bandwidth,
4836 and also prevents display corruption when fog of war on the client
4837 is in use. Add some new comments, adjust some formatting.
4838server/player.c: Fix minor typo in comment.
4839server/skills.c: Modify new_draw_info that is responsible for the
4840 "You pray" messages to not have the NDI_UNIQUE flag so that
4841 they can get batched up, depending on users value of output-count
4842server/swap.c: Remove swapped out per player unique maps from the list
4843 of maps. Reduces cpu and memory consumption by a minor amount, and
4844 results in a cleaner 'maps command output.
4845server/weather.c: Add standard crossfire banner to top of file.
4846 Modify long long declartion to just be a long.
4847MSW 2002-04-20
4848
4849socket/item.c: Add checks to esrv_move_object - before it just trusted
4850the client that the destination target to move items into was a container.
4851Now do valid checking that the object can be picked up, that the container
4852can hold it, etc. MSW 2002-04-18
4853
4854Add utils/crossloop.web.in script. This script is used on metalforge -
4855 it generates the backtrace file, compresses the core, and sends out
4856 mail.
4857configure.in, configure: Rebuilt to make the crossloop.web script.
4858utils/Makefile.in: Install the crossloop.web script. Include the
4859 crossloop.web.in script when making the archive.
4860utils/crossloop.web.in: New file.
4861MSW 2002-04-14
4862
4863Update to improve image caching and faceset support in the client.
4864 The main change is adding the 'requestinfo image_info' and
4865 'requestinfo image_sums' commands.
4866common/image.c: Checksum the bmaps file when we load it - we send this as
4867 part of the image_info data.
4868doc/Developers/protocol: Document the requestinfo data.
4869include/global.h: Add extern for bmaps_checksum, and the define for
4870 ROTATE_RIGHT which is used for checksumming.
4871include/newserver.h: Update SC version to 1027 so that clients can
4872 know if they can issue requestinfo commands.
4873include/sockproto.h: rebuilt
4874lib/adm/collect_images.pl: Add support for it to make a crossfire-images
4875 distribution that the client can use to bootstrap its image set.
4876socket/image.c: Change SendFaceCmd to take a NewSocket parameter instead
4877 of a player parameter - in this way, it can be used before the
4878 AddMe command - this allows the client to download images before
4879 issuing that command. Add send_image_info and send_image_sums
4880 function which send the requestinfo data to the client.
4881socket/loop.c: Move the askface command from the player commands to the
4882 newsocket commands. Add RequestInfo functino that determines the
4883 type of request and calls the specific function to deal with it.
4884MSW 2002-03-25
4885
4886------------------------------------------------------------------------------
4887Changes for 1.1.0:
4888
4889Updates for 1.1.0 release - pretty much all minor bug fixes, like
4890compiler warning messages, invalid ANSI C constructs, missing files to
4891include in the distribution.
4892Makefile.in, include/version.h: update version.
4893include/Makefile.in: Add some missing files
4894include/libproto.h, sproto.h: rebuilt to prevent compiler warnings
4895lib/Makefile.in: Include the wizhelp files in the archive.
4896server/apply.c, server/skill_util.c: fix invalid code (function parameter
4897 names can't match structs/typedefs), add a missing return value.
4898server/c_move.c, server/c_new.c, server/c_object.c, server/commands.c,
4899 server/daemon.c: Don't include the sproto.h if CEXTRACT is defined.
4900server/plugins.c: fix printf command that was printing wrong value type.
4901doc/spoiler-html/Makefile.in: Remove extraneous newline
4902
4903server/player.c: modify play_again to remove the player object if not done so
4904already. This fixes a crash observed on metalforge when a player quit at the
4905roll/swap stats prompt (undocumented that you can use 'q' then to do so). It
4906looks like this should also fix crashes that may be associated with the kick
4907and shutdown wiz commands.
4908MSW 2002-03-12
4909
4910Added new dragon race to crossfire.
4911Players of this dragon race can gain resistances
4912by eating the flesh of their defeated foes.
4913They can also specify in a certain resistance-type
4914and gain various abilities when increasing levels.
4915This "focus" can be switched by eating very special
4916As announced on cf-devel, this is the patch which
4917adds a new dragon-race to Crossfire.
4918Players of this dragon race can gain resistances
4919by eating the flesh of their defeated foes.
4920They can also specify in a certain resistance-type
4921and gain various abilities when increasing levels.
4922This "focus" can be switched by eating very special
4923flesh, which will be available for sale.
4924Dragon players gain special titles which cannot
4925be overwritten by manually set titles.
4926AndreasV 2002-03-01
4927
4928lib/collect.pl.in: Modified so that it uses the image.base.xyz.png to make
4929sure each listed face in objects has an image, and not the old xbm images
4930for that task. Also, ignore all files that end in .png, .xpm, or the
4931face extension - consider them legitimate files for the arch directory.
4932MSW 2002-02-25
4933
4934socket/image.c: Change type of image data to be uint8 from char. Checksums
4935were being incorrectly calculated when using the char type. MSW 2002-02-25
4936
4937server/main.c: If exit is damned, update players death & WoR home-position
4938 and delete town portal.
4939server/apply.c: Fix bug in move_apply. return was used instead of goto
4940 leave, so recursion_depth wasn't decremented.
4941mids 02/13/2002
4942
4943server/spell_effect.c: Fix bug in summon_cult_monster that would result
4944in crash if monster was killed when inserted. MSW 2002-02-10
4945
4946common/map.c: load_map_header: If the map message is empty, don't copy
4947 uninitialized data as the message. This fixes various crashes.
4948lib/Makefile.in: Remove the adm/*xpm* utilities, as they are no longer
4949 needed or distributed.
4950server/apply.c: set the player speed to zero after they use a savebed.
4951 Fixes crashes with players that have constant image animation (fireborns)
4952 when they apply the savebed and the map then gets swapped out.
4953server/plugins.c: Fix some serious memory leaks. Some still remain, with
4954 my comments included.
4955server/skills.c: Removed unused variable.
4956MSW 2002-02-05
4957
4958include/player.h include/sproto.h server/c_chat.c server/player.c:
4959 New player command 'reply', replies to the last person who told you
4960 something.
4961server/c_wiz.c: New DM command 'teleport', lets a DM teleport next
4962 to target player, it is an inverse summon.
4963server/commands.c: Add hooks for 'reply' and 'teleport'.
4964mids 2002-01-16
4965
4966TODO: updated with bugs, remove things that have been done and are no
4967 longer TODO's.
4968configure.in, configure: Remove lib/xpmtopix.pl file form those to be
4969 built, as that file has been removed.
4970common/object.c: Fix bug in check_walk_on which would result in spell
4971 objects not being properly processed - the intention is not to process
4972 spell objects - we should stop going up (in previous loop) when we
4973 get such an object, not on the way down. This fixes directors not
4974 working really well.
4975MSW 2001-01-13
4976
4977Add the concept of overlay maps to the code. An overlay map is a map which
4978is loaded on top of another map, replacing values in the header, and placing
4979objects on top of other objects. This is the fundamental part of the new
4980weather code, but also can be used to allow dynamic editing of the worldmaps
4981by DM's eventually.
4982garbled 2002-01-01
4983
4984server/spell_effect.c: fix animate_bomb so that if the bomb is in a container,
4985 it does not crash the server - the problem was that it was calling
4986 drop, which would then drop it right back into the container. also, the
4987 x and y coordinates were not being properly set.
4988MSW 2001-12-31
4989
4990This change lets the server have multiple image sets. The client
4991can then request which image set to use, and the server will use
4992that image set, falling back to other sets as necessary. I have tested
4993this with CVS client, and works fine at least in terms of old functionality.
4994=
4995doc/Makefile.in: Add images file which describes image guideline.
4996doc/Protocol: Various updates - some things missing, added other notes
4997 about facesets.
4998doc/images: New file, describes guidelines for image sets, as well
4999 as some of the internals
5000include/newserver.h: Update for multiple image set - redid most of the
5001 image definitions as they were out of date with only png being supported.
5002include/sockproto.h: rebuilt
5003lib/Makefile.in: remove crossfire.png, add crossfire.0, crossfire.0. Update
5004 build directions to use crossfire.0 instead of crossfire.png
5005lib/adm/collect_images.pl: Modified to collect all the image sets, remove
5006 support for collect xpm and xbm images.
5007lib/crossfire.0: new file, base images
5008lib/crossfire.1: new file, alternate images
5009lib/image_info: New file, describes image sets.
5010lib/crossfire.png, lib/xpmtopix.pl.in: Removed - no longer needed.
5011socket/Makefile.in: add image.c file.
5012socket/image.c: Moved all image related data in this file - this includes
5013 loading the image files, as well as the protocol commands.
5014socket/init.c: move read_client_images to image.c file. set ns->faceset
5015 and ns->facecache to 0. Move freeing of image data to image.c
5016socket/request.c: fixed some indentation inconsistencies.add setup commands
5017 for faceset as facecache. Move SetFaceMode,SendFaceCmd,esrv_send_face
5018 to image.c file.
5019MSW 2001-12-31
5020
5021common/loader.l, common/loader.c, common/object.c, include/object.h,
5022 socket/item.c:
5023 Remove sub_type and sub_type2 information -
5024 these were poorly named fields and not properly implemented.
5025common/treasure.c: Add missing return type to change_treasure function.
5026crossedit/Edit.c: Add SET_MAP_FLAGS macro to set P_NEED_UPDATE flag
5027 before calling update_position.
5028include/config.h: Add NEW_WORLD_MAP selection which results in proper
5029 emergency save paths if you are using the maps-bigworld distribution.
5030server/c_wiz.c: Fix the formatting (indentation) of the command_create
5031 function. No actual changes in how it runs, but the old
5032 formatting was really terrible and inconsistent.
5033server/main.c: remove call to send_mapstats_cmd
5034server/monster.c: Update the comment style to be proper, as well
5035 as the comments themselves.
5036socket/request.c: Fix up improper indentation in esrv_update_stats.
5037 remove send_mapstats_cmd function.
5038MSW 2001-12-23
5039
5040Lots of changes here. Basically implement a night and day system, as
5041well as tracking of game time. A clockdata file is now created and
5042updated by the server to increment time. Time increases by 1 hour,
5043approximately every 2 minutes of real time. Right now this code has
5044virtually no effect, but as maps are updated with outdoor settings,
5045nightfall will occur automatically. The time command has been modified
5046to show the current game time, and the clock objects have been changed to
5047show the game time as well.
5048garbled 2001-12-18
5049
5050common/map.c: Fix some bugs relating to map tiling. MSW 2001-12-16
5051
5052common/object.c random_maps/Makefile.in
5053 server/c_wiz.c server/player.c server/plugins.c server/timers.c
5054 socket/request.c: Most of the changes are to just fix compiling warnings
5055 or errors so that it compiles on sparc solaris with the workshop
5056 compiler (things like }; should just be }). Declaration for alphasort
5057 was missing in plugins.c. random_maps/Makefile.in had the wrong order in
5058 linking - the system library needs to be linked in after the crossfire
5059 libraries.
5060crossedit/App.c: Fix for running on 8 bit color - colormap was not being
5061 initialized to usuable default value.
5062crossedit/xutil.c: Broken code when duplicating faces for undefined
5063 images. That code should never really be used, as pixmaps currently
5064 are always contiguous.
5065MSW 2001-12-15
5066
5067
5068Include mapstats cmd for extended clients (sdl iso). Cmd is needed for automaps
5069 ambient media infos, map name and map parameter infos. Paramter infos are used
5070 for "fire & forget" animation tags inside the map2 cmd (next patch).
5071server/main.c: include a automatic mapstats cmd every time the player enters a new map.
5072 Its the "default" mapenter cmd. The script event should used for special cases.
5073include/sockproto.h and socket/request.c: include the mapstats cmd function.
5074MT 2001-12-03
5075
5076This checkin for the most part removes support for xpm and xbm graphics -
5077 now the only image supported is the png.
5078common/arch.c: comment out printing on warning of object having no type -
5079 getting 300 meaningless messages at startup is annoying.
5080common/image.c: Remove X11 color information from colorname array. Remove
5081 processing of color_fg and color_bg information from face file - only
5082 use color_fg if no magicmap information is available - foreground
5083 and background infoformation was only needed for bitmap graphics.
5084common/loader.c, loader.l: Add elevation element, comment out some logging
5085 messages that are excessive and only really relevant for people
5086 who want to fix them (really should be in the collect script
5087 anyways). Remove some unused code.
5088common/map.c: add outdoor field to map structure - add support for loading
5089 and saving it.
5090crossedit/App.c,crossedit/CrUtil.c, crossedit/Defines.h, crossedit/crossedit.c
5091 crossedit/xutil.c: Remove support for non png graphics.
5092crossedit/Attr.c: Add support for elevation variable, remove code for non
5093 png graphics.
5094doc/map-technical: Add note about outdoor field.
5095include/face.h: remove fg, bg fields from face struecture.
5096include/global.h: Update colorname array definition.
5097include/loader.h: Add V_ELEVATION field.
5098include/map.h: Add outdoor field to map structure.
5099include/newserver.h: Update types so it only loads/knows about png information.
5100include/object.h: Add elevation field to object structure.
5101lib/Makefile.in: Remove support for building crossfire.xpm and crossfire.xbm
5102 files.
5103lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.png,
5104 lib/faces: Rebuilt. Main difference is a few sea types, and the fact
5105 that it hadn't been collected for a while.
5106server/spell_effect.c: Modify dimension door so that it calls MapNewmapCmd
5107 so that fog of war does not get confused. Also, removes call to
5108 draw as functions further up will do that.
5109server/spell_util.c: Remove color information from attack information that
5110 shuffle_attack uses.
5111socket/init.c, socket/request.c: Remove support for non png images.
5112MSW 2001-12-02
5113
5114Various minor bugfixes -
5115common/loader.c: rebuilt
5116include/map.h: Change width,height,enter_x,enter_y to be 16 bit instead
5117 of 8 bits.
5118lib/treasures: change skull treasure to tooth instead of skull_tooth since
5119 the later is not currently in the distributed archetypes file
5120server/monster.c: Optimize some code, remove some other that is not used.
5121server/plugins.c: Fix un initialized value in initPlugins that would
5122 cause crash at startup if plugin directory does not exist.
5123MSW 2001-11-13
5124
5125common/object.c: Modify copy_owner so that if a player is passed in
5126 as the object to copy, we properly set that player as the owner of the
5127 object instead of returning. This fixes the lack of exp when poison
5128 inflicted from a weapon kills something. MSW 2001-11-05
5129
5130common/map.c: Fix bug in get_rangevector which was causing reverse
5131 of documented procedure. This also resulted in monsters not attacking
5132 adjacent creatures with physical attacks. MSW 2001-11-03
5133
5134Add weapontypes to the game. These are currently used for nothing other
5135than messages, which are not fully written yet. Players should not see them
5136appear yet.
5137Fix the bug where you opened a door with a key and saw "You ."
5138Fix a bug in the PLUGIN code where current_weapon wasn't set when the
5139player loaded from savefile.
5140Take the setting of current_weapon out of #ifdef PLUGIN
5141garbled 2001-10-31
5142
5143server/spell_util.c: Add out_of_map check to can_see_monsterP. Fixes
5144 crash when casting ball lightning/divine shock (and likely other events)
5145 on maps not surrounded by walls. MSW 2001-10-07
5146
5147New attacktype messages for damage. Now it gives you the message for the
5148damage type you actually did. So if you are attacking with stormbringer,
5149you get electrical or drain-based messages. Also added special messages for
5150the attack-based skills like punching, karate, etc.
5151garbled 2001-10-06
5152
5153common/map.c: Add INS_ON_TOP flag to insert_ob_in_map calls to preserve
5154 stacking order. Modify update_position to generate map spaces with
5155 more proper order.
5156common/object.c: Modify insert_ob_in_map so that it preserves stacking
5157 if INS_ON_TOP is set.
5158crossedit/CrEdit.c: Add missing code that would draw third face on a space.
5159include/object.h: Add INS_ON_TOP flag/define.
5160random_maps/exit.c: Modify code so that if the random maps leading to
5161 a special map are reset, they will properly link in with an already loaded
5162 final map (and update exit from final map back up) as needed. Also fix
5163 bug in that if the final map has been reset, a new one will now be properly
5164 loaded.
5165random_maps/random_map.c:Update minimum size to be 7 (up from 6) - fixes
5166 bug which caused crashes when square_spiral maps of 6x6 would fail to
5167 generate.
5168random_maps/random_map.h,random_maps/room_gen_onion.c: move OPT_values from
5169 room_gen_onion to random_map.h since the square_spiral code uses them.
5170random_maps/square_spiral.c: Update call to map_gen_onion to use
5171 OPT_.. values instead of constant integer.
5172random_maps/treasure.c: Add some casts to sprintf statements to eliminate
5173 some compiler warnings.
5174server/main.c: Modify enter_exit code such that a random map has
5175 reset, we generate a new random map. This can happen when the random_map
5176 resets before the map that leads to them resets.
5177MSW 2001-10-06
5178
5179Add a new command category called communications commands. Place tell,
5180shout and say in here. Also create emotion functions. These functions
5181have no real effect on the game, but make communications between players
5182more colorful and fun. They are mostly fluff. Included with this patch
5183are two new convenience functions, new_info_map_except, and
5184new_info_map_except2, which allow the programmer to write to an entire
5185map, except for certain individuals.
5186
5187garbled 2001-09-27
5188
5189Add complete processing code for luck. This new code removes all
5190previous instances of luck, and adds a few new convenience utilities.
5191Now, every die roll in the game is affected by luck in some small way.
5192This causes luck to be an intangible benefit to the player, without
5193totally unbalancing the game. The new functions are random_roll,
5194die_roll, and rndm, which should be used in place of RANDOM() whenever
5195possible.
5196
5197garbled 2001-09-26
5198
5199This checkin mainly fixes multipart teleporters - they should now
5200work properly. Also a minor fix to make the new pickup code work.
5201server/apply.c: apply_shop_mat rewritten to be more 'presentable'.
5202 Minor changes were needed in any case to pass the player/creature
5203 a a second object to teleport.
5204server/c_object.c: change the sscanf to be unsigned when getting value
5205 for new pickup mode. At least on my system, if the value in the
5206 string was larger than the max signed value, sscanf set it to the
5207 max value.
5208server/move.c: teleport function largely re-written. Instead of the
5209 third arg being the 'originator', it is now the object to teleport.
5210 This allows the head of the teleporter to get passed to this function
5211 even if the object to teleport is not on the head.
5212server/time.c: move_teleporter modified to also check for objects on the
5213 other parts of multipart teleporters. Also, pass the head object
5214 to the teleport function so that proper destination is used.
5215MSW 2001-09-02
5216
5217Add Nils Lohner patch that new selections to the pickup mode.
5218
5219include/define.h: Pickup type defines added.
5220include/player.h: Change mode (pickup mode) to 32 bits.
5221server/c_object.c: command_pickup function modified to support all
5222 the new pickup options.
5223server/player.c: Fix for path_to_player to prevent crashes. Add check
5224 in move_player_attack just in case. check_pick function modified to
5225 support new pickup options. do_some_living modified to eat flesh
5226 items if player is starving and they don't have any food.
5227server/spell_effect.c: cast_detection modified so that detect magic/curse
5228 will not show objects beneath the floor. Change so that detect_monster
5229 and detect_evil spells copy the face of what they detected - gives better
5230 appearance on client.
5231socket/item.c: fix bug LookAt that ws checking blocked_los on wrong
5232 offset.
5233MSW 2001-08-28
5234
5235Enhancements to make monsters 'do the right thing' with relation
5236to tiled maps (ie, will detect players and attack them if on an adjoining
5237tiled maps). This involved a rewrite of path_to_player - I've tested this
5238out, and if anything, it seems that monsters may be more aggressive on
5239spellcasting.
5240++
5241common/map.c: blocked modify to make sure it is checking valid coordinate
5242 value. blocked_link,blocked_two modified to translate for tiled maps.
5243 Add load_and_link_tiled_map which loads a tiled map and links in all
5244 pointers relative to adjoining maps. out_of_map modified to use
5245 this function instead of doing the work itself. Add get_rangevector
5246 function that returns offset, direction, and distance between two
5247 objects, taking into account tiled maps. get_rangevector_from_mapcoord
5248 added which is similar to get_rangevector, but takes a map and coordinates
5249 instead of a second object. on_same_map function added which returns
5250 true if the two objects are on the same logical (ie tiled) maps.
5251doc/crossfire.doc: Add note about what Int does for monsters.
5252include/map.h: Add some comments, and add structure for rangevector
5253 function return values.
5254server/attack.c: add calls to on_same_map instead of doing op->map
5255 comparisons.
5256server/monster.c: Many functions modified to properly handle tiled
5257 maps properly.
5258server/pets.c: get_pet_enemy modified to know about tiled maps.
5259server/player.c: get_nearest_player modified to know about tiled maps.
5260 path_to_player rewritten to know about tiled maps - I think some other
5261 bugs were also fixed in return values. Split player_attack_door
5262 from move_player attack to keep functions a more reasonable size.
5263 move_player_attack, player_can_view modified to know about tiled
5264 maps.
5265server/skills.c: can detect_enemy modified to take another parameter -
5266 call in steal updated to pass this parameter.
5267server/spell_util.c: ok_to_put_more, can_see_monsterP modified to
5268 handle tiled maps properly.
5269socket/item.c: look_at modified to return proper results when player
5270 looks at something on an adjoining tiled map.
5271++ End of checkin
5272
5273common/object.c:decrease_ob_nr modified to correctly update client when
5274 player uses item from container that is on the ground (bookshelf for
5275 example)
5276server/time.c: move_teleporter modified to skip over wall/floors and
5277 teleport whatever is above them.
5278MSW 2001-08-05
5279
5280common/map.c: modify link_multipart_objects to preserve name and title of
5281 head when making the more parts. modify update_position so that it should
5282 never show an invisible face to the player.
5283common/object.c: fix check_walk_on so that spells will now properly get
5284 affected by spinners and directories.
5285include/sockproto.h: Rebuilt to include MapNewmapCmd
5286server/hiscore.c: Fix crash if player savebeds map on map which does not
5287 have a name. Use the path instead.
5288server/move.c: modify teleporter function to send MapNewmapCmd to client
5289 if player got teleported. Needed for fog of war code.
5290server/time.c: modify move_teleporter so that it will not teleport walls.
5291socket/Makefile.in: Modified to use cproto to generate proto files.
5292MSW 2001-08-04
5293
5294
5295common/Makefile.in crossedit/Makefile.in doc/Makefile.in
5296doc/playbook-html/Makefile.in doc/spoiler/Makefile.in
5297doc/spoiler-html/Makefile.in lib/Makefile.in lib/crossfire.png
5298random_maps/Makefile.in socket/Makefile.in utils/Makefile.in: Fix up
5299so that distclean now clears out all appropriate files - MSW 2001-08-01
5300
5301common/map.c free_map Set in_memory status to MAP_SWAPPED - fixed bugs of maps
5302 not getting reset properly
5303common/object.c: insert_ob_in_map - was passing wrong value to check_walk_on,
5304 resulting in some things not working as expected.
5305doc/Protocol: Clarify how the sending of the version command works.
5306server/move.c: move_ob redone. It should hopefully be more efficient (only'
5307 remove objects after verifying they can in fact move). IMO, code is
5308 also simpler, and hopefully has fewer bugs.
5309socket/init.c: InitConnection - modified to set faces_sent[0] to one
5310 so that we will never send any information about face 0 to the client.
5311 facecode 0 is sent in the map1 command to clear spaces/layers.
5312MSW 2001-07-30
5313
5314Added support for the newmap cmd needed for the fog_of_war code
5315in the gtk client.
5316include/newserver.h: added newmapcmd:1 to NewSocket struct
5317server/main.c: added call to MapNewmapCmd in enter_map()
5318socket/init.c: init code for new newmapcmd value in NewSocket
5319socket/request.c: deal with "newmapcmd" value in client setup string
5320 Added MapNewmapCmd( player* pl) function.
5321SMACFIGGEN 2001-07-21
5322
5323
5324common/object.c: remove_ob - set P_NEED_UPDATE before calling update_position
5325to prevent warnings from update_position being called with P_NEED_UPDATE
5326being set. MSW 2001-07-19
5327
5328socket/request.c: Fix bug in map1 command which resulted in it sending
5329too much data with even maps. For example, if the client requested
5330a 16x16 map, the server would effectively send a 17x17 map to the client.
5331MSW 2001-07-19
5332
5333+++
5334Major redo of map code:
53351) Remove encounter map support (with the much better random map code,
5336 I don't see much reason for it)
53372) Remove map_ob from map structure, and instead store relevant information
5338 in map structure itself. Remove strange meanings (stand_still meaning
5339 fixed reset time for example)
53403) Redo internal structure of map and how information on each space was
5341 stored - this should make future extensions much easier, as well
5342 as making debugging easier.
53434) Make USE_LIGHTING standard part of game.
53445) Redo how lighting objects are handled - instead of making a linked list
5345 of the light giving objects, at field to mapspace that contains
5346 lightsource for the space.
53476) Rewrite insert_ob_in_map to take optional parameter that determines
5348 other behaviour. This replaces insert_ob_in_map_simple.
5349 Function now does sorting of some objects, so performance for lots of
5350 spell objects on one space should be much better.
53517) Change how multipart objects are saved. Now only save the head, and
5352 link in the rest of the parts when map is loaded. Additional parts
5353 linked in are put just above floor level when linked in, so things like
5354 shops won't hide items that someone drops on them. For monsters, this
5355 linking shouldn't be a problem - once they start moving, they will get
5356 relinked as normal (on top).
53578) Modify update_object to only call update_position when necessary
5358 (ie, space attributes change). Otherwise, let the map transmission
5359 code call update_position when necessary (ie, in players view) - this
5360 saves cpu time as time will not be spent updating spaces that no one
5361 will see (before, how the space looks was updated whenever a space
5362 had an object added or removed).
5363
5364TODO: remove some things that have now been done.
5365common/Makefile.in: Remove ltostr.c and sqrt.c from list of files
5366common/ltostr.c, common/sqrt.c: Moved into porting.c
5367common/anim.c, common/button.c, common/item.c: Update calls to update_object
5368common/living.c: have fix_player calculate light value for player/monster.
5369common/logger.c: Remove code that has server exit if too many LOG messages
5370 happen too quickly. This was not a reliable mechanism, and it should
5371 really be up to the functions doing the logging to know if they can
5372 continue or not.
5373common/los.c: Changes on how it deals with lighting on maps - get light
5374 value from map space array instead of using the linked list. Functions
5375 that managed the light list have been removed. Change logic of
5376 line of sight function to be more efficient (before, we may examine
5377 the same space multiple times). rename update_all_los to
5378 update_all_map_los, and change update_all_los to take coordinates
5379 so that we only have clients within view of the change recalculate
5380 los. Also, have update_all_los check for tiled maps that may have
5381 clients that need to get updated.
5382common/map.c: remove refresh_map - this used to be used to try to recover
5383 from map errors if many_cores was not set - IMO better to core and
5384 just restart and really fix the error than try to deal with possible
5385 corruption that may otherwise result.
5386 Move open_and_uncompress and close_and_delete functions to porting.c -
5387 they are 'common' functions that are not related to the map code.
5388 Remove some lighting related code, as that is no longer done with
5389 a list. Many modifications because of new map structure. And
5390 logic to load and save the new map structure format. Modify
5391 many of the functions to take map tiling into account. Change
5392 way multipart objects are saved, and add logic to relink objects
5393 when maps are loaded up. Remove some functions that are only
5394 used by the editor into the editor. Move update_position from
5395 object.c to map.c as it is better placed in map.c. Modify
5396 function to figure out light for a space. Make out_of_map a
5397 function that knows about map tiling. New function - get_map_from_coord
5398 which knows about map tiling and does coordinate and map translation.
5399common/object.c: Have update_object take another parameter which tells
5400 update object what has changed about the object. This lets the function
5401 know if it should call update_position right away or if it can just
5402 mark the space as needing an update at a later time. move update_position
5403 to map.c.
5404 insert_ob_in_map: now takes another parameter that describes actions not
5405 to do. modified to know about map tiling and do appropriate translation.
5406 Does some object sorting so it should handle spell objects more
5407 efficiently.
5408 insert_ob_in_map_simple is now replaced by
5409 using appropriate flag to this changed version of insert_ob_in_map.
5410 Clean up remove_ob - seemed to have done things in a more complicated
5411 fashion that is no longer necessary. Modify check_walk_on to look
5412 at all objects on space, not those below the object - with changes to
5413 insert_ob_in_map, new object won't always be on top.
5414common/porting.c: functions from ltostr.c, sqrt.c, as open_and_uncompress
5415 close_and_delete, make_path_to_file from map.c
5416common/treasure.c: Modified to use updated insert_ob_in_map
5417crossedit/Attr.c: Rename Layout to AppLayout so other files can use it.
5418crossedit/CrEdit.c: Modified to use new map header. Modified drawing
5419 routines, as face values could be null
5420crossedit/Edit.c: Move many functions from common/map.c that are only
5421 used here and thus don't need to be in common/map.c. Modify to use
5422 new map structure.
5423crossedit/Makefile.in: Change to use cproto to make proto.h file.
5424crossedit/png.c: change user_read_data to be static so proto doesn't pick
5425 it up.
5426doc/Makefile.in: add map-technical to list of files.
5427doc/crossfire.doc: remove map information that was in this file.
5428doc/map-technical: new file. Describes inner workings of how the maps work.
5429include/config.h: remove RANDOM_ENCOUNTERS (no longer available) and
5430 USE_LIGHTING (now standard part and always on).
5431include/define.h: move P_... values to map.h
5432include/global.h: add definition for compression externals, as they
5433 are used in a few files. remove map macro functions - moved to map.h
5434 as appropriate. Add FREE_AND_CLEAR macro that frees data and then
5435 sets the pointer to NULL.
5436include/map.h: Largely redone - many new macros, new map structure.
5437include/object.h: remove lights object link pointer from objects.
5438 At some #defines that are the flags for update_object and
5439 insert_ob_in_map
5440include/player.h: Add a few comments.
5441random_maps/decor.c,random_maps/door.c, random_maps/exit.c,
5442 random_maps/floor.c,random_maps/monster.c,random_maps/special.c,
5443 random_maps/standalone.c, random_maps/style.c,random_maps/treasure.c,
5444 random_maps/wall.c:
5445 modified to use modified insert_ob_in_map function,
5446 use new macros to access map structure related data
5447server/Makefile.in: Remove encounter.c file. Use cproto instead of
5448 cextract to create proto file.
5449server/alchemy.c,server/attack.c,server/c_object.c,server/c_wiz.c,
5450 server/disease.c, server/login.c, server/main.c, server/monster.c,
5451 server/move.c, server/pets.c, server/player.c, server/resurrection.c,
5452 server/rune.c, server/shop.c,server/skill_util.c, server/skills.c,
5453 server/spell_effect.c, server/spell_util.c, server/swap.c, server/time.c
5454 modified to use modified insert_ob_in_map function,
5455 use new macros to access map structure related data.
5456 change calls to update_all_los, remove lighting related code.
5457server/apply.c: modified to use new insert_ob_in_map function. Update
5458 calls to update_object. remove RANDOM_ENCOUNTER code.
5459 for exits, modified to use the head for valid coordinates since the
5460 other parts may not have valid values since they are not saved out to
5461 disk anymore.
5462server/c_misc.c,server/hiscore.c: modified to use new map
5463 structure/information.
5464server/commands.c: remove dumplights command.
5465server/encounter.c: removed - code no longer used
5466server/init.c: remove RANDOM_ENCOUNTERS code.
5467server/script.c: change Script_getMapObject to return NULL since there
5468 is no longer a map object. Modify to use new insert_ob_in_map and
5469 update_object functions.
5470socket/info.c: Modified to use new map structure/macros
5471socket/request.c: Modify draw_map_routines to use get_map_from_coord so
5472 that it properly deals with tiled maps. Modified to deal
5473 with potentially NULL face values. Modified update routine to
5474 call update_position for spaces within player view which need an
5475 update
5476MSW 2001-07-13
5477+++
5478
5479
5480common/object.c, common/player.c, include/object.h, server/skill_util.c:
5481 Remove the unused LINKED_SKILL code.
5482common/Makefile.in: Use cproto to make prototypes - cextract fails for
5483 some reason and now seems unsupported. Cproto generates a bunch
5484 of warnings, but does do the job.
5485common/arch.c,server/apply.c, server/main.c, server/monster.c: cleanup some
5486 compile warnings (unusued variables, returns without value
5487doc/playbook/Makefile.in: Create proper dependencies for files.
5488doc/playbook/treas2-extract: Add player_force to value to ignore.
5489doc/spoiler-html/spoiler.html: rebuilt
5490server/skill_util.c: Remove the unused LINKED_SKILL code. Prevent
5491 characters that have meditation skill from learning melee weapon skill.
5492MSW 2001-06-28
5493
5494doc/Protocol: Add 'darkness' setup option documentation.
5495include/newserver.h: add darkness element to socket structure.
5496include/script.h,server/script.c: remove static declaration from script.h,
5497 move it to script.c
5498socket/init.c: init darkness element in socket structure.
5499socket/request.c: Add support in setup command for client to set if it
5500 wants darkness information or not. Modify map update functions such
5501 that if the client does want darkness information, server does not
5502 send it. Improve darkness handling so that if using the map1
5503 protocol command, send darkness for first blocked space due to
5504 darkness - this makes it possible for client to interpolate results
5505 better.
5506MSW 2001-06-16
5507
5508common/item.c: Add boots and gloves to items which are not magical just
5509 because they have resist physical. This bug resulted in most all boots
5510 and gloves being shown as magical, even though they had no special
5511 properties.
5512socket/request.c: remove some dead code. Memset entire map cell
5513 to zero when scrolling and the map is cells is one that was not in
5514 view. This fixes redraw problems when using large viewable maps.
5515MSW 2001-06-11
5516
5517doc/Protocol: update information for the mapcmd, add map1cmd to
5518 section of setup commands.
5519include/newserver.h,socket/init.c: add map1cmd element to socket structure that
5520 determines which protocol (map,map1) will be used for sending the
5521 map.
5522socket/request.c:add 'map1cmd' to list of setup options. when sending
5523 the map, use the map1cmd element to determine what protocol command
5524 to use to send it.
5525MSW 2001-06-07
5526
5527server/shop.c: Fix bug that resulted in items in shop being paid,
5528as well as not generating proper listing. MSW 2001-06-06.
5529
5530Checkin of code that supports larger map sizes (configurable in
5531config.h).
5532common/los.c: update los code since it only handled 11x11 maps. Now
5533 uses formulatic approach so any map size should be supported. This
5534 does result in a few more spaces getting blocked around corners,
5535 but it doesn't seem that bad - certainly not compared to the ability
5536 to have larger viewable maps.
5537common/map.c, crossedit/CrEdit.c, crossedit/Edit.c, include/global.h,
5538 include/map.h,random_maps/monster.c,random_maps/special.c,
5539 random_maps/standalone.c, server/apply.c,server/c_misc.c,
5540 server/spell_effect.c,socket/info.c:
5541 change mapx,mapy to what they really point to,
5542 as it prevented using those as variable/structure element names.
5543common/object.c: update_position - if faces for different layers are
5544 duplicate, set the duplicates to be blank to increase client
5545 update efficiency.
5546doc/Protocol: Add map1 command description, update setup command to
5547 describe setting of mapsize.
5548include/config.h: add MAP_CLIENT_X/Y to set maximum map size we can
5549 send to the client.
5550include/newserver.h: add mapx, mapy values to socket structure
5551include/player.h: Use MAP_CLIENT_X/Y for sizing arrays that hold
5552 map related information in player structure.
5553server/player.c: As per player.h above, use appropriate sizing when
5554 initializing player stucture.
5555server/shop.c: Update mapx,mapy like above, but re-do shop listings code as
5556 it was doing a lot more work than necessarily (I think some changes
5557 got put in for sorting, and the old object manipulation was never
5558 removed when that got done)
5559socket/init.c: set default client map size to 11x11 in the socket.
5560socket/item.c: LookAt - change checks for position checking (such that
5561 you can only look at things in bounds) use max viewable map size.
5562socket/request.c: Make setup commands a little more forgiving if there are
5563 extra spaces. Add 'mapsize' command to setup command. Update
5564 old map sending code to use socket map sizes (to support even
5565 smaller than normal maps, or 13x13 or 15x15 maps). add draw_client_map1
5566 command which implements the map1 protocol command.
5567MSW 2001-06-03
5568
5569random_maps/treasure.c, wall.c: fix a problem where hidden doors
5570surrounding a treasure could destroy exits. --PeterM 5/31/2001
5571
5572Make ALLOW_SKILLS standard part of game (remove #ifdef's for it)
5573Files affected: common/living.c common/object.c common/treasure.c
5574 include/config.h include/player.h server/apply.c server/attack.c
5575 server/c_move.c server/c_range.c server/c_wiz.c server/commands.c
5576 server/init.c server/login.c server/monster.c server/player.c
5577 server/rune.c server/skill_util.c server/spell_util.c
5578Make MULTIPLE_GODS standards part of game (remove #ifdefs for it)
5579Files affected: common/readable.c include/spellist.h include/config.h
5580 server/attack.c server/gods.c server/skills.c server/spell_effect.c
5581 server/spell_util.c
5582doc/Makefile.in, doc/Protocol: Add protocol description file here instead
5583 of in the client distribution.
5584include/global.h: Move declaration of MAX_EXP_CAT near top of file
5585 so it is set before player.h is included.
5586include/newclient.h: Add CS_STAT_SKILL* values for sending skill
5587 experience information to client.
5588include/newserver.h: Add skillexp value to socket struct which determines
5589 if client wants skill experience informatiion.
5590include/player.h: Add skill information tracking to player structure
5591 so we can easily know when to send updates to client.
5592random_maps/expand2x.c: remove unused variable to prevent compiler warnings.
5593random_maps/square_spiral.c: Include prototype information on all systems,
5594 not just win32 to prevent compiler warnings.
5595server/skill_util.c: Initialize skill pointers to make it easier to
5596 find skill information when we want to update client.
5597socket/init.c: Init socket->skillexp to 0.
5598socket/loop.c: Fix indentation of table - whitespace change only
5599socket/metaserver.c: Minor fix to prevent compile warnings (on the sprintf
5600 that composes the data to send to the metaserver)
5601socket/request.c: Redo SetUp function to be more compact and IMO simpler as
5602 wll as easier to read (functionality remains the same).
5603 VersionCmd modified to warn users of on dxclients (code on MT)
5604 StatsCmd added to send skill information if client wants it.
5605The sending of skill experience is by MT, rest of the changes by me.
5606MSW 2001-05-28
5607
5608common/readable.c: When making recipe books, give the recipe that they
5609 are for in the title. Makes it more worthwhile to buy them.
5610lib/treasures.c: Increase the chance of readables in chests some (in fact,
5611 add a chance.)
5612MSW 2001-05-25
5613
5614lib/artifacts: Reduce potency of Poison artifact foods.
5615server/apply.c: When eating poison artifact foods, hit player with poison
5616 attacktype instead of just subtracting hp. This way people with
5617 poison resistance get proper benefit. MSW 2001-05-24
5618
5619doc/metaserver, doc/Makefile.in: Add metaserver file which describes
5620 working of metaserver and format of data fields.
5621socket/metaserver.c: Add reporting of inbytes, output bytes, and uptime in
5622 seconds to notification of metaserver
5623MSW 2001-05-24
5624
5625server/player.c
5626common/living.c
5627include/libproto.h: New experience loss on death policy implemented.
5628(As per consensus.) 3 levels or 20%, whichever is less.
5629 --PeterM 5/24/2001
5630
5631server/spell_util.c: Fix typo in polymorph code (when enabled in config.h)
5632MSW 2001-05-24
5633
5634server/disease.c: replace disease->owner check with get_owner.
5635MSW 2001-05-24
5636
5637server/pets.c: pet_move - fix formatting to be 4 space indentation.
5638 if we remove the monster, free it here instead of having move_monster
5639 do it. Add check for was_destroyed after first call to move_ob -
5640 crashes have been observed in that function, and I believe that is the
5641 cause.
5642server/monster.c: move_monster: let pet_move free the pet if necessary.
5643server/spell_effect.c: Clear sleeping flag of monsters when casting
5644 summon pet monster (or other creatures). Some archs have this
5645 value on by default, so the monsters don't follow the player until
5646 an enemy is found.
5647MSW 2001-05-22
5648
5649socket/item.c: Don't raise player to top of stack when they look at
5650 something. I think this may be causing server crashes in some
5651 circumstances - plus its not really needed anyways.
5652socket/loop.c: block_until_new_connections: Add call to flush_old_maps
5653 so maps are reset while waiting for a new player.
5654MSW 2001-05-22
5655
5656configure.in, configure: Fix png and Xpm library detection. Suggested
5657patch by Yann Chackhoff, applied by MSW 2001-05-20
5658
5659
5660------------------------------------------------------------------------------
5661Changes for 1.0.0:
5662
5663common/living.c: Fix AC wrapping problem - now limit ac to +/- 120.
5664MSW 2001-05-12
5665
5666include/config.h: Add NO_POLYMORPH feature selection
5667include/spellist.h: If NO_POLYMORPH is set, make it so that polymorph will
5668 not show up in wands/rods
5669server/spell_util.c: Handling for NO_POLYMORPH selection
5670MSW 2001-05-11
5671
5672server/rune.c: Make sure rune message is newline terminated. Fix map
5673corruption problem. MSW 2001-05-10
5674
5675Various improvements to make finding memory leaks easier.
5676common/anim.c: Add free_all_anim function
5677common/arch.c: Modify free_all_arch to free more data
5678common/init.c: If running under MEMORY_DEBUG, don't pre-allocate objects.
5679common/map.c: Add free_all_maps functiion.
5680common/object.c: Modify object allocations if using MEMORY_DEBUG to only
5681 malloc one object at a time, and not pre-allocate objects.
5682common/readable.c: Fix memory leak.
5683common/shstr.c: Include autoconf.h so it can pull in dmalloc.h file.
5684include/config.h: Remove notes of what was removed a long time ago.
5685 Add MEMORY_DEBUG option.
5686include/libproto.h, include/sockproto.h, include/sproto.h: automatic rebuild
5687server/c_misc.c: Fix 'malloc info command so it reports right memory total
5688 for maps. Add command_style_map_info which sums up memory used by
5689 style maps.
5690server/commands.c: Add style_info wiz command which dumps memory usage
5691 for style maps.
5692server/init.c: Have sighup handler call cleanup function.
5693server/main.c: Fix clean_tmp_files which could result in crash if one
5694 of the maps in memory has 0 reset time. Modify cleanup function
5695 to free more data.
5696server/player.c: op_on_battleground: Fix compile warning about unuused variable.
5697socket/init.c: Change name of free_all_ericserver to free_all_newserver,
5698 have it free all face data.
5699MSW 2001-05-08
5700
5701socket/item.c: Modify look_at to not stop when it finds the first invisible
5702 object.
5703server/monster.c: Modify monster_check_pickup to check to see if the
5704 next object got destroyed. I'm not sure the exact way this happens,
5705 but I've seen one crash where this did happen - I'm guess some
5706 function further down in the monster_check_apply look may call
5707 this or destroy the item.
5708MSW 2001-05-01
5709
5710common/object.c: Add clear_owner function.
5711include/libproto.h: rebuild.
5712server/player.c: Modify op_on_battleground to look for battleground
5713 anyplace on space. Temp for for wall of thorns on space - as long
5714 as maps don't try to abuse the use of battlegrounds, should be OK.
5715server/time.c: Add clear_owner call to stop_arrow. Fixes problem of
5716 thrown objects not getting saved.
5717MSW 2001-04-28
5718
5719common/object.c: Have update_object map the look window for redraw if
5720 the object is not something the client normally animates (like a lever).
5721 MSW 2001-04-27
5722
5723server/apply.c: Modify apply_id_altar check for player - had a && instead of
5724 a ||.
5725socket/item.c: Modify ApplyCmd so a removed player can not apply objects.
5726 Fix crashes caused by players applying savebeds after they have
5727 used the bed. MSW 2001-04-26
5728
5729server/spell_util.c: have put_a_monster generate random monster
5730 abilities.
5731TODO, doc/mapguide: Various minor updates.
5732MSW 2001-04-25
5733
5734server/c_object.c: Pass right object to query_cost_string so that
5735 if you pick up an unpaid object into a container, it generates
5736 the correct price. MSW 2001-04-22
5737server/c_wiz.c: fix shutdown and reset_map wizard commands/function
5738 so they no longer crash the server. MSW 2001-04-22
5739
5740server/monster.c: add check to was_destroyed when monster fires an
5741 arrow. Call was certainly missing, and appears to be responsible for
5742 crash. MSW 2001-04-20
5743
5744server/player.c: Clear op->chosen_skill when we get to the play_again
5745 prompt. Otherwise, the server may try to use this later on, and it
5746 no longer points to a valid object, so it results in a crash.
5747 MSW 2001-04-19
5748
5749server/skill_util.c: Add missing call to out_of_map in skill_attack which
5750 could result in crashes if player is at edge of maps and decides to attack
5751 in direction off map. MSW 2001-04-18
5752
5753server/attack.c: Remove error message about golem without owners,
5754 also add better checking before clering the op->contr->golem field.
5755common/map.c: set status flag on maps to MAP_SAVING so remove_ob does
5756 not do extra work when we are deleting a map (ie, immediate reset)
5757 from emory.
5758server/skills.c: If someone is stolen from a player, send an esrv_delete_item
5759 to the client so the clients inventory remains correct.
5760MSW 2001-04-16
5761
5762common/re-cmp.c: Modify re_cmp functiion so that it properly matches
5763 strings not at the start 'ie, dude chain will now match against
5764 the chain value'.
5765server/monster.c: Properly alter direction monster moves if they are
5766 feared or confused. It was properly altering direction when monsters
5767 were using range attacks, but not if they were just wanting to move.
5768MSW 2001-04-12
5769
5770common/living.c: Don't use the last_heal object in experience objects as
5771 sp regen penalty. This should fix the problem of inconsistent sp regen
5772 rates - last_heal is used in experience objects if the permanent experience
5773 option is turned on. MSW 2001-04-11
5774
5775PeterM:
5776server/spell_util.c: fix peace so it gives experience
5777common/button.c: change the "error" to a "debug" message
5778 to reduce server crashing.
5779
5780------------------------------------------------------------------------------
5781
5782Changes for 0.98.0:
5783
5784server/skills.c: Modify inscription so that when inscribing cleric spells,
5785 it reduces grace. Before, reduced mana no matter the type of spell.
5786server/c_object.c: Fix bug in pick_up where it was not using the right
5787 count for picking up objects if the player did not specify one. This
5788 allowed players to put objects into containers that should not really
5789 fit.
5790server/player.c: Don't let players shoot arrows at themself. Also,
5791 minor changes to use new_draw_info_format.
5792server/swap.c: If recycle temp maps, don't save out random maps to
5793 get recycled. MSW 2001/04/07
5794
5795PeterM 2001/04/06:
5796include/libproto.h common/object.c server/apply.c server/spell_util.c
5797Added a new function: instead of stacking many burnout or firetrail
5798objects, only 1 per square is added. Real reduction in server overhead.
5799No reduction in cosmetic effect.
5800
5801common/porting.c: Fix compile warnings/bugs introduced by Win32 changes.
5802server/time.c: Modify move_player_mover so that it determines direction
5803 of the mover and then process accordingly, as well as formatting
5804 changes.
5805server/c_object.c: modify examine so that it properly shows info about
5806 magic bullet spell books. MSW 2001-04-05
5807
5808common/item.c: Modify identify function to clear the NO_SKILL_IDENT
5809 flag so objects will now merge. Also, once the object has been
5810 identified, the no_skill_ident doesn't have meaning anymore.
5811 MSW 2001-04-03
5812
5813server/c_object: Modify examine command to only be able to examine
5814 valid objects, and not whatever is on top of the space, which may be
5815 insivisible. MSW 2001-04-01
5816
5817include/sproto.h, server/c_wiz.c server/main.c server/player.c socket/loop.c:
5818Modify leave function to take a second parameter that determines if it
5819should print a message about the player leaving the game or not. Proper
5820use of this prevents duplicate XXX left the game messages. MSW 2001-03-29
5821
5822common/image.c, include/define.h, include/global.h: Add empty_face structure
5823 and appropriate code to initialize it. This is used for the server side
5824 look selection.
5825include/newserver.h: Add NUM_LOOK_OBJECTS to control number of look objects
5826 to send at any one time. add look_position field to the newsocket
5827 structure.
5828server/move.c: clear look position as player moves.
5829server/player.c: initalize look_position element in structure.
5830socket/item.c: modify esrv_draw_look to sne NUM_LOOK_OBJECTS at any one
5831 time, and to also send pseudo objects that lets the player scroll up and down.
5832 modify ApplyCmd so that if it detects the application of one pseudo objects
5833 to adjust the look_position.
5834MSW 2001-03-29
5835
5836common/readable.c: Name spellbooks based on level of spell, and not
5837 just randomly. Patch by Preston Crow, applied by Mark Wedel 2001-03-29
5838
5839configure, configure.in, include/autoconf.h, includes.h: add check for
5840 time.h and include it if we find it.
5841socket/item.c: esrv_move_object - have it check to see if the object is
5842 already on the ground before we try to re-drop it. Likewise, check
5843 to see if it is already in players inventory before we try to pick
5844 it up.
5845common/object.c: Don't send face updates to the client or make
5846 the space as needing to be redrawn. Client now deals with animation
5847 of the look window on its own.
5848utils/(metaserver.pl crossloop add_throw.perl crossloop.pl)
5849lib/(Makefie.in, checkarch.pl collect.pl xpmtopix.pl) - - deleted
5850 from CVS - '.in' versions of these files now exist and the real
5851 versions are created as part of the configure process. Update
5852 Makefile.in to reflect this change.
5853MSW 2001/03/28
5854
5855common/object.c: have update_position just update the flag that the
5856 server needs to send the look window to the client and don't send the
5857 item at this point, as sending the look will do that.
5858server/main.c: process_players1: Remove call to draw (which updates
5859 the client map) - the handle newclient in socket/loop.c already
5860 does this and there is no reason to send multiple instances of the
5861 same map.
5862MSW 2001/03/23
5863
5864server/c_object.c: drop_object function: send delete item to client as
5865 item is dropped. This fixes a problem of phantom objects in the
5866 inventory. Unrelated change to not call esrv_send_item for objects
5867 that are dropped - esrv_draw_look will get called later on and will
5868 update this at that time. MSW 2001/03/23
5869
5870server/c_object.c: Update the return value for some matches - they
5871 function was returning immediately when it got a match, but did not give
5872 them a high match value, so searching for 'key ring' used to return a
5873 match value of 6 or so on the key ring, but a 14 on a key.
5874
5875common/object.c: Modify find_free_spot to call arch_out_of_map so that
5876 it properly deals with multipart objects.
5877server/main.c: Fix enter_map so that we first use the golem (and not player)
5878 when calling find_free_spot. Also, modify code so that it properly
5879 updates coordinates of the multipart golem.
5880MSW 2001/03/20
5881
5882server/skills.c: Fix orate so that we check for a positive chance (and just
5883not nonzero chance) for successful oration. Due to adjustments, at low levels,
5884the oratory chance can be negative. MSW 2001/03/20
5885
5886server/spell_effect.c: Change cast_change_attr to find an enemy (and not
5887friend) when casting the curse spell. MSW 2001/03/20
5888
5889server/apply.c: Increase size of buf to be a HUGE_BUF to very
5890long item names don't cause a stack overflow. MSW 2001/03/20
5891
5892common/object.c: Modify update_position so that we don't show invisible
5893players to other players. MSW 2001/03/20
5894
5895------------------------------------------------------------------------------
5896Changes for 0.97.0:
5897
5898MSW 2001/03/18:
5899common/init.c: add RESET_LOCATION_TIME initializer to settings structure.
5900include/config.h: Add RESET_LOCATION_TIME value. If nonzero and the save was longer than
5901 the specified time in seconds, player will be returned home upon login from
5902 save.
5903include/global.h: Add reset_loc_time field to settings structure.
5904server/login.c: Remove some unused variables, add support to return player
5905 home as described above.
5906server/spell_effect.c: Fix for crashes when casting control undead and your
5907 god does not have an enemy. Now properly check to make sure we are not
5908 dereferencing null pointers.
5909
5910
5911MSW 2001/03/16:
5912Change code so that if player dies and loading the players savebed map does
5913not work, return player to EMERGENCY_MAPPATH instead. New function added
5914to server/main.c called enter_player_savebed which does the work,
5915Files changed: include/sproto.h server/main.c server/player.c
5916 server/spell_effect.c (comment added)
5917Unrelated change: Remove messages about multiple resist types set.
5918Files changed: common/loader.l common/loader.c
5919
5920MSW 2001/03/15:
5921server/spell_effect.c: Add physical attacktype when casting holy possession.
5922 Otherwise, characters who use karate end up not being able to damaage
5923 anything.
5924
5925MSW 2001/03/09:
5926crossedit/App.c: Move the loading of images to later in the editor
5927 startup state. In this way, the client can allocate the colors it
5928 needs for its windows before the the png images use up all the colors.
5929crossedit/png.c: New png loader implementation. New version is much
5930 faster (50 times faster). As part of this, only 8 bit displays,
5931 a private colormap will be allocated, and after that gets filled
5932 up, a color mapping routine will be used - this makes the png
5933 images loadable on an 8 bit system in addition to the speedup.
5934crossedit/xutil.c: Adding timing information for loading of images.
5935 call init_pngx_loader before starting to load png images. Pass
5936 colormap to png_to_xpixmap by pointer and not value so that
5937 the loader can change the colormap.
5938
5939AV 2001/03/09:
5940common/button.c: Added new attribute to altar triggers: "last_sp 1".
5941 If set, the altar trigger will push the connected value only
5942 by dropping the sacrifice, NOT by altar reset. If unset ("last_sp 0")
5943 it will work like it used to (push by sacrifice and by reset).
5944
5945MSW 2001/03/06:
5946server/spell_effect.c: Fix message when consecration fails - use the ob->name
5947 field and not the ob->title field. Also fix broken logic that checked
5948 for the floor.
5949server/init.c: Related to 3-4 change which changed the default name of
5950 the logfile to "" so we know to use stderr. This doesn't work for
5951 daemon mode, so if the name is "", we use the default logfile instead.
5952
5953MSW 2001/03/04:
5954TODO: add re-connecting player to new client if client logs in with
5955 right name/password.
5956common/init.c: Open up the logfile with the provide filename when given
5957 the -log option.
5958server/init.c: Make set_logfile a first pass option so the init_library
5959 has the right logfile name to work with.
5960server/main.c: Fix crash if map has an exit path yet that file does not
5961 exist. Give proper error message.
5962
5963
5964MSW 2001/03/01:
5965server/main.c: Modified random_map code so the server will not
5966 crash if the exit object has no message (and thus variables to set
5967 for the random map).
5968 Modified so that golems move away from player when player
5969 changes map. Values were reversed before, causing the golem to move
5970 towards the player.
5971
5972MSW 2001/02/25: General player login cleanup. This should fix the crash
5973 when players re-roll stats too often. So far, it also seems to
5974 have the additional effect that calculated players on map now appears
5975 to be correct.
5976common/player.c: No longer allocate the player object structure in
5977 get_player_ob (function is really misnamed). Callers to this function
5978 were not using the allocated function.
5979server/login.c: Add leave_map call when player is loaded.
5980server/main.c: Add leave_map function.
5981server/player.c: Move get_player function to start of file - can declare
5982 it static that way. Move some initialize from add_player to get_player.
5983 Add set_first_map function. Add appropriate calls to leave_map
5984 and set_first_map when players join and leaves the game.
5985
5986MSW 2001/02/22:
5987TODO: Add some items, remove some others, remove outline of future versions,
5988 since it was out of date.
5989common/loader.l,loader.c: Declare msgbuf a static outside the lex_load function.
5990 lex_load was otherwise clearing it each time it was called, which resulted
5991 in empty messages for the random artifacts (since the call lex_load one
5992 line at a time). Instead, we just zero this at start of load_object.
5993 Original reason of this change was due to purify errors - as I look at the
5994 code, it appears even before these changes that it was clearing the buffer
5995 properly.
5996common/map.c: removing pending field from map objects.
5997common/re-cmp.c: Comment out some code which was resulting in too many
5998 false compares.
5999include/config.h: increase default for MAX_OBJECTS. 6000 is a bit small
6000 on current systems.
6001include/map.h: Remove pending field from map structure.
6002random_maps/treasure.c: Increase size of doorlist. Fixes crash, in that
6003 if a random map could place 8 doors around the treasure, the list
6004 was not terminated, so the problem would eventually try to read/dereference
6005 random memory after the array.
6006server/c_misc.c: Remove pending field from maps, so remove functions
6007 and other places that referred to it (like the maps command)
6008server/c_wiz.c: fix up wiz map reset command. Not really tested, but
6009 old code had some definate problems just from visual inspection.
6010server/main.c: Further fix for unique exits - relative paths to unique maps
6011 from non unique maps should now work.
6012server/monster.c: Various fixes - one is that should get more reliable distance
6013 values for multipart monsters. Second, modify dist_att to calculate from
6014 closest part of monster, and not the head of the monster.
6015server/pets.c: Remove code dealing with pending objects.
6016server/player.c: Don't remove invisible objects in players inventory when
6017 playing with permadeath mode.
6018server/spell_util.c: If you try to cast denied spell, it no longer costs any
6019 spellpoints.
6020socket/item.c: Fix bug where it was using 'item' protocol command instead of
6021 'item1'
6022End of MSW 2001/02/22 checkin.
6023
6024------------------------------------------------------------------------------
6025Changes for 0.96.0:
6026
6027MSW 2001/01/11:
6028include/rproto.h: Rebuilt for new random map code.
6029server/player.c: remove player insert in key_roll_stat - player is already
6030 inserted.
6031server/swap.c: When swapping out map, see if it has already reached reset time,
6032 and if so, just delete it and not save it. In flush_old_maps, now have
6033 it check for maps that have no timeout set - this sometimes happens when
6034 players save/die on maps.
6035
6036
6037MSW 2001/01/11:
6038Other than various general cleanups, the main change this code does is
6039that style maps (for random maps) get loaded special now - they objects
6040they contain are not put on the active list, and they use a private map
6041list so they do not appear in the output of the 'maps command.
6042common/arch.c, common/treasure.c,server/login.c: Update calls to load_object
6043common/loaderl.l,loader.c: Update lex_load to take an optional flags option.
6044 This is currently only used so that the loader can decide if it should
6045 call update_ob_speedto put objects on the active list or not.
6046 Calls to lex_load updated. load_object modified to take another option
6047common.map.c: remove PROCESS_WHILE_LOADING and CHECK_ACTIVE_MAPS ifdefs.
6048 update calls to load_object. Remove some dead code.
6049include/config.h: Remove CHECK_ACTIVE_MAPS and PROCESS_WHILE_LOADING flags.
6050 Those options did not work, and in all likelihood, this would be done
6051 via threading now days and not what code was there.
6052include/libproto.h, sproto.h: updated or various function changes.
6053include/map.h: Add MAP_STYLE flag.
6054random_maps/exit.c: Call set_map_timeout after we load the final map
6055 so it will get swapped out.
6056random_maps/standalone.c: Add dummy set_map_timeout function so it compiles.
6057random_maps/style.c: Add load_style_map function which does the job of
6058 actually checking to see if a style map is in memory, and if not,
6059 loads it up. Updates the pointers so it appears on a map style map list
6060 and not the general map list.
6061server/main.c: create set_map_timeout function that deals with setting the
6062 map timeouts. Fix bug so server doesn't crash if two players kill each
6063 other on hall of selection.
6064server/monster.c remove dead code.
6065socket/loop.c: If realloc fails, catch it and exit with meaningful
6066 error message.
6067End of MSW 2001/02/11 checkin.
6068
6069MSW 2001/02/08:
6070server/login.c:Fix that would prevent maps from getting swapped out properly -
6071we would try to swap out a map the player is in the process of leaving - move
6072swap out code until after we have moved the player to the new map. MSW
60732001-02-08
6074
6075
6076MSW 2001/02/06:
6077common/porting.c: relocate clean_path from this file to server/main.c
6078server/main.c: relocate clean_path from porting.c. Add unclean_path.
6079 Modify enter_unique_exit so it supports relative maps on unique maps.
6080 Modify enter_exit so word of recall (or other forcelike fields), work
6081 when the return point is a swapped out unique map.
6082
6083MSW 2001/02/05:
6084server/attack.c: Fix blind and paralyze - logic for reducing duration was
6085 broken, resulting in zero duration for most characters. It should now
6086 work properly, reducing according to the amount of protection.
6087
6088
6089MSW 2001/02/02:
6090common/item.c: Don't have armour item types get returned as magical if they
6091 have an armour value - that is to be expected. This eliminates the false
6092 positives that you otherwise get on armor when you cast detect magic.
6093include/newserver/h: and checksum field to FaceInfo struct. Update
6094 version_sc to 1026.
6095socket/init.c: calculate image checksums as we load the images.
6096socket/request.c: If client is at least version_Sc 1026, use face1 protocol
6097 command that includes the checksum.
6098
6099MSW 2001/01/31:
6100common/object.c: Fix that that spells cast on spaces with no floors get
6101 set properly after the spell expires.
6102common/player.c: Use skill tools first (lockpicks, talismans, etc) before
6103 using native skills. In this way, an object with bonus automatically
6104 gets used.
6105common/living.c: Fix so that negative con bonuses work properly - fixes
6106 bug where a higher con could result in lower total hp due to improper
6107 calculation.
6108
6109MSW 2001/01/30:
6110Complete rewrite of the exit handling code. Hopefully as an effect, this will
6111fix the player appearing in the middle of the oceans. I think the code
6112should also work better in many other areas. Main enhancements is a 3x3
6113area for pets to follow player to new map, as well as golems now following
6114players to the new maps.
6115include/sproto.h, random_maps/rproto.h - rebuilt.
6116random_maps/random_map.c: Change generate_random_map to take a structure
6117 with the random map paremeters.
6118random_maps/reader.l, reader.c: Add set_random_map_variable function that
6119 reads the map parameters from a char buffer. Also, remove some leftover
6120 comments that were from the common/loader.l file.
6121random_maps/rogue_layout.c: Change some functions to be static so make proto
6122 doesn't collect them.
6123random_maps/standalone.c: Add opening of parms file into main function since
6124 it ws removed from the random_map.c file.
6125server/apply.c: Don't display the message of random maps to the players
6126 as they enter them, as this message is random map parameters, and not
6127 a real message.
6128server/login.c: #if 0 out using of the player loading element in the structure.
6129 this isn't used right now.
6130server/main.c: Bulk of the changes. main changes are to break apart the
6131 old enter_exit function into smaller functions that more logically do
6132 the needed function (random maps, unique maps, and transferring the player
6133 to the new map). random map code now passes the parameters via
6134 structure instead of file in /tmp. Code is much more understandable now
6135 and hopefully bugfree.
6136server/pets.c: minor changes/bugfixes. Search full SIZEOFFREE array, use
6137 real owner variable when print out messages.
6138server/player.c: Remove usage of the loading variable in the player structure.
6139End of MSW 2001/01/30 checking.
6140
6141MSW 2001/01/23:
6142Various cleanups/fixes as detected by purify:
6143common/anim.c: animation[0] was given a null pointer as the name, but
6144 bsearch/or comparison function will try to de-reference it.
6145 Give it a unique name.
6146common/loader.l: msgbuf was being used initialized in the main loading
6147 function. loader.c also regenerated.
6148common/object.c: find_free functions were not checking to see if the
6149 spaces they were examining were out of the map. Added checks
6150 to do so.
6151server/apply.c: buf was being used uninitialized in the function.
6152socket/init.c: input buffer needs to be initialized as we do a
6153 strncasecmp against the buffer which may not have any data in it.
6154
6155
6156MSW 2001/01/18:
6157server/skill_util.c: add change_skill_to_skill function to be used when
6158 we already know the skill object we want to use. This is more efficient
6159 than change_skill which takes a skill number and then searches the
6160 inventory for the object.
6161 remove extra esrv_send_item from do_skill_attack - don't need to send
6162 skills to player.
6163 do_skill_attack: remove call to hth_damage - that function does not take
6164 into account objects in the player inventory that increase damage,
6165 and since that is called each attack, it is not feasible to have it
6166 search the players inventory. Instead, we just rely on damage generated
6167 by fix_player - only think hth_damage did was adjust damage based on
6168 level difference.
6169
6170PeterM 2001/01/16
6171Added randomly-generated nethack-style maps to crossfire's
6172random map generator.
6173
6174MSW 2001/01/15:
6175Change blindness and paralyze so that duration is reduced based on protection
6176the player has. file server/attack.c
6177
6178MSW 2001/01/15:
6179Various fixes for friendly object code:
6180common/button.c: Add missing call to remove_friendly_object
6181common/friend.c: Pretty much completely re-written. add_friendly_object now
6182 checks to make sure the object being added isn't already on the list,
6183 remove_friendly_object will remove objects whose tags don't match,
6184 and added clean_friendly_list.
6185common/object.c: No reason to use the function pointer to
6186 remove_friendly_object since that function is in the lib.
6187common/time.c: Make DEBUG_TIME always on (no longer compile time option).
6188 other areas use the global var pticks, so if it was turned off, compile
6189 would break anyways.
6190common/treasuer.c: No longer print debug messages on artifacts created.
6191 Cluttered log file making it hard to see more important errors.
6192include/config.h: Remove DEBUG_TIME define.
6193include/libproto.h: Rebuilt for clean_friendly_list function.
6194server/main.c: rewrote do_specials to do things based on pticks variable.
6195 This allows various specials to be spread out across multiple ticks
6196 easier. Also, added clean_friendly_function to part of what this does.
6197server/skills.c: add missing call to remove_friendly_object. Also, removed
6198 from #if 0 .. #else .. #endif code.
6199End of MSW 2000/01/15 checkin.
6200
6201PeterM 2001/01/08: Wrathful Eye spell implemented.
6202
6203MSW 2000/12/26:
6204Checkin of Jan's new god intervention code. I haven't played around with
6205it much, but I haven't seen any really obvious problems.
6206common/living.c: remove learn_prayer_chance
6207common/treasure.c: Various changes to treasure generation - mostly to
6208 deal with starting equipment and putting it in the inventory.
6209doc/crossfire.doc: Update docs on god intervention.
6210include/define.h: GT_... flags removed.
6211include/treasure.h: GT_... flags added. Addition flags added from
6212 what was in define.h before.
6213lib/archetypes, lib/crossfire.png, lib/treasures: Updated with new
6214 archetypes and treasures.
6215random_maps/standalone.c,server/rune.c,server/time.c: Calls to
6216 create_treasure updated
6217server/apply.c: New functions for god intervention added, update calls
6218 to create_treasure, other god related changes.
6219server/c_wiz.c: Calls to create_treasure updated, various functions to
6220 allow DM's to learn/unlearn spells added.
6221server/commands.c: Various commands added to the wiz set of commands.
6222 See commen for c_wiz.c
6223server/disease.c: Changes to reduce_symptoms
6224server/gods.c: Numerous updates for god intervention code.
6225server/player.c: Modifications for starting player equipment.
6226server/skill_util.c: Display the god the character worships when they
6227 issue the skills command.
6228server/skills.c: Minor cosmetic change made to message when praying on altar.
6229server/spell_effect.c: Changes related to gods, cure spells, and
6230 generation of treasures & items.
6231End of MSW 2000/12/26 checkin.
6232
6233
6234MSW 2000/12/23:
6235include/define.h: Add SIZEOFFREE1 and SIZEOFFREE2 values to use instead of
6236 arbitrary constants in the code.
6237server/monster.c: change communicate function to use above values. Before
6238 it was stopping one short of the full 2 space array, so one particular
6239 space (-1, -2 relative to player) would not hear players speech.
6240server/attack.c: Don't exit hit_player function if damage is reduced to 0
6241 in magical attacks. This was preventing face of death and probably a lot
6242 of effect only spells from working.
6243server/spell_util.c: modify check_cone_push to use move_object to blow
6244 the objects. Before, multisquare monsters were getting sliced
6245 into their individual components - move_object deals with multisquare objects
6246 properly.
6247
6248PeterM 2000/12/18: Re-add the conflict spell (various files)
6249attack.c: fix a bug which could easily have led to seg fault,
6250 and did when I was testing under efence.
6251
6252MSW 2000/12/17: Various changes. Note that the scope of files in this checkin
6253make it appear that a lot was changed, but in fact it was mostly just
6254re-orginization - very little code has actually changed.
6255include/autoconf.h.in: Add HAVE_LIBDES to file.
6256include/config.h: Remove comments after defines for MAP_MIN/MAX timeouts.
6257 This just removes some warnings during compile. comments are now
6258 on lines by themselves.
6259include/player.h: remove shootstrength for player structure. It was unused.
6260server/Makefile.in: remove input.c file, add c_range.c file.
6261server/c_chat.c: remove command_last, add command_shout and command_tell
6262 from input.c to this file. Also fix bug in command tell which
6263 would let players crash server at will.
6264server/c_misc.c,server/c_object.c: Relocate many functions
6265 from input.c into these files.
6266server/c_move.c, server/c_new.c: Add standard crossfire banner comment.
6267server/c_range.c: New file - contains range related commands,
6268 including spell casting (relocated from input.c)
6269server/c_wiz.c: move command_invisible from input.c into this file.
6270server/commands.c: Remove unused commands (bell, last, strength)
6271server/input.c: removed file.
6272server/main.c: Change HAVE_DES_H to HAVE_LIBDES
6273server/player.c: When choosing a race, draw it facing south for best
6274 presentation of image.
6275server/spell_util.c: Remove dead code (#if 0 shootstrength related
6276 code)
6277socket/loop.c: remove unused variables.
6278NOTE: Due to the addition/removal of files, you will need to do
6279'config.status; make depend; make' from the top level directory for
6280everything to be compiled properly.
6281End of MSW 2000/12/17 checkin.
6282
6283
6284PeterM: 2000/12/17: Various problems fixed in
6285random_maps/*.c: endless loop removed,
6286exit leading to blocked area of spiral fixed.
6287
6288
6289PeterM: 2000/12/17: Stat max bug fixed.
6290server/apply.c
6291
6292
6293MSW 2000/12/16:
6294server/player.c: If the player race archetype has a message, print that out.
6295 This allows a descriptive message about what the different races will
6296 get. The message is removed from the player once they decide on the
6297 race.
6298common/living.c: Add some parens around some PR resistant checks - eliminates
6299 warnings from gcc.
6300server/disease.c: have cure_disease remove all diseases a player is infected
6301 with. The code suggested it was attempting to do so, and the
6302 messages it printed out certainly suggested that the character
6303 was disease free.
6304
6305
6306PeterM: 2000/12/14: Added spiral map layout
6307
6308PeterM: 2000/12/14:
6309Restructuring of the random map code. Functionally, it
6310should be identical. All global variables moved into the
6311functions.
6312
6313MSW 2000/12/10:
6314utils/metaserver.pl: Various improvements. Main one is that tcp
6315connections to port 13326 of the metaserver will dump the information
6316in a easily parsable format for the client or other applications.
6317include/config.h: Set ARCHTABLE size to correct value.
6318server/player.c: Have server send update item to client for players face
6319 while select class. Added esrv_new_player in Roll_Again, because
6320 without it, the client had yet to receive information on what tag
6321 the player was so could not make sense of the updated face.
6322server/spell_effect.c: Balance issues for polymorph. Reduce maximum
6323 value for high valued objects, remove ability to polymorph generators,
6324 put maximum level on polymorphed monsters and give them saving
6325 throws against the effects.
6326
6327MSW 2000/12/5:
6328server/player.c: Move location of where it sets the player has_hit variable
6329until after we have confirmed that the player has actually attacked a monster
6330and not that the space is blocked. Fixes various problems and make
6331behaviour more predictable.
6332common/button.c: Do not set path_attuned when loading connected objects from within
6333the editor. This is normally done for random map code/glue logic.
6334common/player.c: When trying to find a skill to use, use a native skill
6335first before going off and returning a skill object like a talisman.
6336
6337MSW 2000/12/4:
6338common/treasure.c: Make it so resistances from artifact files are absolute
6339 adjustments.
6340Makefile.in configure configure.in: Fix check for libdes to see if des_crypt
6341 exists in libdes before setting HAVE_LIBDES
6342crossedit/Makefile.in: Add Cnv/libCnv.a before LIBS - should fix
6343 linking error on irix systems.
6344utils/metaserver.pl: modified so it ignores entries from hosts that
6345 report their name as put.your.hostname.here
6346
6347MSW 2000/12/3:
6348crossedit/Attr.c: Add the new resist names to set of variables one can set.
6349
6350MSW 2000/12/3:
6351Misc changes. Main one is adding PNG support to the editor.
6352TODO: Remove outdated things to do (like partial resistance code)
6353configure, configure.in, include/autoconf.h.in: Add check for libpng.
6354include/global.h: Remove displaymodes - moved to crossedit/Defines.h
6355crossedit/App.c, crossedit/App.h crossedit/CrEdit.c crossedit/CrFace.c
6356 crossedit/CrList.c crossedit/CrUtil.c crossedit/Edit.c crossedit/crossedit.c
6357 crossedit/xutil.c, crossedit/png.c (new file): Add support for png display
6358 in crossedit.
6359crossedit/Makefile.in: Add png.c file.
6360server/c_misc.c: Change who command to only display real players, and not
6361 players in process of connecting/unconnecting. Also, remove code to display
6362 old sockets, since those are not supported anymore.
6363
6364MSW 2000/12/3:
6365Checking for partial resistance code. Various minor errors also fixed
6366(compiler warnings, unused variables, Makefile.in changes, etc).
6367PR code also includes support to send protections to the client.
6368Files changed:
6369 common/Makefile.in common/button.c common/exp.c
6370 common/friend.c common/holy.c common/info.c common/init.c
6371 common/item.c common/living.c common/loader.c common/loader.l
6372 common/object.c common/player.c common/re-cmp.c
6373 common/readable.c common/treasure.c crossedit/App.c
6374 crossedit/crossedit.c crossedit/proto.h doc/crossfire.doc
6375 include/define.h include/global.h include/libproto.h
6376 include/newclient.h include/newserver.h include/object.h
6377 include/player.h include/sproto.h lib/Makefile.in
6378 lib/archetypes lib/artifacts lib/crossfire.png
6379 lib/crossfire.xbm lib/crossfire.xpm random_maps/rproto.h
6380 random_maps/special.c random_maps/style.c server/Makefile.in
6381 server/apply.c server/attack.c server/c_misc.c
6382 server/c_object.c server/commands.c server/disease.c
6383 server/gods.c server/input.c server/monster.c server/player.c
6384 server/resurrection.c server/rune.c server/spell_effect.c
6385 server/spell_util.c server/swap.c socket/metaserver.c
6386 socket/request.c
6387 Added Files:
6388 include/attack.h
6389
6390
6391------------------------------------------------------------------------------
6392Changes for 0.95.8:
6393
6394MSW 2000/11/26:
6395utils/metaserver.pl (added), utils/Makefile.in: Add metaserver.pl script.
6396
6397MSW 2000/11/25:
6398include/patchlevel.h (removed), doc/spell-docs/Makefile (removed),
6399include/Makefile.in, include/version.h, server/init.c, server/main.c,
6400socket/metaserver.c: remove patchlevel.h - include the patchlevel in the
6401 version.h file, update other files to use version as a single string.
6402
6403MSW 2000/11/25:
6404socket/metaserver.c: If on FreeBSD systems, do not attempt to connect to
6405the metaserve. FreeBSD seems to have a problem using sendto on a connected
6406soccket.
6407
6408MSW 2000/11/25:
6409configure.in, configure, include/autoconf.h.in, server/main.c: Update
6410to check for libdes.a and des.h and use those for password decryption - fixes
6411a problem on freebsd if it is using md5 crypt. Hopefully it doesn't break
6412anything. main.c was also checking for HAVE_CRYPT_H too early.
6413include/sproto.h: Needed updating. Unrelated to above changes.
6414
6415
6416MSW 2000/11/22
6417server/main.c: Modify enter_exit so that it properly uses per player
6418unique maps that are only in memory and not on disk. Remove unused
6419variable from process events (unrelated change).
6420
6421PeterM 2000/11/18:
6422 New spells added:
6423 1) Sanctuary (aura of counterwall)
6424 2) Peace (make monsters unable to fight)
6425 3) Spiderweb (create spider webs)
6426 4) rage (heroism, armour, haste, regenration combined)
6427 5) forked lightning (lightning which forks and strikes )
6428 6) flaming aura (aura of fire)
6429 7) vitriol combined ball/cone/pool acid attack spell
6430 8) vitriol splash (spell for internal use only)
6431 9) ironwood skin (clerical version of armour spell)
6432
6433Not implemented: 10) poison fog
6434
6435MSW 2000/11/17:
6436socket/metaserver.c: More changes - use fcntl to set O_NONBLOCK. Don't
6437 close socket if connect fails, since with sendto it is not required
6438 that the connect works.
6439
6440PeterM: 2000/11/17
6441define.h spells.h spellist.h spell_util.c spell_effect.c:
6442 windstorm spell implemented.
6443attack.c: saving throw behavior modified. Items take a bit
6444of DAM to destroy now instead of being destroyed with 1hp attacks.
6445
6446MSW: 2000/11/16:
6447socket/metaserver.c: Add #ifdef MSG_DONTWAIT into metaserver.c for systems
6448 that lack that definition.
6449random_maps/style.c: alphasort was not properly de-referencing pointers
6450 when doing name comparisons, and thus returned garbage results,
6451 resulting in a crash when entering random maps. This only happens
6452 for systems which lack scandir in normal libraries (like Solaris).
6453 BSDs and linux have scandir built in, and did not have a problem.
6454server/disease.c: fix infect_object - server would crash if player did
6455 not have praying skill and was infecting someone else.
6456end of changes, MSW 2000/11/16
6457
6458PeterM : 2000/11/14
6459PeterM: Made some changes so that non-disease effects may be done without
6460being labelled as a disease. Also, fixed a bug in which we'd kill something
6461and then try to insert something in the killed thing's map.
6462
6463
6464
6465metaserver update:
6466common/init.c: Add meta_ fields to settings structure initialization.
6467include/global.h: Add meta_ fields to settings structure.
6468include/sockproto.h: Updated for new meta_ functions.
6469lib/Makefile.in: Have it install settings file.
6470lib/settings: Default settings file with some metaserver default value.s
6471server/init.c: Add load_settings file. Add call to metaserver_init.
6472server/main.c: Add call to metaserver_update in do_specials.
6473socket/Makefile.in: Add metaserver.c to list of files.
6474socket/metaserver.c: File that deals with metaserver related data.
6475socket/item.c: Remove some unused variables. Unrelated to metaserver changes.
6476socket/loop.c: Add calls to metaserver_update in block_until_new)connection. Change
6477 function so that if there are no active players, it still timeouts and
6478 does metaserver update. Basically changed to do it the way the
6479 WATCHDOG code did it.
6480End of metaserver update. MSW 2000-11-13
6481
6482server/player.c: removed unused tmp2 variable from move_player_attack.
6483modify depletion in kill_player so the maximum depletion for a stat is -50. This
6484should preven stat wrapping from -126 to 127. MSW 2000-11-08
6485
6486==============================================================================
6487MSW 2000-11-07
6488common/item.c: query_base_name was not return plural version of items
6489with 'of' in name. Also, much of the function was not using safe_strcat,
6490which could result in buffer overlow problems.
6491
6492common/object.c: Change update_position so that we always generate
64933 images per space. This fixes players standing on top of dragon transports,
6494but generally works for things like monsters standing on objects.
6495insert_ob_in_map: change 'return' statement to 'return NULL'. Also
6496remove unused map pointer.
6497decrease_ob_nr: Fix bug for client updates when player drops item that
6498is then consume. It was using op->above after object was removed to
6499find the player. Store above pointer before we remove the object.
6500
6501socket/item.c: Don't terminate pointer as returned by query_base_name -
6502instead, terminator buffer after we copy it. For simple object,
6503query_base_name may directly return a pointer to the objects name
6504which is only long enough to hold the name itself.
6505
6506socket/lowlevel.c: Abort if we are trying to send the client a packet
6507longer than supported by the protocol. Since that buffer is static,
6508overflowing it will just create memory corruption - easier to stop
6509then than try and debug it later.
6510
6511End of MSW checkin 2000-11-7
6512==============================================================================
6513
6514
6515PeterM: 2000-11-06
6516server/spell_util.c crash bug removed from move ball lightning:
6517ball lightning mover improved in general. --PeterM
6518
6519--------------------------------------------
6520--- BEGIN stop_item() / attack fix patch --- Jan Echternach 2000-11-06
6521--------------------------------------------
6522
6523Summary of this patch: Provide new stop_item() function for properly
6524handling "moving" items on a map (flying arrows, thrown objects,
6525active cones); obsoletes the workarounds. Fix some attack bugs (with
6526possible server crashes) - many attackers attacked while being
6527removed, even though much code could only handle the attacker being on
6528the same map as the victim (not even the attacker being in the
6529victim's inventory, e.g. poison).
6530
6531common/object.c: insert_ob_in_map(): Call check_walk_on() after
6532update_object() because the latter needs to update some very
6533important flags used by a lot of code before this code is called
6534by check_walk_on().
6535
6536common/object.c: get_split_ob(): Completed support for splitting
6537removed objects.
6538
6539common/object.c: decrease_ob_nr(): Rewrote this function: Added
6540support for removed objects. Removing an object completely didn't
6541always update the environment's weight properly. Removing an amount
6542of 0 from an object with nrof == 0 destroyed the object. Improved
6543performance a bit (don't need to update the player's weight if an
6544object below the player is modified).
6545
6546server/apply.c: move_apply(): Added recursion limit.
6547
6548server/apply.c: move_apply(): THROWN_OBJ and ARROW: Use new
6549hit_with_arrow() function.
6550
6551server/apply.c: move_apply(): FBULLET and BULLET: Call
6552check_fired_arch() only when the victim blocks the square (FLAG_NO_PASS
6553or FLAG_ALIVE).
6554
6555server/attack.c: save_throw_object(): Use new stop_item() function
6556before trying to modify an object. Added originator to all
6557insert_ob_in_map() calls.
6558
6559server/attack.c: hit_map(): Added log message if the hitter is not on
6560a map. Added was_destroyed() check after calling save_throw_object().
6561
6562server/attack.c: get_attack_mode() and abort_attack(): New functions
6563to determine the type of attack (simple or full attack).
6564
6565server/attack.c: attack_ob(): Now only attack_ob_simple() with default
6566damage and weapon class values.
6567
6568server/attack.c: attack_ob_simple(): Contains most of old attack_ob(),
6569but takes damage and weapon class as parameters, needed for
6570hit_with_arrow(). Uses get_attack_mode() and abort_attack() to
6571support new "simple" attack mode.
6572
6573server/attack.c: stick_arrow() and hit_with_arrow(): Moved those parts
6574of old stop_arrow() and move_arrow() that dealt with attacking a
6575victim over here.
6576
6577server/attack.c: hit_player(): Uses get_attack_mode() and
6578abort_attack() to support new "simple" attack mode.
6579
6580server/attack.c: paralyze_player(): Use insert_ob_in_map_simple()
6581instead of insert_ob_in_map() because the callers are not prepared for
6582this function triggering any complex machinery, and
6583insert_ob_in_map_simple() should be enough for plain visual effects.
6584
6585server/attack.c: thrown_item_effect(): Don't need to deal with thrown
6586objects, hit_with_arrow() already does everything necessary.
6587
6588server/attack.c: adj_attackroll(): Added log message if hitter and
6589victim are not on the same map.
6590
6591server/c_object.c: Fixed two typos in "can't pick up xxx" messages.
6592
6593server/c_object.c: pick_up_object(): Removed can_pick() check because
6594pick_up() already checks this. Added support for picking up removed
6595objects because the stop_item() in pick_up() can now call us with
6596removed objects. Moved FLAG_STARTEQUIP check to pick_up(). Fixed
6597weight limit lookup for monsters that have strength > MAX_STAT.
6598
6599server/c_object.c: pick_up(): Use new stop_item() function.
6600
6601server/player.c: fire_bow() and server/skills.c: do_throw(): Removed
6602FLAG_NO_PICK workaround for flying objects. stop_item() now handles
6603this correctly.
6604
6605server/rune.c: spring_trap(): Fix unlimited trap recursion. Since
6606traps are triggered by move_apply(), the result of triggering a trap
6607may trigger the trap again before it is deactivated.
6608
6609server/rune.c: spring_trap(): Runes that don't cast spells can only be
6610triggered by living objects.
6611
6612server/spell_effect.c: move_cancellation(): Don't call hit_map() with
6613a removed attacker.
6614
6615server/spell_util.c: cast_cone(): Only print warning message about
6616cones that don't have FLAG_FLY/WALK_ON if the cone does any damage.
6617
6618server/spell_util.c: move_cone(): Removed workaround for cones in ice
6619cubes. stop_item() now handles this correctly.
6620
6621server/spell_util.c: explode_object(): Rewrote this function: New
6622interface - exploding object must not be removed when the function is
6623called, it must have an other_arch (i.e. it must be able to explode),
6624and it will be gone for sure when the function terminates. Removed
6625some code with no effect. Don't call any attack functions with
6626removed attackers.
6627
6628server/spell_util.c: check_fired_arch(): Rewrote this function.
6629
6630server/spell_util.c: move_fired_arch(): Rewrote most of this function:
6631Don't attack with removed attackers. Call check_fired_arch() instead
6632of duplicating its code.
6633
6634server/spell_util.c: move_ball_lightning(): Don't attack with removed
6635attackers. Rewrote the movement algorithm to simplify this task.
6636
6637server/time.c: stop_item() and fix_stopped_item: New functions.
6638
6639server/time.c: fix_stopped_arrow(): Contains most of the old
6640stop_arrow() function. Unlike stop_arrow(), it takes an arrow that is
6641not removed. Removed FLACK_NO_PICK workaround.
6642
6643server/time.c: stop_arrow(): Stops arrows and thrown objects and puts
6644them on the map. Sticking objects into targets is no longer handled
6645by stop_arrow(), but by hit_with_arrow().
6646
6647server/time.c: move_arrow(): Don't attack with removed attackers.
6648
6649socket/item.c: esrv_move_object(): Removed misleading comment.
6650
6651------------------------------------------
6652--- END stop_item() / attack fix patch --- Jan Echternach 2000-11-06
6653------------------------------------------
6654
6655server/time.c: Add call to esrv_update_item to update the face for
6656the client after the player chooses a class. MSW 11/3/2000
6657
6658server/c_object.c, socket/item.c: Fixed for long item support. pick_up_object
6659in c_object was overwriting a fixed length string, causing server crashes.
6660item.c was not properly terminating plural version of object name, resulting
6661in corrupt packets being sent to the client. MSW 11/2/2000
6662
6663PeterM:
6664 ball lightning made stronger, strikes larger area, never
6665 hits player.
6666 divine shock spell added.
6667
6668include/sproto.h: Removed prototype of obsolete make_gravestone()
6669function.
6670server/apply.c: Put back gravestone_text() function that was removed
6671accidently a while ago, needed by NOT_PERMADEATH.
6672server/player.c: Don't use the dead player as the originator of object
6673movements. Fixed string handling for NOT_PERMADEATH.
6674- Jan Echternach 10/30/2000
6675
6676
6677Major race/class change by PeterM:
6678BEGIN:
6679*****************
6680apply.c: new function, apply changes to player. If the change is a CLASS,
6681player receives certain attributes from the class.
6682
6683login.c: make sure people using the old race/class archetypes in their
6684player files can still use them.
6685
6686player.c:
66871) give_initial_items modified for greater flexibility: you
6688can pass in a treasurelist.
66892) Also, initial forces are applied to the player.
66903) Comment added on the stat roll function.
66914) Word of recall into the new class-choice map (unfortunately hard-wired.) for newly-rolled players.
66925) gen_sp and gen_hp and gen_grace now allowed to go negative to slow down player
6693regen.
6694
6695skill_util.c
66961) Don't give out basic skills anymore. This interferes with the class code.
6697
6698spell_util.c
66991) Praying failures moderated in frequency.
67002) Summoned creatures enhanced in wc, speed, depending on casting level.
67013) Word of recall allowed to work in no-magic areas if a flag is set.
6702
6703time.c
67041) Move player changer function added.
67052) Marker object expiration added.
6706
6707living.c: cleric fail chance array modified.
6708
6709map.c: bugfix for random map/recycle tmp map problem.
6710
6711define.h: defines added for playerchangers and class types
6712 base 10 numbers added for the spell paths.
6713
6714spellist.h: fixed up summoning spells a little
6715
6716sproto.h: new prototypes
6717
6718config.h: hate RECYCLE_TMP_MAPS, turned it off
6719
6720maps/HallOfSelection: new map for class choice.
6721
6722lib/treasures: classs/race stuff heavily modified
6723lib/archetypes, animation, bmaps, bmaps.paths, crossfire.png faces
6724 crossfire.xbm New faces, etc.
6725
6726END race/class stuff 10/16/2000
6727apply.c: bugfix for random map/recycle tmp maps interaction. --PeterM 10/16/200
6728
6729include/skill* server/skill_util.c: levitation skill added.
67309/26/2000. --PeterM
6731
6732common/map.c server/apply.c: Fix an interaction between
6733RECYCLE_TMP_MAPS and random maps which would cause crashing.
6734peterm: 10/12/2000
6735
6736disease.c spell_effect.c: peterm: 10/5/2000
67371) Diseases moderated in power by ~1/2 and randomized.
6738 Now monsters can have a mild/moderate/serious/fatal case
6739 of a particular disease.
67402) cause disease spells modified to NOT go through objects
6741 spells ordinarily couldn't go through.
6742
6743------------------------------------------------------------------------------
6744
6745Changes for 0.95.7:
6746
6747README: Add crossfire.csua.berkeley.edu server.
6748TODO: Remove entry about setable behaviour for keyrings, since that has now
6749been done.
6750include/patchlevel.h, Makefile.in: Update for 0.95.7 MSW 9/20/2000
6751
6752lib/maps: got rid of the stuff that was there. Useless stuff.
6753the maps dist. is the thing to use. --PeterM
6754
6755
6756common/living.c, server/skill_util.c: Patches by Garth Denley:
6757Fixes divide by zero crash, sets up perm exp when a new player is loaded,
6758seperates permanent exp code/calculations into another function.
6759checked in by MSW, 8/24/2000
6760
6761lib/crossfire.png: ground/sea*png - remove transperancies from png images
6762since they should not be transparent. MSW 8/23/2000
6763
6764doc/spoiler.html/(Makefile.in,empty.pbm, makeps.pl, spoiler.html): Modify
6765to make gif images from png source instead of xpm images. A valid question
6766to ask is why convert to gif at all and not just keep in PNG format. The
6767answer right now is that png support in netscape at least still is not very
6768good, and it displays gifs better. MSW 8/8/2000
6769
6770Add/Remove some LOG calls:
6771common/living.c: Remove log messages about gen_sp values on armor
6772server/login.c, server/main.c: Add messages about player logins/logouts with
6773IP address. Useful for tracking potentially troublesome players and where
6774they are player from. MSW 8/7/2000
6775
6776The following change basically does the following: When the server sends an
6777item name to the client, this item name is now two pieces - the first piece
6778of the name is its singular form, the second piece is the plural name. This
6779now makes items in the inventory appear more proper in terms of pluralization
6780and just normal English. I did notice that the server does not know how
6781to properly make 'torch' plural - it turns it into torchs. A matching
6782check in for the client has also been done.
6783include/newserver.h: Update VERSION_SC to 1024
6784common/item.c: Change query_base_name to take a second option on whether
6785 we should generate a plural version of the name or not.
6786socket/item.c: Modify functions to use second argument on the query_base_name
6787 function. Update item commands to send two part names (singular & plural).
6788 Modify esrv_send_look to use item1 protocol command instead of item command.
6789server/c_object.c: Update item_matched_string to use second option to
6790 query_base_name. Modify function to check against both singular and
6791 plural versions of name.
6792server/shop.c: Modify shop_listing command usage in query_basename to use
6793 second option. It will also generate the singular name, but that is only
6794 used on sorting, so I don't think it will generally cause any problems.
6795include/libproto.h: rebuilt because query_base_name has an addition opt.
6796Mark Wedel 8/6/2000
6797
6798include/config.h, include/global.h, common/init.c, common/living.c,
6799server/init.c, server/player.c, server/skill_util.c: Add permanent
6800experience and balanced stat loss features (code by Garth Denley).
6801Permanent experience make some experience in the skills permanent. Balance
6802stat loss makes stat loss less likely/costly at low level and more costly
6803at higher levels. These features are by default off, but can be turned
6804on either in the config.h file or via command line options. Code checked
6805in by MSW 8/1/2000
6806
6807server/time.c: Update the change_object function such that if the object
6808is in a players inventory, send a delete & send_item for the object that
6809has changed (the delete + send_item is necessary due to the ways objects
6810change, so we just can't sent a update_item). This fixes the 'torches
6811go dim & then out but client inventory not updated' bug, and likely fixes
6812some other problems - I am not sure how many other objects out there
6813change. MSW 7/28/2000
6814
6815random_maps/treasure.c: potential crash bug fixed. Only applied
6816when a bad archetype was given as a wallstyle. I will also put
6817in a redundant archetypes fix. --PeterM 7/26/00
6818
6819lib/adm/map_info, lib/adm/map_check: Update to use new layout of installed
6820files (share/crossfire), know about random exits (it doesn't do any checking
6821to make sure the values are sane, which it probably should, but at least it
6822won't complain about them), update to use /usr/bin/perl. MSW 7/25/2000
6823
6824server/resurrection.c
6825include/spellist.h: PeterM: fixed a few unintended things about
6826resurrection: experience removal was wrong, spellpoints/levels
6827changed. --PetrM
6828
6829lib/archetypes: Update to keep in sync with arch tree. Changes to
6830about a dozen arch's to remove the 'a' in their name. MSW 6/27/2000
6831
6832server/c_object.c: Fix command_drop which was doing incorrect check for
6833invisible object - it was supposed to skip over them and only do visible
6834objects, instead it was doing the reverse. Fixes the 'drop command.
6835MSW 6/27/2000
6836
6837server/input.c: Make the inventory command more robust for very long
6838object names - specify a maximum number of characters we will take from
6839the name. Without this, you could get buffer overruns that cause crashes.
6840No normally generated items would ever likely have names long enough to
6841exploit this bug however. MSW 6/27/2000
6842
6843INSTALL, README: Update mailing address to real-time address. MSW 6/27/2000
6844
6845server/login.c: Load and save usekeys value in player save file. MSW 6/27/2000
6846
6847Patch by Jeffry Hantin which fixes glow objects in map.
6848insert_ob_in_map_simple now will call the appropriate light updating code.
6849Applied by MSW 6/26/2000
6850
6851server/player.c: check_pick(): Rewrite of this function to consistently
6852skip items that can't be picked up, and to only use a single loop over all
6853items on the map square. - Jan Echternach 6/23/2000
6854
6855------------------------------------------------------------------------------
6856Changes for 0.95.6:
6857
6858server/monster.c: Patch by Neil Muller so that corrupt/bad @match entries
6859will not cause the server to crash. Applied by MSW 6/21/2000
6860
6861lib/archetypes: rebuilt for 0.95.6
6862lib/collect.pl: Modify to search the archetypes directories in alphabetical
6863order - before I believe they were collected in basically inode order.
6864This should make it easier to multiple people to run the collect script
6865not have basically an entirely new archetyeps file. MSW 6/21/2000
6866
6867server/commands.c; server/c_object.c: dump_object_from_tag(): Removed
6868broken command. Fixes server crashes very easily triggered by players.
6869- Jan Echternach 6/21/2000
6870
6871server/attack.c: deathstrike_player(): Check for def_lev == 0 very early
6872(and print error message if we find such an invalid level). Should fix
6873server crash in case archetypes or maps get broken again in that an
6874alive object has level < 1. - Jan Echternach 6/21/2000
6875
6876Makefile.in: Update version to 0.95.6
6877include/patchlevel.h: Update to .6 for 0.95.6 release
6878common/porting.c, include/config.h, include/loader.h, include/skills.h,
6879include/spells.h, include/treasure.h, include/version.h, random_maps/style.c:
6880 Update my mail address and copyright date. Mostly committed to sync
6881 up my data with the CVS repository - MSW 6/20/2000
6882
6883random_maps/treasure.c server/apply.c: made containers able to
6884have more than one treasure in them, made a fix to treasure.c, which would
6885change the options given to it in an unintended way. --PeterM 6/20/2000
6886
6887
6888common/living.c: fix_player(): Bugfix: Don't reset FLAG_FLYING,
6889FLAG_REFL_SPELL, FLAG_REFL_MISSILE and FLAG_SEE_IN_DARK if the archetype
6890has these flags. - Jan Echternach 6/19/2000
6891
6892
6893random_maps/* Numerous changes improving random maps, including
6894two crash-fixes, a new type of 'special', ability to copy inventory
6895of monsters when putting them into maps... --PeterM 6/19/2000
6896
6897New naming scheme for random maps: they won't grow in size
6898indefinitely anymore. --PeterM 6/17/2000
6899
6900server/input.c: command_cast_spell(): Bugfix: Call check_skill_to_fire()
6901even for wizards because this function has the important side effect
6902of setting the current skill and experience objects.
6903- Jan Echternach 6/19/2000
6904
6905server/apply.c: apply_treasure(): Bugfix: We need to trigger runes as
6906they are found in the treasure chest, because move_rune() will no longer
6907trigger them for us. - Jan Echternach 6/18/2000
6908
6909Updated the INSTALL directions. MSW 6/16/2000
6910
6911Modified the editor to make certain objects (teleporters, creators,
6912markers) more easily editable. --PeterM 6/16/2000
6913
6914Modifed how firewalls worked. They can now be triggered by
6915handles as well as turned. Ones which are turned by handles
6916cannot be triggered by handles. PeterM 6/15/2000
6917
6918fixes to random_maps:
6919exit.c: won't crash if named final_map doesn't exist
6920room_gen_onion.c: reordered the options more sanely
6921special.c: fixed a crash-bug: nuke_map would nuke parts of monsters, but
6922not the whole monster. --PeterM
6923
6924server/skill_util.c: Fix type in change_skill - was doing an == operation
6925when it should just have been an =. MSW 6/13/2000
6926
6927common/anim.c: animation_object() - return if object does not have a valid
6928animation after logging error. Before, we logged the error and would
6929promptly crash. MSW 6/13/2000
6930
6931server/apply.c: apply_treasure(): Bugfix: Set FLAG_NO_APPLY before
6932moving object to the top. - Jan Echternach 6/13/2000
6933
6934server/time.c: move_marker(): Bugfix: Call update_ob_speed() after
6935changing force->speed. - Jan Echternach 6/13/2000
6936
6937server/spell_util.c: move_swarm_spell(): Improved distribution of
6938fired objects. Fixed starting position of fired objects to be able to
6939hit targets immediately in front the caster. - Patch by Jeffrey Hantin,
6940applied by Jan Echternach 6/13/2000
6941
6942server/disease.c, sproto.h, rune.c Fixes from jhantin@derringer.net for diseases:
6943 Reversed strstr calls, force argument added to infect_object,
6944diseases in immune carrier last forever, needles use infect object,
6945cast_cause_disease won't fail. --PeterM 6/9/2000
6946
6947common/loader.l: Fix handling of objects with no animation. Fixes server
6948crash if object's archetype has an animation, but object doesn't.
6949- Jan Echternach 6/9/2000
6950
6951common/loader.l: get_ob_diff(): Bugfix: Issue a "is_animated 0" line
6952if the object has an animation, but doesn't have FLAG_ANIMATE.
6953- Jan Echternach 6/9/2000
6954
6955server/apply.c: manual_apply() and monster_apply_special(): Don't check
6956for FLAG_UNPAID if object is applied. This should make the code more
6957robust if an unpaid item get's applied accidently.
6958- Jan Echternach 6/9/2000
6959
6960server/apply.c: apply_special(): New optional flags AP_NO_MERGE and
6961AP_IGNORE_CURSE. - Jan Echternach 6/9/2000
6962
6963server/monster.c: find_mon_throw_ob(); server/skills.c: find_throw_ob():
6964Bugfix: Use AP_NO_MERGE flag to prevent unapplied object be merged with
6965other objects. - Jan Echternach 6/9/2000
6966
6967server/spell_effect.c: animate_weapon: Bugfixes: Correctly unapply
6968weapon. Don't set FLAG_APPLIED directly on weapon in golem, but use
6969apply_special(). Don't call esrv_send_item() when caster is not a player
6970(fixes server crash if monster casts this spell).
6971- Jan Echternach 6/9/2000
6972
6973random_map/<various> Fixes in the map code for various things, including:
69741) crash bug on
6975multi-square monsters. 2) no treasures in final_map, 3) new feature of doing
6976walls only, .... --PeterM 6/9/2000:
6977
6978common/button.c: do_mood_floor(): Bugfixes: Only players can have pets.
6979Call add_friendly_object() for friendly monsters.
6980- Jan Echternach 6/8/2000
6981
6982server/spell_effect.c and server/spell_util.c: Several functions: Only
6983add a pet if there really is a pet's owner, and it's a player.
6984- Jan Echternach 6/8/2000
6985
6986server/spell_effect.c: cast_charm() and cast_charm_undead(): Bugfixes:
6987Only players can cast these spells. This fixes server crash if
6988a monster casted a charm spell, and the charmed pet was killed.
6989Call add_friendly_object for friendly monsters.
6990- Jan Echternach 6/8/2000
6991
6992common/friend.c: remove_friendly_object(): Use llevError for error
6993messages. - Jan Echternach 6/8/2000
6994
6995common/living.c: fix_player(); server/gods.c: tailor_god_spell();
6996server/spell_effect.c: summon_avatar() and animate_weapon(): Bugfix: Set
6997a string to NULL after calling free_string(). This fixes a nasty bug
6998that caused the string's reference count drop below 0, which resulted
6999in corruption of malloc()'s internal data structures (and possibly
7000server crashes). - Jan Echternach 6/8/2000
7001
7002server/time.c: move_creator(): Bugfix: Call free_string() to free old
7003values of op->name and op->title before overwriting them with new values.
7004- Jan Echternach 6/8/2000
7005
7006common/object.c: insert_ob_in_map_simple() and insert_ob_in_map():
7007Check that we don't insert freed objects. - Jan Echternach 6/8/2000
7008
7009server/attack.c: hit_player_attacktype() and hit_player(): Bugfix: Check
7010that find_god() really found a god, and that 'god->slaying' is not NULL.
7011Fixes crash if a monster casted turn undead and actually hit something.
7012- Jan Echternach 6/8/2000
7013
7014server/attack.c: hit_player(): Check that a pet's owner is a player.
7015Prevents server crashes if a monster has a pet monster due to a bug
7016somewhere. Use llevError for error message. - Jan Echternach 6/8/2000
7017
7018server/time.c: move_arrow(): Use llevDebug level for "Arrow had no
7019map" message. - Jan Echternach 6/8/2000
7020
7021server/c_object.c, server/spell_effect.c, server/spell_util.c: Bugfixes:
7022Added some missing checks for destroyed objects. Use was_destroyed()
7023or return value of insert_ob_in_map() to check for destroyed objects,
7024not FLAG_FREED or FLAG_REMOVED. Don't use op->count of destroyed objects.
7025- Jan Echternach 6/8/2000
7026
7027server/shop.c: get_payment2(): Type of tag is 'tag_t', not 'long'.
7028- Jan Echternach 6/8/2000
7029
7030server/spell_effect.c: animate_bomb(): Fix environment checks.
7031- Jan Echternach 6/8/2000
7032
7033server/spell_util.c: fire_bolt(): Bugfix: Set level of bolt.
7034- Jan Echternach 6/8/2000
7035
7036server/spell_util.c: explosion(): Bugfix: Set FLAG_NO_APPLY before
7037moving the exploding object to the top. - Jan Echternach 6/8/2000
7038
7039server/spell_util.c: put_a_monster(): First create the monster
7040completely, then just insert its head. - Jan Echternach 6/8/2000
7041
7042server/time.c: generate_monster(): Bugfix: Don't free generators that
7043are used up in this function. process_object() already does this.
7044This fixes steambolt (which is a generator but must not used up here -
7045generate_monster() wasn't looking at FLAG_IS_USED_UP) and all generators
7046which should really be used up (because process_object() didn't expect
7047generate_monster() to destroy the object). - Jan Echternach 6/8/2000
7048
7049server/rune.c: trap_disarm(): Bugfix: Use SK_level() to determine
7050disarmer's level. Fixes server crash if multisquare monster casts
7051"disarm". - Jan Echternach 6/8/2000
7052
7053server/attack.c: hit_map(): Use was_destroyed() to properly check for
7054destroyed next object. Use llevError for error messages. Skip all
7055objects that are (no longer) at the specified map position.
7056- Jan Echternach 6/8/2000
7057
7058server/map.h server/main.c Increased buffer sizes for map paths.
7059Needed for random map code. --PeterM 6/6/2000
7060
70616/4/2000: Fix done to disease.c which causes diseases to
7062put experience into the appropriate category. --PeterM
7063
70646/4/2000: Added race fields to a lot of monsters. Modified
7065disease arcs so that they'll be specific to races. Changed
7066include/spellist.h to re-enable the disease spells. --PeterM
7067
70686/4/2000 (disease.c) Added a self-limiting parameter to diseases so
7069that their power can be tuned to be reasonable. --PeterM
7070
7071lib/crossfire.png: Some floors modified to no longer have transperencies.
7072include/newserver.h: Add Send_Face_Png made, also update versions of
7073 the protocol
7074include/newclient.h: Add CF_FACE_PNG constant.
7075socket/request.c: Add support for receiving PNG facemode request,
7076 ad final logic to send png images to the client.
7077Changes by Mark Wedel, 6/2/2000
7078
7079lib/checkarch.pl: Check for archetypes with type FIRECHEST but no level.
7080- Jan Echternach 5/29/2000
7081
7082server/apply.c: move_apply(): Added handling of THROWN_OBJ, CANCELLATION
7083and BALL_LIGHTNING.
7084server/spell_effect.c: cancellation(): Traverse inventory of objects
7085with type THROWN_OBJ.
7086- Jan Echternach 5/29/2000
7087
7088server/player.c: fire_bow() and server_skills.c: do_throw(): Bugfix: Don't
7089use op->count of freed objects. Use was_destroyed() to check for freed
7090objects instead of QUERY_FLAG (FLAG_FREED). - Jan Echternach 5/29/2000
7091
7092server/spell_util.c: fire_a_ball(): Bugfixes: Use op->other_arch as
7093the archetype to fire, not FBULLET. (-> Firechests now cast fire balls
7094again, not snowballs.) Set level of fired archetype. Check if object
7095was destroyed after insert_ob_in_map(). - Jan Echternach 5/29/2000
7096
7097server/time.c: move_firewall() and move_firechest(): Do nothing if
7098object has no map. Fixes server crashes if a dm creates such a thing
7099in the inventory. - Jan Echternach 5/29/2000
7100
7101lib/collect.pl: Modify so that it does not complain about png files in the
7102arch directory MSW 5/28/2000
7103
7104common/item.c: Fix query_short_name - wasn't generating all item names
7105properly because of changes made a few days ago - some areas manipulate
7106the string being worked on and was not updating the length properly.
7107MSW 5/26/2000
7108
7109doc/mapguide: Fix some typos. MSW 5/26/2000
7110
7111include/define.h: Add MIN_ACTIVE_SPEED value to determine what threshold
7112something will be put on the active list or not instead of using
7113varying values throughout the source code.
7114common/item.c, common/object.c, server/monster.c, server/pets.c,
7115server/spell_effect.c: Updated to use the MIN_ACTIVE_SPEED instead of
7116hardcoded values. MSW 5/26/2000
7117
7118include/define.h,include/global.h, common/image.c: Remove following old
7119face information: INV_*_FACES, BLOCKED_FACE, STIPPLE[12]_FACE. This
7120is just a general cleanup - the server has not used these since the
7121X11 code was pulled from the server. MSW 5/26/2000
7122
7123common/living.c: Add entries for the attack type AT_INTERNAL in description.
7124include/material.h: Update to include saves against INTERNAL attacktype.
7125include/living.h: Remove defunct objects_saves external referance.
7126The additions of internal to the tables should not really be needed, as
7127internal attacktypes should not be used publically, but these also act as
7128placeholders for future attacktypes. MSW 5/26/2000
7129
7130* server/attack.c: hit_map(), hit_player(); server/spell_effect.c:
7131move_cone(); server/rune.c: spring_trap(); server/spell_util.c:
7132move_missile(): Bugfix: Added missing was_destroyed() calls.
7133* server/rune.c: spring_trap(): Bugfix: Call trap_show() before the rune
7134has a chance to be destroyed.
7135* server/attack.c: hit_map(), hit_player(): Check for freed objects
7136right at the beginning of the function. Removed check that hitter has
7137a name from hit_player().
7138* server/spell_util.c: move_cone(): Bugfix: Remove cone objects in
7139inventories from active list, this fixes the cone without map problem when
7140a flower was hit with ice and put into an icecube.
7141* server/spell_util.c: move_missile(): Bugfix: Don't call hit_map() while
7142missile is removed from the map.
7143* server/apply.c: manual_apply(): Handle MMISSILE.
7144- Jan Echternach 5/26/2000
7145
7146* server/spell_effect.c: animate_weapon() and server/spell_util.c:
7147summon_monster(): Bugfix: Set FLAG_FRIENDLY for friendly objects.
7148- Jan Echternach 5/26/2000
7149
7150* server/attack.c: hit_player(): Bugfix: remove_friendly_object()
7151was called always after an object with type GOLEM had been killed,
7152but friendly objects are objects with FLAG_FRIENDLY, not objects with
7153type GOLEM. This fixes some "Remove_friendly_object(): Can't find
7154object" errors. - Jan Echternach 5/26/2000
7155
7156-----------------------------------
7157--- BEGIN apply() cleanup patch --- Jan Echternach 26/5/2000
7158-----------------------------------
7159
7160* player specific code moved from apply() to player_apply() and
7161player_apply_below().
7162
7163* apply(): null pointer check removed
7164
7165* (bugfix?) print message if scroll is unusable because of invalid
7166spell number
7167
7168* bugfix: if the altar casted a spell, the message was sent to the
7169(destroyed!) sacrifice, not the player
7170
7171* split apply() -> move_apply() / manual_apply()
7172
7173* move_apply(), check_walk_on(), insert_ob_in_map() and other functions:
7174New parameter 'originator' that is the object that caused another object
7175to be inserted into the map. This removes the need to look through all
7176map objects above an altar to find the player who dropped the sacrifice.
7177
7178* always check FLAG_UNPAID in manual_apply()
7179
7180* don't check FLAG_UNPAID in apply_special(), new function
7181monster_apply_special() which checks FLAG_UNPAID and calls apply_special()
7182
7183* many new functions like apply_altar() and apply_spellbook() to make
7184the switch statements in move_apply() and manual_apply() shorter
7185
7186* changes to actual apply() code:
7187
7188ALTAR:
7189 spell casting altars should work now if not operated by a player
7190 common/button.c, operate_altar(): altar's message is sent to altar's
7191 map, not player's map
7192 bugfix: if sacrifice was accepted, apply() didn't tell the caller
7193 that it has been destroyed
7194ARROW, CONE, FBULLET, BULLET:
7195 now returns 'victim destroyed' if victim was killed by the attack
7196TRAPDOOR:
7197 play sound only if something fell through the trapdoor
7198 print trapdoor message _before_ falling into trapdoor
7199TRIGGER_ALTAR (in check_trigger()):
7200 don't check for sacrifices if called from animate_trigger()
7201 don't call check_trigger() from fix_auto_apply() anymore (this change
7202 breaks maps with altars that have their sacrifice already stored on
7203 them)
7204DEEP_SWAMP:
7205 deep_swamp() -> walk_on_deep_swamp() / move_deep_swamp()
7206 when deep_swamp() (now move_deep_swamp()) is called from
7207 process_object(), assume that state (swamp->stats.food) is already 1
7208EXIT:
7209 removed support for multisquare players
7210 don't print 'is closed' message when moving on an exit, only print this
7211 message if exit is applied manually
7212SIGN:
7213 only increment last_eat if it hadn't reached the limit yet
7214SPELLBOOK:
7215 removed partial support for applying by monsters
7216BOW, WAND, ROD, HORN:
7217 moved code to apply_special()
7218CLOCK:
7219 bugfix: Monsters must not apply a clock, they would crash the server.
7220POWER_CRYSTAL:
7221 Bugfix? Don't call esrv_update_item() if not applied by a player.
7222LIGHTER:
7223 Bugfix? Just return 0 if not applied by a player.
7224
7225* changes to apply_special():
7226
7227BOW:
7228 remove double check_skill_to_apply()
7229ROD, HORN:
7230 change message from "you apply ..." to "you ready ..."
7231
7232BOW: FLAG_READY_BOW is now set by apply_special(), but that seems
7233redundant because monster_check_apply() also sets this flag. Remove
7234setting of this flag from apply_special() because it could have a
7235more complex meaning in monster.c or remove setting of this flag from
7236monster_check_apply() because such stuff should be handled in apply.c?
7237FLAG_READY_BOW is also unset in apply_special() if a bow is unapplied.
7238
7239CONE:
7240 don't multiply damage by 20
7241SIGN:
7242 you can hear magic mouths even if you are blind
7243 however, now you can also read signs with FLAG_WALK_ON/FLAG_FLY_ON if you are
7244 blind
7245 (different object types or a new flag would be required)
7246RUNE:
7247 detonation moved from move_rune() to move_apply() -> runes will now always
7248 detonate if somebody steps on them
7249 allow runes with FLAG_FLY_ON
7250
7251completely removed GRAVE and MONEY_CHANGER
7252
7253common/object.c: was_destroyed(): new function
7254include/object.h: new typedef tag_t
7255move_apply() returns void, check_walk_on() uses was_destroyed()
7256
7257lib/checkarch.pl:
7258 check for archetypes with walk_on, walk_off, fly_on or fly_off and without
7259 a type
7260 check for archetypes with type FIREWALL (type 62) and without a level
7261
7262* server/apply.c: Bugfix: Don't skip calls to change_skill() if wizard -
7263calc_skill_exp() requires change_skill() to set the current experience object.
7264
7265* server/monster.c: find_mon_throw_ob(): Bugfix: Unapply applied object even
7266if heaviest object was choosen.
7267Bugfix: Use monster_apply_special() to unapply, clearing FLAG_APPLIED isn't
7268enough. -> Should fix the "HAS_READY_BOW without bow" errors.
7269* server/skills.c: find_throw_ob(): Bugfix: Use player_apply(), clearing
7270FLAG_APPLIED isn't enough.
7271Replace redundant check for FLAG_INV_LOCKED with error message at end of
7272function if the first check failed somehow and we have choosen an object with
7273FLAG_INV_LOCKED.
7274make_throw_ob(): error message if object is applied
7275
7276* lib/checkarch.pl: check that potions (type 5, POTION) have a level
7277
7278* server/apply.c: apply_special(): Handle all cases of applying and unapplying
7279skill objects.
7280* server/apply.c: manual_apply(SKILL): Just call apply_special().
7281* server/skill_util.c: change_skill(): Rewrite to simply use apply_special()
7282for changing skills.
7283
7284* server/apply.c: apply_special(): Bugfix: Fixed return values.
7285
7286* server/skill_util.c: link_player_skills(): Bugfix: Don't set exp_obj for
7287(visible) skill tools.
7288* server/skill_util.c: link_player_skills(): Bugfix? Reset op->chosen_skill
7289and FLAG_READY_SKILL because we have unapplied all skills.
7290* server/input.c: legal_range(): Bugfix: range_skill is valid only if
7291op->chosen_skill != NULL, not when there is some (unapplied) skill somewhere
7292in the inventory.
7293* server/login.c: check_login(): Bugfix: call legal_range() after
7294init_player_skills() - we can't handle range_skill correctly if skills haven't
7295been initialized.
7296* server/login.c: check_login(): Bugfix: Check return value of legal_range(),
7297and reset op->contr->shoottype to range_none if range was invalid.
7298* server/login.c: check_login(): Bugfix: Don't call fix_weight() - fixing
7299the weight of _all_ players isn't necessary. Just initialize op->carrying
7300directly with sum_weight() instead. This also removes the problem of
7301updating the weight of an object that hasn't been sent to the client yet.
7302* server/login.c: check_login(): Bugfix: We need to call fix_player()
7303(init_player_skills() needs this, and it also makes the code more robust).
7304
7305* server/apply.c: apply_altar(): Bugfix: Print altar's message before
7306casting the spell.
7307
7308* server/spell_util.c: move_cone(): Use copy_owner() instead of set_owner()
7309and manually correcting the skill and experience object pointers.
7310* server/spell_util.c: cast_cone(): Don't set FLAG_FLYING - the archetype
7311needs to have this anyway for move_cone() to work properly. Instead, print
7312error messages if FLAG_FLYING, FLAG_WALK_ON or FLAG_FLY_ON are missing.
7313
7314* server/apply.c: move_apply(): TRAPDOOR: Bugfix: Multiply by op->nrof when
7315calculating the weight.
7316
7317* randommaps/standalone.c, server/apply.c: fix_auto_apply(): Bugfix: Don't
7318call check_trigger() for objects of type TRIGGER. For other trigger types,
7319call check_trigger() only if there is an object above the trigger.
7320This can be used to implement doors that are only open shortly after the map
7321has been loaded.
7322* common/button.c: check_trigger(): Many changes. The triggers should now
7323behave as described in crossfire.doc. -> This breaks maps that rely on old
7324buggy behaviour.
7325
7326* server/monster.c: monster_apply_below(): will_apply & 1 now also applies
7327TRIGGER objects, not only HANDLE objects. Allows an interesting solution for
7328/asyvan/gate9 if there is no second player who can open the middle grate.
7329
7330* common/button.c: check_trigger(TRIGGER_PEDESTAL) and update_button(PEDESTAL):
7331Bugfix: Handle objects with heads correctly.
7332
7333* server/c_object.c: drop_object() and socket/item.c: look_at(): Bugfix: If a
7334player is moved on top with remove_ob()/insert_ob_in_map(), FLAG_NO_APPLY must
7335be set temporarily.
7336* common/object.c: remove_ob(): Bugfix: Don't call move_apply_func() if
7337FLAG_NO_APPLY is set.
7338
7339* server/apply.c: manual_apply(): Don't call apply_special() for objects
7340that are not in the inventory. Return 2 in this case.
7341* server/apply.c: player_apply_below(): Skip objects for which manual_apply()
7342returned 2.
7343
7344* server/apply.c: apply_spellbook(): Bugfix: Don't give experience for items
7345with FLAG_STARTEQUIP.
7346
7347---------------------------------
7348--- END apply() cleanup patch --- Jan Echternach 26/5/2000
7349---------------------------------
7350
7351server/input.c: modify examine_monster to use the maxhp field instead of
7352the arch hp field to determine healthiness of the monster. Also, give
7353this information for all creatures, not just monsters or players.
7354MSW 5/23/200
7355
7356socket/item.c: Add MAXITEMLEN define at top of file and use that to determine
7357 at what point item commands should be broken up. Prior hard coded value
7358 was not always large enough. MSW 5/23/2000
7359
7360include/define.h: add safe_strcat inline/static function. Add
7361 DESCRIBE_ABILITY_SAFE and DESCRIBE_PATH_SAFE which use the safe_strcat
7362 to prevent buffer overuns.
7363common/item.c: Have query_name use HUGE_BUF for its buffer - query_short_name
7364 uses that buffer size, and we call the same thing. have quer_name and
7365 query_short_name use the safe_strcat function. Increase buffer size
7366 in ring_desc to be a VERY_BIG_BUF and also use safe_strcat along with the
7367 DESCRIBE_*_SAFE macros.
7368server/input.c: Modify examine.c to not get buffer overruns for very long/
7369 complicated items. Modify long_desc to also handle long names/descriptions
7370 without buffer overruns.
7371socket/item.c: Modify the functions that prepend the length to the name
7372 of the object to handle very long (>255) object names properly - now we
7373 just truncate it and only send the first 255 bytes. add function
7374 add_stringlen_to_sockbuf to make this task easier.
7375With the above changes, very long named items/items with very long
7376descriptions works properly in both the server (no crashes) and the
7377client (no crashes/protocol errors) MSW 5/22/2000
7378
7379common/item.c: Modify query_short_name to avoid buffer overflow on long
7380ring descriptions. Also, increased size of buffer in this function so
7381that longer ring descriptions will not get truncated. MSW 5/22/2000
7382
7383server/c_chat.c: Add standard banner to top of file. Fix say command so
7384that it does not crash the server if something beyond 256 characters is
7385spoken - extra data is just truncated. MSW 5/22/2000
7386
7387common/object.c: Splitted set_owner() into set_owner_simple() and
7388set_owner(). copy_owner(): New function.
7389server/spell_util.c: explode_object(): Use copy_owner() instead of setting
7390skill and experience objects manually. Bugfix: Don't use op->owner
7391directly (fixed by using the caster in call to SP_level_dam_adjust(),
7392not the owner, which was wrong anyway).
7393server/spell_util.c: fire_arch_from_position(): Use copy_owner() instead
7394of set_owner() if 'op' isn't the real owner but only a spell object
7395owned by somebody else.
7396server/spell_util.c: move_swarm_spell(): Use the swarm spell object as
7397the owner in call to fire_arch_from_position(), which now handles this
7398case correctly.
7399server/spell_util.c: fire_swarm(): Call tailor_god_spell().
7400server/gods.c: determine_god(): op->type==SWARM_SPELL is a spell.
7401server/gods.c: tailor_god_spell(): op->type==SWARM_SPELL is a spell.
7402Always abort function if we couldn't find a god. Always add god's
7403attacktype if the spellop's attacktype has AT_GODPOWER.
7404- Jan Echternach 22/5/2000
7405
7406common/init.c, common/loger.c, include/logger.h, server/init.c: New
7407log level llevInfo which is the new default log level.
7408Many other files: Use llevInfo instead of llevError where appropriate.
7409Use 'settings.debug >= llevDebug' instead of 'settings.debug'.
7410- Jan Echternach 21/5/2000
7411
7412server/main.c: Use a marker object to track current position in the list
7413of active objects. Using a pointer didn't work because all objects on
7414that list can be removed from it by process_object(). One of the things
7415this fixes is bogus "Free object on list" errors.
7416- Jan Echternach 21/5/2000
7417
7418crossedite/Makefile.in: Modify to use $(MAKE) instead of make when
7419descending into subdirectories - fixes compilation on FreeBSD - MSW 5/17/2000
7420
7421socket/init.c: Fix incorrect check on return value from fread when
7422loading xpm images. MSW 5/17/2000
7423
7424Fix server/spell_effect.c - was assigning altar->other_arch to an object
7425and not archetype MSW 5/16/2000
7426
7427server/spell_effect.c: magic_wall(): Duration of darkness spell now
7428implemented with op->stats.food. This avoids problems with very low
7429speed values that were interpreted as infinite duration.
7430lib/spell_params: Changed duration parameters of darkness spell to
7431give a reasonable duration with the new formula.
7432- Jan Echternach 16/5/2000
7433
7434common/living.c: drain_stat(): There are 7 stats now, not 6.
7435- Jan Echternach 15/5/2000
7436
7437server/rune.c: rune_attack(): Check that victim still exists after
7438hit_player() was missing. This fixes server crashes if monster applied
7439a chest, found a diseased needle and was killed by it.
7440- Jan Echternach 15/5/2000
7441
7442server/spell_effect.c: cast_charm(): out_of_map() check was missing.
7443This fixes server crashes when a player casted this spell near the
7444edge of a map. - Jan Echternach 15/5/2000
7445
7446
7447Make image files and code more generic. This was largely done to make
7448adding support for png files easier, but in reality, it means adding support
7449for any new file format is now trivially easy. Format of the image
7450file is:
7451IMAGE <image num> <datalen> <image name>\n
7452followed by the image data.
7453This allows support for binary image formats (png), but also means that
7454the server doesn't need to know anything about the image format - rather
7455it is all just data as far as the server is concerned. I think this
7456actuallyy loads the xpm data a little faster - it would make sense that
7457it should, since it just reads all the data in with one fread instead
7458of parsing it line by line waiting for the end image delimeter.
7459Note: While png images are loaded, they are currently not supported
7460in the client nor will the server send them - that is the next step
7461in the work, but that will require just a few minor changes to the
7462server - most of those change will be in the client.
7463
7464crossedit/xutil.c: Merge bitmap & pixmap load routine into one called
7465 ReadImages, function modified to use above format.
7466crossedit/App.c: Call ReadImages to load images.
7467include/newserver.h: Change FaceInfo structure to have arrays of data
7468 and datalength instead of explicity entries for pixmap vs bitmap data.
7469lib/adm/make_xpm_file.pl, lib/crossfire.cfb, lib/xbmtobdf.c: Removed -
7470 either note needed or replaced by new naming scheme.
7471lib/adm/collect_images.pl: Replacement/improvement of make_xpm_file.pl
7472 above - this handles all image formats (xbm, xpm, png). This is
7473 also more intelligent in that it will not try to rebuild the image files
7474 if there is not a valid arch directory.
7475lib/crossfire.png, lib/crossfire.xbm (new files): .png file is for png
7476 images. xbm is to keep with the new standardized naming convention used
7477 and is for the bitmaps.
7478lib/crossfire.xpm: New format used in file.
7479lib/Makefile.in: Modified to collect via new script as well as new
7480 directives to collect (png files).
7481socket/init.c: Modified to load with the new format and data structures.
7482socket/request.c: Modified to send data with the new data structures
7483 provided.
7484
7485End of image changes, MSW 5/13/2000
7486
7487configure.in, configure: Add check for perl so that we can call scripts
7488properly - MSW 5/13/2000
7489
7490common/re-cmp.c: Add some tolower calls in the comparisons so most
7491regular expressions should not be case insenstive (makes matches & says
7492work better). Note that I did not change the behaviour on range matches
7493(Z-f for example), as I thought there may be side effects in that case.
7494MSW 5/8/2000
7495
7496socket/request.c: Add length checking to NewPlayerCmd so that if the client
7497sends us a really long command, we just truncate the end of it and not
7498overwrite our internal buffers causing crashes. MSW 5/8/2000
7499
7500server/player.c: add out_of_map check to stand_near_hostile function. This
7501fixes a server crash if the player uses a hiding skill near the edge of a map.
7502MSW 5/8/2000
7503
7504common/arch.c, common/loader.l (loader.c): Modify the load routines
7505to strip off trailing whitespace in object names and other_arch fields -
7506I believe this is why altars to Sorig did not generally work, and while
7507generally that white space should not exist, doing a little extra checking
7508for it is not a bad idea - MSW 4/26/2000
7509
7510Add HOLY_ALTAR type, and use that for praying over for gods and the
7511like.
7512doc/crossfire.doc: Add description of HOLY_ALTAR type and meaning
7513 of fields.
7514common/map.c: Disable consecration code for altars.
7515include/define.h: Add type for HOLY_ALTAR
7516include/sproto.h: Update for change of some functions below.
7517server/c_wiz.c: Modify setgod command to call become_follower with
7518 proper second arg.
7519server/gods.c: Change become_follower to take object pointer to god instead
7520 of name, since the holy_altar has the pointer in its other_arch.
7521 Modify pray_at_altar to use the new fields, as well as fixed
7522 what seemed to be numerous bugs in that function.
7523sever/skills.c: Change check from ALTAR to HOLY_ALTAR, also change
7524 check to see if HOLY_ALTAR is consecrated by looking at the
7525 other_arch field.
7526server/spell_effect.c: Update consecrate so that caster must be
7527 higher effective level than the altar, also update for
7528 differing fields.
7529maps/thomas/sisters/shrine0, map/thomas/sisters/tower0: Remove
7530 title from altars on these maps - these were the only two maps
7531 using old style altars consecrated to a god. Since it appears the
7532 real purpose of the altars on these maps was to trigger something
7533 else, they were kept as old style altars.
7534arch/gods/altars (relocated from arch/indoors, as I think the new
7535 location makes more logical sense): Update for new fields/format.
7536 This also affects lib/archetypes, lib/bmaps.paths, lib/crossfire.xpm,
7537 lib/crossfire.cfb
7538lib/adm/archsearch.pl: Modified to hunt out old archetypes - some of the
7539 changes could be useful in general cases.
7540MSW 4/26/2000
7541
7542server/spell_util.c: Fix move_golem so that multi square avatars (golems)
7543don't hit themselves. Remove will_hit_self function (only used in
7544move_golem), since it did not work. Change structure & indenting of
7545move_golem function so it isn't quite so nested - functionality
7546remains the same. When we do find something to kill in move_golem,
7547call attack_ob against it instead of hit_map - hit_map is not save
7548for multi object hitters. MSW 4/24/2000
7549
7550Key usage change: Add new command 'usekeys' that specify how keys
7551are searched for. The three options are inventory, keyrings, and containers.
7552These options apply to both standard keys and special keys. If the player
7553has a key for the door but it is in a container that will not be used,
7554print a friendly message of the key name and container name. Files
7555affected:
7556help/usekeys: Added describing options
7557lib/Makefile.in: Addition of help/usekeys above.
7558include/player.h: Add new enumeration and entry into player structure
7559include/sproto.h: New function prototype
7560server/apply.c: change of Find_Key to new function with slightly
7561 different options
7562server/c_misc.c: add function to support 'usekeys command.
7563server/commands.c: addition of usekeys command
7564server/player.c: rewrite & rename of find_key command, as well as changes
7565to move_player_attack
7566Mark Wedel 4/21/2000
7567
7568server/spell_effect.c: create_bomb(): New spell_type parameter, merely
7569for consistency with itself and with other spell casting functions.
7570- Jan Echternach 4/19/2000
7571
7572server/spell_effect.c: create_bomb(): Set level of created bomb.
7573Fixes the problem that the splints were casted without a level.
7574- Jan Echternach 4/19/2000
7575
7576lib/checkarch.pl: New perl script to check the archetypes file for
7577obvious bugs (like object that is alive but doesn't have a level).
7578- Jan Echternach 4/17/2000
7579
7580include/spellist.h: "meteor swarm" is now a missile spell (PATH_MISSILE)
7581just like "comet". - Jan Echternach 4/17/2000
7582
7583server/spell_util.c: path_level_mod(): Rewrote to fix countless bugs.
7584New interface with explicit base level parameter.
7585server/spell_effect.c: finger_of_death(): Call path_level_mod() with
7586correct base level.
7587server/spell_util.c: casting_level(): New function that combines
7588SK_level() with path_level_mod().
7589- Jan Echternach 4/17/2000
7590
7591server/spell_util.c: Several cosmetic changes (spell type parameter name
7592is spell_type, arch_to_object(get_archtetype(...)) is equivalent to
7593get_archetype(...), use casting_level() if applicable).
7594- Jan Echternach 4/17/2000
7595
7596server/spell_util.c: fire_swarm(): New 'caster' parameter because
7597owner and caster can be different. Level of the swarm object is casting
7598level of the caster, not overall level of the owner.
7599server/spell_util.c: fire_arch_from_position(): Set level of fired
7600arch to casting level of caster.
7601server/spell_util.c: cast_cone(), cast_smite_spell(): Set level of spell
7602object to casting_level() and not SK_level() to honour path_attuned and
7603path_repelled of the caster.
7604server/spell_util.c: move_cone(): Just copy the level for new cone
7605objects.
7606
7607Missing level meant AT_DEATH didn't work, missing call to
7608path_level_mod()/casting_level() meant path_attuned/path_repelled was
7609ignored. - Jan Echternach 4/17/2000
7610
7611server/player.c: fire_bow(): Set level of fired arrow. Arrows with
7612AT_DEATH are now working. - Jan Echternach 4/17/2000
7613
7614server/player.c: fire(): Call check_skill_to_fire() even for wizards
7615because this function has the important side effect of setting the current
7616skill and experience objects. - Jan Echternach 4/17/2000
7617
7618server/skills.c: do_throw(), server/time.c: stop_arrow(), server/player.c:
7619fire_bow(): Flying arrows and thrown objects have FLAG_NO_PICK set because
7620picking these objects is currently broken (and maybe it shouldn't be
7621possible anyway - picking up a _flying_ arrow?). - Jan Echternach 4/17/2000
7622
7623server/c_wiz.c: set_god(): Didn't work at all because it was trying to
7624set the current player as his own god. - Jan Echternach 4/17/2000
7625
7626server/map.c: check_path(): Return value was wrong if the name did not
7627refer to a regular file. A symptom of this bug was that the server crashed
7628if a wizard tried to enter a directory with the 'goto' command.
7629- Jan Echternach 4/17/2000
7630
7631server/map.c: open_and_uncompress(): Check that the file we have opened
7632is (still) a regular file, fail if it's not. This is the right place
7633for such checks if we want to avoid race conditions (e.g. file replaced by
7634directory while trying to open it). - Jan Echternach 4/17/2000
7635
7636c_party.c commands.c daemon.c disease.c gods.c spell_effect.c spell_util.c:
7637Cosmetic fixes - updates to rcsid string to include right file name as well as
7638updates to mail address and/or additions to top banner. Mark Wedel 4/13/2000
7639
7640Various files: Updated my mailing address to be accurate - Mark Wedel
76414/13/2000
7642
7643doc/playbook/handbook.idx: Automatically generated file removed. This
7644is not something normally included in packed up distributions, so no reason
7645to have it in CVS - Mark Wedel 4/13/2000
7646
7647doc/include_html.pl, doc/playbook/make_index.pl, doc/spoiler-html/makeps.pl,
7648lib/adm/make_xpm_file.pl:
7649
7650Change to use /usr/bin/perl instead of /usr/local/bin/perl - real change is to
7651find perl in configure.in and call the scripts with that. Mark Wedel
76524/13/2000
7653
7654
7655server/input.c: Don't try to calculate spellpoint costs for denied spells,
7656because these are undefined and are now causing lots of BUG messages. Also
7657improved formatting: spellpoint costs can be > 99, and don't fill everything
7658with zeros, use spaces instead. Patch by Jan Echternach, applied & checked in
7659by Mark Wedel, 4/12/2000
7660
7661server/skill_util.c: Fixed some log messages that were lacking a newline at
7662the end. SK_level(): Rewrite of this function to simplify its structure.
7663Print error message if we find an invalid level. Add top copyright/contact
7664banner (msw) Patch by Jan Echternach, applied & checked in by Mark Wedel,
76654/12/2000
7666
7667server/apply.c, server/monster.c: Fix in apply.c for encounter maps
7668so that proper message is generated, and differentiate behaviour if it
7669is a floor vs not a floor. Also, change to both files in that apply_below
7670stops at the floor object. Patch by Jan Echternach, applied & checked in by
7671Mark Wedel, 4/12/2000
7672
7673server/apply.c, doc/crossfire.doc: Fix to prevent server crashes when monster
7674applies poison object. doc file is updated to include accurate information on
7675values in poison object. Patch by Jan Echternach, applied & checked in by
7676Mark Wedel, 4/11/2000
7677
7678CREDITS, server/main.c: Add Peter Gardner to list of credits.
7679Mark Wedel 4/4/2000
7680
7681server/apply.c, improve_armour():
7682Maximum armour value reduced to 90. Items can now always be improved up
7683to this value. For armour x you need level x, not level x + 1 as before.
7684esrv_send_item() and fix_player() also called if only magic value was
7685improved. Patch by Jan Echternach, applied & checked in by Mark Wedel,
76864/4/2000
7687
7688server/attack.c, attack_message():
7689More messages. "grind to dust" is more damage than "shred to pieces".
7690Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
7691
7692server/spell_effect.c, magic_wall():
7693Fix calculation of duration of darkness spell. Before, you could get
7694huge negative speed values with high experience levels, which meant very
7695short duration.
7696Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
7697
7698server/spell_util.c:
76991) New argument of fire_swarm() to specify whether it's a magic attack.
7700All swarm spells except meteor swarm are now magic (just as the
7701underlying basic spell).
77022) New function fire_arch_from_position() which doesn't use the owner's
7703position as the starting position of the fired arch.
77043) move_swarm_spell(): Correctly set owner and magic in call to
7705fire_arch_from_position().
77064) Above changes fixes "cause many wounds" spell
7707Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
7708
7709
7710common/map.c: Change calls in file to use insert_ob_in_map simple.
7711This fixes bugs with buttons not being applied correctly when the map
7712is loaded - the cause is that push_button is getting called for the
7713button before all the objects the button is linked to have been loaded.
7714Then when the map finishes loading, the call to update_button is called
7715and they are not in sync. This change should make loading slightly faster,
7716mostly because it does not call check_walk_on during the loading, so that
7717buttons don't get pushed/changed around. Mark Wedel 3/28/2000
7718
7719server/player.c: If player is using pickup mode 6, only have them pick up
7720the item if they know it is magical. Prior to change, items would be
7721picked up if they are magical, but not if the player knew that, so the code
7722was giving extra knowledge to players. Bug reported by Kurt Fitzner,
7723checked in by Mark Wedel, 3/26/2000
7724
7725common/map.c: Code fix by Kurt Fitzner so that unique maps will get
7726compressed if so needed. Fixes problem of unique maps not being
7727able to get reloaded as they are saved with the compress suffix but
7728not in compressed form. Code checked in by Mark Wedel, 3/26/2000
7729
7730server/skills.c, server/spell_effect.c: Improve behaviour when identifying
7731items - the identify routine already updates the client if it is
7732in the players inventory, so only send update to client if the item is
7733on the map. Also, do full item update, as many fields may change, and
7734that is what the identify function does. Standard top of
7735file banner also added to skills.c file. Fixes problem of
7736objects in inventory being displayed with two numbers in from
7737(ie, two two bows +1).
7738Bug and initial fix of item updates by Kurt Fitzner,
7739implemented in a bit different way by Mark Wedel. 3/26/2000
7740
7741Makefile.in, doc/Makefile.in: Modified so that making the docarchive
7742now works. The make must be done from the top level for it to work, since
7743some values are passed, but the doc/Makefile.in was missing some declarations
7744and had some other fixes that needed to be done. msw 3/22/2000
7745
7746------------------------------------------------------------------------------
7747Changes for 0.95.5:
7748
7749Makefile.in: comment out the EXTRA_FLAGS (which contains the -Wall
7750entry) - the presumption that everyone is going to use gcc to compile
7751crossfire is a poor one, and -Wall is only supported on gcc. I would
7752rather have it compile on the maximum number of systems without it
7753needing changes than to require the end user to make the customizations.
7754A better long term solution is to have configure.in check for gcc or
7755if -Wall is supported it and have it add it in. msw 3/21/2000
7756
7757server/c_object.c: Fix pick_up_object function to deal with non players
7758picking up objects - prior to fix, program would crash when monsters
7759pick up objects. Also, add standard banner at top of file about
7760copyright, contact, version information. msw 3/21/2000
7761
7762CREDITS, README: Updated to contain my new mailing address. In reality,
7763almost all the files have an out of date address for me, but these
7764are probably the ones people will look at most. README also updated
7765with new ftp location. msw 3/20/2000
7766
7767include/Makefile.in: Update files to include material.h - need when
7768packing up new releases - msw 3/20/2000
7769
7770doc/hanbook.ps, doc/spoiler.ps, doc/spoiler-html/spoiler.html: Rebuilt with
7771latest version of crossfire - not sure if there are any content changes, as
7772the tools to build the file have been updated on my system, causing many
7773changes to the prologue and outputted data. - msw 3/20/2000
7774
7775
7776Change doc/spoiler-html/Makefile.in and doc/playbook-html/Makefile.in to use
7777$(datadir) instead of $(C_LIBDIR). Other add AWK and INCDIR lines so that it
7778properly builds with autoconf setup. msw 3/19/2000
7779
7780Change spoiler.tex, handbook.tex to build properly with later versions
7781of tetex - added language specifier when using the babel package.
7782msw 3/19/2000
7783
7784Add missing doc/playbook/fig directory to the CVS reposistory -
7785msw 3/18/2000
7786
7787Change summon_cult_monster code so that it will no longer summon big monsters
7788on top of walls or the player. Also, if there is not space for a big
7789monster, try to find another pet monster that will fit in the space.
7790File affected: server/spell_effect.c - msw
7791
7792Change gorokh.arc to use anim devil instead of anim Lucifer - fixes crash
7793when using avatars of gorokh - msw
7794
7795Split off kill_player function from do some living, and check for player
7796death upon player login. This splits up an otherwise very large function,
7797but more importantly, the second point allows NOT_PERMADEATH to work as
7798expected when the player is dead when logged out. Previous, the if the
7799player was dead when they logged out, it would just kill off the character
7800permanently (without grave marker or anything), even in NOT_PERMADEATH
7801mode. Also, cleaned up player load code to remove code that supported
7802very old style save files.
7803Files changed: server/login.c server/player.c include/sproto.h - msw
7804
7805Change NO_STAT define in living.h,skillist.h,skill_util.c to NO_STAT_VAL
7806to remove conflict on AIX systems. - msw
7807
7808Fix error in configure.in - was referancing BZIP2, when it should have
7809used BZIP - msw 2/7/2000
7810
7811server/skill_util.c: Fixed spelling of unwield
7812configure.in: Update -z checks to not use eval, double quote the variable.
7813This seems to be needed on solaris and probably other systems.
7814Both changes commited by Mark Wedel, 2/7/2000
7815
7816---SMALL BUGFIX--- John Cater 5/11/1999
7817server/attack.c:
7818- changed the logic in hit_player to attack enemy races with holy word
7819playtested
7820
7821
7822---BEGIN BATCH UPDATE--- DAMN 9/17/1999
7823server/alchemy.c:
7824- minor cleanup
7825
7826server/apply.c:
7827- split multiple lighters
7828
7829server/attack.c:
7830- vulnerability gives -4 to saving throw against non-damage attack effects
7831- immunity to acid reduces the probability of corrosion
7832- immunity and protection and not vulnerability to acid prevents corrosion
7833- magic bonus improves item's saving throw against acid
7834- vulnerability to drain doubles rate of exp loss, protection halves rate
7835- holy word slaying is checked in hit_player, no need to double-check
7836in hit_player_attacktype
7837- prot:magic and vuln:magic affect all magical damage, not just raw magic
7838- Holy Word and Turn Undead affect undead at half strength if they're not
7839listed as an enemy race
7840- Holy Word and Turn Undead have no effect on undead if they're listed as
7841a friendly race
7842- minor bugfix/cleanup
7843
7844server/gods.c:
7845- minor bugfix/cleanup
7846- luck slightly improves chance of divine intervention
7847
7848server/input.c:
7849- fixed typo
7850
7851server/main.c:
7852- trivial bulletproofing, probably no effect
7853
7854server/player.c:
7855- sp regen penalty from armour calculated in fix_player instead of being
7856recalculated for each spell point gained.
7857
7858server/shop.c:
7859- payment will come from open pouches if you don't have enough in your
7860top-level inventory
7861- money for sold items will go into open pouches until they're full,
7862then overflow into top-level inventory
7863
7864server/skills.c:
7865- minor bugfix in throwing
7866- writing in one of a stack of books seperates one book out first
7867
7868server/spell_effect.c:
7869- generalized staff_to_snake to animate_weapon
7870
7871server/spell_util.c:
7872- Staff to Snake, Dancing Sword, and Animate Weapon spells now all use
7873animate_weapon function
7874- holy golems avoid damaging their owners
7875- raw mana spells
7876
7877common/living.c:
7878- minor bugfix
7879- fix_player now calculates sp regen penalty from armour
7880
7881common/readable.c:
7882- spelling fix: grimore -> grimoire
7883
7884doc/crossfire.doc:
7885- minor edits
7886
7887include/defines.h:
7888- moved object type numbers to object.h
7889- moved flag numbers to object.h
7890- moved NROFREALSPELLS to spells.h
7891- moved path numbers to spells.h
7892- moved DESCRIBE_PATH macro to spells.h
7893- moved ARMOUR_ and WEAPON_ macros to player.h
7894- moved player state numbers to player.h
7895- moved monster movement numbers to living.h
7896- moved NROFSKILLS to skills.h
7897
7898include/global.h:
7899- #defines from spells.h and material.h loaded early
7900
7901include/object.h:
7902- now has the #defines for object type numbers
7903
7904include/skills.h:
7905- moved NROFSKILLS here
7906
7907include/player.h:
7908- added gen_sp_armour variable
7909
7910include/spellist.h:
7911- added mana spells, Dancing Sword, and Animate Weapon
7912
7913include/spells.h:
7914- moved NROFREALSPELLS here and updated it
7915- now has the #defines for spell path nummbers
7916- added mana spells, Dancing Sword, and Animate Weapon
7917
7918include/sproto.h:
7919- added animate_weapon and pay_from_container prototypes
7920
7921include/material.h:
7922- new
7923
7924lib/spell_params:
7925- added entries for mana spells along with their fire equivalents
7926
7927lib/formulae:
7928- minor spelling fixes to match minor spelling fixes in artifacts
7929
7930lib/artifacts:
7931
7932Weapons
7933- Sanwe -> Gnarg (any weapon)
7934 chance 5, value x10, magic 0, dam 120%
7935
7936- Lythander (any weapon)
7937 chance 5, value x20, magic 0, luck +1, weight 90%
7938
7939- Gwormi -> Gaea (wooden weapons only)
7940 chance 20, value x50, magic 2, regen +1, dam 110%
7941
7942- Slay Demon -> Valriel (any weapon)
7943 chance 15, value x30, magic 2, weapon speed 120%, slaying demon
7944
7945- (new) Gorokh (any weapon)
7946 chance 15, value x30, magic 2, weapon speed 120%, slaying angel
7947
7948- (new) the Devourers (any weapon)
7949 chance 8, value x30, magic 1, attacktype: physical, cold, depletion
7950
7951- (new) Mostrai (axes and hammers only)
7952 chance 10, value x12, magic 1, dam 140%, weight 115%
7953
7954- (new) Sorig (metal weapons only)
7955 chance 5, value x15, magic 1, weight 95%, weapon speed 125%
7956 attacktype physical, electricity
7957
7958- (new) Ruggilli (metal weapons only)
7959 chance 5, value 15, magic 1, weight 85%, weapon speed 110%
7960 attacktype physical, fire
7961
7962Helmets (moved to after weapons, with the rest of the armour)
7963- Lordliness -> Valriel (full helm only)
7964 chance 20, value x50, magic 2, Wis +1, Cha +1
7965
7966- Uriel -> Sorig
7967 chance 10, value x20, magic 1, ac +1, armour 120%, prot electricity
7968
7969Shields
7970- Theodin -> Mostrai
7971 chance 8, value x24, magic 1, prot fire
7972
7973- Gnarg
7974 chance 8, value x12, magic 1, ac +1, armour 180%, Cha -1
7975
7976Gauntlets
7977- (new) Sorig (gauntlets only)
7978 chance 15, value x75, magic 2, armour 10, weight 125%, attack: electricity
7979
7980- (new) Sorig (gloves only)
7981 chance 10, value x10, magic 1, armour 5, weight 125%, prot: electricity
7982
7983Armour
7984- (new) Valriel (plate and scale only)
7985 chance 6, value x20, magic 1, armour 120%, weight 110%
7986
7987- (new) Gorokh (plate and scale only)
7988 chance 6, value x15, magic 1, ac +2, armour 110%, weight 105%
7989
7990- (new) Ruggilli (plate, scale, or dragon armour)
7991 chance 10, value x55, magic 3, ac +1, armour 120%, weight 90%, prot: fire
7992
7993- (new) Gaea
7994 chance 10, value x25, magic 2, ac +1, armour 120%
7995
7996Cloaks
7997- (lesser version of cloak of the Underworld) the Devourers
7998 chance 3, difficulty 3, value x50, magic 3, weight 50%, material 0, Cha -2,
7999 prot: acid, drain, ghosthit, depletion
8000
8001Bows
8002- (new) Valriel
8003 chance 10, value x15, magic 1, weight 110%, damage 200%
8004
8005- (new) Gorokh
8006 chance 15, value x15, magic 2, damage 160%, attacktype: physical, acid
8007
8008- (new) Lythander (not crossbow)
8009 chance 10, value x22, magic 1, weight 75%, wc +1, speed 150%
8010
8011- (new) Ruggilli (crossbow only)
8012 chance 10, value x18, magic 2, weight 85%, wc +1, speed 110%,
8013 attacktype: fire
8014
8015- (new) Sorig
8016 chance 12, value x20, magic 2, weight 95%, wc +1, speed 125%,
8017 attacktype: electricity
8018
8019- (new) Mostrai (crossbow only)
8020 chance 5, value x50, magic 3, damage 140%, speed 75%,
8021 attacktype: weaponmagic
8022
8023- (new) Thunder
8024 chance 10, dificulty 5, value x10, magic 2, weight 90%, damage 150%, wc +2
8025 attacktype: physical, slow, paralyze
8026
8027...and a few minor spelling fixes
8028
8029---END OF BATCH UPDATE--- DAMN 9/17/1999
8030
8031Add crossfire.oc.humbug.org.au server information to README file - msw
8032
8033Change compress method definitions from being determined by checks
8034on system type to having autoconf find the utilities for us. Also, add
8035bzip2 support. Files affected: Makefile.in configure.in common/map.c
8036server/init.c server/login.c include/config.h include/define.h
8037include/autoconf.h.in - msw
8038
8039Fix in server/rune.c - if the victim of a trap/rune is not on a map
8040and the object has a disease, it would crash the server. Temporary
8041fix put in to make sure there is a map, and if not, use a predefined
8042difficult of 1. I think the real issue is how can an object not on a map
8043be setting a trap (in this particular bug, reported by Klaus Elsbernd,
8044the victim was a thrown object) - msw
8045
8046Change by dragonm@absolut.tegris.org - improve crossedit so that if you
8047try to load a map you alreay have in memory, it will raise the window -
8048it will also give you the option to forget, save changes, or just raise
8049the window if the in memory version of that map has been modified. Checked
8050in by msw. (crossedit, App.c, Edit.c, Edit.h)
8051
8052Bugfix in server/apply.c - apply_container()
8053 When checking for keys to locked containers, only searched player's
8054 inventory, not keyrings. Changed to use FindKey function in player.c,
8055 which does search keyrings.
8056 --DAMN
8057
8058Bugfix in server/main.c - enter_exit()
8059 Unique maps were using their actual location as a path for moving to
8060 a new map. They need to use the location of the original map, not
8061 the character's individual copy of it. This is re-constructed from
8062 the individual map's filename, which is based on the original path.
8063 --DAMN
8064
8065Remove xbmtobdf man page - since it is run automatically and it is likely
8066that people will not run it manually (and it appears to be innacruate - or
8067at least imcomplete), may as well remove it. - msw
8068
8069Change install location of man pages to section 6 instead of section 1 - msw
8070
8071New man page submitted by Egbert Hinzen that is actually correct and
8072accurate as the options now relate to crossfire. - msw
8073
8074 This one is a suggested fix for the alchemy bug that grants obscene
8075 amounts of experience for certain formulas. Those formulas are the ones
8076 that create items with a high fixed level, because those items are
8077 pretty worthless otherwise. Dust of Repelling Undead, for example, is
8078 level 30.
8079 The fix I implemented here is to base the chance of success largely
8080 on the level of the product, so it's very difficult to produce
8081 something like Dust of Repelling Undead, and therefore worth the
8082 extra experience. The chance of success is now based on the
8083 following factors:
8084 1) level of product
8085 2) number of ingredients in formula
8086 3) rarity of formula as listed in "formulae" data file
8087 4) number of batches being made
8088 5) Alchemy skill (if present)
8089 6) enchantment of cauldron
8090 7) luck
8091
8092patch from DAMN
8093This one makes a couple things level dependent that used to be fixed:
80941) time it takes Word of Recall to take effect
80952) amount of energy transferred by Transferrence spell
80963) percentage of energy drained by Magic Drain spell
8097
8098Also, the following effects have been modified:
80991) Followers of a cult that considers undead enemies have a penalty to
8100Command Undead.
81012) Magic Drain gives back to the caster a small portion of the energy
8102drained from the victim.
8103
8104And a bug was fixed:
81051) SP_level_dam_adjust used and SP_level_strength_adjust used the
8106player's level, where they should have used the caster's level.
8107 --Patches from DAMN, applied by PeterM
8108
8109Marker object added, alchemy modified so that recipes
8110can require keycodes and MARKS to execute, detectors modified
8111to be able to detect MARKS, and all of this documented in
8112crossfire.doc --PeterM
8113
8114server/gods.c -- changing gods now costs players their special
8115 prayers. --PeterM
8116server/alchemy.c -- levels less than ten no longer produce
8117 cursed items, but only slag or nothing. --PeterM
8118server/shop.c -- unidentified stuff is worth at most 60gp or so.
8119 ---PeterM
8120
8121random_maps/style.c - fix type in the scandir function which cause
8122compilation problems for those systems that actually need it. - msw
8123
8124Change command_cast_spell so that it preserves a return value from
8125find_spell. This re-enables partial spell matching (ie, cast prot
8126will show all spells that start with that.) - msw
8127
8128------------------------------------------------------------------------------
8129Change for 0.95.4:
8130
8131Add better comment in config.h about the DM_MAIL option - msw.
8132
8133Fixed and doc/playbook/Makefile.in doc/spoiler/Makefile.in so it works with
8134autoconf setup.
8135
8136Updated to properly generated handbook.ps when needed - msw
8137
8138doc/crossfire.doc: Updated with disease code notes, detector notes.
8139
8140crossedit: Fix in edit.c to ensure map objects (mainly is_floor objects)
8141are actually removed visually as well as from a pure object standpoint.
8142
8143Change to save_throw_object: If object is in players inventory and
8144is destroyed, send update to client. This can happen when trying to
8145ignite something in the inventory with flint and steel - msw.
8146
8147In apply_lighter, do more accurate check when seeing if the attempted
8148object was actually destroyed. Also, cache the item name so that if
8149it is destroyed, we have a proper name to print out. - msw
8150
8151fireborns changed to have Pow stat bonus instead of Wis
8152stat bonus. --PeterM
8153
8154Some problems in the random map code fixed: specificially,
8155 1) fountains no longer attempted placement outside map
8156 2) Ignore files/dirs named CVS when looking for styles.
8157
8158I changed a few of the maps to have exits to random maps.
8159I made one random house in Scorn, one random exit in the Hall of Bones
8160to an undead maze, another exit to a random map in the hole SE of
8161Scorn, and one in the bottom of the Tower of the Stars. --PeterM
8162
8163
8164Update lib/Makefile.in to create empty bookarch and temp.maps files as
8165part of install process. - msw
8166
8167Change configure.in script so that by default, files will be put in
8168installdir/var/crossfire and installdir/share/crossfire instead of
8169just installdir/var and installdir/share. This allows crossfire to be
8170installed more cleaning without it having its own top level directory.
8171Old installation behaviour can be gained by using --enable-old-layout when
8172running the configure script. - msw
8173
8174Patch by Carsten Pluntke that fixes a problem with unique maps not being
8175properly reloaded after being swapped out (main.c) - msw
8176
8177Fix so that when picking up objects from a container, the client gets
8178an update to remove the object display from the container (ie, if
8179you pick up all the gold coins from a container, the total in the players
8180inventory always got corrected, but the client still displayed some in the
8181container even if there should not be.) The change is in c_object.c - msw
8182
8183Check that hitter has a valid name before it attacks - fixes some
8184crashes (attack.c) - msw
8185
8186Enhance lib/collect.pl to ignore CVS directories - msw.
8187
8188
8189Improve auto_apply functions so that it will create treasures (random_*
8190items) inside other objects. There is still a limit in that it will only
8191look for these objects inside other top level objects - a random potion
8192inside a chest inside a monster will not be processed. But that
8193should be a rare case, and nesting containers very deep has never been
8194well supported in the code. The code affects is in the apply.c file. -msw
8195
8196Add Xaw to start of libraries when linking crossedit - fixes focus problem.
8197File affected configure.in - msw
8198
8199Fixed a bug in the "depletion on death" code. The depletion
8200never had any stat removal specified. --PeterM
8201
8202Remove berzerk code/variable from player structure. The code had
8203no effect - whatever functionality it once had has been removed in the
8204past. - msw
8205
8206
8207Add flag save information for FLAG_CLIENT_SENT that was otherwise
8208missing (loader.l). This fixes the disappearing archetype bug - msw
8209
8210
8211Fixed buffering bug in lowlevel.c
8212 --David
8213
8214------------------------------------------------------------------------------
8215Changes from Crossfire 0.95.2 to 0.95.3:
8216
8217Fixed missing god animations in the archetypes.
8218
8219SIMPLE_EXP option added. From config.h:
8220 * Define this if you want to use the new (0.95.3) experience system.
8221 * The system has the following changes:
8222 *
8223 * 1) 2000 exp need for second level. All additional levels are shifted
8224 * accordingly.
8225 * 2) Your stats in your skill categories don't affect the amount of
8226 * exp you get.
8227 * 3) Your level difference doesn't affect the exp you get for killing
8228 * monsters.
8229 *
8230 * If this commented out, you get the old system.
8231 *
8232 * This can also be set by using -simple-exp/+simple-exp as a run
8233 * time option.
8234
8235
8236Change treasure lists so that stat improving potions won't show up in
8237shop. They should still show up on the ramdom_potion spaces on the
8238maps (may in fact be slightly more common there than before)
8239
8240Move socket related code out of server directory and into socket directory
8241and re-arrange cod so that what is in what file makes more sense.
8242
8243Code from Peter Mardahl to have death result in stat depletion and
8244not actual stat loss. Setable by via STAT_LOSS_ON_DEATH option in config.h
8245or -stat_loss_on_death/+stat_loss_on_death command line
8246options.
8247
8248Patch by Peter Mardahl to change immunity spells from PATH_PROT to PATH_NULL
8249- this will stop gods from giving out these spells.
8250
8251Patch by Peter Mardahl so that players will never fumble the reading
8252of scrolls. You only get half as much exp for reading the scrolls now
8253however.
8254
8255Update the README file - the list of public servers was grossly out of date
8256and mostly removed. The instructions for running/playing were out of date,
8257containing information for servers with the old X11 code.
8258
8259Change CAN_MERGE so that identified items with different been_applied
8260will merge (this is currently done by just setting the been_applied flags
8261for the object in CAN_MERGE if they have been identified)
8262
8263Temporary fix for disease code - I was seeing endless loops in weight
8264contributions because an disease object op->env points back at itself.
8265In do_symptoms, we check to see if the victim matches the disease we
8266are about to infect them with, and if so, don't proceed further. The
8267cause of this pointer recursion needs to be found instead of
8268this current fix.
8269
8270Change daemon.c so that hpux systems can also use ioctl (.., TIOCTTY, ..)
8271call in addition to SYSV systems.
8272
8273players and logs command added. players show all current player names
8274currently in use, logs show sockets that are currently listening for
8275kill log information. Add limited support for some commands from
8276the socket (hiscore, logs, maps, motd, players, version, who).
8277After socket has been authenticated to have valid server, shout and tell
8278also available. To switch socket into old style mode, first command
8279entered should be 'oldsocketmode'. Server code then knows not to
8280prepend packet length information, so most functions work on this new
8281socket without any changes.
8282
8283Add verify_player function to login.c (takes name and password and verifies
8284they are ok - used for old socket emulation). Also notify all
8285players when a player joins the game (this must have gotten removed
8286at some point).
8287
8288change prototype for cs_write_string to take a constant string. In
8289readpacket, have it read in 100 bytes even if length information looks
8290incorrect (allows easier initial switching to oldsocketmode). If
8291the length of the input buffer is for some reason negative, call abort.
8292
8293Clean up nconns in socket.c - it was being increased 2 times when
8294a socket was added, and decreased by 2 when a socket was removed.
8295Add newline to initial version command so people telneting in for
8296old socket compatibilty get something a little more presentable.
8297command char pointer added to newsocket structure - used for player
8298name or listener html address. Fix in memory overrun/corruption when
8299freeing the last allocated socket - it would write data beyond the allocated
8300data.
8301
8302if new_draw_info is called to notify everyone, also notify sockets
8303running in old mode if it isn't a kill log listener.
8304
8305Update commands.h file so that it won't declare various values if included
8306multiple times - only the first time it is included will it declare the
8307values.
8308
8309Add extern declaration for init_sockets to global.h since other functions
8310now need to access them.
8311
8312Who command extended to also show active socket connections without a player
8313attached.
8314
8315Kill log (watchable from socket) added.
8316
8317Add support to use old socket commands on the new port.
8318
8319Fix by Seikoh Nishita for weapons that slay multiple creatures - before
8320fix, they would not slay anything (args to strstr were reversed)
8321
8322Don't give out exp for orating to monsters owned by another player - fixes
8323abuse since 2 players could quickly orate back and forth and gets lots of
8324exp. The orate function was also cleaned up a bit to be more efficient
8325(presumption is made that there is only 1 monster on any one space, so once
8326we find one, there is no need to do further processing)
8327
8328If door is passable, print a message to the player if he tries to
8329pick the lock and don't let them pick it (examples here are the
8330doors which you can walk through)
8331
8332Fix by Seikoh Nishita that should prevent some crashes when exiting
8333shops - appears that there could be circumstances when i was trying
8334to referance a null pointer in an error message.
8335
8336Add popen_local for sgi systems - without this, sgi can only open one
8337compressed map before it fails to open further compressed maps.
8338
8339Fix by Timo Kokkonen so that resurrection works with the new player
8340save method. This should also fix the problem that dead players when
8341using PERMADEATH being able to log in after dying.
8342
8343Allow FORCE objects to increase digestion/hp/sp/grace regeneration.
8344
8345Remove style.h file, since we now have an automatically generated proto file
8346from random directory source. Also fix in makefine to use proper ar
8347when creating the archive.
8348
8349Add 'race *' to maps/styles/misc/fountains - this fixes a crash when
8350entering random maps.
8351
8352If use presses an incorrect key at the play again prompt, reprint the
8353play again question.
8354
8355Change find_free_spot to return -1 if no spot available, update calls so
8356check for this return value instead of 0 (value = means current spot
8357available)
8358
8359Change pet movement so that pets should no longer jump walls.
8360
8361Update configure, makefiles, and code to use proper locations of installed
8362files (no longer $prefix/lib, instead $prefix/share for read only,
8363and $prefix/var for read/write.
8364
8365When using a special key to open the door, print a message informing the
8366player what key was used to open the door.
8367
8368Minor map cleanups/changes. Some improper exits changed to point the
8369right place, extraneous style maps removed due to new gods, other maps
8370updated to replace now missing altars with their replacements.
8371
8372Change gate code logic so instead of using speed to determine if the object
8373can move itself, we instead check the ALIVE flag (this fixes problems for
8374animated objects, and is a more accurate method in any case.)
8375
8376Fix by S.Nishita so that containers on the ground get properly unapplied
8377when player moves off them.
8378
8379Fix by S.Yoshioka's so that damage for cone spells is calculated properly
8380as they propogate.
8381
8382Remove server side referances to INFOLINES and INFOCHARS, since that is now
8383controlled by the client.
8384
8385Code cleanup to random map generator to prevent compiler warnings.
8386Also, change comparision of val == 0x1 to val-1 = null, since the
8387later is more portable.
8388
8389added some missing newlines to log messages in the newsocket.c file.
8390
8391fix pickup modes some - mode 4 appeared to work ok (pickup all), but mode
83925 wasn't working right (pickup all and stop). I have tested the modes
8393with the X11 client, and they all appear to work properly.
8394
8395House of Healing map (with link from starting city) added by Peter Mardahl.
8396
8397Change player move code so you will no longer swap spaces with a pet
8398monster/other friendly object is you are braced.
8399
8400Fix off by one error in the buffering socket buffering code - this would
8401cause buffer overflows if the data being added equaled exactly the buffer
8402size+1. Similar fix when reading in packets
8403
8404Increase NROFATTACKS to 24 in define.h so the AT_INTERNAL attacktype
8405work properly.
8406
8407Patch by S.Yoshioka so that godpower/holyword spells are not magical.
8408
8409Fix in attack.c by S.Yoshioka to call free_object instead of free for
8410splitting monsters.
8411
8412Fix by S.Yoshioka so that magic bullet or other pure magic spells do
8413damage to other parts of multisquare monsters.
8414
8415Fix by S.Yoshioka so that you can not get exp in other skills with cone
8416spells.
8417
8418Fix by Seikoh Nishita so that magic walsl can not be placed on top of
8419other walls/monsters.
8420
8421Fix by Seikoh Nishita so that we don't clear the NO_STEAL flag on
8422insert_ob_in_map - this makes singing/stealting from the same monster
8423multiple times impossible.
8424
8425Patch by Seikoh Nishita so that boulders will roll off gates.
8426
8427Have server send updated weight of container when dropping all items from
8428a container.
8429
8430New random map decore styles for new religions added.
8431
8432Patches from James Cameron to fix compile errors/warnings.
8433
8434Fix missing animations for some of the gods.
8435
8436Remove *.orig files from maps/picks directory.
8437
8438Maps updated wtih dtabb 2.60, navar_city 2.40 maps from John Cater.
8439
8440------------------------------------------------------------------------------
8441Changes from Crossfire 0.95.1 to 0.95.2:
8442
8443speed_left values should not be changed when loading/saving maps with the
8444editor.
8445
8446Map updates from Anthony Tyson and others (990128 version)
8447
8448Note: I was unable to reproduce the staff to snake killing the client bug.
8449If still in this client/server release, please let me know.
8450
8451Set player->count in esrv_move_item when picking up objects. This fixes
8452a bug introduced in 0.95.1 for the improved pickup code which only allowed
8453picking up of all the objects on the ground.
8454
8455lifesaving items should now disappear from client inventory after they
8456are used.
8457
8458Improve decrease_ob_nr so that items dropped on the ground will get removed
8459from the players inventory if they are used up (fixes bug where you drop
8460the last of some item on an altar but it would not disappear from your
8461inventory)
8462
8463Add check to add_exp so that we don't add experience to non living creatures.
8464This should fix the thrown objects getting lots of speed bug.
8465
8466Random map code by Peter Mardahl added. Various changes made so it will
8467compile on non gcc systems as well as non bsd systems.
8468
8469Another fix for pits (holes) so objects should drop through. The fix
8470in the last release made fixed a possible infinite loop, but also made
8471it that once an object on the pit could not drop through, no other objects
8472on the pit would drop through. The change made will attempt to drop all
8473objects through the pit, but also not run into a problem with infinite loops.
8474
8475Update pedestal and detector code to also match on the lockcode of the
8476special keys.
8477
8478Change detector function to call push_button instead of update_button.
8479The later would only change the state of buttons, which doesn't do much
8480good when you want to open a gate. push_button will cause gates and
8481other connected objects to open.
8482
8483Change move_gate so that it won't roll off things like grass or other
8484immovable objects.
8485
8486Update configure script to check for scandir function (needed by disease
8487code) - if not found, then check in -lucb.
8488
8489Disease code from Peter Mardahl added.
8490
8491add break value in while loop in generate artifact message (readable.c) so
8492we eventually break out if no match is found.
8493
8494reduce minimum supported map size in crossedit to 1x1
8495
8496Don't let characters be easily saved on unholy ground. Player can't issue
8497'save' command when on unholy ground, and we don't autosave if on unholy
8498ground.
8499
8500Improve pickup code mode 6 (pickup magic item) - call is_magical to
8501determine if an item is magical instead of relying on known_magical flag.
8502
8503If the player has a marked item in need of identifying, identify that
8504specific item first when an apply altar is used. This allows a player
8505to selective choose what to identify.
8506
8507Fix in apply code between server and client. Containers on the ground
8508now work properly. Server side simplified a bit, and updated to be a bit
8509more bandwidth efficient (use update item to open/close containers.) Client
8510updated to handle updating its container status via the update commands.
8511
8512Fix in pay_for_item in that it will not mistake kobans or other coins for
8513gold coins when making change (or converting the older coins into new
8514coins with the same arch but with a different value)
8515
8516Have player swap places with pet monster even if player no longer has peacful
8517set.
8518
8519At confirmation when player quits, inform them that quitting will delete
8520the chararacter.
8521
8522When a weapon is improved by the god, if it had no prior attactkype set,
8523give it physical attacktype in addition to what the god gives it.
8524
8525By default, make new players peaceful.
8526
8527Fix up the fire cancellation function - it seems some of the code wasn't
8528quite right (inserting in map vs setting the owner.) The fix should
8529prevent some core dumps this could have caused.
8530
8531Fix for main loop in socket.c that should prevent infinite loops when
8532a socket dies in some improper way. It should now drop the connection
8533properly and continue with processing.
8534
8535Autoconf fixes - check for canonical system, specail check for
8536alpha-dec-osf to add -std1 to cflags, add check for latex, add check
8537for BOURNE_SHELL (this is used in hte makefiles, as some os's will use
8538the users shell, but some constructs we use require bourne type shell),
8539add check for number of args gettimeofday uses, change order when
8540we create the makefiles to be proper.
8541
8542Use autoconf check above to get correct number of args for gettimeofday.
8543
8544Fix from Anthony Thyssen for the editor - should hopefully fix problem with
8545delete not deleting the correct object.
8546
8547Remove font displaymode from editor - since we are not distributing any
8548fonts anymore, doesn't make a lot of sense to support it.
8549
8550When connection is lost from player, save off the character - prevents
8551items being dropped on the floor or the players duplicating the items.
8552However, some additional logic will need to be added to prevent players
8553from saving their characters in treasure rooms.
8554
8555Improvements in save_player which should better prevent saves from
8556happening at inopportune times (like after they have mostly exited).
8557
8558Add stat_loss_on_death option (yes/no if stat is subtracted when you die.)
8559Default can be set in config.h, and can also be changed with run
8560time flags.
8561
8562Add / behind -I@x_includes@ in crossedit/Makefile.in. This should prevent
8563the includes from being reset if there are no x_includes.
8564
8565Extend draw_look to send multiple item commands - this should only happen
8566if there are a lot of items on one square. Fix should prevent crashes/memory
8567corruption in that case.
8568
8569------------------------------------------------------------------------------
8570Changes from Crossfire 0.95.0 to 0.95.1:
8571
8572Fix server crash if player ran into friendly object.
8573
8574Strip extra spaces that may be between the command and option (ie,
8575"use_skill disarm" would result in " disarm" getting passed to the appropriate
8576command function. Some functions could deal with this, others did not,
8577and it makes sense to strip them out.
8578
8579Send update to client to remove item from players inventory when it
8580disintegrates (demon ichors for example).
8581
8582Change load code so that player handling on unique maps should work better
8583(I believe there were various strange cases if the player saved on a
8584per player unique map and that map was or was not in memory, it might not
8585load the per player unique map)
8586
8587Removed player file lockin during login. Extra lock files get left
8588laying around in aborted login attempts. And in retrospect, I don't
8589think it is ever really needed.
8590
8591Some excessive/annoying debugging messages removed.
8592
8593Some general cleanup in some functions that were previous setting
8594automatic variables. If the variables are none changing, we now declare
8595them static, otherwise we don't set the value as the initialization
8596area - this prevents warnings with some compilers. Some casts added for
8597some functions to also prevent warning messages.
8598
8599Remove HAVE_SAVE_UID in config.h - no longer any code using it.
8600
8601In free_player, only call remove_ob on pl->ob if it is not already removed.
8602This fixes crashes when a player kills there login session before
8603it is completed.
8604
8605Instead of calling draw_look (which causes all data on that space being
8606sent to the client) each time the space changes, instead mark that we
8607need to send that change, and have code higher up (top processing loop)
8608send the data each tick if it needs to be send. This should result in less
8609data being sent, and is easier to process.
8610
8611Add flag_client_sent for debugging purposes - makes it much easier to
8612trace down cases where server was sending updates without actually having
8613sent the object yet. Most all of those cases are fixed with the new draw_look
8614logic mentioned above. Add dump_object_from_tag to figure help figure out
8615the objects generating messages. dumptag command is available from within
8616the game if compiled with DEBUG to use this fucntion.
8617
8618Pup land maps updated to version 1.3.
8619
8620Fixes in configure script to autodetect X11 libraries better. Fixes
8621also in Makefiles so all rules should work and all needed variables should
8622now be expanded. Add checks for a few more header files. Makefile fixes
8623also include changes so that archive is packed in proper order that it should
8624not try to rebuild pregenerated files. Master makefile now set to
8625make bzip2 archives in addition to gzip archives.
8626
8627Added watchdog code from Christian Stieber - periodically sends out UDP
8628packets so other programs can watch for them and restart the server if it
8629doesn't see them (hung or down server).
8630
8631Added ISQRT macro to spell_effect.c - seemed that the code was changed
8632a while back but that function wasn't added. It was only needed of
8633SPELL_FAILURE_EFFECTS is compiled in as an option.
8634
8635Simplify checking of MAXNAMELEN in crossedite/include/Posix.h
8636
8637Updated list of options you get when you do -help - removed old options that
8638are no longer around and added new ones.
8639
8640Dropping an active container will now result in all the items in the
8641container being dropped, and not the container itself. It could be argued
8642this should be a client issue (client send a move for each item in the
8643container). However, dropping everything in the container should be faster
8644than individually dropping (ie, you turn the container upside down), and
8645client dropping them one by one would result in that many commands of the
8646player being used.
8647
8648Change esrv_move_object to use the pick_up function instead of pick_up_object.
8649The difference here is that pick_up will look for matching containers, so
8650players manually picking stuff up in the client will have items go into
8651active containers as appropriate. However, this can also cause problems
8652with smarter clients that really want the object to go into the players
8653inventory and not a container (I don't think any will have that problem
8654currently)
8655
8656Fix in apply for holes - return 0 if we can not move the monster through
8657the hole - this prevents an infinite loop in move_hole in time.c
8658
8659Added internal buffering for sockets if the OS's buffers fills up. This
8660greatly improves reliability in the client. Size of buffering is
8661setable in config.h
8662
8663Fixed makefile dependancies - make install should now depend on the
8664actual programs it plans to install.
8665
8666Fix some bugs in the animation code - most notable is animations with
8667just 2 facings like the quetcoutal. Changes to archetypes is to
8668change the half orc to have 4 facings the quetzalcatl to have 2 facings.
8669
8670Fixed animations to always use the direction value for determing object
8671animations.
8672
8673Change examine code so that if the first thing in an object message field
8674is @match, don't display the message.
8675
8676Fix map update code that wasn't calling update_los before sending the
8677map to the client.
8678
8679Fix from Timo Kokkonen for socket code - check to see if we got an
8680interrupted system call (EINTR) on a read/write - if so, loop until it
8681clears or we get a real error. Apparantly greatly improved reliability
8682of the server.
8683
8684------------------------------------------------------------------------------
8685Changes from Crossfire 0.94.3 to 0.95.0:
8686
8687Added diagnostic message if you try to use a skill and it can't find a match
8688
8689Fix in send item command to better handle objects with a huge number of
8690items in its inventory.
8691
8692Shop listing code simplified - send all data to the client at once instead of
8693havign to store it and wait for the player to hit a keypress.
8694
8695Fix bug in ghosthit which would cause server to crash (patch for 0.94.3
8696was released for this bug)
8697
8698Some general code cleanup - fixing/removing unreachable statements, removing
8699unused variable.
8700
8701Build/configuration now done by autoconf (run ./configure). This cleans up
8702a lot of special checks throughout the program, and hopefully should be
8703more portable.
8704
8705Cleaned up/rearranaged the include/.h files. Prior, most all structures
8706where included in structs.h. Structures and support values now in unique
8707header files (ie, player structure and support enums and like in player.h,
8708object structure and support in object.h, etc.). This doesn't change the
8709working on the code, but is just easier to maintain. global.h takes care
8710of including these is the correct order.
8711
8712Many options now removed from config.h file. Options removed either relate
8713to X11 code/old server support or machine specific details which we can
8714now pick up via autoconf.
8715
8716Better speed checking in update_object_speed.
8717
8718When improving a weapon, client should now get updated (code was updating
8719the incorrect object)
8720
8721Improve apply below to be more bug free (that is to say, we preserve
8722the pointer to the next object - I think there were cases where the
8723last of an object was applied, and thus removed, but the apply function
8724did not return a code specifying something was applied, so the code would
8725then try to apply an object with an invalid pointer)
8726
8727Fix for collect.pl script to fix problem traversing directories.
8728
8729(note for 0.95.0, there were many large scale changes, so many of the
8730entries below are more of just an overview of what changed, and not a highly
8731detailed account of the changes.)
8732
8733Fix/improvement in player movers so that players trying to run in the
8734direction they move don't move incredibly fast. They will still seem to
8735move faster (I am guessing roughly player speed + mover speed now). I am
8736not sure of the original bug, but my guess is that the mover moves the
8737player to the next mover (which has a low speed). But now the player still
8738has his own action left, and moves to the next mover which has high speed,
8739so wisks the player to the next mover, which has low speed, so he
8740effectively moves 3 spaces in one tick when he should just move one.
8741
8742Changed save player method so that a directory is created for each
8743player.
8744
8745Added per player unique maps (new apartments). Maps from Christian
8746Stieber, however the implementation is a bit different - if an exit is
8747marked as unique, it will lead to a unique maps. The unique maps are
8748stored in the new player save file directories as above.
8749
8750Removed all X11 support from the server code. Change crossedit so that
8751it can read in the pixmaps as they are stored in for the client/server
8752support (so that only 1 copy needs to be kept). This method of reading them
8753in is slower than the montage method unfortunately.
8754
8755Changed socket handling. Port 13326 has been removed from active service.
8756Socket information is now part of player structure, which cleans up a lot
8757of the old code which had to do with find the player that correlates to
8758a socket and vice versa.
8759
8760Fix bug so that if invaliad variable is given to dm 'patch' command, program
8761no longer crashes.
8762
8763Fix bug so that containers that have a huge number of items don't crash
8764the server (a container needed to have more than 250 items for this to
8765happen). The real problem is containers that allow an infinite amount of
8766junk to be stored in them (Lepreds bag, but this item/map isn't part of the
8767standard distribution). Even with the fix, there still becomes some point
8768where problems will occur (around 2000 items, the amount of data that
8769needs to be sent would exceed the size of the output buffer). In any
8770case, with that many items in place, the player will see a noticable
8771performance hit when such containers are opened.
8772
8773Fix bug that caused the program to crash when attacking ghost or other
8774creatures with ONE_HIT flag set.
8775
8776Print out message to player if they have old keybindings.
8777
8778Some map fixes by Christian Stieber - eliminate ability to bypass
8779quest and typo fixed in other map.
8780
8781Fix so that perceive spell (off of rods/staves/scrolls) properly finds
8782the god of the player.
8783
8784------------------------------------------------------------------------------
8785Changes from Crossfire 0.94.2 to 0.94.3:
8786
8787Fixes to some recipes - before some had non existant ingredients.
8788As part of this, a treasurelist for ogres added.
8789
8790archsearch.pl function added to lib/adm. Useful little perl script that
8791can do object context searches (ie, immune to X and attacktype of Y)
8792
8793Old loader code removed - only lex loader supported now (no bugs reported,
8794so it seems to be OK)
8795
8796Debugging output improved in various areas to be easier to read/better
8797inform what is happening.
8798
8799Hopeful fix in place to prevent player movers causing players to have
8800-infinite in speed_left. Fix right now is to just limit speed_left
8801to -50 - I believe the real problem is that some player moves have
8802speed=0.0, and it is diving by that value.
8803
8804Fix so that if a player dimension doors onto a player mover, he no longer
8805gets stuck in an endless loop - he will now move along the movers as
8806expected.
8807
8808When a player dies in NOT_PERMADEATH mode, clear the braced flag.
8809
8810In the case of spell failure, don't cast mana storm in no magic areas
8811(instead, just kill the player)
8812
8813Only write out an updated bookarchive if data has actually changed and needs
8814to be written out.
8815
8816Don't print out new client server usage logging if nothing has changed.
8817
8818Reduced power of 'loose mana' (it appears this only happens when a spell
8819is failed really badly). It seemed to me that the area of affect and
8820damage could be many times deadlier than anything else out there.
8821
8822Hopeful bug fix for thrown objects getting very fast speed (I am unable
8823to reliably reproduce this, so am not sure.) Basically, I believe the
8824problem was that set_owner was only being set for the wrapper in the
8825thrown object, but it is the actual internal object that gets used at
8826some point in the attack sequence. As such, I believe that the knife,
8827spear, whatever was getting the exp for the kill (exp = speed in
8828weapons). To hopefully fix this, I have also added a set_owner call
8829on the real object so when it goes to grant exp, it should find a
8830valid place for it and credit the player and not the weapon.
8831
8832Changed spell parsing so 'of' is not needed in some complex
8833spells (ie, create food or marking rune). From kfitzner@nexus.v-wave.com
8834
8835Fixed bug in which you could kill multispace monsters with paralyze or
8836slow attacktypes.
8837
8838Added ncom and comc commands to client and server. These commands allow
8839client command queing/dropping (note that server will only send a comc if it
8840gets a ncom first, so old clients should still work just fine). The
8841protocol numbers increased to 1021.
8842
8843Added more objects to the show invisible list - hopefully the pupland
8844maps should now be fully playable.
8845
8846RPLAY_SOUND definitions changed to RPLAY_SND - should make for cleaner
8847compilations for those using that.
8848
8849Fixed #ifdef for NetBSD in common/time.c to use proper symbol.
8850
8851Fix so that counterspell should no longer kill monsters with magic
8852attacktype (ie, jessys and probably others)
8853
8854Added debugging in deathstrike code to hopefully be able to better track
8855down face of death problems. My guess is that it is a problem with level
8856comparisons.
8857
8858Fixed/clarified many nexted if/else statements that were ambiguous. Now
8859braces are properly in place (From Klaus Elsbernd)
8860
8861Hopeful bug for disappear objects when emptying bags. I believe the
8862problem was that invisible objects ended up showing up in the containers
8863somehow - this by itself is not a problem. However, the empty bag
8864function calls drop with the object to drop and keeps the next value -
8865however, drop would forward past the invisible object so the calling functions
8866next value is no longer accurate. Drop function now does not skip over
8867invisible objects in containers (will skip over them in player inventory) -
8868it instead removes the invisible object since I believe it is garbage
8869anyways. I am not sure if this will fix the problem, but there was
8870certainly some problem in the code here.
8871
8872Fixed bug with multipart monsters & pits. Before, they got split into
8873a few parts like a magician trick. Now they stay in one piece. At
8874current time, the logic probably isn't great, as all that is currently checked
8875for is the head of monster being on a pit - in reality, probably all the
8876monster parts need to be on a pit.
8877
8878-m9 and -mt options added (Code from Raphakl Quinet). Formulas have
8879been fixed such that all are now creatable (none missing archetypes). However,
8880the output still shows some formulas out of balance in terms of costs.
8881
8882Changed AT_GHOSTHIT meaning and added ONE_HIT flag. GHOSTHIT is now treated
8883like any other attacktype (monster will not be removed just for having
8884ghosthit). ONE_HIT flag now means the monster will disappear. This fixes
8885the acid sphere deadliness (before, they did have ghosthit as an
8886attacktype). All the objects with ghosthit have been updated. However,
8887there are probably some other undead which could now have ghosthit added
8888to their attacktypes since it won't cause them to disappear now.
8889
8890Updated the programming_guide doc. Hopefully, it is a bit easier to read
8891and a little more accurate.
8892
8893Improved polymorph. Invisible objects should no longer appear. Also improved
8894so that all objects of a type would be possible results (before, it would
8895be the first 80 weapons would be chosen from, or the first 80 monsters, etc.)
8896Now it is unlimited. Smarter initial selection should also result in
8897a few less meltdowns from it now being able to find an acceptable object.
8898Also, possible fix that could cause crashes on rare occasion (monster
8899polymorphed into something else, and when inserted into the map, something
8900on that space kills it) Also, we stop processing a space once we hit the
8901floor - I don't recall floor types ever changing anyways, but there could
8902be other problems processing subfloor items.
8903
8904------------------------------------------------------------------------------
8905Changes from Crossfire 0.94.1 to 0.94.2:
8906
8907Changed calls to send_query on server side to include the string on what
8908the query is for. This is to make clients be able to do smarter/nicer
8909things when it receives a query.
8910
8911Bug fix in check_walk_on which would cause crashes when objects are put on
8912spaces with multiple destructive forces (ie, earthwall cast on top of
8913a double pool of chaos). Once check_walk_on finds that the item has
8914been freed, it stops doing any further processing on it.
8915
8916Animation code cleaned up. Animations are now object properties, and not
8917archetype properties (and thus can be changed in maps). Also cleaned up so
8918that the is_turning flag is removed - more complex animations available via
8919the num_facings. Below is the section from the TODO file. Note that there
8920is still potential to improve animations (many 1 frame animations could take
8921advantage of the new code to have multi frame (ie, players can now have
8922images for all directions, and animations for each of those) New code is in
8923common/anim.c:
8924 Clean up animation code and make it more general purpose (instead of
8925 is_animated and is_turning flags, instead add a value that
8926 states how many animations/direction there are. For example, right
8927 now the big dragon has 8 animations and 2 facings (left & right), with
8928 4 animations/facing. Something like num_facings could be added so we
8929 know there is 2 facings. For arrows, num_facings would be 8, so we
8930 know that it shouldn't be animated (since there are only 8 images in its
8931 animation.) This would make the code a little cleaner, and allow better/
8932 more complex animations (an object that faces 8 directions could have
8933 animations for all directions, were as right now, that is not possible.)
8934
8935collect.pl changed to handle generation of animation file.
8936
8937Wipe below added to crossedit by Steven Unruh
8938
8939removed non NEW_HIT_PLAYER in attack.c (ie, old attack code removed)
8940
8941Added hitback code (looks like it was missing from the NEW_HIT_PLAYER
8942code)
8943
8944dm commands will now be accepted from the new client (provided they
8945have dm priveledges of course)
8946
8947Add AT_INTERNAL attacktype used only for internal calculations (ie,
8948does that amount of damage). Actual damage section of poison now
8949uses this.
8950
8951Fix spoiler generation - don't convert monster archetype names to
8952lowercase - images generated properly for them now. Also, fixed problem
8953with some images (dragon) being rotated when they shouldn't.
8954
8955Clear INV_LOCKED flag when stealing objects.
8956
8957Fixed couple of bugs in throw code. First, players remaining speed
8958calculation seemed incorrect. Second, you can now specify an object
8959name to throw (ie, throw ring, throw chair). Third, the client now
8960gets properly updated with the new/changed item.
8961
8962Make UNIQUE_ITEMS standard feature. Removed LOCK_ITEMS as a secondary
8963feature - running multiple servers against the same set of files is no
8964longer supported. Note for compatibility reasons of both methods, it will
8965look for unique files starting at v00 and will write new ones with the .v00
8966extensions. If you have .v01 files, these will be read in the first time
8967through (provided you also don't have a .v00), but all new files will be
8968written with the .v00 extension. Referances to ITEMS_DIR changed to
8969be UNIQUE_DIR - I think that is more descriptive. This includes
8970the environmental variable.
8971
8972Change ok_to_put_more to do more complete checking and also not to stop
8973spells because of a monster with certain immunities being on a space.
8974
8975If hit_player is called with the 'tail' of a monster, it would previously
8976just exit if the attacktype included slow or paralyze functions (must
8977hit the head with those.) Changed hit_player so we just remove
8978the slow and paralyze, and still hit with any remaining attacktypes.
8979
8980change explode_object so it only hits the monster once with the bullet/
8981meteor. Previously, it called hit_map, which then hit the player, and
8982then called hit_player again. This effectively doubled the amount of damage
8983caused by the bullet - it now does the correct amount of damage. As
8984best as I can tell, meteor/meteor swarm does properly damage the monster
8985even if the tail was hit.
8986
8987Bug fix in singing so exp should now be granted the first time singing
8988is used on a monster.
8989
8990Changed so that server can be compiled with new client/server support but
8991without old (port 13326) support. Various sections of code updated to
8992work/compile in such a setting.
8993
8994Fixed premature freeing of map->tmpanme. Now in delete_map instead.
8995
8996Added checking in free_object to see if we are called on a non removed
8997object. IF many cores is defined, will dump core here. I believe there
8998is some section of code calling free_object on a monster without calling
8999remove_object, which is causing a lot of error/warning messages when it
9000happens (very infrequently.) With this test in, it should become quite easy
9001to track down when it happens.
9002
9003Added free bsd & net bsd to those systems whose gettimeofday takes 2
9004arguments (common/time.c) -lcompat added to libraries needed for
9005FreeBsd. Include unistd.h on freebsd. Don't include malloc.h in
9006xbmtobdf.c on freebsd.
9007
9008Sample ban_file added to lib. Read in of ban_file will now
9009ignore lines that start with #. Also, animations file (used for new
9010animation code) included.
9011
9012Config file rearranged to hopefully be in better sections and easier
9013to edit. NEW_IMPROVE_WEAPON and SIMPLE_PARTY_SYSTEMS removed from options -
9014now always selected. NO_LOG, ONE_PLAYER_PR_UID, CHRFONT removed from
9015sections - these can never be valid. NO_ADD added to prevent players
9016from adding others
9017
9018Server updated to send full lines of text with query commands to client
9019so for clients that pop up a dialog box, they can print meaningful data
9020on what the request is for.
9021
9022Bug fix so that you can no longer apply multiple objects of the same
9023type with apply -a
9024
9025Give better messages when attempting to light something.
9026
9027New client/server statistic gathering added - will periodically dump
9028usage stats to the log file. Server will now longer crash if
9029client/supposed client sends bad data - will now just close the connection
9030instead.
9031
9032Server will not longer crash when player runs into a door.
9033
9034Can now longer polymorph objects into items that are invisible.
9035
9036Removed client directory from main archive. Too many people thought that
9037was the new client creating confusion, and I don't see a big need to have
9038it around (it will go away when the X11 code is yanked from the
9039server anyways0. If you still like it, the old version of it will work just
9040fine (no changes have been made to it in a very long time0
9041
9042Map changes:
9043 color_ removed from map files.
9044 library card cost decreased some.
9045 oldcity maps updated to take full advantage of XPM mode..
9046 Lake_Country/DA map changed - exp reduced, sp increased.
9047
9048------------------------------------------------------------------------------
9049Changes from Crossfire 0.94.0 to 0.94.1:
9050
9051in artifacts file - moved some settings of difficulty before Object line.
9052(difficulty after the Object line have no effect)
9053
9054In low level socket code, retry read/write again if we get a EWOULDBLOCK
9055in addition to EAGAIN errors. Some systems return EAGAIN, others EWOULDBLOCK
9056
9057Fixed possible crash in move_monsters. I believe the problem was that
9058the monster got killed by a door, and the function was not expecting
9059it, and would use the invalid object. Not sure if the code I put in will
9060really fix the problem, or just migrate it to a higher level calling
9061function (have not seen the crash myself)
9062
9063If on linux, include crypt.h in main.c
9064
9065Various minor memory leaks fixed.
9066
9067Better error message for non wiz people trying to use shutdown command.
9068Shutdown command actually added to command structures and is now usuable.
9069
9070Internal animations changed from explicit defines to use SET_ANIMATION
9071macro. Much easier to read, and better supports client side animations.
9072
9073Include sounds.h/sound calls no matter what RPLAY is set to. Only
9074rplay special code is in sounds.h. This way, client can still get sound
9075information without rplay being defined.
9076
9077removed NPC_PROG code - not used at all - only thing there was a few
9078#ifdefs setting values.
9079
9080Moved typedefs for function pointer stuff from structs.h to funcpoint.h.
9081No outside affect on code, just makes more sense internally.
9082
9083Disable default selection of DEBUG_DMALLOC on crosssite.def
9084
9085Removed old/unused charisma bonus values from common/living.c
9086
9087Minor fix so that a space is properly added between item number and name.
9088
9089Added a lex loading routine. Performance seems to be roughly the same,
9090but ease of maintenace/readability seems better to me. Modifications to
9091loader.c should not be done - instead, they should be done to loader.l
9092Loader directive flags and loader return flags added to loader.l - those
9093are now used instead of arbitrary integer values.
9094
9095Fix c_wix.c dm goto command to set the destination object/map name. Otherwise,
9096if an invalid map was entered, the enter_exit would try to print a null
9097string - some systems handle this OK, others will crash.
9098
9099Changed common/time.c to use GETTIMEOFDAY macro defined once at top
9100of file instead of having #ifdefs throughout the file.
9101
9102Fix so that items of differing values will not be merged. Also, when
9103merging objects, do not clear startequip flag.
9104
9105Fix in doc/playbook-html so all include directives are handled properly
9106with the include_html.pl script.
9107
9108More details printed about improved weapons (how many improvements done,
9109max number of improvements.) Also, skills will show how many improvements
9110the character can handle.
9111
9112Bargaining skill will be auto applied when in shops.
9113
9114Change teleporter code so the teleporter does not have to be the first
9115or second item on the space - teleporter can be any object on the space.
9116
9117-a, -u apply options added (always apply/unapply instead of toggling).
9118Internally, apply and apply_special have been changed to take one more option
9119which is this flag.
9120
9121Applied rings will not be merged - instead they will remain seperate. Fixes
9122problems with getting full bonuses, and also makes it easier to apply/unapply
9123one item.
9124
9125Increased frequency of generation for strange ring (nodrain ring). This
9126should make it appear probably roughly as often as the ring of life,
9127or maybe even more often.
9128
9129Put maximum carry limit in - beyond the limit, a character can carry no more.
9130This limit is fairly high right now, but should improve playbalance and
9131prevent characters from getting a negative weight or carrying so much
9132stuff it takes forever to move (session appears hung to them)
9133
9134Added CS_STAT_WEIGHT_LIM to newclient.h, so client can know how much
9135the player can handle (only used for GUI, so it can do a carry/limit
9136type of thing)
9137
9138Title information now used in hiscore displays.
9139
9140Show invisible spell will now make handles visible.
9141
9142New server code won't crash if player does nothing when it prompts for the
9143name. Also, include necessary dummy functions so server will compile
9144of ERIC_SERVER is not set.
9145
9146Will now search keyrings when running into special doors for matching
9147keys (players can protect keys by putting them in other containers.)
9148
9149Change jump skill so that any spaces with FLY_ON set will affect
9150the jumping player. This prevents the character from jumping over
9151player movers.
9152
9153In create_wall - if insertion if the initial wall fails (new all is destroyed),
9154don't extend the wall. Fixes the earthwall on top of pool of chaos which
9155creates strange map problems.
9156
9157Map fixes:
9158 Lake_Country/ebony/masterlev altar should now accept fragment
9159 of chaos.
9160 Put no magic areas in apartment so it should no longer be able
9161 to dimension door and get keys.
9162 /city/houses/wizz.entry should now be entered at the correct position.
9163 /city/misc/library - library cards are now identified, so it should
9164 no longer be able to buy then sell at a profit.
9165 /city/houses/wizz* maps: removed ./ from start of some map paths -
9166 causes apparant problems.
9167 Lake_Country/Butakis/blacksmith - can no longer get free dragon mails
9168 or other items - have to pay for them now.
9169 Remove pup_land/rainbow/Lv4/\nkey (\n was an embedded newline). Map
9170 doesn't look to be needed.
9171
9172Archetype changes:
9173
9174Added blocksview to gwall so you can no longer see through them.
9175
9176Fixed up castle animation in bitmap mode (212/312 images needed to be swapped)
9177
9178Increased exp for skulls from 3500 to 5000, reduced exp of deathtrees from
91791400 to 1000.
9180
9181fixed typo in gauntlets which meant title was set right.
9182
9183aggressive 1 values changed to unagressive 0 values in some archetypes
9184(no such value as agressive)
9185
9186------------------------------------------------------------------------------
9187Changes from Crossfire 0.93.7 to 0.94.0:
9188
9189Added outline of future versions in the TODO file.
9190
9191a mana storm should now hit with godpower attacktype.
9192
9193The spell create_food will now create food with 0 monetary value, and
9194be marked as starting equipment, so can not be dropped.
9195
9196Player titles with spaces should now load properly.
9197
9198Updated command times for use skill, ready skill, and stay commands so
9199when client executes them, proper amount of time is subtracted.
9200
9201drop_object now preserves the freeze inv/look window, which prevents
9202slowdowns when picking up a lot of objects/dropped.
9203
9204Added yield to water of diamond, fixed typo for dust of frost recipe.
9205If a recipe doesn't have a yield, recipe should still be properly
9206generated.
9207
9208Hiscore savefile now stores maxgrace and seperates player title from
9209player name.
9210
9211Option added to only swap out maps when MAX_OBJECTS is exceeded
9212(MAX_OBJECTS_LWM)
9213
9214Changed internal definition from SOUND_EFFECTS to RPLAY_SOUND to properly
9215reflect what it actually enables (sounds for the client are always
9216enabled)
9217
9218No longer put a 'a' for single objects.
9219
9220Changed ring generation so rings of power can be generated.
9221
9222Change can_merge so that more objects are mergable, add nrof 1 to some
9223objects.
9224
9225Improved set_owner which can fix getting into endless loops.
9226
9227Change insert_ob_in_map_simple so it doesn't call check_walk_on. fixes
9228player being slowed way down when dropping objects on slow move space.
9229
9230Animations moved out of archetype and into seperate array. This is necessary
9231for the client as it makes a unique referance number for each animations.
9232Also, in future, this would make it easier to be able to change aminations
9233in objects/maps.
9234
9235Print out level gain messages in red so they are more noticable.
9236
9237Change can_pick so that invisible objects can not be picked up.
9238
9239Change singing so you can calm a monster multiple times - you only get
9240exp once however.
9241
9242Change show invisible so it only makes monsters and players visible, and not
9243things like magic mouths and ears.
9244
9245Patch so that if peaceful is set, you will not attack other players even
9246if they have attacked you.
9247
9248Auto apply woodsman/mountaineering benefit when in the appropriate terrain.
9249
9250Fix get command so it takes from a container if appropriate.
9251
9252shutdown and kick wizard commands added.
9253
9254- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9255Client/Server changes for 0.94.0
9256
9257Updated protocol version to 1010
9258
9259Server debugging statements in ericserver can be enabled/disabled by
9260define at top.
9261
9262Client can lock/unlock items on the server.
9263
9264Client can now look at spaces now.
9265
9266Send update of item to client when it is identified.
9267
9268Send update command to client from decrease_ob_nr to update players
9269overall weight.
9270
9271Now send animation information to the client.
9272
9273Now send sound information to the client, client can send setsound
9274to server to enable/disable sounds.
9275
9276Client side image caching fully supported.
9277
9278Added updates when picking up objects/dropping objects so that players
9279weight and container weight is updated if necessary. Also, if object merges,
9280make sure we then send a delete of the original object that is now gone
9281to the client.
9282
9283Update object changed to send floor animations to the client.
9284
9285Send update when power crystal changes speed.
9286
9287Send update of player object after player is loaded.
9288
9289Change server so that only send map update and player stats once a tick -
9290should be more efficient and equally sufficient.
9291
9292Added LOCKED flag to item transmission command so client can no which items
9293are locked.
9294
9295Added item1 command which superceded item command - sends more informatin.
9296
9297Added update command to protocol, and function in server - only sends
9298portions of an object that need to be updated.
9299
9300Server now properly handles repeat fire on.
9301
9302------------------------------------------------------------------------------
9303Changes from Crossfire 0.93.6 to 0.93.7:
9304
9305set_god wiz command added.
9306
9307Changed call to 'index' to 'strchr' in commands.c - keeps with what
9308the rest of the program does.
9309
9310Pupland archetypes and maps added (v1.2 of pupland distribution).
9311
9312Changed get_random_mon to be more random when a monster of a specific level
9313is requested.
9314
9315Casting transferrance spell on another playing and having their head explode
9316will no longet get the recipient of the spell exp - instead, the caster
9317of the spell will get the exp for any kills.
9318
9319change put_a_monster function so it properly handles multi-square monsters
9320(put_a_monster is called by summon_evil_monsters, at probably others)
9321
9322Changed alchemy so you no longer get exp for failed/random mixtures
9323
9324If a container on the ground that the player is using (ie opened) is
9325somehow removed, update the players view to now be the ground and not
9326the container.
9327
9328Player titles will now be loaded properly from save files.
9329
9330Can no longer sing and make the same monster unagressive multiple times.
9331The implementation is actually borrowing the NO_STEAL flag, which means
9332you can't steal after you sing, and after a failed steal, you can't sing
9333and calm it down. Also, make sure that only the 'head' of a monster is
9334sung to.
9335
9336Fixed up CSword_116 xpm file (too many chars on one line)
9337
9338Added note/option in config.h for systems lacking O_NDELAY.
9339
9340Fixed up some of the quests in Lake Country - can no longer just run and
9341get the dragonbane or buy the armor with a lot of scales.
9342
9343New Client/Server changes:
9344
9345 changed esrv_send_face to take the client_num instead of client_id
9346 (should be slightly more efficient). This does not affect the protocol
9347 in any way - it just makes the handling on the serverside more efficient.
9348
9349 Changed item command to calculate objects total weight before sending
9350 it to the client (total weight = weight+carrying). This is needed because
9351 there are many times that the client does not know what is in the container
9352 and thus can not properly calculate the weight.
9353
9354 Change server so it sends updates for the parent
9355 items that the object is being moved from/to (ie, when removing something
9356 from a sack, send an update for the sacks weight). For the client
9357 to properly handle the player being re-updated, some special handling
9358 had to be added so the inventory list would be updated and so that
9359 we don't try and add another player object (client search routine for
9360 tags didn't look at the player)
9361
9362 Fixed server so it now properly updates the original item from which a
9363 portion of it is being dropped.
9364
9365 Fixed bug in server handling which kept the -1 return code from a
9366 blocked socket and decreased amount to send by that - reset to zero
9367 so amount to be sent remains the same.
9368
9369 askface and mapredraw commands added to Protocol by Phil.
9370
9371 Changed load player function so it calls fix_player before sending
9372 initial data to client.
9373
9374 Removed some printf/debug statements from pickup code for newcs in
9375 player.c
9376------------------------------------------------------------------------------
9377
9378Changes from Crossfire 0.93.5 to 0.93.6:
9379
9380If we fail to save a map, all objects on that map should now be properly
9381deleted from memory.
9382
9383Fix possible crash when score is being generated if player is on
9384swapped out map.
9385
9386Default output buffer for new clients is now 64k.
9387
9388Partial code in place for client side image caching.
9389
9390Alchemy changes from Peter & Brian. Main change is that multiple recipes
9391can be made at once.
9392
9393Bad grammer in messages printed out when readable object is beyond players
9394comprehension.
9395
9396ethreality recipe commented out in formulae file.
9397
9398Some playbalance issues on maps fixed by Samuli Tursas.
9399
9400Internal handling of shop menus changed - instead of a list of objects,
9401change it to an array of strings.
9402
9403Minor changes in porting.c to hopefully make that file compile properly on
9404more systems.
9405
9406doc/experience updated with some more notes from Brian.
9407
9408CAN_MERGE changed from a macro in define.h to an inline function in
9409object.c (only file it is used.). It makes it a bit clearer, and hopefully
9410a little safer. There is an option at the top of config.h for handling
9411of the INLINE function declaration.
9412
9413Possible fix so that altars should not be re-concecrated if god is
9414set in the editor.
9415
9416Undead monsters can now see in the dark.
9417
9418Fixed bug in parse_command which would cause crashes if a socket connection
9419entered a string with a ; in it.
9420
9421Increased string size in new_draw_info which prevents crashes/stack
9422corruption when really ling strings from a socket is entered.
9423
9424Changed spell level/costs between invisibility and improved invis such so that
9425the improved version is now a higher level and more sp.
9426
9427Now possible to steal from a creature more than once as long as character
9428remains unseen. Each steal attempt will become harder in any case.
9429
9430Remove some special player checking in get_nearest_player - I think it
9431caused some crashes, and wasn't necessary (in fact, clever players could use
9432it to get it such that monsters would not target them.)
9433
9434When characters stop levitating, call check_walk_on so they will fall
9435through pits or other applicable effects.
9436
9437Fixed up some archetypes which could be picked up when that should be
9438set (trapdoor, bullet, meteor). The last 2 cases can not be picked up,
9439but clever casting of alchemy could have nuetralized them. collect.pl will
9440now print warning if an object has walk_on set but does not have no_pick set.
9441
9442Added new map from Bjoern Helfesrieder to starting town (Yarin's House)
9443
9444Fix in item matching code that could cause core dumps.
9445
9446Fixed clearinfo command so that it still works even if player is using
9447scroll mode (only if player issues the clearinfo command - other uses
9448of clearinfo in function won't clear in scroll mode.)
9449
9450Improved shop listings so they are sorted by type, then sorted by name.
9451
9452Fixed bug in backspacing the to the front of the first line of an
9453extended command - it now works properly and puts you back in normal
9454command mode (this got broken in the addition of extended line input.)
9455
9456Player should still be able to save if they were the wizard. However,
9457wizard status will be stripped for save, but the fact they were a wizard
9458will not be stripped.
9459
9460Imp made even wimpier by Peter M.
9461
9462If you set of traps, open doors, push a player, or roll a boulder,
9463you now become visible.
9464
9465Change it so that when something/someone reads a scroll, only inform
9466the other people on the map (perhaps this is still overkill?)
9467
9468------------------------------------------------------------------------------
9469Changes from Crossfire 0.93.4 to 0.93.5:
9470
9471Replaced handbook make_index script with perl version. Much faster, and
9472also fixes problem with echo command doing different things on different
9473systems.
9474
9475Minor change in crossedit such that if it is not compiled with XPM
9476support, it will give an error message if run with the -xpm option.
9477
9478Changed code so that experience objects no longer change stats (reverses
9479'fix' made in 0.92.9) Fixes problem of characters getting extra
9480stat points from the experience objcts.
9481
9482Fix bug that could cause infinite recursion loop in spellpath_msg. From
9483cameron@ripper.stl.dec.com (James Cameron)
9484
9485Fix bug in complex keybindings in which all the commands in the keybinding
9486were executed that tick. Thus, if you bound a key to north;north;north;north
9487and pressed that key, you would move 4 spaces north no matter what your speed
9488was. It now works properly, and you move at proper speed (keybinding is
9489copied into buffer in player structure, and removed as we go along.) Note:
9490This buffer could also be used to hold keypresses not yet processed, but
9491that hasn't been done yet.
9492
9493Added ability to enter lines longer than the info window is wide. This
9494allows for longer keybindings or say commands. It isn't the most
9495sophisitcated thing (the extra lines show up with a 1> and 2>, etc for the
9496extra lines, and we just redraw the previous line if you backspace that
9497far. After you complete the command, it does end up redrawing the entire
9498command, which can take a few lines, which gives some confirmation on what
9499you typed in. This feature was added to both the standard server code
9500and the new client.
9501
9502Change use of tempnam to tempnam_local which we supply. Standard tempnam
9503will look at the TMPDIR environmental variable, and use that to override any
9504other value for the directory - this causes problems if different people
9505runn the program and using the temporary maps accross runs. tempnam_local
9506will not look at the TMPDIR variable, and will instead always use the value
9507we pass it. This can be changed if we were not compiled in SECURE mode by
9508changing the CROSSFIRE_TMPDIR environmental variable. Code was also changed
9509so the CROSSFIRE_TMPDIR variable will not be used if compiled in SECURE mode.
9510
9511Fix so that you can no longer move really fast or fire really fast by using
9512the mouse buttons in the game window. Using the mouse buttons in the game
9513window should now result in the same speed as using the keyboard.
9514
9515Patches from Peter Mardahl:
9516
9517 Dusts now cast as ability and not spells. This mean that they will not
9518 have magic as part of the attacktype.
9519
9520 Spells that are cast on oneself now ignore direction. Thus, healing and
9521 protection potions can not be cast on something next to the player using
9522 the object.
9523
9524 Detector object added. Similar to inventory checkers, but only
9525 periodically samples what is in the space, and doesn't look at the
9526 inventory, only objects actually on the map.
9527
9528 Creators can now cause objects they create to inherit names. They can
9529 also periodically create items.
9530
9531 Arch diffs: imps weakened, cold dragon spews forth cold, creator modified
9532 to have default speed 0.
9533
9534 New FireTemple set of maps. These have been onto the Volcano in the
9535 southeast area of the continent. The maps that were there were moved to
9536 world_e2, under the crater.
9537
9538 Gradual light/darkness code put in place. I fixed a few of the bugs
9539 that were in peters orignal version, so it works flawlessly for both
9540 server and new client.
9541
9542------------------------------------------------------------------------------
9543Changes from Crossfire 0.93.3 to 0.93.4:
9544
9545Inventory checkers can now act as doors. If no_pass is set in an
9546inventory checker, player can not move onto that space unless they meet
9547the match requirements.
9548
9549Signs that are usuable only a fixed number of times added.
9550
9551Fix for pedestals & buttons so they are only activated once when a player
9552moves onto a space (previously, they were being activated twice.)
9553
9554Fix for connected objects so that they will not be sacrificed on altars.
9555This fixes a case where you might want to put a check_inv and altar with
9556the same sacrifice on the same space. Before, the inventory checker would
9557be sacrificed on the altar, causing the linked button list for
9558inventory checker to be corrupt.
9559
9560Many maps updated to look better in xpm mode or just better in general.
9561
9562Change in crossedit so that if you set the randomitems variable for an object,
9563it only sets the value at the head of the object, and not all parts of the
9564object (it would be nice to allow non head parts to have this set, but I am
9565not sure how to get what part was clicked on in the editor, since it seems the
9566head is passed to the function.).
9567
9568xpmtopix.pl script added. Eventually, I hope this will replace the
9569C version. For now, all it is good for is to verify that the XPM images
9570are using the proper colors. Numerous XPM images were not using the proper
9571colors (a lot were using brown, which is not an official color - see
9572the xpm template for what is.)
9573
9574Cleanup of proto directive to turn __signed into signed. Also, change
9575#if __STDC__ to #ifdef __STDC__ in proto files.
9576
9577Fix so it should now compile if SECURE is defined.
9578
9579Ability to more easily added needed libraries in crosssite.def -
9580Extra_Libraries option added.
9581
9582Assume Linux has a prototype for tempnam (at least my version does.)
9583
9584Many objects added, and many XPM images updated/improved.
9585
9586Change in new CS code - don't send the version string until after we fully
9587set up the structure.
9588
9589Change so crossfire will compile if SAVE_HOMEDIR is set.
9590
9591Reverse actions of -m8 and -m9 (Believe they were doing the wrong thing
9592relative to the scripts and what the docs say.)
9593
9594Change in hiding code and detection by monsters.
9595
9596------------------------------------------------------------------------------
9597Changes from Crossfire 0.93.2 to 0.93.3:
9598
9599Added a fill below function in crossedit. This make filling in backgrounds
9600for maps much easier. Basically, it just puts whatever object you select as
9601the bottom object of the bounding box. If the bottom object on the map
9602matches the object being inserted, the object is not inserted. As a side
9603effect of some code in GetMapObjectZ, if it matches the top object, it won't
9604be inserted either. This makes things much easier to update map backgrounds
9605for XPM mode.
9606
9607Hiding made easier for players.
9608
9609Stealing is made easier for players, but harder beyond the first item.
9610
9611Many image colored and perspective corrected David Sundqvist. Also, several
9612new objects added (specialized altars, some more indoor furniture/more
9613orientations, some sliding secret doors, and new wall types.) Barn image
9614naming conventioned changed to follow what is considered proper.
9615
9616A few maps added by David (two temples in starting village, along with
9617a mercenary recruitment building.) Also, some maps fixed to look better
9618in XPM made.
9619
9620Party kill option added by Rauli Ruohonen. IT lets you see who has killed
9621what recently in your party.
9622
9623Saving throw for objects cleaned up. Previously, an objects immunities/
9624protections were not being used correctly to determine if it made its saving
9625throw (that is why icecubes could be destroyed by ice). It is now set up
9626properly.
9627
9628Gods will no longer improve weapons that have been enchanted by other gods
9629(Or I believe by yourself.)
9630
9631Fix memory overrun (1 entry) when initializing values for the images.
9632
9633Program will not recover properly when it attempts to load a temporary
9634map. This means that load_temporary_map returns the map object to use,
9635since it might change.
9636
9637When setting the owner of a monster, clear its ability to use skills
9638
9639Fix in decrease_ob_nr so it should now work on 64 bit systems.
9640
9641Mapguide updated with various suggestions made on the mailing list.
9642
9643Linux systems assumed to have at least random available (change in the config.h
9644file.)
9645
9646't' is now bound by default to 'ready_skill throw'
9647
9648missing demon types (imp, big_demon, Greater_Demon) added to the list
9649of demon races.
9650
9651xpmtopix will print a warning if it detects and XPM file using a tab character
9652in the color name - makes it easier to track possible image corruption.
9653
9654Check for power of improved weapons now in its own function. Also, we
9655now properly check weapon power when improving one (before, you could
9656improve it one level more than you could actually use.)
9657
9658When a container is applied, make sure it is a player applying it before
9659checking for new client/server information - otherwise an invalid pointer
9660is dereference.
9661
9662Complex keybindings added - thus, you can bind several commands seperated
9663with semicolons to one key.
9664
9665Fix in encounter.c so if compiled with RANDOM_ENCOUNTERS, the new
9666settings structure is used for map location.
9667
9668Added check fot out_of_map in various places that needed them - prevents
9669some more core dumps.
9670
9671skill identifications will now look on objects on ground in addition to
9672those in the inventory.
9673
9674perceive self should now tell you what god you worship.
9675
9676map reset times on maps (temporary maps accross multiple runs) will not be
9677altered if there is no map reset time.
9678
9679------------------------------------------------------------------------------
9680Changes from Crossfire 0.93.1 to 0.93.2:
9681
9682New argument parsing routine - we now parse arguments in phases. With this,
9683I have moved many of the global settings into a settings structure, and
9684allowed highscores to be displayed by class/name. The man page and -h
9685option have also been updated. Also, all the files that could
9686previously be specified via environmental variables can now be specified
9687with command line options.
9688
9689The temporary directory can now be specified via -tmpdir command line option or
9690CROSSFIRE_TMPDIR environmental variable.
9691
9692If you cast word of recall and then save before it takes effect, it will
9693no longer corrupt the character (and will in fact take effect when you
9694restart).
9695
9696Don't let players throw starting equipment. At the same time, don't mark
9697throwable items as starting equipment - instead, just give it zero
9698value.
9699
9700Fixed inscription - now properly writes scroll when passed no string instead
9701of crashing.
9702
9703Artifact monsters now possible (monsters whose abilities are changed based
9704on the artifacts file.) Top of the artifacts file has more information on
9705this. For now, I have only set up the orc, ogre, and goblin to get
9706special leaders.
9707
9708Temp maps can be reused across multiple runs. See config.h for more
9709notes.
9710
9711Bug fix in inscription: If you inscribed a scroll and already had
9712one like it in your inventory, the game would crash after they
9713merged. Also, if you failed in inscribe a scroll, the game would
9714also crash (object it was using to calculate experience had never been
9715initialized). For now, I just changed it to return -10*spell level
9716as the exp award.
9717
9718Items will now be merged with other items even if one has been inventory
9719locked. This way, if you have some torches that are locked and you pick up
9720some more, they will merge in instead of showing up seperately.
9721
9722Bug fix for saving throw on objects hit by cold. There could be cases
9723where an object being processed is no longer on the map and would cause
9724a crash.
9725
9726Change find_first_free_space to return -1 if there are no free spaces.
9727Calling function should check this and then do the 'right thing'. This
9728fixes problems with runes creating monsters on top of monsters (or
9729below the player).
9730
9731Magic map cleanup. Now have magicmap field in NewFace structure. This
9732field holds the color to use for magic map in low 4 bits, and various
9733flags in high 4 (right now, only floor bit is used, since drawing may
9734differ on bw systems with that value.) magicmap filed is now supported
9735in .arc and faces file. collect.pl modified to automaticaly put
9736magicmap into the faces file, will also copy is_floor into faces file.
9737magicmap takes a color name. This seperation allows magic map colors
9738to be set independant of foreground and background colors, and simplifies
9739the code a good deal. Also, it makes new client magic map support easier.
9740Now all the archetypes need to be updated (I have already done the armour,
9741connect and construct directories.)
9742
9743Magic map for client now implemented. Definition of protocol added to
9744Protocol file. Only limitation implementation has over direct server is
9745it only flashes the position of the player who cast the spell. This
9746seems perfectly reasonable to me (use color or other attribute to know
9747where other players are.)
9748
9749Old client (telnet front end) changed so that it no longer requires
9750libcross.a.
9751
9752save object should do a better job if it gets an object without an
9753archetype.
9754
9755buffer size for LOG increased - there were cases where this buffer
9756was not large enough and was causing crashes (sending large amounts of
9757garbage data to the socket was one way.)
9758
9759Load map will now reload the original map if the temporary map is for some
9760reason no longer around.
9761
9762Fix bug where randomitems may not have been properly initialized for now
9763objects (was inside an #ifdef for CASTING_TIME)
9764
9765strerror_local added to porting.c. Lets up give up more reasonable
9766error descriptions for certain errors.
9767
9768If an object is cursed, set its vulnerable values to its protected and
9769immune fields, adn clear those fields. Fixes 'problems' with finding
9770cursed rings which are not really cursed (pro fire/vuln cold rings.)
9771
9772If trying to switch to private colormap in XPM mode, check to see if
9773we are successful.
9774
9775Fix crossedit so that if you have a map loaded and you then try to load
9776an invalid file, it no longer crashes (now reverts back to old file)
9777
9778Archetype changes: Golden unicorn horn now has its own set of images.
9779Editable field updated for the gods archetypes (they were showing up in all
9780the menus.) living_chaos object added (need for Brian Thomas's maps.)
9781
9782Update the editor/picks map so that all archetypes are included in at least
9783one of the maps. Modified the map_info script to print out unused
9784archetype.
9785
9786New server: Only increase buffer size of socket if it would increase
9787overall size.
9788
9789fix in skill experience calculation to use magic field properly.
9790
9791Alchemy spell changed. If there is a cauldron in area of effect, only
9792do cauldron alchemy. Otherwise, do item to gold nugget conversion.
9793
9794Added a few more notes/thoughts to the mapguide/
9795
9796------------------------------------------------------------------------------
9797Changes from Crossfire 0.93.0 to 0.93.1:
9798
9799change race initialization functions to to fix cases where race is specified
9800in race file but no race is specified in the arch it points to - before it
9801would not be added to the proper race list.
9802
9803include handbook.ps in the standard distribution.
9804
9805Client server rewritten to no longer use eutl package. Other bugfixes for
9806client server: server now properly sends delete item command to client,
9807client now properly adds up a containers (and hence players) weight, pixmaps
9808are now supported.
9809
9810Snowball spells added - these are the same idea as the fireball spells. (by
9811peterm)
9812
9813Magic wall will consume several squares now.
9814
9815spells array (in spellist.h) updated - was missing a spell (cure blindness).
9816
9817splitter.pl (by peterm) added to arch/dev directory - takes a larger xpm
9818file and splits it into 24x24 chunks.
9819
9820icestorm and small snowball added to possible list of starting spells.
9821
9822Only set minimum speed of 0.01 for players. This fixes the bug introduced
9823in 0.93.0 where multisquare monsters moved too slow.
9824
9825Only print out a creature lost a spell if it is in fact a player. Only
9826applies for casting time.
9827
9828fix_me command added - basically just calls the fixme function. Can be
9829useful if you that your characters weight is for some reason incorrect.
9830
9831Fixed sprintf that was copying over static character data if you tried to
9832form a party that already matched a name. Also, fixed a possible buffer
9833overrun situation.
9834
9835More memory leaks fixed by Rupert Goldie - also fix to prevent orated monsters
9836from attack themselves.
9837
9838New xpm images for woods and some buildings by David Sundqvist. The new
9839buildings have a bit more texture and 3-d look, the new woods look a little
9840bit more in scale and mesh together better. The old images are in the
9841xpm_pref directory if you prefer those.
9842
9843More code added to free memory when server shuts down (useful for
9844trying to track down some memory leaks).
9845
9846------------------------------------------------------------------------------
9847Changes from Crossfire 0.92.9 to 0.93.0:
9848
9849Minor map changes: Some maps cleaned up to look better in XPM mode.
9850Removed no magic areas from around the demilichs in lord ramsdre mansion.
9851
9852map_expand perl script added (located in lib/adm)
9853
9854Cleaned up use of externs and declarations of many structures. Depending
9855on the linker, these would not be merged into one value, and thus not be
9856initialized/set properly (fixes 'mark pushed you bug'). This was a problem
9857at least on SGI systems, probably others.
9858
9859If on a sun and not using sun's acc, assuming Stupid Sun Headers, even
9860if on a Solaris system.
9861
9862Changed change_abil so it returns true if a value actually changed (useful
9863for printint out information when apply objects like potions.) A lot of
9864return checking of this function in apply.c is removed - that checking
9865now seems obsolete.
9866
9867Set visibility to zero at first stage initialization.
9868
9869Put a lower limit of 0.01 for player speed. This still gives an action
9870every 12 seconds if you pick up way too much junk.
9871
9872When praying at altars, have gods grant out spells only if it is a spell
9873they are attuned to.
9874
9875Cleaned up some memory leaks, courtesy of Rupert G. Goldie.
9876
9877Cleaned up the cast command code. Also, if you do something like 'cast p', it
9878will now show all spells you know that start with p, instead of casting the
9879first one it finds.
9880
9881Shift middle button in the inventory window should now mark an item.
9882
9883Fix button handling for look and message window so that only if it is clicked
9884with the right 30 pixels do we consider it a scrollbar event (before, anything
9885more than 270 from the left was considered scrollbar - works fine for
9886default sizes, but if you resize, it would cause problems.
9887
9888If on SGI systems, don't default to using rand - it should now pick up
9889lrand48 or random instead.
9890
9891Change spell casting such that if you aren't high enough level, it more
9892obviously states it (previously it said you 'lack the skill', which can lead
9893to confusion.)
9894
9895Fix so that the first recipe is now accessible when performing alchemies.
9896
9897Added many thoughts/ideas to the TODO list.
9898
9899Increase buffer size for examine command - some object could overflow the old
9900buffer.
9901
9902remove no_magic from all monsters - immunity values should be used instead.
9903am not sure
9904
9905Made changes for strcasecmp detect - was checking as defined(sun), now is
9906defined(__sun__) - this is proper and what the rest of the code uses.
9907
9908define MAXNAMLEN in crossedit/Posix.h - needed for ultrix systems.
9909
9910Made it so that boots are not always considered magical (since there are
9911now many plain boots out there.) Also, removed the always_magical function -
9912is_magical should now handle it all.
9913
9914Allow items of type BOOK to be identified, since you can now find non
9915identified readable items.
9916
9917Change loot_object so it doesn't remove experience objects - this way skills
9918don't get removed when a player dies.
9919
9920------------------------------------------------------------------------------
9921Changes from Crossfire 0.92.8 to 0.92.9:
9922
9923Make sure all skills are unapplied when changing the class.
9924
9925When generating a spell listing (cast with no options), display the
9926level of the spell (or den if it is denied.) Also, display mage spells
9927in one batch, priest spels in another group - I think this is more
9928relevant now since these are seperate exp objects and draw on different
9929power sources. Still no pause key (doing those is a real pain) - that
9930is really a client issue or we should just add a scrollbar to the text
9931window.
9932
9933Removed level 20 from artifact 'sword of Beserkgang' - was preventing
9934characters from using it.
9935
9936Put cause many wounds spell in PATH_WOUNDING. Book chance for holy word
9937increased.
9938
9939Let experience objects change stats.
9940
9941Many debugging messages added or updated to print out more useful/
9942detailed information.
9943
9944Changed usage and set_protocol function names in client/client.c. This
9945prevents name collision with libcross.
9946
9947Web site locations added to the README file.
9948
9949Load and save window positions even if split windows is not set. This way,
9950window posititions are lost if you run the game in non split mode (and I
9951don't see any reason to discard these values.) Also, -split can
9952be used in addition to -w to get split mode.
9953
9954Changed check inventory objects to recursively search through containers,
9955and cleaned up the code. Also, added notes on crossfire.doc on using it,
9956and made basic archetype to use. When using inventory checkers in
9957crossedit, have the attributes by default come up with connected and
9958lockcode fields.
9959
9960Made change to unique items: If the object is a floor and has unique items
9961set, then all objects above and including the floor get saved as unique
9962objects. Also, when merging maps and freeing old unique items, make sure we
9963remove them from the button links. Made an apartment map which characters can
9964buy permanent apartments and also store equipment in. When exiting the
9965program, save off all maps so the unique items get written out.
9966
9967Xpm fixes: Moved floor setting from map loader to update_object. This
9968makes it so that crossedit will display the map properly in XPM mode as
9969you make updates. Also, made default visiblity 0 - this makes the double
9970floor work properly. There still seems to be some bug when pasting objects
9971in the editor with respect to updates.
9972
9973Change made to goths taverns and tavern in lake country. Change is so
9974that some of the wimpier informants don't have really good stuff to take.
9975
9976Periodically write out the book archive during play, and not just when the
9977program exits.
9978
9979Bug fix so 'drop x items' should no longer crash. Also, 'drop 1 item'
9980should now only drop 1 item of 'item', and not all of 'item'.
9981
9982Bug fix so 'unlock item' should now work OK.
9983
9984When throwing objects, clear the APPLIED flag before the throw.
9985
9986Prayer granting from praying at altars changed around - you will get more
9987unusual prayers, and a Wisdom of 25 is not a yes/no cutoff - value of
9988sucess depends on wisdom.
9989
9990Archetype changes: remove no_magic flag from demon lord - I don't think
9991this should be set in any monster - instead, immune should be set properly.
9992Added damned flag to gates that are no magic (probably not necessary,
9993but I think it makes sense.) Added check_inv object. Removed some
9994duplicate skill types (same skill, different arch names.)
9995
9996Have get_pointed_target return the head of the monster if it is a multi
9997part monster.
9998
9999Change smite and finger of death spell so they have no effect if creature
10000reflects spells.
10001
10002Fix to prevent bug crashes with magic rune spell.
10003
10004Fix in spring_trap to correctly target the victim. Also,
10005fix in find_traps which prevented the gaining of experience.
10006
10007If character has bonus grace, display it with percieve self. Also, load
10008and store the last_grace value properly.
10009
10010Changes from Brians hide/attack patch: Adjustments for attacking based
10011on varying factors, monsters wake up & call for help if it, can't remain
10012hidden if you attack, changes for monster detection of hidden/dark/invisible
10013players, players no longer remain invisible if attacking, adjustment in
10014exp for stealing, stealing and hiding chances changed based on terrain
10015and other modifiers, when generating flesh items, set no_steal, give
10016chinese dragons some treasure, giants a little more gold.
10017
10018------------------------------------------------------------------------------
10019Changes from Crossfire 0.92.7 to 0.92.8:
10020
10021races file changed, a bit more flexible.
10022
10023Additional dump flag (-m8) to dump god information.
10024
10025If attacktype is holyword, creature must be in slaying field of holyword.
10026
10027Better handling for items that remove/add protections,immunities,
10028vulnerabilities. Only print changes if there is an actual change.
10029
10030holy power, blinding attacktypes added.
10031
10032Add poison to list of items that might not be identified.
10033
10034Two when windows are killed: 1) data is freed properly without causing
10035crash now. 2) If player has saved but window is still active, will
10036no longer make a save of the player. This save would be a no-item save
10037that the character had been playing.
10038
10039Bug fix to prevent crashes if clicking a button in the message window
10040and show_Buttons not enabled. Also, moved button handling in message
10041window into its own function.
10042
10043Bug fix for pet monsters that should prevent cores if cycling through many
10044maps very quickly.
10045
10046appendix for god information added to handbook (both latex and html versions.)
10047
10048gods2 patch applied from Brian Thomas. The main thrust of the patch is
10049to make gods objects/archetype, and not array entries in the source code. A
10050lot of code needed to be changed to support this difference.
10051
10052God patches so that game doesn't crash if no gods are set.
10053
10054Hopeful change for FreeBSD so it automatically pulls in the crypt
10055library.
10056
10057Can no longer cast spells which are beyond your skill level.
10058
10059More powerful spell failures added.
10060
10061Can no longer read scrolls/other readable if blind.
10062
10063Fix bug that if a weapon had slaying, it slayed all monsters, not just
10064the ones it was supposed to.
10065
10066Don't add the bows attacktype in when figuring out the attacktype of this
10067player. This pretty much always gave the character a physical attacktype
10068in addition to everything else.
10069
10070Fix 'peaceful' when using buttons so it doesn't crash the game.
10071
10072path_to_player changed to work better on diagonals.
10073
10074Spell choosing by monsters a bit more intelligent.
10075
10076No longer get experience for disarming/finding your own traps or those
10077of other players.
10078
10079Add NO_STEAL flag, with obvious meaning. If a monster notices you stealing
10080stuff, all his items are set to this, so nothing more can be stolen. Flag
10081is automatically cleared when items are dropped.
10082
10083Add run and fire messages to message (stat bar) window.
10084
10085Make USE_BUTTONS playable setable item instead of compile time item.
10086
10087Don't insert heavy (>5 kg) missile objects into player when they hit - have
10088them drop to the ground instead.
10089
10090--
10091Made more general object matching routines. item_matched_string sees if
10092an object matches a string (which can be comma seperated list of many
10093things.) find_best_object_match finds the best match in the players
10094inventory.
10095
10096item_matched_string gets used for for matching multiple items. It is
10097used in drop, get, take, lock/unlock
10098
10099find_best_object_match is used for apply, examine, mark, search-items.
10100
10101Also changed code so that certain actions are in sync with what display
10102mode is set (mostly drop.)
10103--
10104
10105If levitating, you can now remove items from containers in your inventory
10106(after all, they are levitation with you.)
10107
10108Clear is_changing flag if object is being thrown.
10109
10110Changes made to inscription code to work better.
10111
10112Changes mode to experience awarding for player skills.
10113
10114Fixes made to Peter Mardahl's dragonquest maps.
10115
10116Big Wizard, Belzebub, and Demon lord xpm versions colored.
10117
10118Minor bug fix to container in Thomas map.
10119
10120Some new archetypes/images for peterm/dragonquest maps.
10121
10122Make food creation spell more dynamic - food names/values no longer hard
10123coded in.
10124
10125Additional demons added by Peter Mardahl
10126
10127Bug fix to prevent crashes with improve armor/weapon scrolls.
10128
10129Bug fix to prevent crossedit from crashing when exiting with edit windows
10130open.
10131
10132Fix to prevent monsters from throwing certain good objects.
10133
10134Make sure praying over an altar only gets cleric spells.
10135
10136Increase saving throw array to correspond with max level.
10137
10138Monster hp/sp regeneration method changed some - more accurately tunable
10139for low regeneration values.
10140------------------------------------------------------------------------------
10141Changes from Crossfire 0.92.6 to 0.92.7:
10142
10143Monsters now tend to be more agressive about firing spells. Several
10144changes - now monsters will fire along diagonals. For multisquare monsters,
10145we check to see if any part of the monster has a good shot at the player,
10146not just the head. This changes tend to make it more likely that a monster
10147will cast a spell and hit other monsters (makes a pack of wyverns more
10148dangerous, as many will cast spells at you.) I am not sure if this is a bad
10149thing - all it means is that you can't mix fire using creatures with
10150monsters that will be damaged by fire.
10151
10152Let archetypes in the races file have spaces (for Arch Angel)
10153
10154Throwing code added - players and monsters can now throw objects. Some
10155new throwable archetypes added. You need to add throwing_skill to any
10156old players - you can run the utils/add_throw.perl <playerfile> to do this
10157
10158crossedit: If a object have editable of 0, make it so it doesn't appear in
10159any of the menus.
10160
10161Max yield added to recipes.
10162
10163Better checks for insert_ob_in_ob to make sure we really have a player
10164before calling some of the update functions.
10165
10166Weight limit for custom containers is now saved.
10167
10168If we load an object and find it has no archetype, just drop the object.
10169This shouldn't happen, but can prevent core dumps for maps with missing
10170objects or players from a different version.
10171
10172Add 5 static buffers to query_name - it is now safe to call it a few times
10173in a sprintf or the like without losing the old value.
10174
10175Added 'statistics' command. Shows useful information about the
10176character (none that can't be found in the docs.) Also changed
10177'skills' to show how much exp you need in each category for the next
10178level.
10179
10180change_abil changed so that it only prints out what values/attributes
10181have changed. Ie, if you remove a ring that gives protection from
10182fire, but have other fire resistance, it won't say you are more vulnerable
10183to file (since you are not.)
10184
10185Charisma bonus/mechanism changed (again.) Values in living.c are more
10186easily/directly translated into what it means for buy/sell cost. Curve
10187also balanced out some more. Query_cost changed so the value
10188mechanism is a bit different (unfortunately, we need to multiply the value
10189of objects by 4 to keep them roughly the same price as before.)
10190
10191Added 'mark' command. You use this to mark objects that are used for
10192other objects (ie, torches with flint & steel, weapon with improvement
10193scroll, etc.) This removes the necessity that the item you want to apply
10194be the first thing in your inventory (in fact, that is no longer supported.)
10195This should also make things easier for the client.
10196
10197Bug fix that prevents crashes on spaces which have a teleporter and sacrifice
10198altar on the same space (/Lake_Country/DA).
10199
10200Some minor changes to lighting code, some maps also updated to
10201use lighting code.
10202
10203Added halfling and half orc character to the game (From Brian Thomas)
10204
10205Changed valuation for FLESH items. Before it was value*level of creature.
10206Now it is value*sqrt(level*2). For low level, this keeps roughly the same
10207value, but for high levels, it keeps things more reasonable (drops the
10208value of zombie corpses to about half previous value)
10209
10210Bug fix for monsters that have attacktype of ghosthit along with
10211others (main fix ghasts, for Lake County, REtower/tower3, but
10212this could happen for any monster.)
10213
10214Fix for attacks doing no damage against monsters they should.
10215
10216Bug fixes to readable code - should no longer core dump (At times) when
10217books are created, should also be more robust and fix some other bugs. Also,
10218give more detailed messages on how many levels beyond your comprehension
10219a book is.
10220
10221randomitems now stored in object, not archetype. This means that treasure
10222types can be changed in the map - a new archetype doesn't need to be added.
10223However, the treasure to set must still be in the treasures file (or you
10224can use none so treasure is not generated.)
10225
10226Removed color_fg and color_bg variables from game - these have long been
10227obsoleted, but code to handle them has never been completely removed.
10228
10229Changed code so that best wc possible is +/-120 - should now prevent
10230overflows.
10231
10232------------------------------------------------------------------------------
10233Changes from Crossfire 0.92.5 to 0.92.6:
10234
10235If player deletes window and we can't save, delete player objects instead of
10236dumping them on the map.
10237
10238Make NEW_PROCESS_EVENTS standard - remove old proces code and ifdefs.
10239
10240Remove temporary object from cast_spell - pass along both spellcasting
10241and owner objects. Seems to fix some bugs and increase reliability (also
10242is a better way to deal with it.)
10243
10244Change made so that converters are also knowledge about 'money' psuedotype.
10245
10246change spellcasting altars so they also push the button. Fixes altars
10247on some old maps.
10248
10249Some minor tweaks made to the artifact file - mostly clarification of names
10250or setting values correctly.
10251
10252spellcasting skill renamed to wizardry.
10253
10254Fix made so that 'old' potions (strength, int, etc) use correct price.
10255
10256If you examine food/flesh items, you now get detailed information (food
10257value, protections, etc.)
10258
10259Code by brian thomas so that book titles will remain constant across
10260different program runs.
10261
10262Bug fix for crashes caused by multisquare monsters stepping on
10263deadly objects. Basically, fully insert the object, then start doing the
10264check_walkon's one at a time to see if the creature dies.
10265
10266Brian Thomas' valley of the sisters quest added. Additional archetypes
10267and treasures added to handle this.
10268
10269'sort_inventory' option added (player setable.) IF set, when items are
10270picked up, they will be inserted by type, then alphabetical. Very handy
10271for scrolls and rings.
10272
10273Some fixes made to the kundi maps.
10274
10275Flesh/alchemy fixes by Brian Thomas. Flesh type now inherit properties
10276from parent creature (weight, and possibly protections/vulnerabilities are
10277added).
10278
10279Change made for alchemy - you can't toss a bunch of junk in a cauldron and
10280get a good item out unless you sucessfully use alchemy.
10281
10282handbook added to the doc directory (tex/postscript.) And html version is
10283also there, along with an html version to the spoiler. Tex version of
10284spoiler also fixed so it is generated properly with new Latex.
10285
10286
10287------------------------------------------------------------------------------
10288Changes from Crossfire 0.92.4 to 0.92.5:
10289
10290Som bug fixes made dealing with cursed improvement potions.
10291
10292Always let players learn spells if they are in their starting spellbook.
10293
10294New attack methodology put in palce. To put in simply, if there is
10295only 1 attacktype, things remain the same. If there are multiple attacktypes,
10296we cycle through them one by one, and take the one that does the best
10297damage and use it. Some attacktypes no longer do damage - they are effects
10298(ie, paralyzation, slow.) In the case of of these, the effect will always
10299be applied if appropriate. Code looks to behave pretty much the same,
10300but is easier to follow. IF new code is buggy, or you don't want it,
10301there is a define at the top of attack.c you can change.
10302
10303If god blesses you, lets actually remove the depletion object from the
10304player inventory.
10305
10306Other god related fixes put in place - look to also deal with blessed
10307weapons.
10308
10309Additional dump flag added.
10310
10311fix bugs with USE_BUTTONS and the peaceful button.
10312
10313Only allow write_rune to use objects of type RUNE
10314
10315Bugfix in get_pointed_target if it can't find a target - prevents endless
10316loop
10317
10318NRSPELLPATHS set to correct value.
10319
10320Remove null terminator from gods array - not needed anymore.
10321
10322Fix savethrow array size to match maxlevel properly (was 1 short)
10323
10324remove damnation and remove curse now cleric spells.
10325
10326Fix some header code to better work on solaris 2.5
10327
10328Support for compilation with the dmalloc (debug malloc) package.
10329
10330Allow altars and related items to match objects based on type. Use hp
10331field of altar object as the type to match.
10332
10333Library patch by Brian Thomas.
10334
10335Various skill fixes by Brian Thomas.
10336
10337Alchemy patch by Brian Thomas. Here is a copy of his README:
10338+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
10339 The amount of work I put into this was substantial; other than
10340 new code -- I created new archetypes, revised archetypes, altered the
10341 treasures file and created 2 new object types and a flag.
10342
10343 It therefore may be enjoyable to install this patch (incl code)
10344 and *not* define ALCHEMY in define.h. In particular, this patch
10345 does the following things:
10346
10347 1) more varieties of potions are available in shops.
10348
10349 2) new gems and types of food.
10350
10351 3) monsters will now leave behind body parts when you kill them.
10352
10353 4) if ALCHEMY is defined players may make potions/artifacts.
10354
10355 I have included instructions for installation in INSTALL.PATCH,
10356 and a brief document for using the code (Alchemy.doc).
10357
10358 Finally, as always, feedback is appreciated.
10359
10360 b.t.
10361 thomas@astro.psu.edu
10362+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
10363
10364
10365
10366------------------------------------------------------------------------------
10367Changes from Crossfire 0.92.3 to 0.92.4:
10368
10369Various bug fixes to readable code.
10370
10371Let altars be able to cast spells. sp field determine what spell to cast.
10372
10373Fix obscure bug that an arrow can be 'killed' if a monster that has hitback
10374moves onto it while it is moving. Thus would then cause problems because
10375apply would try to remove the object after it had been killed.
10376
10377Give quetzalcoatl melee attack skill.
10378
10379Give experience for clawing attacks.
10380
10381Include literacy skill with fighter skill - this should now give all starting
10382classes literacy skill. I think it improves play balance.
10383
10384Don't mark a players starting money as being start equipment - otherwise
10385they can't drop it on identify altars and it can get merged with money
10386gained at a later date, yet still be marked as starting equipment.
10387
10388Bug fix in keybindings so that we check return of XKeysymToString to make
10389sure we don't use a null value. Some keyboards have keys with no names,
10390and on some systems, passing a null pointer as a string causes it to crash.
10391
10392------------------------------------------------------------------------------
10393Changes from Crossfire 0.92.2 to 0.92.3:
10394
10395Removed ability to use unpaid objects for sacrifices.
10396
10397Changed weapon improvement code to be based on skill levels (if skills
10398are used.)
10399
10400Code in place to generate hit points by average of fighter and overall
10401level - to enable this, change the #if 0 to #if 1 at around line 1040
10402in common/living.c
10403
10404Books hack by Brian Thomas. This mainly means that when emptry books are
10405created (or are otherwise on the map), that they will be filled with some type
10406of information. Some (like monster/spells/gods/artifacts) are generated via
10407the program itself. Information from a messages file that is stored in lib
10408can also be found. Experience can be gained by reading this information.
10409
10410Read/write patch by Brian Thomas. This mainly encompasses the fact that
10411players can now write messages in books, that you must be literate enough (as
10412determined by literacy skill level) to read various books/scrolls. Scrolls
10413are now not identified, but literacy can be used to identify them. Players
10414can still read signs even if they are not literated (needed for game balance/
10415information)
10416
10417------------------------------------------------------------------------------
10418Changes from Crossfire 0.92.1 to 0.92.2:
10419
10420Give artifact Gram weapon attacktype physical|confusion. Before, it was only
10421confusion which would never actually damage anything.
10422
10423If a player dies in a shop, remove any unpaid items from his inventory and
10424put them back in the map. Only applies in NOT_PERMADEATH mode.
10425
10426Put in better DM security - now checks for name, password, and hostname (any
10427of those can be wildcarded out) - see the lib/dm_file for some demo. To
10428supply a password for dm mode, just use dm with the password (ie, "'dm
10429<fireball>")
10430
10431Lighting code added (with various support objects, spells, etc). No maps
10432support this yet.
10433
10434Don't baptize altars if we are in the editor. Leave altars the way they
10435are so that they will be baptized the crossfire loads the map instead.
10436
10437Allow the title of and object to be set from within crossedit.
10438
10439Allow individual players to set the inventory icon, now longer a compile time
10440option.
10441
10442If we get a non critical error and do an emergency save just in case,
10443then don't remove any information/objects. This probably fixes the
10444disappearing inventory bug.
10445
10446------------------------------------------------------------------------------
10447Changes from Crossfire 0.92.0 to 0.92.1:
10448
10449Improved altar sacrifice code (actually, any object type that calls
10450check_altar) - treat a slaying field of 'money' as something special- don't
10451care what form the money is in (see docs for more details)
10452
10453Improve identify table (in conjunction with altar code above) - now takes
10454any type of money, won't take money if nothing needs to be identified,
10455will identify as many things as money is dropped for (ie, drop 200 gold, it
10456will do 10 items)
10457
10458In the map attributes in crossedit, you can select an option called
10459"ShowWeakWalls". If this is selected, weak walls will be shown in a partial
10460teardown state - makes working with some maps much easier.
10461
10462New client updated to support Power and Grace stats.
10463
10464Magic system broken into 2 forms of magic - clerical and mage (they are
10465now seperate). Power stat also added to the game - plays into mage
10466spellpoint (mana) total. Grace also added - used for cleric spell casting.
10467
10468Skill system greatly expanded - different experience types with skills
10469associated with them (only has meaning if you are using the skill code) - thus
10470you gain experience for certain categories as you use certain skills - see
10471doc/skills.doc for more info
10472
10473Multiple gods added (via config option in config.h) - basically, different
10474gods have different enemies, and the effects cleric spells have will depend
10475on this. Altars are created for different gods. See doc/Multigod.doc for
10476more information. Along with this, some new spells were added.
10477
10478 Fix a problem of some objects falling out of sight when they shouldn't.
10479
10480Send delete item to client if decrease_ob reduces the items nrof to 0.
10481
10482Weight should now be fixed up when transferring stuff to/from containers.
10483
10484config option called NO_AUTO_SKILL_SWITCH added - it means range type
10485doesn't automatically get switched to skill type when using melee weapon.
10486Main effects is that it makes it easier to switch between melee and range
10487weapons (pretty much makes it like it was prior to the skill code.)
10488
10489Sack code cleaned up - we don't need to split an object to see if it will
10490actually fit in a container - we can just say how many we want to try to
10491put in.
10492
10493Actually put wimpy command back in (all code was there, just the link to
10494call the fucntion was missing.)
10495
10496Increase max count from 9999 to 99,999. Wasn't that uncommen for high level
10497characters to have more than 10000 platinum coins.
10498
10499When invoking spells, temporarily switch the range type to range_magic -
10500otherwise, a proper check for spellpoints is not done, and it then becomes
10501possible to go negative.
10502
10503Modified crossloop so that it renames and compresses any core files created
10504while it is running - very handy for debugging (note that you could easily
10505modify it to remove the core files instead.)
10506
10507------------------------------------------------------------------------------
10508Changes from Crossfire 0.91.9 to 0.92.0:
10509
10510Make sure the weight a container is carrying can never go below 0.
10511
10512Fixed fall below code, so that objects with visibility will not fall below
10513objects that otherwise blocks view.
10514
10515Fixed colormap problems with xpm graphics on black and white displays.
10516
10517ALLOW_SKILLS is now the default in the config.h file.
10518
10519IS_SUMMON_SPELL macro fixed (= was supposed to be ==)
10520
10521Artifact foods added by Brian Thomas. These are foods that can give some
10522nice benefits (stat improvements, etc), or be much nastier poisons.
10523
10524Bug fix made to skill selection that would otherwise cause core dumps.
10525
10526Bug fix made to query_cost that would cause core dumps if the alchemy spell
10527was used.
10528
10529Fixed bug in dimension door that would cause core dumps if cast from a
10530wand.
10531
10532find_target_for_friendly_spell fixed to use the get_owner call instead of
10533referring to op->owner (get_owner should always be used.) Fixed core dumps
10534that were caused when the owner would be killed, but still have a pet
10535monster (vampires as an example.) get_owner makes checks to make sure
10536the owner still exists.
10537
10538Only set the windows colormap if on a color display.
10539
10540------------------------------------------------------------------------------
10541Changes from Crossfire 0.91.8 to 0.91.9:
10542
10543Changed some parameter names from spell to spellnum. Some compilers don't
10544like parameter names that match structure names.
10545
10546Alot of skill code added by Brian Thomas.
10547
10548Assume that Suns running solaris have strncasecmp. Also, if using
10549Xpm_Pix, assume the strcasecmp is available (the Xpm library should
10550provide it.)
10551
10552get_player_ob function now uses the CALLOC define, instead of just
10553calloc.
10554
10555When dropping items onto objects that blocks view, they now fall below the
10556object that blocks the view.
10557
10558XPM mode now works with private colormaps. It will also switch to a private
10559colormap if it runs out of color during the xpm creation (works for
10560crossedit also).
10561
10562Don't let players put starting equipment into containers.
10563
10564A bows weapon class (WC) is now used to determined hit probability for
10565arrows.
10566
10567When a player dies (in NOT_PERMADEATH mode), the character is immediately
10568saved. Thus, if you die there is no advantage to crashing the server,
10569hoping for a copy of your character from before you died.
10570
10571Set the value to 0 for arrows created with the create missile spell.
10572
10573When transferrance is cast excessively, don't hit the person receiving the
10574spell with 9999 points of physical damage (otherwise, spell can be used to
10575kill many powerful monsters.)
10576
10577Made some changes to make it compile properly under Solaris.
10578
10579Fixed bug in dropall that would cause an infinite loop if the player had
10580an open container.
10581
10582Exits can now inflict damage on players.
10583
10584Fixed middle mouse button missle attack. Now clears the fire_on flag.
10585
10586------------------------------------------------------------------------------
10587Changes from Crossfire 0.91.7 to 0.91.8:
10588
10589Messages about an objects speed no longer printed to the console.
10590
10591When players exit maps, no longer inform all the other players.
10592
10593install-same and install-font directives added to lib/Imakefile - used
10594if game is being installed to same font it was unpacked in.
10595
10596Client now supports receiving bitmaps - server does not support
10597sending them, however.
10598
10599Max experience achievable is based on max level, not a hard coded
10600value (although, at present time, max level is hardcoded to 100)
10601
10602insert_ob_in_ob now returns an object - needed for client/server code.
10603
10604check_inv function added to button.c. Trigger will be altered depending if
10605the character has a matching item (or lack of a matching item.)
10606
10607Option added to config.h to make it so that backup saves will save the player
10608back at home, instead of the present map. Code adapated from code sent
10609by John Steven Moerk (jsm@axon.ksc.nasa.gov)
10610
10611Minor bug in crossedit fixed that would cause it to exit if both
10612-p and -xpm is specified. Both can now be specified - it will effectively
10613ignore the -pix portion.
10614
10615New skills added, with corresponding code to use these skills (from Brian
10616Thomas) Use of skill code is selectable in the config.h file.
10617
10618Two new spells: summon fog and steambolt (from Brian Thomas)
10619
10620Enchant armor code added (from Brian Thomas)
10621
10622Fixed bug in crossedit that would cause it to core dump whenever a non exit
10623was selected and then the enter command run.
10624
10625Fixed bug in attack.c that was using info_all if CASTING_TIME was
10626selected.
10627
10628Made it so that decrease_ob_nr will never decrease the object number below
106290. This fixes a bug in that remove_ob would calculate a negative weight,
10630and then call sub_weight with that negative value. This ended up resulting
10631in weight being added to the player instead of subtracted.
10632
10633------------------------------------------------------------------------------
10634Changes from Crossfire 0.91.6 to 0.91.7:
10635
10636Item saving throw changed around - items are only invulernable to attack
10637types that they are protectected or immune to. For example, if an item is
10638protected from magic, and is is by AT_FIRE | AT_MAGIC, it still needs to save
10639against fire. Before, since it was protected from magic and the attack type
10640includes magic, it would not have been affected in any way.
10641
10642insert_ob_in_map_simple function added. This is used in functions that what
10643to examine all the objects on a space, yet insert new objects as it goes
10644(polymorph). This function will not merge objects, so traversing the stack
10645will work fine. Should fix removing removed object bugs that used to happen
10646for polymorph (function should be used in other functions that do a similar
10647thing)
10648
10649Damage field in objects is now 16 bits (signed). Needed because some
10650high level spells would do more damage than could be stored in signed
106518 bits.
10652
10653The 'old' client program no longer compares versions - there is no reason
10654to, since the client doesn't do anything that requires an exact version
10655match.
10656
10657Better handling of the Eutl library added - selection is now done
10658in crosssite.def.
10659
10660Large lake faces expanded - now set up like walls, where auto join works.
10661walls pick file expanded to include this image series and some other walls
10662that were not previously set.
10663
10664Pacify spell added - code from Brian Thomas
10665
10666Show invisible and X-ray spell added (code by Peter Mardahl)
10667
10668Face data is static - that is to say the the color for any face can not be
10669changed. In order to do a face with a different color, a new face needs to
10670be created (or perhaps linked to the old). This change was made because for
10671client/server communication, having a known color for each image greatly
10672simplify things (also, on monochrome or XPM displays, color information
10673didn't have any effect). Related changes:
10674
10675 1) color information is no longer stored in the archetypes file,
10676 but continues to be stored in the individual .arc files. collect.pl
10677 has been modified to store this information in a faces file.
10678
10679 2) visibility variable added. This is a face value, and it is meant
10680 to take the place of the DOUBLE_FLOOR_PATCH. System will work like
10681 this if DOUBLE_FLOOR_PATCH is enabled: the floor and the object
10682 with the highest visibility + the top object will be drawn.
10683
10684 3) color can not be changed in maps - in fact, since color is now
10685 stored in a different file, the color handling for objects has been
10686 removed. Note - when loading a map with crossedit, this information
10687 is silently ignored. Thus, when then saving the map, the color
10688 information will be lost. The maps should be updated with new faces
10689 if this color information is imporant. The lib/adm/map_info perl
10690 program now will print out warning messages for maps that are using
10691 color changes. Also, the code in loader.c can easily be changed to
10692 print out when it loads a color change (disabled because it is too
10693 verbose for most uses)
10694
10695PLAYER_COLORS config option and code support removed - with new static face
10696information above, this can not be supported in any real way.
10697
10698Shop buildings no longer have is_floor set. This was a hack for the
10699DOUBLE_FLOOR_PATCH for XPM mode. However, enabling it can make it so
10700objects disappear beneath the shops (due to the way maps save.) Having
10701objects not disappear is much more important (IMHO) than having things look
10702just a little bit nicer for XPM mode. Archetypes exist for it, but are in
10703the dev/unused/0.91/7/mood_floor directory, since no maps presently use them
10704
10705Mood floors added (code by thomas@nomad.astro.psu.edu). When activated,
10706these floors can change the mode/flags of monsters (make them aggressive,
10707make them unagressive, make them fall asleep, or charm them)
10708
10709New output mode in place - this uses a much smarter buffering method - it
10710keeps track of several messages, and how often they are flushed is setable
10711with the output-sync and output-flush commands (a help file does exist).
10712All the various draw/write functions have been cleaned up, so that there now
10713exists only 1 front end function (new_draw_info), which takes flags,
10714priority, object, and the actual string. The flags are defined in
10715newclient.h, as NDI_* (in this file because client should use the color
10716flags sometime in the future, and it makes sense to keep all the flags in
10717one place). Priority corresponds to the listen level that the player has
10718set - the lower priority, the more likely it will be printed.
10719
10720Certain runes/traps now work properly (things like create bomb and magic
10721draining would not work if the player is not on the same square as the rune)
10722
10723When a player kills a window, the players objects will be destroyed
10724and not placed on the map.
10725
10726Scrolls, rods, wands, and staves will always be at least level 1.
10727
10728Beefed up demilich's. Previously, for the experience they were worth,
10729it was much to easy to kill them. Main difference is that now their
10730speed is 0.25 compared to 0.06
10731
10732Fixed minor bugs with player movers - if the object to be moved had a
10733speed greater than 1, it was possible to avoid all affects of the mover.
10734
10735Objects that slay are fixed up. Previously, only if the race matched the
10736slaying type did it work. Now, in addition, f the race of archetype name
10737matches the slaying, the object will slay. This fixes stakes, and probably
10738a lot of other items that weren't slaying creatures properly.
10739
10740Changed some of the stat bonuses/penalties for all the classes. All the
10741'normal' races now have a net total of 0 (fireborn, wraith, and quetzalcoatl
10742are not considered normal races, so their totals are unchanged.)
10743
10744Some of the items in the artifacts file have been fixed up - fixed
10745spelling errors and errors in placement of the difficulty.
10746
10747------------------------------------------------------------------------------
10748Changes from Crossfire 0.91.5 to 0.91.6:
10749
10750When player stops attacking, make sure his speed_left is not larger than his
10751normal speed. Fixes a bug where you could attack a wall, then try to attack
10752in another direction, and move quite quickly for a short time, since weapon
10753speed would be used for that short burst of movement.
10754
10755Drain attacks become attack type physical when the character reaches the
10756mininum experience possible.
10757
10758Do not allow equipped weapons to be improved if they would make it too
10759powerful for the character to use.
10760
10761errmsg buffer sized increased to HUGE_BUF. Should fix some bugs that
10762were causes when this was overflowed in dump_object2.
10763
10764SOUND_EFFECTS (if selected) is now defined when compiling all files.
10765Previously, it was only set when compiling files in the server directory -
10766this had the effect that the player structure was different between the
10767server and common area.
10768
10769speed+2 items now increase speed properly. Values in the computation were
10770not being cast to floats, so a speed+2 ended up giving the same amount of
10771speed as a speed+1 item.
10772
10773Restoration changed around. The spell will no longer restore depleted stats
10774- this can only be done with the potion. The potion is now only generic
10775restoration - specific stat restoration potions removed. Also, perceive
10776self will now tell the player what stats are drained and by how much.
10777
10778Reduce the amount of experience you get from killing other players to
107791/10'th what it used to be. This should also discourage players from
10780killing other players.
10781
10782SAVE_PLAYER removed from configurable options - it is always on. I can't
10783see why anyone wouldn't want to be able to use this, and if you really
10784don't want to use it, removing the save directory would pretty much
10785work.
10786
10787Fixed dropall command. It wasn't dropping all items (seemed to
10788stop at first locked item.) Also, 'dropall armour' now drops
10789helmets in addition to shields and armor.
10790
10791Fixed heroism potion. It was casting the incorrect spell (detect curse).
10792Now it casts heroism.
10793
10794Fixed bug that would cause remove object to try and remove object. When
10795loading maps, an object in a container in a container would not be inserted
10796(this mostly happened with an object in a chest in an icecube.) Changed
10797code in load_objects to a recursive call, which can handle inventories any
10798number of layers deep.
10799
10800Fixed bug in drop_all that would cause core dumps.
10801
10802------------------------------------------------------------------------------
10803Changes from Crossfire 0.91.4 to 0.91.5
10804
10805Inventory icons are now updated properly. Also, the inv_name and look_name
10806arrays in the player structure have been redone - these are now arrays of
10807function pointers and use the shared string libraries to allocated and free
10808storage. This should take less space than the fixed size arrays that were
10809previously used.
10810
10811When buying equipment, weight is now subtracted properly from the player
10812for the coins that are used.
10813
10814Maps can now have a fixed reset time. This means that the map will reset
10815after a set amount of time, no matter whether it is accessed or not. Useful
10816for highly used maps that really need to be reset once in a while.
10817
10818Bug fixed in get_ob_diff. The difference array would get overflow,
10819corrupting other data. Many core dumps were probably caused by this.
10820
10821Fixed bug in legal_range routine where legal_range would only check to
10822first item of type BOW in a players inventory. This caused rotateshoottype
10823to not list the bow entry if it was not the first bow equipped.
10824
10825Cloaks are not always turned into artifacts - normal cloaks can be found now.
10826
10827Charisma bonus changed around some more. Penalties are not quite as harsh
10828for very ugly characters - with the change, a character will never pay
10829more than 10 times to buy something than to sell that same item.
10830
10831Various functions changed around and some new ones added so things will
10832work properly with the new client (still under developement.) Most notable
10833changes were to common/xutil.c, with the newclient.c and newsocket.c
10834files added.
10835
10836Unpaid items that are alchemied are now worth nothing.
10837
10838TWO_BYTES_FONT is now a standard. I can't see crossfire ever going back to
10839having less than 256 images.
10840
10841free map->tmpname when it is no longer needed (before setting it to NULL).
10842this pointer is assigned from a tempnam calls, which (on Sunos 4.1.x) uses
10843malloc to allocate space. Note - if this is not true for you system, let me
10844know, so I can put code in to handle this.
10845
10846destruction spell (from scrolls) fixed. This was actually a problem
10847in that cast_spell was not setting the owner properly.
10848
10849Magic mapping improved for bw systems. This actually makes it work like
10850it used to, with it doing stippling for object.
10851
10852Casting of director spells changed. Placement away from characters and
10853underneath characters now possible
10854
10855New potion type added - Improvement: This will raise level hit point or
10856spell point gain to the maximum value. It starts at the lowest level (ie,
10857first hit/spell points gained), and will raise one value to maximum.
10858
10859Some patches added (From Manfred Weichel, manfred.weichel@mch.sni.de) which
10860should make compiles on SVR4 work properly.
10861
10862New artifacts (in lib/artifacts file) added.
10863
10864Configurable option: cone attacks no longer propogate through monster - it
10865will only hit the first row.
10866
10867Remove curse/damnation changed so that it will not remove curses which
10868are a higher level than the spell caster.
10869
10870Polymorph code changed around. Greater chance of items being destroyed,
10871value can never be greater than twice the original value, no mininum value.
10872Also, now the item value and not clone value is used, so things like
10873scrolls, wands, rods, etc should have the max price work correctly. magic
10874is not maintained, rather, magic*4 is used as the difficulty for creating
10875the new item, with max_magic of the new item never being greater than the
10876magic of the old item. The number of objects remaining after a polymorph
10877will be less than the original (10 arrows might become 8 bolts, for example.)
10878
10879You will no longer attack players in the group you are in by running
10880into them.
10881
10882Titles now restored properly from save files (only makes a different if
10883SET_TITLE is defined
10884
10885When doing a save, check the return value of fclose when writing to tmp file
10886and the final file. If either of these writes file, use the backup file
10887instead (previous save file is renamed as a backup file.) Should prevent
10888problems when there are full filesystems of quotas in effect. The character
10889will not be saved, but at least an older save file exsists instead of the
10890character being totally gone (like before.) Patch from Laurent Wacrenier
10891<Wacren@Gin.ObsPM.Fr>
10892
10893Plural names for items that have a 'of' in them is fixed/added. This mostly
10894deal with potions (so instead of potion of dexterys, you get potions of
10895dexterity) Patch from Laurent Wacrenier <Wacren@Gin.ObsPM.Fr>
10896
10897query_cost changed around so that value for very low priced items are now
10898computed correctly. Before, the nrof of items was multiplied in very late,
10899and various divisions (for being unidentified) were done previously. For
10900low value items, this would result in a zero value. Zero values still
10901result for low priced items if you only have 1 or 2 of them, but if you
10902have 80 of them, a proper value is now generated.
10903
10904Code to control golems (and in fact many summoned creatures) now fixed.
10905Help file added about golems. This also fixes a core dump that was caused
10906when a summoned creature was around, and another scroll was used.
10907
10908Modified logger in common directory to no longer create a fatal error if you
10909get too many minor errors in and the editor is what is being used. Before,
10910occasional errors would be reported by the editor (mostly dealing with not
10911found archetypes in maps), which would eventually cause a fatal error. This
10912seemed erratic, because the editor never changes the tick, so loading one
10913map might result in the fatal error because of the error total from the
10914previous maps. Also, when using the editor, having missiong archetypes
10915probably should not be a fatal condition.
10916
10917food value can be changed in artifact file. Food is mostly used to have
10918various meanings in different objects. The artifact file has also been
10919updated about everything that is changable, and what the values mean (ie,
10920docs are built into the top of the file as comments)
10921
10922Weapons/armor no longer 'disappear' when a class that can not use such an
10923item tries to equip a group of them. That is, if a class that could not use
10924armor tried to equip 2 chain mails, one of the chain mails would disappear.
10925
10926------------------------------------------------------------------------------
10927Changes from Crossfire 0.91.3 to 0.91.4
10928
10929FLAG_NO_FIX_PLAYER is set before saving the player, and cleared after the
10930player is loaded. Before, a character will full sp and hp could be save, and
10931when reload, not be at full strength. This is because fix_player was being
10932called during the load process, before all the characters items had been
10933loaded and equipped. This, the maxsp and maxhp values were that of the
10934character with no items.
10935
10936Artifacts can now pass the various spell paths to the newly created
10937artifact. The values are or'd with the previous spell path values of the
10938object.
10939
10940The artifact file now supports objects with name NONE. If this object is
10941rolled up when trying to generate an artifact, then no artifact is
10942generated. This allows for better tuning the chances of having certain
10943artifacts, by just reducing the chance of having an artifact at all. The
10944'type' field of the Object in the artifact field is still required, but any
10945other fields for the artifact object are not used.
10946
10947Crossedit fixed so that all the images do not appeared inversed when being
10948used on a monochrome display.
10949
10950Changed common/xutil.h so that XPM mode will work on monochrome systems. In
10951fact, XPM mode should now work on all systems, previously, the load process
10952tried to create a pixmap 8 bits deep. If the X server did not support it,
10953errors would result. So while playing in XPM mode on monochrome may be
10954pointless, this allows play on systems where it may have some use.
10955
10956libproto.h and sproto.h only check that __STDC__ is defined. Previously,
10957__STDC__ had to be nonzero, and not all compilers set this. Also, in
10958global.h, if __STDC__ is not defined, return an error. Many compilers do not
10959allow _STDC__ to be redefined.
10960
10961Updated changable variable in crossedit. Now the various spell paths can
10962be set in the editor.
10963
10964SPEED_GAME now standard compile option, and not selectable. Having it as
10965an option seemed to create more problems than bugs non speed game found.
10966
10967Crossfire man page updated. xledit.man changed to crossedit.man, to
10968reflect the name of the program it represents.
10969
10970crossfire.doc updated with more information - mostly about new objects
10971added to the game.
10972
10973More help files.
10974
10975Objects with type CREATOR were added. The objects, when applied, create
10976other objects. Documentation in crossfire.doc.
10977
10978Object that cast spells (rod, scrolls, wands, and horns) now have a level
10979associated with them. This level is used to determine at what level the
10980spell should be cast, instead of using the owners level, which was typically
10981used before (allows creation of super powerful wands/rods/horns, but having
10982them be a very high level.)
10983
10984Bow, crossbow, bolt, and arrow code redone by Tero Haatanen. This cleans up
10985the code, and allows for magical arrows and bolts.
10986
10987Race can now be changed in the artifacts file.
10988
10989A spell of Banishment has been added.
10990
10991Attacktype AT_DEATH is now more potent when if against a monster that
10992the item also has slayign capability against.
10993
10994Bug fixed to prevent players from getting infinite experience for finding
10995the same trap. Also, experience changed for disarming traps.
10996
10997------------------------------------------------------------------------------
10998Changes from Crossfire 0.91.2 to 0.91.3
10999
11000Changed artifact structure so that items with a chance greater than
11001255 are now possible.
11002
11003Object now put into icecubes when hit by a cold spell, like before. This
11004probably got messed up in the saving throw re-write, where objects had to be
11005either immune or protected from cold to be put in icecubes. In fact, the
11006reverse was supposed (and now does) happen. IF an object is
11007protected/immune from cold, it is also immune from being put in an icecbub.
11008
11009Fixed up is_magical and need_identify routines to handle more items. Rods,
11010scrolls, and spellbooks are always considered magical in nature. Wands and
11011staves are magical if they still have charges. Also, fixed up so that some
11012of the Artifact items are now detected as being magical.
11013
11014If player lacks sufficient money to buy from shop, it now prints how much
11015short he is in standard english string, (ie, 2 platinum 3 gold,etc), instead
11016of gold.silver format (lacke 44.25 gold).
11017
11018Inventory drawing changed. Should be a little more efficient, and be more
11019efficient on drawing. With auto pickup modes (that pick up more than one
11020item), inventory will be drawn after all applicable items have been picked
11021up, instead of after each one.
11022
11023Item status is printed next to item image in players inventory if
11024SHOW_INV_ICON is selected in the config.h file. It would be nice if better
11025imagines were designed for the status (right now, just words are printed
11026out.)
11027
11028When connecting to the server, a one line welcome message is printed.
11029Crossclient was modified to ignore this line if it starts with 'Welcome', so
11030changing it may cause problems with crossclient.
11031
11032Potion of restorations are now handled by means of different archetypes and
11033treasure lists, instead of having special code in the program to handle
11034them.
11035
11036If a RUNE is found in an object inventory when free_object has been called,
11037remove the rune instead of dropping it to the ground. This is so that traps
11038(runes) disappear when the object they are placed on is destroyed.
11039
11040Doors are now trapped, and be detected & searched just like chest
11041traps.
11042
11043Map difficulty can now be set in the map, and not be calculated at map load
11044time. Crossedit has been modified so that 'Attributes' now contains a
11045difficulty field, and if set, this will be used when loading a map (it is
11046stored in the level field of the map). If this value is 0 (default), then
11047the old formula for calculating the difficulty will be done. The advantage
11048of this is that map creators can now set the difficulty of the map more to
11049their liking, and certainly do a better job than the program can do.
11050
11051Pickup by value density fixed. The number of items is now taken into
11052consideration (before it did not, so a lot of arrows would be picked up,
11053because the total value divided by the weight of 1 arrow was greater than
11054the pickup value.)
11055
11056Bug fixed in query_cost. Before, for F_TRUE value, unless the item was
11057worth more than 10,000 sp, F_SELL value would be calculated instead of the
11058true value.
11059
11060Merge several small files in common.c into one file called porting.c.
11061porting.c contains common functions that are called by crossfire. This
11062allows system dependent code by be in one file, instead of scattered
11063throughout the program.
11064
11065-listen_port <num> command line option added. num is the port to use for
11066connections, instead of the default (13326)
11067
11068Instances when a variable name is the same as a structure name have been
11069fixed (by changing the variable name). On some compilers, this is a
11070problem. I can not be sure that all such cases have been fixed, as I have
11071not found a way for gcc to create warnings in this situation.
11072
11073Random happenings when a spell fails due to encumbrance has been added.
11074This option is configurable in the config.h file.
11075
11076Trap code added. Chests and doors can now be trapped. 'search' and
11077'disarm' commands added. old 'search' command was changed to 'search items'
11078
11079Inventory locking added. Makes it so that items can be locked in a players
11080inventory, and will not be dropped when a 'dropall' command is issued.
11081'inv-lock' and 'inv-unlock' commands were also added.
11082
11083'gsay' command added for party mode.
11084
11085Spellbooks can now have their slaying field set to the name of the spell
11086that the spellbook is of.
11087
11088Debugging output disabled in crossedit. It produced copious amounts of data
11089that has little relevance except for the developers. It can easy be turned
11090back on by editing the crossedit/include/debug.h file.
11091
11092Artifact gems (worth lots of money) and amulets added.
11093
11094Invisible object now appear in crossedit. Fixes a problem, but now makes
11095use of the global 'editor' variable, making it likely it won't be obsolete
11096any time soon.
11097
11098Artifacts (in artifacts file) can now have nrof field that will be used to
11099generated the number of items instead of the treasure list. If the nrof in
11100the artifact is 0, then the standard treasure list nrof is used instead.
11101
11102Artifacts can now grant reflect missile and spell ability. Also, by setting
11103stand_still, the objects will not be animated.
11104
11105------------------------------------------------------------------------------
11106Changes from Crossfire 0.91.1 to 0.91.2
11107
11108Some options now standard part of game (SHOP_LISTINGS, Line of Sight). The
11109config.h (for this release) contains these options, but they are commented
11110out with the note they no longer do anything.
11111
11112Changed value pickup to pick up things based on true value, and not sell
11113value. True value is how much the item is worth without applying charisma
11114bonuses. Before, if two different characters used the same pickup mode,
11115different stuff could be picked up because of charisma differences (or even
11116if a character gained charisma, the same pickup mode may not work as it did
11117before). By using true value, pickup mode operates the same between all
11118characters,
11119
11120Items of type TREASURE can now have their experience set, and this will be
11121used for the difficulty of the generated treasure instead of the map
11122difficulty (as was done with shops). If experience is not set, then the map
11123difficulty will instead be used (or 14 in the case of shop floors).
11124
11125Cure poison actually cures it, instead of reducing the duration.
11126
11127Don't use fseek when loading in map files. Some systems do not support
11128fseek on pipes (which are used for compressed files). Instead, just
11129set the variable with the data we read, instead of seeking back and
11130re-reading it.
11131
11132Transferrance spell changed so that supercharging will have bad effects
11133(first confuses the player, then a large fireball is created (with player
11134losing all spellpoints)
11135
11136Poisoning made more vicious - it does more damage based on the level of the
11137creature that uses it (level/2 in fact). This makes it so that very tough
11138creatures that poison someone will have the poison do serious damage.
11139Also, damage caused is no longer random.
11140
11141 Chests can now contain multiple items. Code changed to handle this
11142properly. Treasure is also always dropped on the floor (Even if the chest
11143is in an objects inventory.) hp field used in chests (and in fact all
11144treasures) to determine how many objects to create (thus, a chest with 3 hp
11145will have 3 objects created).
11146
11147Crossedit now draws a rectangle around the selected area. Reversing the
11148color of the images did not work in XPM mode.
11149
11150Have client.c include "includes.h". includes.h sets up all the name defines
11151properly (ie, __sgi__, __sun__)
11152
11153SP_* functions changed (by Rupert Goldie) to take an object pointer instead
11154of a level value. This makes adjustments for spell costs (via stuff like
11155spell paths) easier to make, because now only the SP_* functions need to be
11156changed. With the object structure, checking for known paths (or perhaps
11157other things in the future) can easily be done.
11158
11159Bombs will now be dropped before exploding.
11160
11161New attack type (God Power) added. The cleric cause wound spells use this
11162attack type.
11163
11164Charm monster spell added.
11165
11166Party system re-written by Scott MacFiggen <smurf@soda.berkeley.edu>.
11167Characters will now only share experience if on the same map, and other
11168features were also added.
11169
11170Modified check_item function (used in creating weapons with the improve
11171scrolls). The objects being sacrificed do not need to be in one group (ie,
11172two groups of 4 potions of dex will now be counted as 8 potions). This only
11173applies to potions, since some can be identified and others not identified.
11174Also, cursed or damned items will not count towards sacrifice count
11175(although, they will be consumed).
11176
11177Changed way cancellation works on items. Before, if cancellation hit a
11178player and the player failed the saving throws, the items got no saving
11179throw versus cancellation (only if their absolute magic value was less than
11180RANDOM()%6 did they survive). Now each item gets a saving throw. Note that
11181if a container makes a saving throw, then the items inside do not need to
11182make saving throws and are unaffected.
11183
11184A separate function did_make_save_item was split off from
11185save_throw_object. did_make_save_item justs checks to see if the item made
11186its saving throw based on the tables (and any protections or immunities
11187grants it an automatic save, as before) save_throw_item calls this function,
11188and in addition, does the appropriate actions (burns up items, turns them
11189into icecubes, calls cancellation, etc.)
11190
11191Saving throw method changed. Before, each item got 5 chances to make a save
11192for each item it is composed of. Now, it gets one chance for material it is
11193composed of. Then, based on the number of saves it made, and the number
11194materials it is composed of, an overall made save/failed save is
11195determined. This change is to make it easier to figure out saving throw
11196values, and hopefully make adjustment easier.
11197
11198Saving throw tables updated. In general, each item is +5 compared to what
11199it was before. This should hopefully make it so that items have about the
11200same success rate they did before.
11201
11202Crossedit modified to preserve value of connected field when cut/copying and
11203pasting. Before, an object that was copied/cut would also have its
11204connected field reset to 0.
11205
11206More XPM images colored. Filenames for the river directory have been
11207re-done, to actually make it a bit clearer of what does what. The archetype
11208names were not renamed however, to keep compatibility.
11209
11210World expanded. Another row of maps was added to the southern edge. The
11211world maps were also renamed to a world_xy format, where x is a letter
11212and y is a number. This represents the x and y location of the map, making
11213it easier to figure out how maps related to each other.
11214
11215Map spaces can prevent magic user spells, cleric spells, or both. Before,
11216an anti magic square prevented all types of spell casting.
11217
11218Have monsters regenerate spell points even if they don't cast a spell.
11219Monsters have a 1:3 chance of casting spells, irregardless of any other
11220factors. Before, spellpoints would only be regenerated if it got past this
11221check. Also, some monsters (dragons, chinese dragons) have had their max
11222spellpoint and regeneration rates increased to correspond with the higher
11223cost of casting their breath weapons.
11224
11225Altars now will also match on the slaying field of the object being
11226sacrificed. This is similar to how keys and special doors work. With this
11227change, it is no longer required to make a unique item that then needs to be
11228sacrificed (ie, the dagger, the cup, and the crown for the old city
11229quests). Instead, a cup, and crown can be used, with the slaying field set
11230appropriately (unfortunately, will not work for weapons, as it will think
11231that is the monster to do extra damage against.) However, the altar code
11232always did match item name, so calling it something special like 'The
11233Dagger' and have the sacrifice look for that should also work.
11234
11235Spell encumbrance code added. More you are carrying the higher your
11236chance for failure.
11237
11238------------------------------------------------------------------------------
11239Changes from Crossfire 0.91.0 to 0.91.1:
11240
11241Fixed bug in the enchant weapon code. It was not allocing enough
11242space for the string, and thus would corrupt the heap.
11243
11244Minor fix to spells.c. IT was using strdup instead of strdup_local,
11245which caused the compile to fail on some machines.
11246
11247No longer gets errors when adding a player on a map that is not
11248loaded in a multi player game. Before, process_events would see that
11249the player has no object, and could get enough errors to cause the game
11250to quit. Now, it suppresses errors if it is only loading objects
11251for that map.
11252
11253Default map difficult for treasure that is created in shops was changed from
112549 to 5. In this way, the likelihood is higher that good items will be found
11255in dungeons, not in the shops (there are very few items with difficulty
11256above 9)
11257
11258Archetypes cleaned up. All archetypes that were not being used in a map
11259were moved to dev/unused/0.91.1. Note: There are still a few archetypes
11260that are not used in any maps, but these are part of a collection (ie, one
11261section type of a wall). This was done really because there is no reason to
11262have archetypes that are not being used to be in the official distribution.
11263It could be misleading for people looking through the arch directory (ie, 'I
11264thought I looked at all the maps, but never saw this monster'). Also, I
11265have no problem moving these archetypes back in, once some maps actually use
11266them.
11267
11268'grass' and 'sea' are no longer animated. There are a few reasons for
11269this: 1) The animations never really were that interesting, 2) being
11270animated put them on the speed list, and being that over all, they are the
11271second and third most used objects, this is a performance hit, and 3) With
11272pixmap and xpm images, re-draws are only done on squared the have changed
11273(really improves performance). However, with them being animated, they
11274often changed, so that more re-draws were needed. The old archetype and
11275image files are in dev/old (in arch distribution) if you actually want to
11276use the animated versions.
11277
11278Put a limit of 70 on damage bonus for weapons.
11279
11280Treasure lists expanded. The old treasure lists (in treasure.c) have been
11281removed, and treasure lists added to the treasures file added to take their
11282place. The treasure file has been expanded have list transitions, and
11283treasure lists in which 1 object on that list will be generated. Archetypes
11284(shop, random, and chest) updated to use the randomitems field to determine
11285what treasure list to use to generate the items. Advantages of the new
11286method: Ability to better tune treasure probabilities, re-compiling not
11287necessary in order to update treasures. the create_treasure function was
11288modified to add an extra argument - this is used to keep track of how many
11289times it has been called on this attempt to create a treasure. In this way,
11290infinite loops (with list transitions) are avoided. Generate treasure
11291replaced with a simpler function that calls create_treasure, and returns the
11292object. create_treasure takes a treasurelist instead of a integer
11293treasurelist number, like it did before. The crossfire.doc file has
11294been updated about the new treasures file capabilities.
11295
11296Chests are now created with their treasure as their inventory (this mostly
11297happened because of the treasure changes above). Advantage is that when a
11298chest burns up, its treasure may remain (or may be burned up). Before, when
11299a chest was burned up, its treasure inside was not created.
11300
11301Rolling multi-part objects should now work better (not perfect, however).
11302
11303Carrying an open bag with a mode that picks everything up will no longer cause
11304an infinite loop.
11305
11306Crossedit changed to draw selected areas as a black box. Fixes some problems
11307with display in XPM mode.
11308
11309Fixed bug that would cause game to crash when pets were summoned. Problem
11310was an infinite recursive loop, that would then cause the system to run out
11311of stack space. Solution is to decrease the speed_left of the object before
11312one of the function calls. This makes it so that at some point, one of the
11313functions will not be called.
11314
11315When a rune is cast, use the s->archname for the archetype name, and
11316not hard coded strings. Cured a bug with rune of transference. Also,
11317allowed several case statements to be merged. Really, no archetype names
11318should be used in spells.c, when casting spells. The archetype name should
11319be gotten from the spell structure.
11320
11321If a button is being updated on a map that is being saved, just return
11322from the function. Prevents errors 'object has speed but is free'
11323
11324Fixed bug that caused objects that got a speed_left of exactly 0 to
11325be frozen. This was because speed_left >0 to have the object be processed,
11326and <0 to have speed added. Now, speed is added if speed_left <=0.
11327
11328Some minor changes made to hopefully make it compile on AIX systems without
11329any modifications.
11330
11331process_active_maps now called when a map is being loaded. It should
11332hopefully work properly, since enter_exit was modified to not use any
11333static variables. Also, process_events was modified to take a map as
11334an argument, and if non null, only update objects on that map. That makes
11335process_map obsolete. process_active_maps was also changed to still process
11336even if there is only one player.
11337Crossfire should let players still perform actions when a map is being
11338saved. Problem is, handling a map that is in the process of it being
11339saved, and having a character enter it. Crossfire needs to finish
11340saving that map, then re-load it and insert the character. Large changes
11341to how player interact with loading & saving of maps would probably
11342be needed, and probably should be done.
11343
11344You no longer lose luck if you kill yourself, and the player who kills another
11345player now loses the luck (before, the player killed would lose luck).
11346
11347Now inventory display modes - unpaid, cursed, magical, nonmagical. All pretty
11348self explanatory.
11349
11350------------------------------------------------------------------------------
11351Changes from Crossfire 0.90.5 to 0.91.0:
11352
11353Some new maps added to the standard distribution (Magara and some of
11354the esben maps). Magara was added as a place to depart to by ship, the
11355esben maps were merged in as new buildings or towers on existing maps, not
11356as a new continent.
11357
11358Keyboard buffering is now selectable via 'keyboard' command. Before,
11359an attempt to remove keystrokes from the X Events queue was made, but could
11360not always remove all of them. Now, it should remove all of them, or none
11361of them, depending on the keyboard buffer setting. The value will be
11362saved with the player.
11363
11364Pickup mode value now saved and restored from the characters save files.
11365
11366Inventory and look window should only be re-drawn once when selling
11367an item.
11368
11369Calls to draw_stats in common/living.c will only be made if the object
11370type is a player (should prevent some warning messages)
11371
11372Fixed create earth wall spell so that it uses bdur as the base hit
11373points of the wall (instead of bdam). This will prevent some core dumps,
11374because otherwise, the wall can have 0 hit points.
11375
11376Program should not core dump when person quits that game and the map he
11377is on has been swapped out. (ie, person saves or quits the character,
11378but the map gets swapped out before they type 'q' to the play again
11379question)
11380
11381Word activated teleporter code added (Peter Mardahl).
11382
11383Who can become DM, based on their user id, can now be set in the dm_file
11384(assumed to be in lib.) (Tyler Van Gorder)
11385
11386Tell should now work properly (Eric Mehlhaff)
11387
11388Cloak code added (Peter Mardahl)
11389
11390Objects can not grant invisibility, make_invisible variable added to
11391archetype files.
11392
11393Added information to the crossfire.doc file (was missing several
11394attack types and materials). Added better information on what some of
11395the flags do. Noticed that will_apply 4 applied for both scrolls
11396and earthwalls, now only applies to earthwalls. To have a monster
11397use scrolls, can_use_scroll should be used instead.
11398
11399Code added to deny users or sites from connecting. This is to prevent
11400users who intentionally crash the server to connect and start up a window,
11401which they then crash the server with. Patches from Tyler Van Gorder.
11402
11403Two floors will can now be drawn when using XPM mode and this options
11404has been selected in config.h This allows for towers to sit on top of
11405grass to look proper. From Gregor Schmid <schmid@fb3-s7.math.tu-berlin.de>
11406
11407Patches that modified 'create food' spell. Better food (ie, waybread)
11408will be created at higher levels, and the caster can also specify what
11409type of food to be created. From Peter Mardahl.
11410
11411Spell paths added by Rupert G. Goldie <rgg@aaii.oz.au>. Simply put,
11412each 'spell path' contains a certain category of spells. Objects and
11413races can be attuned, repelled, or denied certain paths (objects would
11414apply the the person wearing them). Attuned allows casting of spells in
11415that path at lower cost and greater efficiency, repelled paths are cast at
11416a higher cost and lower efficiency, and denied paths can not be cast at all.
11417Thus, a wand of small fireball that is attuned to Fire would cast more
11418powerful fireballs. A character wearing a ring that is denied the path
11419of fire could not cast fire spells at all. Right now, no items will
11420be created using these features, and no characters have any of these, but
11421these might be added in the future. Look at the spell-paths file in the
11422doc directory for a little more information.
11423
11424Pickup mode 6 (pick up magical items) will not pick up known cursed items.
11425
11426 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11427Object structure and process_events changed. Now, a separate list
11428us used to keep track of active objects (objects whose speed is nonzero).
11429All objects on the active list are still on the normal list, but
11430process_objects only needs to go through the active_list for objects
11431to process, saving a lot of time. The cost is adding two
11432pointers (active_next and active_prev) to each objects. But the speed
11433gains are well worth the minor memory cost. the 'malloc command
11434was changed to display the number of objects on the active list -
11435note that there is zero memory usage for these, since these objects
11436are also on the normal object list.
11437
11438Programming note: Any time an objects speed is changed (doesn't
11439happen too often), a call to update_ob_speed(object *) must be
11440made, so that the object can be added or removed from the active
11441list, as appropriate.
11442
11443In testing, I first ran crossfire, with process events using the
11444normal object list, and printing out error messages if it found
11445objects that had speed but were not in the active_list. I cleared out
11446a couple warehouses in Navar without any errors.
11447
11448Then, I switched to using the active_list, and printing out errors if
11449it found objects on that list with zero speed. I cleared out the
11450mages tower in Navar city without any errors.
11451 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11452
11453
11454Selling items now works properly (it only failed to work if
11455AUTO_SAVE was not set previously, and the value of the item was
11456beyond a certain amount.)
11457
11458Look window code changed so that it does not erase the unused area
11459unless necessary. Also, when a player moves, freeze_look is set.
11460This was changed because the functions that move_ob calls update the look
11461window, and the window was being updated 3 times each time the player moved.
11462
11463When poisoning ends, it no longer core dumps.
11464
11465Inventory window updated if reading an unidentified spell book and you
11466already know that spell.
11467
11468Casting rune spells now works properly.
11469
11470Spells now (once again) sorted upon loading of characters.
11471
11472------------------------------------------------------------------------------
11473Changes from Crossfire 0.90.4 to 0.90.5:
11474
11475Bug fixed with window titles getting their names changed. (Tero Haatanen)
11476
11477Container code changed around. Containers can be locked, they can be used
11478from the ground. FLAG_CONTAINER removed, since there is already a type
11479container, and bonus removed from object structure (Tero Haatanen)
11480
11481insert_ob_in_ob sorts objects, so items with more magic are before those
11482with no magic bonuses even for unidentified. It also uses the absolute
11483value of the magic, so it should be a little more difficult to know if the
11484item is cursed or not.
11485
11486Added unique-flag and UNIQUE_ITEMS define. All items which have unique flag
11487are saved to directory .../lib/unique-items. A filename is mapname + ".v" +
11488number, where number is normally 01, but if two or more server is running
11489same time it can be also greater. This feature can be used to banks and
11490inns to save permanently items. The code is one limitation: if map contains
11491unique item which can be carried away from map (e.g. an unique excalibur)
11492there must be at least one unique item on map which can't be carried away.
11493This is because unique items are loaded from original map only if unique
11494items file doesn't exit. If all unique items are carried away from map then
11495they are loaded back next time when someone enters that map. This should
11496not a problem if map makers remembers this. (Tero Haatanen)
11497
11498Editor by Jarkko Sonninen. He added toggle button into attribute window and
11499made map's reset time and timeout so that they can be configured in maps. He
11500also fixed map archetype, so that map default stating coordinate is (2,2)
11501like before. This seems break a gatehouse map, where it use default value
11502on map (changed 0 to 2), but it's easy to fix.
11503
11504Change check_walk_on (common/object.c) so it no longer calls the draw_func.
11505This eliminates a problem of seeing flashes of areas that should be blocked.
11506This is because the draw function it called would re-draw the game window
11507before the variable to re-calculate line of set was set. As I see it, this
11508function call was not needed in any case, because this is called during the
11509players movement. After the player moves, the draw function is called from
11510the process_events (now process_players1) function. This should also
11511conserver a little cpu time, and bandwidth.
11512
11513Coin code in shop.c changed. Patch from Kjetil Torgrim Homme made it so
11514that coin value can be changed in archetypes and the shop code should still
11515work properly. I made changes so that the number of coin types is set with
11516a #define, making adding new coin types easier.
11517
11518AUTOSAVE, SAVE_INTERVAL, and NO_EMERGENCY_SAVE should now work properly.
11519See include/config.h for more information on these options.
11520
11521Changed it so that updates to other maps will not be performed while
11522loading a map. This caused a bug if two players entered exits
11523at the same time. One or both of the players may end up in incorrect
11524locations, all exits in that location may be closed, etc.
11525
11526Saving throw table expanded to handle all materials and attack
11527types (Peter Mardahl)
11528
11529Fixes so that Turn Undead does not do physical damage (Peter Mardahl)
11530
11531Patch to make it impossible to prepare multiple weapons at the
11532same time (Peter Mardahl)
11533
11534Added 'sea1' archetype. This is the same as the sea archetype, but allows
11535for walk on. Its purpose is to use for backgrounds behind boats and similar
11536objects. Because it will probably be needed in so many places, I decided to
11537make an archetype, instead of editing the variables inside crossedit for the
11538object.
11539
11540Removed xbm_values array. This was used to map a face number to that face
11541location in memory. Since the bmaps file is created automatically without
11542any holes, this is not longer necessary.
11543
11544Archetype for wonder spell now in place. This will prevent core
11545dumps when the spell is cast.
11546
11547Pixmaps will now be freed upon exiting Crossfire. They will also be freed
11548after emergency saves are performed. This fixes the problem that some
11549X-Terminals would not free the memory used the the pixmaps otherwise, and
11550run out of memory. This fix pertains to both -pix and -xpm mode.
11551
11552Patch to hopefully double death problem/core dumps with NOT_PERMADEATH
11553mode.
11554
11555Changed the size of the temporary string that is used when loading
11556messages. For a few very long messages, 1024 bytes was not enought.
11557
11558Patches put in Crossedit to allow for XPM mode. From Petri Heinil.
11559
11560Cleaned up the code for look window. Now, everything agrees (ie,
11561when you click on something in the look window, it is actually
11562that object.) Likewise, invisible objects are not displayed
11563anywhere. This should also fix a bug of not being able to enter
11564some building by clicking the middle mouse button on them.
11565
11566Added help file for pickup. Explains the 8 basic pickup modes
11567plus the value-density pickup mode.
11568
11569Detect magic will detect magic on all items in a stack, not just the
11570top object.
11571
11572Spells fixes (From Peter Mardahl):
11573 1) Identify modified to identify items on the ground if inventory is
11574 identified.
11575 2) Detect magic spell finds magical runes and makes them more visible
11576 3) AT_CHAOS and AT_COUNTERSPELL reimplemented so that they are not
11577 treated as special cases by the move_cone function
11578 4) Magical walls created by spells (firewall, frostwall, ....) are
11579 fixed
11580
11581If a map is reset, that map is then removed from the list of map objects
11582(what you see when you type 'maps ). This way, the 'maps commands only
11583displays maps that are reasonably active. This change should also save a
11584little memory.
11585
11586make depend now descends into crossedit/Cnv to depend there.
11587
11588Changed some of the colors in the xutil.c file. This is so that it uses
11589the same colors as the official colors for XPM files. It would have been
11590better to make those colors part of the official XPM colors to start
11591with, but it is a bit late to do that now. The change of the xutil.c file
11592was made so that crossfire would not use quite as many entries in
11593the colormap. The change in colors should be quite minor.
11594
11595Two new pickup modes added - one picks up all money and gems, the other
11596all magical items.
11597
11598Removed a lot of dead code from the various header files. removed
11599hiscore.h from distribution (wasn't declaring anything that was not
11600being declared elsewhere.)
11601
11602
11603------------------------------------------------------------------------------
11604Changes from Crossfire 0.90.3 to 0.90.4:
11605
11606Many more XPM images now properly colored. NOTE TO COLORERS: A few minor
11607changes have been to the xpm.template file (palegreen has been replaced with
11608green3, and a more medium orange has been added.) I replaced palegreen
11609because it was very close to the 'green' color already present. And a
11610medium green was lacking. A medium orange was also lacking, so I added one
11611in.
11612
11613New pickup modes, that can be based on value density (from
11614Peter Mardahl <peterm@soda.berkeley.edu>)
11615
11616Spells now have a casting time. (From Matthew Zeher <matt@cs.odu.edu>)
11617
11618Added libproto1.h file. This will be used for function prototypes
11619are affected by certain settings (ie, SPEED_GAME). This way, people
11620should not need to run 'make proto'
11621
11622New XPM loading method. Creates montage of the xpm files,
11623so that not as many calls to XPM are needed. This has reduced loading
11624time to about 30% of what it was before. Note: This done mean it takes
11625some more memory at start up, as the montage has to be stored
11626temporarily.
11627
11628Changed charisma bonuses. At 30 charisma, it will no longer be possible to
11629buy an item, and then sell it for more than you bought it for.
11630
11631Graphic exposures turned off on the GC's that are used in the game window.
11632Should improve performance.
11633
11634When a raise stat spell ends, the proper message (ie, You look ugly, you
11635feel less intelligent, etc) will now be printed out.
11636
11637If player NOT_PERMADEATH mode, and you die, a stat will only be decreased
11638one. Before, that stat was decreased one, and the max stat was set to that
11639value. So if the player was poisoned, or a stat was lowered due to some
11640other reason, that loss would become permanent. Now, both the stat and
11641orig_stat only gets decreased by one.
11642
11643invoke.c removed, cast_spell modified to handle what invoke.c did.
11644
11645Keep old shoot type if reading a scroll, instead of it being set to none.
11646
11647Raise stats spells should be progressively more costly (From Peter Mardahl)
11648
11649Should now be able to handle broken pipes without problem (ie, telnet
11650session closing unexpectedly). Made it so that listen level 0 on a socket
11651means that draw_all_sockets will not write to that socket. Crossclient uses
11652this so that it does not get unexpected messages, and thinks that it failed.
11653
11654Added 'set font' option. This basically unsets color pixmaps or xpm mode.
11655If crossclient was run without -xpm or -pix mode, it will send this command
11656to use fonts. What this means is that set (font,pix,xpm) should set that
11657display mode. Before, the display selection it defaulted to for crossclient
11658seemed unreliable at best.
11659
11660Fixed memory allocation problem in commands.c (it was writing to more
11661bytes than it had allocated)
11662
11663Draw message window almost complete re-written. In an effort to cut
11664down on flashing of the the status bars. ( Niilo Neuvo <anipa@guru.magic.fi>)
11665
11666More bug fixes for spells (from Peter Mardahl)
11667
11668Fixed some bugs for compiling on the Alpha running OSF/1 1.3
11669
11670------------------------------------------------------------------------------
11671Changes from Crossfire 0.90.2 to 0.90.3:
11672
11673Added -xpm command line option to crossclient.
11674
11675All spells should not be handled in the switch statement in spells.c
11676
11677Let players buy zero value items from shop. This really shouldn't be a
11678problem, the only zero value items of any use might be wands with very
11679few charges. If someone wants to buy poison or cursed items, they should
11680be able to.
11681
11682Fix spelling error of command line argument 'detatch'. It is now
11683spelled properly (detach).
11684
11685Change draw_color_pix in server/xio.c. It now draws the images to an
11686intermediate pixmap, and then draws that to the screen. May or may not be
11687quicker (XSetClipOrigin only needs to be set once), but it does prevent
11688flicker. Also add two more GC's to the player struct, to make these
11689operations faster.
11690
11691Unless XPM_PIX is defined, draw_color_pix will note be compiled in the
11692code.
11693
11694Fixes to make it compile on both Solaris and NeXT machines (hopefully)
11695
11696Removed PLAYER_COLOR #ifdefs and lines they control out of login.c. Those
11697were not needed any more.
11698
11699Added 'mapinfo' command to valid input commands.
11700
11701Only have crossfire display -m as a valid command if it was compiled
11702with DUMP_SWITCHES set.
11703
11704Changed install procedure to only copy those files necessary to playing
11705into lib. Also, don't install obsolete scripts into the bin directory
11706when installing.
11707-----------------------------------------------------------------------------
11708Changes from Crossfire 0.90.1 to 0.90.2:
11709
11710Cleaned up the display from 'maps. Now things line up nicely. It
11711doesn't print the name anymore, and truncates the path at 18 characters.
11712But this doesn't make a difference for most maps, and now you can actually
11713see what variables are set to what.
11714
11715Experience requirements changed. Initial values from Peter, but I changed
11716them to be more round numbers.
11717
11718Change targets in server and crossclient from ComplexProgramTarget
11719to AllTarget, DependTarget, and NormalProgramTarget. This is because
11720ComplexProgramTarget expects man pages in those directories, which do
11721not exist.
11722
11723Moved data initialization out of treasure.h and into common/treasure.h.
11724In theory, no data initialization should be done in the .h files, it should
11725all be done in the .c files, with the .h files declaring the appropriate
11726externs. Likewise, no .c files should have extern's for other data
11727functions, they should include the appropriate .h file to get those
11728externs declared. This would fix the problem of having to go through
11729the various .c files whenever one of the data structures change, to update
11730all the externs made to it. Since the compiler will check to make sure that
11731the extern in the .h file and the actual declaration in the .c file are
11732the same, it prevents errors of mismatched declarations (ie, having
11733something like char s[40][20], which at later point gets to
11734char *s[40], but some files still think it is supposed to be s[40][20].)
11735
11736Changed doc/Imakefile so that make install.man will actually install
11737the man pages.
11738
11739Characters that dies who were poisoned should have the poisoning
11740removed.
11741
11742Changes from the Berkeley Folks:
11743What we've done that's in this server code that I know of:
11744
11745--level dependency added to many spells.
11746
11747--level dependency tunable on the fly by editing the spell_params
11748 in the 'lib' dir and using the dm command 'spellreset' spellpoints
11749 and spell level are also changeable on the fly.
11750
11751--many new spells added
11752--protection spells can now superimpose, as can gain stat spells.
11753 repeated applications of protective or stat spells yield diminishing
11754 returns.
11755
11756--runes added--an implementation of magical traps. any spell may
11757 go in a rune. Read the documentation.
11758
11759--new spell interface. invoke <spell> invokes that spell immediately. Some
11760spells can take parameters now. invoke magic rune <spell>
11761will store <spell> in a magic rune. invoke <spell> will not set the
11762range spell. cast and prepare are synonymous.
11763
11764--Certain spells cannot be set as range spells now--less than 10 of these.
11765These are spells which no one would want to use more than once in a while,
11766like magic map.
11767
11768--A hack to object.c in common dir which makes objects created by objects
11769with owners owned by the creating object's owner. (This allows players
11770to get credit for a kill with the meteor swarm spell, which creates a
11771'swarm' object, which in turn creates the meteor objects.)
11772-- End of Berkeley additions.
11773
11774New maps and archetypes added.
11775
11776Crossedit can now load maps that are compressed.
11777
11778Add Solaris 2.x compile support.
11779
11780Now prints out what the scroll name was that turned to dust.
11781
11782Minor artifact changes (ring of ice is blue, ring of fire is red)
11783
11784Horn range weapon now works properly, via using the + and - keys.
11785
11786New input method (From Jari Vanhala <jam@modeemi.cs.tut.fi>). Looks like
11787it should now be possible to define keys to do most every command. Made
11788a few minor changes to default key file to make the present set up
11789act like the previous one.
11790
11791Fixed triggers and magic mouth. These devices will now open gates
11792as would be expected. The problem was that the opening routine
11793expects to see the op->value of these to be one, in order to open the
11794gate or whatever. Changed routines to toggle value between 0 and 1.
11795Note: As I understand, trigger handles return to their original state, but
11796keep the same value. That is, you pull the trigger handle, the handle returns
11797to its original position, but gate opens. Pull handle again, handle returns
11798to same position, but gate now closes. Or at least that is how I implemented
11799the devices.
11800
11801Make some more changes to the is_magical routine. Hopefully, it will now
11802detect all rings and amulets that are magical. Also, it should not
11803detect monsters (or any living object) as magical.
11804
11805Fixed bug with Color Pixmaps (XPM). Would try to free the pl->pixmaps
11806area twice, causing core dump. Looks like the same thing should have
11807happened when using bitmaps also. In any case, only one free(pl->pixmaps)
11808is now performed.
11809
11810Bug fixed with XPM code, in which 'floors' would appear to be
11811carried around with the player. This is because the players pixmap did
11812not change, and hence, it did not update that square. Now fixed.
11813
11814Random encounter bug might now be fixed (patches from Frank)
11815
11816New FLAG method used. flags in the object structure is now an array,
11817and SET_FLAG, CLEAR_FLAG and QUERY_FLAG functions are now used. This reduced
11818a lot of code in common/loader.c
11819
11820 Fixed bug in common/object.c in expand_objects function. Looks like
11821braces were missing from for statement, so the the prev and flag fields of
11822the new objects were not being set properly.
11823
11824 Fixed bug that could cause core dump if trying to print map message when
11825no message existed. (From Tero Haatanen <Tero.Haatanen@lut.fi>)
11826
11827 Starting character will have uncursed, undamned and identified items
11828at the start of the game. (From Tero Haatanen <Tero.Haatanen@lut.fi>)
11829
11830-----------------------------------------------------------------------------
11831Changes from Crossfire 0.90.0 to 0.90.1:
11832
11833 Crossedit 0.7 was merged in with the 0.90.0 source. This once again creates
11834a common distribution.
11835
11836 I tried to retain the best features of both programs. This means that
11837the artifact code, and cursed/uncursed items (from CF 0.90.0) remain.
11838But I also used the filepaths for fonts, elimination of omaps for
11839internals use, and creation of partially processed bitmap file for
11840bitmap reading.
11841
11842 The general patch method was to keep the cf 0.90.0, and create a diff
11843file for crossedit 0.7 from crossfire 0.89.3. These patches were then
11844applied. Many had to be implemented by hand.
11845
11846 There are some exceptions. The crossedit program is almost the exact
11847same thing as in the crossedit 0.7 distribution. I made a few minor changes
11848to clean up compiling, but otherwise, no serious changes were made.
11849
11850 The archetypes (lib/arch) structure was also taken from crossedit 0.7, as
11851well as most of the archetypes themselves. I think the breakdown makes
11852things much easier to handle for changes or improvements. NOTE: it is
11853likely that directory (lib/arch) will not be in the standard distribution,
11854but will instead be a separate file (to keep the size down). The various
11855files (archetypes, bmaps, font, etc.) will be created for the distribution.
11856All new archetypes from cf 0.90.0 were merged into the structure, as well
11857as a few minor changes in the old archetypes I noticed.
11858
11859 The maps are from the crossfire 0.90.0-a-maps distribution. A few
11860simple programs (in lib/adm) were used convert them to use fontpaths
11861and to change some monster names that conflicted with character classes.
11862Note: Because in the old format, a 'food' field was used to determine the
11863map to link to, it is possible some of these fields were changed when
11864they were not supposed to be. This is because some other archetypes
11865(altars for one) also use the food field. If you notice any converted
11866by mistake, please let me know.
11867
11868 A few minor memory leaks and other patches have also been applied.
11869
11870 Other specific changes to this version:
11871'set' now gives better help message (like what can be set.)
11872XPM code added.
11873Fixed bug in 'who', which would cause a core dump if done when
11874 another playing was still creating their character.
11875 'who' also display the map path of the other players, and not
11876 the map name. Map names seldom seem to be set.
11877The crossfire.cfb and crossfire.pix files (in lib) can be compressed.
11878Fixed bug that caused core dumps when pet monsters were summoned.
11879If restoring a saved game, and the map it was saved on does not exist,
11880 start them on the standard starting level.
11881Added option in config.h, that allows full ring and amulet descriptions
11882 to be printed in inventory and look window.
11883Hopefully fixed bug which caused game to dump core when player died,
11884 if NOT_PERMADEATH was set on.
11885Add flag HAS_MAGIC, and use that for the detect magic spell. This way,
11886 artifacts that have no magic, will still be shown as magical.
11887 So will rings that change abilities, etc. Doesn't work
11888 quite perfectly, but seems to work as well as the old method.
11889Fixed bug so that if it can not find a map, it just prints that
11890 that exit is closed, instead of panicing.
11891Have it re-draw the look window when you middle click on something (ie
11892 apply) in that window. This fixes a bug with bags/sacks, of it
11893 not updating when an item is used directly from a sack.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines