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.1.3 by elmex, Wed Mar 15 14:04:30 2006 UTC vs.
Revision 1.3 by pippijn, Thu Sep 7 21:07:57 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
20common/utils.c: apply patch #1445892 (transmute_materialname crash) courtesy
21 the cf.schmorp.de development team.
22include/spellist.h: disable big unused arrays, legacy of spell code.
23server/c_object.c: merge find_best_apply_object_match and find_best_object_match
24 which are really the same.
25server/init.c: fix memory leak.
26server/monster.c: fix a monster/scroll related crash, based on patch #1447242 by
27 the cf.schmorp.de development team.
28server/player.c: fix monitor_spells not initalized (before InitConnection()).
29server/skills.c: fix merging bug with inscription.
30socket/init.c: fix monitor_spells not being initialized.
31Ryo 2006-03-14
32
33Fix bug/exploit in setup command. We were strcat'ing back data provided
34by the client.
35---
36socket/request.c: Modify SetUp() to use safe_strcat() - eliminates buffer
37 overflow issues. Add some char* casts to spell/skill requestinfo
38 to eliminate compiler warnings. Add IP address to log for incoming
39 connections.
40MSW 2006-03-13
41
42Fix possible exploit with shadow alchemy. Also improve the alchemy spell to
43yield more nuggets.
44---
45server/shop.c: In query_cost() apply the hack (to multiply non-GEM/non-MONEY
46 values by four) also if no player object is present.
47Andreas Kirschbaum 2006-03-07
48
49Add settings permanent_experience_percentage, death_penalty_percentage and
50death_penalty_levels to the settings file.
51---
52common/living.c: don't hardcode exp calculations
53common/init.c, include/config.h, lib/settings: set defaults for new values
54doc/settings: document new values
55include/global.h: change settings struct to hold the new values
56server/init.c: parse new values in the settings file.
57server/skill_util.c: reference new value
58Brendan Lally 2006-03-07
59
60Apply modified parts of patch #1439490 (Fix in random map generation) by CF
61Development Team Schmorp.de <crossfire@schmorp.de>.
62---
63random_maps/exit.c: In place_exits() check for a valid exit path before
64 dereferencing it.
65random_maps/treasure.c: In find_closest_monster() include monsters at map
66 border. In find_enclosed_spot() prevent access to out of map tiles.
67Andreas Kirschbaum 2006-03-04
68
69Apply patch #1436833 (Patch for forked lightning crash at map borders) by CF
70Development Team Schmorp.de <crossfire@schmorp.de>.
71---
72server/spell_attack.c: In forklightning() prevent access to out of map tiles.
73Andreas Kirschbaum 2006-03-04
74
75common/loader.l: Prevent excess whitespace while saving objects.
76common/loader.c: Rebuilt.
77Andreas Kirschbaum 2006-02-27
78
79Apply patch by Marc Alexander Lehmann to improve server performance.
80---
81include/map.h: Move path field to end of struct. Since this field was huge it
82 pushed all other fields to large offsets in the struct. Moving it to the
83 end of the struct mapdef should not break anything but will improve
84 performance and reduce the server code by >3500 bytes.
85Andreas Kirschbaum 2006-02-27
86
87------------------------------------------------------------------------------
88Changes for 1.9.0:
89
90lib/collect.pl.in: Again fix generation of 'editor_folder' field to make
91 sub-folder selection work again.
92lib/archetypes: Rebuilt.
93Andreas Kirschbaum 2006-02-26
94
95*/Makefile{in.am}: Fix plugin makefiles so that 'make distcheck' works. Using
96 relative path names for files to include in distribution does not work -
97 need to have a makefile in each directory.
98configure{.ac}: Updated as result of new Makefiles.
99MSW 2006-02-24
100
101Apply patch #1428057 courtesy Pippijn van Steenhoven: fix to a crashing bug in plugins
102(incoherent order of parameters).
103Also use plugin_common.h in CFAnim instead of having separate definitions.
104Modified files:
105 plugins/cfanim/cfanim.c
106 plugins/cfanim/include/cfanim.h
107 plugins/cfanim/include/cfanim_proto.h
108 plugins/common/plugin_common.c
109 plugins/common/include/plugin_common.h
110Ryo 2006-02-23
111
112Remove object type CONFUSION since it was not used anymore.
113---
114common/item.c: Remove CONFUSION entry from item_types[] array.
115include/define.h: Uncomment #define CONFUSION.
116Andreas Kirschbaum 2006-02-22
117
118lib/collect.pl.in: Fix generation of 'editor_folder' field. It did not work
119 too well for .arc files in deep subdirs.
120lib/{archetypes,bmaps.paths,crossfire.0}: Rebuilt.
121Andreas Kirschbaum 2006-02-21
122
123random_maps/random_map.c: Cause the random map generator to skip certain
124 elements if the style is set to "none".
125doc/Developers/random-maps: Document above change
126Alex Schultz 2006-02-20
127
128socket/request.c: Don't crash on trying to send a spell which doesn't have an
129 associated skill
130Brendan Lally 2006-02-20
131
132Do not allow to dimension door into monsters or earthwalls.
133---
134server/spell_effect.c: In dimension_door() do not allow destinations that are
135 P_IS_ALIVE.
136Andreas Kirschbaum 2006-02-19
137
138random_maps/style.c: In find_style() fix access to uninitialized variable.
139Andreas Kirschbaum 2006-02-19
140
141Prevent crossedit from stripping out 'maplore' map header field.
142---
143common/map.c: Add code to load/save/dump maplore information.
144include/map.h: Add new maplore field to map struct.
145Andreas Kirschbaum 2006-02-19
146
147Apply patch #1433271 (code-cleanup) by Stefan Huehner: Add const and static.
148---
149Affected files: common/{loader.l,los.c,map.c}, include/{libproto.h,sproto.h},
150plugins/cfanim/{cfanim.c,include/cfanim.h}, server/{apply.c,skill_util.c}
151common/loader.c: Rebuilt.
152Andreas Kirschbaum 2006-02-17
153
154common/map.c: Modify ob_blocked() to properly handly objects with a 0
155 ob->move_type. Fixes infinite loop from random map code when trying
156 to place exits.
157MSW 2006-02-16
158
159Commit forgotten file for yesterday, which have the CFAPI_INT16 define...
160 include/plugin.h
161 server/plugins.c
162Ryo 2006-02-15
163
164Minor bugfixes:
165server/apply.c: Fix apply_transport ->contr checks to actually
166 check against correct values.
167server/plugins.c: Replace CFAPI_INT16 with CFAPI_INT - there is no
168 declaration anyplace for CFAPI_INT16 so compiles fails.
169server/swamp.c: Fix swamp code so that only objects that can be
170 picked up disappear - this way, transports don't disappear into
171 oblivion.
172MSW 2006-02-15
173
174Swamps don't affect DMs anymore. Also, swamps don't remove items with
175FLAG_IS_FLOOR or FLAG_IS_OVERLAY_FLOOR.
176 server/swamp.c
177----
178Fixes to plugin system. Added "SINT16" as return type.
179 server/plugins.c: resistances are sint16, not int.
180 plugins/cfanim/include/cfanim_proto.h: fix cf_object_get_resistance declaration.
181 plugins/cfpython/cfpython_archetype.c: fix comparison function, which should return 0 or +-1.
182 plugins/cfpython/cfpython_map.c: fix comparison function.
183 plugins/cfpython/cfpython_object.c: fix broken GetResist, fix comparison function.
184 plugins/cfpython/cfpython_party.c: fix comparison function.
185 plugins/cfpython/cfpython_region.c: fix comparison function.
186 plugins/common/plugin_common.c: object resistances are sint16.
187 plugins/common/include/plugin_common.h: object resistances are sint16.
188Ryo 2006-02-14
189
190Apply modified patch #1428048 (make the log line buffered) by Marc Lehmann.
191---
192common/init.c: In init_globals() switch the log file to line buffer mode.
193Andreas Kirschbaum 2006-02-11
194
195server/apply.c: In apply_scroll() do not identify the scroll if the player
196 lacks the literacy skill.
197Andreas Kirschbaum 2006-02-10
198
199Apply slightly modified patch #1428309 (code-cleanup: const, static) by
200Stefan Huehner: add const/static to functions/variables. Remove some type
201casts.
202---
203Affected files: common/{arch.c,glue.c,image.c,init.c,readable.c,time.c},
204crossedit/stubs.c
205include/{attack.h,libproto.h,object.h,sockproto.h,spells.h,sproto.h},
206random_maps/{door.c,rproto.h,standalone.c,style.c},
207server/{alchemy.c,apply.c,c_chat.c,c_misc.c,init.c,player.c,shop.c,spell_effect.c},
208socket/{info.c,loop.c,request.c}
209Andreas Kirschbaum 2006-02-10
210
211server/c_wiz.c: make dm stats command print Int and damage. Rearrange output
212 to match the stat ordering.
213lib/wizhelp/stats: document the stats command
214lib/Makefile.am lib/Makefile.in: install the new help file
215Brendan Lally 2006-02-10
216
217Apply modified patch by Marc Alexander Lehmann to fix get_rangevector
218functions on tiled maps.
219---
220server/map.c: Add helper function adjacent_map() to check if two maps are
221 adjacent. Modify get_rangevector(), get_rangevector_from_mapcoord(), and
222 on_same_map() to use this function.
223Andreas Kirschbaum 2006-02-09
224
225server/player.c: make a player's starting items be locked, so that they
226can't accidentally drop and lose them without unlocking them first.
227Brendan Lally 2006-02-09
228
229Apply patch #1427979 (code-cleanup: add const, fix warnings) by Stefan
230Huehner.
231---
232common/{anim.c,button.c,exp.c,friend.c,image.c,item.c,living.c,los.c,map.c,
233object.c,player.c,quest.c,readable.c,recipe.c,region.c,treasure.c,utils.c},
234include/libproto.h: Add "const" to pointer function parameters.
235Andreas Kirschbaum 2006-02-09
236
237Make create food spell work for all FOOD/DRINK objects. It used to fail for
238objects where another object with the same name but type POISON does exist.
239---
240common/arch.c: Add new function find_archetype_by_object_type_name() to find
241 an archetype by item type and item name.
242include/libproto.h: Add new prototype.
243server/spell_effect.c: In cast_create_food() only search for objects of type
244 FOOD or DRINK.
245Andreas Kirschbaum 2006-02-09
246
247Added a "insert_into" command for DMs, to easily put items in other items.
248Modified filse:
249 include/sproto.h
250 server/c_wiz.c
251 server/commands.c
252Ryo 2006-02-08
253
254server/main.c: Modify enter_exit() to see if player is in a transport,
255 and if so, remove him. Can happen if player uses word of recall
256 while in a transport.
257MSW 2006-02-07
258
259Regional jails.
260---
261common/region.c, include/libproto.h, map.h: parse jail entries, new function
262 get_jail_exit to return the exit to the local jail.
263doc/Developers/regions: update
264server/c_wiz.c, commands.c, include/sproto.h: add dm command, command_arrest
265 to jail players in the correct location.
266lib/regions: add scorn and navar jails.
267Brendan Lally 2006/02/08
268
269Code that adds transports. Transports are described more in detail in
270docs/Developers/objects.
271---
272loader.l: Add new move type ('boat'). Update move_name field to be aware of
273 this type.
274common/object.c: Unrelated to transport, but more apparant with transports -
275 fix bug with insert_ob_in_map() and multipart objects - we now only
276 try to fix up map and coordinates if the provided coordinates are
277 out of the map. Before, function would always use the passed
278 map for multipart objects, which is incorrect if we have already
279 set valid coordinates.
280doc/Developers/objects: Update notes for TRANSPORTS. Update move
281 information to include MOVE_BOAT.
282include/define.h: Add type TRANSPORT. Add MOVE_BOAT.
283include/player.h: Add transport field to player structure.
284include/sproto.h: rebuilt.
285server/apply.c: Add code to handle applying of transports. Update
286 apply_below to apply transport if player is on one.
287server/attack.c: Update hit_map() to look for transports, and hit any
288 players with the damage.
289server/c_object.c: Update put_object_in_sack() to also handle TRANSPORTS
290 so that code can be re-used.
291server/move.c: Fix handling of multipart objects in move_object() -
292 old code didn't work right with multipart objects moving along seams
293 of tiled maps. Add code to move_ob() to update player map position
294 for all players in a moving transport.
295server/player.c: Update move_player_attack() too check of player is
296 in tranport, and use that for map and location information. Update
297 move_player() to handle speed related issues with transports.
298server/time.c: Add code to credit time back to TRANSPORT objects since
299 we remove time in move_player() for TRANSPORTS.
300socket/item.c: Add add_object_to_socklist() so that same code isn't
301 reproduced in 3 different places in the file. Update draw_look()
302 to handle transports - send transport object itself, then objects
303 in transport. Update esrv_send_inventory() and esrv_send_item()
304 to use add_object_to_socklist(). Update esrv_get_ob_from_count() to look
305 for objects in transport if player is in transport.
306socket/loop.c: Remove checking of pl->map status, since draw_client_map()
307 does that, and we need to handle if the player is in a transport.
308socket/request.c: Handle map drawing if player is in a transport.
309MSW 2006-02-06
310
311movement type changes. Add move_allow field to explicitly allow certain
312movement types on spaces. Add suppport for using string names instead
313of numeric values to specify the MOVE_ values. Add code so when saving
314data out, use string names instead of numeric value.
315---
316common/loader.l: Remove save_double(), as it isn't used by any code.
317 Add set_move() to set movement types from strings.
318 Add get_string_move_type, which takes integer movement type and
319 returns a string. Update load and save code to use these functions
320 respectively.
321common/map.c: Change blocked_link() so that we only examine all the objects
322 on a space if there is something alive on the space or space is otherwise
323 blocked. There is no reason to examine all the objects on the space if
324 the object in question can move onto it.
325 Modify update_position() to use the move_allow field to clear bits
326 in the move_block field.
327common/object.c: Add check in CAN_MERGE for move_allow. Add check for
328 move_allow in update_object to see if we should update the space or
329 not.
330doc/Developers/objects: Update Movement code section to note use of using
331 strings to set movement types. Add note about move_allow. Section
332 about Transports added, but code isn't there yet.
333include/object.h: Add move_allow to object structure.
334MSW 2006-02-04
335
336Fix attack messages containing random characters.
337--
338server/attack.c: In attack_message() always initialize variables.
339Andreas Kirschbaum 2006-02-03
340
341server/c_misc.c: fix bug 1413239 Server crash with "who" command output
342using null map names
343Brendan Lally 2006-02-03
344
345include/newserver.h, server/login.c, socket/init.c, socket/loop.c:
346 drop any connection that fails to login successfully after
347 MAX_PASSWORD_FAILURES attempts (defaults to 5)
348doc/Developers/protocol: document properly the byte counts of item flags,
349 and include documentation of the itemcmd setup option.
350Brendan Lally 2006-01-30
351
352Custom commands-related fixes.
353plugins/cfpython/cfpython.c: fix custom command handling.
354server/plugins.c: try all plugins for custom commands.
355-----
356Moved the global event 'LOGOUT' from when player actually disconnects to when
357 player logs out and is asked whether to play again or not.
358Modified files:
359 server/apply.c main.c
360Ryo 2006-01-15
361
362socket/request.c: In ReplyCmd() make sure the reply does not cause a buffer
363 overflow.
364Andreas Kirschbaum 2006-01-13
365
366socket/request.c: add some better checks in addspell packet formation, fix a
367 crash bug.
368Brendan Lally 2006-01-13
369
370server/c_object.c: stop rename crashing if there is no name to rename to
371 when object is passed by number
372--
373server/c_object.c: allow the rename command to take tag of the item to be
374 renamed, so that clients can form rename commands properly.
375Brendan Lally 2006-01-11
376
377server/c_range.c: allow spells cast by number to also have options passed to
378 them
379Changelog: Commit the changelog entry for the last commit.
380Brendan Lally 2006-01-10
381
382 Spell listing support:
383 allow 'spell_paths' to be sent to requestinfo, reply with number:path
384 change return type of SP_level_spellpoint_cost to sint16
385 add spellmon as a setup value, if it is set;
386 send path attunement/repulsion/denial in stats
387 send data about spells in addspell packets
388 send updates to that data
389 Affected files:
390 common/living.c
391 crossedit/stubs.c
392 doc/Developers/protocol
393 include/funcpoint.h, newclient.h, newserver.h, player.h, sockproto.h,
394sproto.h
395 random_maps/standalone.c
396 server/apply.c, login.c, spell_util.c, init.c, loop.c, request.c
397 --
398server/c_range.c: allow cast/invoke and prepare commands to take item tags
399 as well as spell names
400Brendan Lally 2006-01-09
401
402Apply modified patch #1396303 (add setting to disable stealing from players)
403by Terry Brown. It adds a new option "no_player_stealing" to the settings
404file. If set, it prevents players from stealing from other players. It
405defaults to ON.
406--
407doc/settings: Add documentation for new setting.
408include/global.h: Add new field to settings structure.
409lib/settings: Add new option no_player_stealing.
410server/init.c: In load_settings() recognizes the new option.
411server/skills.c: In attempt_steal() prevent stealing from PLAYER if option is
412 set.
413Andreas Kirschbaum 2006-01-08
414
415include/newserver.h, socket/{init.c,request.c}: Remove unused fields ext2 and
416 ext_title_flag from NewSocket structure.
417server/skills.c: Fix/improve feedback messages for stealing skill.
418plugins/cfpython/cfpython.c, server/plugins.c: Just whitespace changes to make
419 it conform to programming_guide.
420plugins/cfpython/cfpython.c: Make sure context->options always is initialized.
421server/main.c: Make code more readable; use snprintf where appropriate.
422crossedit/Cnv/CnvPrompt.c: Make file compilable with Ansi C89 compiler.
423Andreas Kirschbaum 2006-01-08
424
425Global event Python scripts now are in subdirectories. This makes it easier to
426 distribute "Python packages". Modified file:
427 plugins/cfpython/cfpython.c
428Ryo 2006-01-07
429
430common/{item.c,treasure.c}, server/{apply.c,gods.c,spell_effect.c}: Use named
431 constants instead of numbers.
432server/monster.c: Use correct field name in move_monster().
433Andreas Kirschbaum 2006-01-07
434
435Summon pets less often to the owner on tiled maps.
436--
437server/pets.c: In remove_all_pets() and pet_move() use on_same_map() to check
438 whether the pet is too far away.
439Andreas Kirschbaum 2006-01-07
440
441Change meaning of "items are on same map": for tiled maps now two objects are
442also considered to be on the same map if they are on diagonally adjacent maps.
443This solves the issue that a pet can be only one tile away from the owner but
444still considered not to be on the same map.
445--
446common/map.c: In on_same_map() also consider diagonally adjacent maps.
447Andreas Kirschbaum 2006-01-07
448
449Added regions support for plugins. Affected files:
450 include/plugin.h sproto.h
451 server/plugins.c
452--
453Added regions to Python plugin. Affected files:
454 cfpython/include/cfpython.h cfpython_map_private.h
455 cfpython/cfpython.c cfpython_map.c cfpython_region.c Makefile.am Makefile.in
456New files:
457 cfpython/include/cfpython_region.h cfpython_region_private.h
458 cfpython/cfpython_region.c
459--
460In Python's Object, Archetype is now a property and not a method. Affected files:
461 cfpython/include/cfpython_object_private.h
462 cfpython/cfpython_object.c
463--
464Cleaned obsolete include/plugproto.h.
465Ryo 2006-01-07
466
467Make teleporters hidden below the floor work again.
468--
469server/time.c: In move_teleporter() use object above floor instead above
470 teleporter to operate one.
471Andreas Kirschbaum 2006-01-07
472
473Fix issues with map tiling.
474--
475server/move.c: In move_ob() make sure inserting multi-part objects into tiled
476 maps work.
477server/spell_attack.c: In cast_cone() insert spell effect at correct position
478 for tiled maps.
479Andreas Kirschbaum 2006-01-07
480
481common/map.c: Allow map tiling paths to be reletive.
482server/main.c: Template maps: Impliment using fixed maps as templates, and
483 improve reletive path support for them.
484Alex Schultz 2006-01-06
485
486Make SIGNs (including Magic Mouths) trigger for DMs again. Does not reduce the
487counter if in 'wizpass mode.
488--
489server/apply.c: In apply_sign() ignore DMs.
490Andreas Kirschbaum 2006-01-04
491
492server/spell_effect.c: Apply patch 1394861 - fixes magic walls. In conjuction
493 with archetype changes, look at the spell object (and not created wall)
494 to see if it blocks.
495server/c_chat.c: Apply patch 1389113 - orcknuckle messages appear in
496 same window.
497MSW 2006-01-01
498
499Prefer marked item when throwing objects.
500--
501server/skills.c: In find_throw_ob() prefer marked item.
502Andreas Kirschbaum 2006-01-01
503
504Make EXITs affect DM players again.
505--
506common/object.c: In check_move_on() ignore only slow movement penalties for
507 DMs.
508server/apply.c: In move_apply() ignore anything but EXITs for DM players.
509Andreas Kirschbaum 2006-01-01
510
511Make forked lightning correctly traverse tiled maps.
512--
513server/spell_attack.c: In forklightning() insert forked part into correct map.
514Andreas Kirschbaum 2006-01-01
515
516Properly unready forgotten spells. Prevents crashing the server if casting a
517forgotten spell.
518--
519include/sproto.h: Add new prototype.
520server/{apply.c,gods.c}: Call player_remove_range_ob() when forgetting a
521 spell.
522server/player.c: Add player_remove_range_ob() to unready a given object.
523Andreas Kirschbaum 2006-01-01
524
525Improve the commands learn_spell and forget_spell: now these commands accept
526partial spell names and print sensible error messages if they fail.
527--
528include/sproto.h: Remove prototype for now static function.
529lib/wizhelp/{forget_spell,learn_special_prayer,learn_spell}: Update help files.
530server/c_wiz.c: Add parameter op to get_spell_by_name() for printing error
531 messages to op. Allow partial matches for spell name. In
532 command_learn_spell_or_prayer() and command_forget_spell() report an error
533 to the player instead of an error message to the server log file.
534Andreas Kirschbaum 2006-01-01
535
536Fix reference-related crashes.
537 plugins/cfpython/cfpython.c
538Ryo 2006-01-01
539
540Apply modified patch #1391648 (FIX: new movement code and generators) by Lalo
541Martins. This fixes bugs #1383398, #1383392, #1375643, #1372035, #1370409; all
542bugs are related to objects stacking which should not stack.
543--
544common/map.c: In ob_blocked() consider tiles with living objects as blocked.
545Andreas Kirschbaum 2005-12-31
546
547Don't print "file not found" for global events.
548 plugins/cfpython/cfpython.c
549Ryo 2005-12-31
550
551Changed the way Python scripts are called. Now script don't share variables anymore.
552 Fix a memory leak.
553 plugins/cfpython/cfpython.c
554Ryo 2005-12-28
555
556Applied patch #1383359 (Fix death message) courtesy Anton Oussik
557( https://sourceforge.net/tracker/index.php?func=detail&aid=1383359&group_id=13833&atid=313833 )
558 server/attack.c
559Ryo 2005-12-27
560
561server/skills.c: In steal() do not give exp for stealing from pets since this
562 can be exploited to gain exp over and over.
563Andreas Kirschbaum 2005-12-23
564
565server/c_party.c: fix crash with party obsolescence (->next on freed item). Added
566 get_firstparty() to get firstparty private var needed for plugin.
567
568-------
569Added party information to plugin functions. Plugins can change player's party
570 or marked item.
571 New files:
572 plugins/cfpython/include/cfpython_party.h cfpython_party_private.h
573 plugins/cfpython/cfpython_party.c
574 Modified files:
575 include/sproto.h: add new functions prototypes.
576 include/plugin.h: party-related defines
577 plugins/common/include/plugin_common.h: new party functions.
578 plugins/common/plugin_common.c: new party functions.
579 plugins/cfpython/include/cfpython.h: add new include.
580 plugins/cfpython/include/cfpython_object_private.h: marked item/party getter/setter.
581 plugins/cfpython/cfpython.c: add GetParties to Crossfire module.
582 plugins/cfpython/cfpython_object.c: MarkedItem setter, Party getter/setter.
583 server/plugins.c: new callbacks for party, marked item setter.
584Ryo 2005-12-17
585
586server/attack.c: Make spells destroy objects again.
587Andreas Kirschbaum 2005-12-15
588
589Moved natural dragon skin resistances from "statistics" to "resistances".
590 server/c_misc.c
591Ryo 2005-12-13
592
593Fix Windows compilation after Andreas's changes.
594include/win32.h: define WIFEXITED and WEXITSTATUS.
595Ryo 2005-12-11
596
597Fix buffer overflows which can be triggered remotely.
598--
599common/porting.c: Re-implement open_and_uncompress(). The new implementation
600 should not contain any buffer overflows anymore. It also fixes possible
601 exploits due to funny characters in file names.
602plugins/cfpython/cfpython.c: Use snprintf() to truncate long strings.
603server/login.c: Reject invalid user names.
604socket/loop.c: Make overflow detection work while reading from socket.
605 Properly re-allocate memory for listen command. Fix buffer overflow for too
606 long command names.
607Andreas Kirschbaum 2005-12-11
608
609lib/collect.pl.in: General cleanup - just whitespace changes.
610Andreas Kirschbaum 2005-12-11
611
612Prevent the map loader from crashing when loading maps with incorrect headers.
613Changes are based on patch #1275563 by Kevin Rudat.
614--
615common/map.c: Do not dereference NULL value for map headers without parameter.
616Andreas Kirschbaum 2005-12-11
617
618Apply modified second part of patch #1275563 (Crossedit: fix map attributes
619window) by Kevin Rudat: let crossedit save/load tiling paths as the mapmaker
620entered them, rather than saving the normalized version.
621--
622common/map.c: Delay path normalization from map loading time
623 (load_map_header()) to access time (load_and_link_tiled_map()) if running
624 as editor.
625Andreas Kirschbaum 2005-12-11
626
627server/move.c: In move_ob() print error message instead of crashing: check
628 passed arguments before accessing them.
629common/object.c, server/{pets.c,player.c,spell_attack.c,time.c},
630socket/request.c: Properly check for P_OUT_OF_MAP after calling
631 get_map_flags().
632Andreas Kirschbaum 2005-12-10
633
634common/path.c: add missing global.h include.
635make_win32/crossfire32.dsp: add path.c and some headers.
636Ryo 2005-12-09
637
638Apply slightly modified first part of patch #1275563 (Crossedit: fix map
639attributes window) by Kevin Rudat: make the map attributes dialogs work again.
640--
641crossedit/Attr.c: Remove code to handle map attributes dialogs.
642crossedit/Crossedit.ad, crossedit/Crossedit.ad.h: Update X11 resources.
643crossedit/Defines.h: Add typedef for MapAttr.
644crossedit/{Edit.c,Edit.h}: Remove/update code to handle map attributes
645 dialogs.
646crossedit/Makefile.am: Add new files MapAttr.c and MapAttr.h.
647crossedit/Makefile.in: Rebuilt.
648crossedit/{MapAttr.c,MapAttr.h}: New functions containing code to handle the
649 main map attributes dialog.
650crossedit/Cnv/CnvPrompt.c: Convert CnvPromptStr into char array.
651Andreas Kirschbaum 2005-12-09
652
653Remove a strange feature of normalize_path(): it did convert the path
654"<path1>//<path2>" into "/<path2>". Also add a stand-alone application for
655regression testing this function, and fix a few issues with ".." in path name.
656--
657common/path.c: New file containing the modified implementation and the
658 stand-alone application.
659include/path.h: Prototypes for path.c.
660server/main.c: Remove implementation; call renamed function.
661common/Makefile.am, include/Makefile.am: Add new files.
662common/Makefile.in, include/Makefile.in: Rebuilt.
663Andreas Kirschbaum 2005-12-08
664
665server/ban.c: General cleanup - whitespace changes, rename variable names.
666 Should not affect function.
667server/apply.c: In player_apply() do not consider DM PLAYERs to be DM-created
668 items. This prevents the server from destroying the player object (and
669 crashing shortly afterwards).
670Andreas Kirschbaum 2005-12-07
671
672Apply slightly modified patch #1293744 (Inversed ban entries) by Thomas
673Equeter.
674--
675server/ban.c: In checkbanned() recognize '~' prefix to allow entries. Also fix
676 possible buffer overflow.
677Andreas Kirschbaum 2005-12-07
678
679Apply modified patch #1293774 (Kick banned hosts at once) by Thomas Equeter:
680disconnect new connection for banned host right after connecting. Also add
681support for user name in ban files.
682--
683lib/ban_file: Update comments and examples to new syntax.
684server/ban.c: Allow a NULL user name to check for host name only.
685server/c_misc.c: In receive_player_password() check for banned user name.
686server/player.c: In add_player() remove check for banned host - this was
687 already done if we reach this state.
688socket/init.c, include/sockproto.h: Pass ip address as a string.
689socket/loop.c: In doeric_server() check for banned host after a new connection
690 was accepted.
691Andreas Kirschbaum 2005-12-07
692
693Apply patch #1371956 (code cleanup patch) by Stefan Huehner: fix old-style
694function declarations and prototypes to proper Ansi C syntax. This patch
695allows the compiler to check function arguments and also removes some warnings
696when compiling with -Wstrict-prototypes.
697--
698All affected files: Convert "void foo()" into "void foo(void)".
699Andreas Kirschbaum 2005-12-06
700
701Fix bug #1173563 (Creator created Bombs malfunction): Creators and Converters
702now copy items from inventory. Fallback (for empty inventory) is the old
703behavior to create the new item from other_arch. If the inventory contains more
704than one item, a random one is picked.
705--
706common/loader.l: Mark inventory of CREATOR and CONVERTER as
707 FLAG_CONTENT_ON_GEN.
708common/loader.c: Rebuilt.
709common/object.c: Update x/y/map for non-head parts to make inserting multipart
710 objects via insert_ob_in_ob_at() work.
711server/apply.c: In convert_item() consider inventory for item to create.
712server/time.c: In move_creator() consider inventory for item to create. In
713 process_object() ignore item flagged as FLAG_IS_A_TEMPLATE. (Otherwise
714 bombs in inventories would explode prematurely.)
715Andreas Kirschbaum 2005-12-05
716
717New plugin property for player: marked item, added Python wrapper.
718Modified files:
719 include/plugin.h
720 plugins/cfpython/cfpython_object.c
721 plugins/cfpython/include/cfpython_object_private.h
722 plugins/common/include/plugin_common.h
723 plugins/common/plugin_common.c
724 server/plugins.c
725
726plugins/cfpython/cfpython.c: fix invalid reference management. Don't return NULL but Py_None.
727Ryo 2005-12-04
728
729Fix bug #1372194 (stairways now block movement).
730--
731random_maps/exit.c: In unblock_exits() check correct field move_block to find
732 blocking exits.
733Andreas Kirschbaum 2005-12-03
734
735server/apply.c: In move_apply() properly decrement recursion counter.
736Andreas Kirschbaum 2005-12-02
737
738server/spell_attack.c: Add some missing P_IS_ALIVE checks - these weren't
739 needed in the past because living objects would block movement -
740 with new movement code, isn't always the case.
741server/time.c: Fix player movers so that if the victim doesn't have any
742 movement type, we move it.
743MSW 2005-11-30
744
745common/time.c: In move_teleporter() and move_player_mover() do not affect DMs
746 if FLAG_WIZPASS is set.
747common/object.c: In check_move_on() do not affect DMs if FLAG_WIZPASS is set.
748 This prevents DMs from triggering traps when walking over them.
749Andreas Kirschbaum 2005-11-30
750
751common/map.c: Replace code with OB_TYPE_MOVE_BLOCK - effectively same as what
752 it was.
753include/define.h: Update OB_TYPE_MOVE_BLOCK so that spaces that don't block
754 any type of movement doesn't block objects that also don't have movement.
755 This fixes cases of gates not pushing objects off them.
756server/c_party.c: Remove double use of ->next pointer/loop in
757 confirm_party_password() - fixes crash and likely makes setting party
758 password work more reliably.
759MSW 2005-11-29
760
761common/object.c: Fix wrong comparision operator in free_object2() to make
762 monsters drop loot again.
763Andreas Kirschbaum 2005-11-28
764
765Basically added a parameter to 'skills' command to filter skills. And one char/const char* fix.
766common/anim.c: use const char* for find_animation.
767include/libproto.h: find_animation uses a const char*.
768include/sproto.h: fix prototype.
769server/c_wiz.c: send parameter to show_skills.
770server/skill_util.c: add search parameter to show_skills command.
771Ryo 2005-11-27
772
773plugins/cfpython/cfpython_map.c: use wrappers instead of direct property access.
774plugins/common/include/plugin_common.h: new wrappers for maps.
775plugins/common/plugin_common.c: new wrappers for maps.
776Ryo 2005-11-26
777
778plugins/cfpython/Makefile.in: rebuilt.
779Andreas Kirschbaum 2005-11-23
780
781Plugins can now get archetypes. Added a check in cfapi_object_set_property to
782 prevent changing archtypes.
783Fixed some Python bugs related to map properties.
784Added Crossfire.GetArchetypes and Crossfire.GetMaps to get all archetypes/maps.
785Modified files:
786 include/plugin.h sproto.h
787 plugins/cfpython/include: cfpython.h cfpython_map_private.h cfpython_object_private.h
788 plugins/cfpython/cfpython.c cfpython_map.c cfpython_object.c
789 server/plugins.c
790New files:
791 plugins/cfpython/include/cfpython_archetype.h cfpython_archetype_private.h
792 plugins/cfpython/cfpython_archetype.c
793Ryo 2005-11-20
794
795server/shop.c: adjust minimum value that shop_specialisation_ratio can
796return to 0.1. This should stop some prices being exceptionally high.
797Brendan Lally 2005-11-19
798
799Commit for new blocking code. Not going to dictate all the changes -
800but will outline the broad points. Note also that the
801doc/Developers/objects is updated and goes into more details also.
802- check for P_WALL no longer used - instead, need to use GET_MAP_MOVE_BLCOK
803 and check against movement type of objects.
804- arch_blocked() changed to ob_blocked(), now takes object. Needed because
805 just looking at archetype move_ values is no longer sufficient.
806- find_first_free_spot() changed to take object, since it just calls
807 arch_blocked()
808- FLAG_FLYING removed, now in move type.
809- walk_on/walk_off/fly_on/fly_off removed - now based on move_on and
810 move_off fields.
811- Map space structure extended to hold the move_on/move_off, etc
812 values so that we can shortcut some processing by not having to
813 check every object on the space when something enters it if
814 move_on isn't set.
815- archetypes recollected - boulders needed move_walk to properly trigger
816 buttons.
817- Note that the new plugin code has to be fixed up for the new movement
818 code. Look for FIXME in plugins/cfpython/cfpython_object.c
819MSW 2005-11-15
820
821Apply patch 1352485 newpickup rings/amulets courtesy anonymous user.
822include/define.h: add PU_JEWELS
823server/c_object.c: handle new type.
824server/player.c: handle new type.
825Ryo 2005-11-12
826
827server/plugins.c: Properly update client view after removing objects.
828Andreas Kirschbaum 2005-11-10
829
830server/plugins.c: Properly update client view after changing object names.
831server/plugins.c: Return an empty string if an object has no message. This
832 makes Object.Message() always return a string object, which removes the
833 need for special case code to handle empty messages.
834include/sproto.h, server/monster.c: Declare parameter of communicate() as
835 "const".
836Andreas Kirschbaum 2005-11-09
837
838Implement new functions for the Python plugin: Object.WeightLimit,
839Object.InsertInto(Object), Object.NamePl. Change Object.Name to set both name
840and name_pl. This should prevents scripts from failing to set name_pl.
841--
842plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h:
843 Add prototypes.
844plugins/cfpython/cfpython_object.c: Add callback functions for new Python
845 functions.
846plugins/cfpython/include/cfpython_object_private.h: Add prototypes for
847 callback functions. Add callback functions to Python object descriptors.
848plugins/common/plugin_common.c: Add missing helper functions.
849Andreas Kirschbaum 2005-11-09
850
851server/shop.c: When we are counting unpaid items and their values, to check
852if a player may leave a shop, make certain that we count all of them, and
853don't stop when we have dropped into a container (such as a spellbook)
854Brendan Lally 2005-11-09
855
856plugins/cfpython/cfpython.c: Add missing 'PyType_Ready' calls for map and player,
857 failure to do so crashes with Python objects destructors set to 0.
858Ryo 2005-11-07
859
860server/spell_effect.c: fix WoR not executing on cursed ground with WIZCAST set.
861Ryo 2005-11-06
862
863server/skills.c: In do_throw() abort processing if the thrown object was
864 destroyed before it gets its first move.
865Andreas Kirschbaum 2005-11-06
866
867server/build_map.c: test FLAG_IS_FLOOR too, type == FLOOR is not always enough.
868Ryo 2005-11-05
869
870server/shop.c: In value_limit() return the unmodified item price if not in a
871 shop or not for a player.
872Andreas Kirschbaum 2005-11-05
873
874plugins/cfpython/cfpython.c: added GetPrivateDictionary and GetSharedDictionary
875 methods to keep data between runs and share data between scripts.
876Ryo 2005-11-05
877
878plugins/Makefile,plugins/cfanim/Makefile: Remove files to be generated by
879 configure.
880server/main.c: Fix possible out-of-bounds array access.
881Andreas Kirschbaum 2005-11-05
882
883Fix case for [sg]etReturnValue. Add compare operator for object and map (of course
884 only == is relevant).
885Modified files:
886 plugins/cfpython/include/cfpython_map_private.h
887 plugins/cfpython/include/cfpython_object_private.h
888 plugins/cfpython/cfpython.c
889 plugins/cfpython/cfpython_map.c
890 plugins/cfpython/cfpython_object.c
891Ryo 2005-11-05
892
893aclocal.m4, configure, utils/config.guess, utils/config.sub, utils/ltmain.sh,
894*Makefile.in, plugins/cfanim/Makefile, plugins/Makefile: Rebuilt.
895lib/Makefile.am: Add template-maps to list of directories to create while
896 install.
897Andreas Kirschbaum 2005-11-05
898
899lib/wizhelp/reset: document use of '.' as an argument
900Brendan Lally 2005-11-05
901
902random_maps/treasure.c: Fix out-of-bounds array access if place_chest() cannot
903 find a free spot to place a new chest.
904Andreas Kirschbaum 2005-11-01
905
906Fix bug #1082534 (monks with weapons): Now monks properly are denied from
907using weapons. Only newly created monks are affected since it now relies on a
908force named "no weapon force" in the player's inventory. The problem was that
909become_follower() assumed it was the only means do allow/disallow weapon use.
910--
911server/gods.c: Do not let the god allow using weapons if a "no weapon force"
912 object is present in the player's inventory.
913lib/treasures: add force to monk's treasure list.
914Andreas Kirschbaum 2005-11-01
915
916Fix bug #815620 (CFPython.SetQuantity() doesn't update client): now notifies
917 the client after changing nrof and/or weight.
918--
919server/plugins.c: Re-calculate player's weight and send item change
920 notifications in cfapi_object_set_property().
921Andreas Kirschbaum 2005-11-01
922
923Improve newpickup command: add new flag PU_NOT_CURSED to ignore cursed items.
924--
925include/define.h: Add flag #define.
926server/c_object.c: Add "notcursed" option to pickup command.
927server/player.c: Respect new flag in check_pickup().
928Andreas Kirschbaum 2005-11-01
929
930plugins/cfanim/cfanim.c: remove printf for properties. Export functions for DLL
931 for Win32.
932plugins/cfanim/cfanim.h: remove obsolete definitions (see plugin_common.h).
933plugins/cfanim/cfanim_proto.h: fix definition for exported functions.
934plugins/common/plugin_common.c: add gettimeofday for Win32.
935plugins/common/include/plugin_common.h: add gettimeofday for Win32.
936Ryo 2005-11-01
937
938server/plugins.c: Print error message for event_xxx objects with missing or
939 invalid parameters. Also remove the affected object to prevent multiple
940 error messages.
941Andreas Kirschbaum 2005-11-01
942
943Add new function object_get_env_recursive() to find the outermost environment
944object for a given object.
945--
946common/object.c, include/libproto.h: Add function.
947server/{rune.c,spell_attack.c}: Use function where appropriate.
948Andreas Kirschbaum 2005-11-01
949
950General cleanup of weather code.
951--
952server/weather: Declare many functions and variables as "static", add
953 prototypes for affected functions. Declare some variables as "const".
954include/sproto.h: Remove prototypes for now static functions.
955include/tod.h: Add "const" to strings.
956Andreas Kirschbaum 2005-11-01
957
958Fix bug #1102975 (Bronze items not keeping their + in alchemy): the problem
959was that a formula for full_helmet did exist but not for b_full_helmet. Since
960both helmet's names are "full helmet", the recipe was selected even if using
961the ingredient b_full_helmet. This fix adds new formulae for alternative
962archetypes with the same name as the base object, and makes the server code
963select the matching formula from multiple arch names in the "arch" field.
964--
965common/readable.c: Use new fields to build messages.
966common/recipe.c: Make alchemy work for recipes with multiple base archetypes.
967include/{libproto.h,sproto.h}: Update prototype.
968include/recipe.h: Split string field arch_name into string list fields
969 arch_name and arch_names.
970lib/formulae: Add archetype names to formulae for all items with same name as
971 the base object. Also fix a few name mismatches that prevent any object
972 from matching, and change transmution formulae to normal formulae where
973 base name does not match archetype name.
974server/alchemy.c: Disable debugging code. Make alchemy work for recipes with
975 multiple base archetypes.
976Andreas Kirschbaum 2005-10-31
977
978server/c_wiz.c: Don't crash on "create" a living thing that has some part
979 out of the map. Forbid removing a 'PLAYER' object.
980Ryo 2005-10-31
981
982random_maps/style.c: Pass correct sorting function to qsort(): the sorted
983 array contains pointers to strings, not strings.
984Andreas Kirschbaum 2005-10-29
985
986Fix bug #1236244 (Exp from scrolls): reading a scroll of charm monsters or
987meteor swarm now gives exp for use magic item, not summoning or pyromancy.
988--
989server/spell_attack.c: In mood_change() use skill from scroll, not from spell.
990 In move_swarm_spell() use the spell "owner" as the object casting the
991 spell.
992Andreas Kirschbaum 2005-10-29
993
994include/config.h: DEBUG just been defined, no need to define it again.
995include/win32.h: typedef for socklen_t.
996random_maps/random_map.c: generate_random_map can use a const char*.
997random_maps/rproto.h: fix generate_random_map definition.
998server/plugins.c: EVENT_CRASH doesn't really need a parameter, especially if
999 not initialized :)
1000Ryo 2005-10-29
1001
1002
1003Prevent problems (crashes) for large item piles. Now limit nrof to less than
10042^31.
1005--
1006common/object.c: In CAN_MERGE() pretend that the objects are not mergeable if
1007 the nrof sum would overflow.
1008common/porting.c: Fix buffer overflow for large numbers in ltostr10(). Also
1009 make n=1L<<31 work correctly.
1010plugins/cfpython/cfpython_object.c: In Object_SetQuantity() raise an exception
1011 for negative nrof values.
1012plugins/common/plugin_common.c: Reject negative nrof values in
1013 cf_object_set_nrof().
1014plugins/cfanim/include/cfanim_proto.h, plugins/common/include/plugin_common.h:
1015 Update prototype.
1016server/plugins.c: Treat negative nrof as nrof=0 when setting
1017 CFAPI_OBJECT_PROP_NROF property.
1018server/time.c: In move_duplicator() limit nrof of created items.
1019Andreas Kirschbaum 2005-10-29
1020
1021Fix compiler warnings. Most changes do not change the program (remove unused
1022variables, convert "if(x = y)" into "x = y; if(x)"); a few actually fix
1023(possible) problems (fix uninitialized variables, fix printf format
1024specifiers, fix mismatches between signed and unsigned variables, add missing
1025return and default statements).
1026--
1027Affected files:
1028common/{arch.c,init.c,item.c,map.c,object.c,re-cmp.c,readable.c,region.c,
1029shstr.c}, crossedit/{Attr.c,Edit.c,Cnv/CnvPath.c}, include/sproto.h,
1030plugins/cfanim/cfanim.c, plugins/cfpython/{cfpython.c,cfpython_object.c},
1031plugins/cfpython/include/{cfpython_map_private.h,cfpython_object_private.h},
1032random_maps/{rogue_layout.c,special.c,square_spiral.c},
1033server/{apply.c,attack.c,build_map.c,c_misc.c,c_object.c,c_party.c,init.c,
1034main.c,monster.c,pets.c,player.c,plugins.c,shop.c,skill_util.c,spell_util.c,
1035weather.c}, socket/{loop.c,request.c}
1036Andreas Kirschbaum 2005-10-28
1037
1038Fixes my previous commit. Should now properly allocate/deallocate the
1039faces_sent array.
1040--
1041common/player.c: Free faces_sent in free_player().
1042include/newserver.h: Add field faces_sent_len to NewSocket struct.
1043server/player.c: Allocate and copy faces_sent in add_player().
1044socket/init.c: Use faces_sent_len in InitConnection().
1045socket/loop.c: Initialize faces_sent_len in doeric_server().
1046Andreas Kirschbaum 2005-10-28
1047
1048The archetypes now contain more than MAXFACENUM (5000) faces. The following
1049changes remove the fixed limit of the number of faces. The server now
1050allocates enough memory to handle all defined faces.
1051include/newserver.h: Remove MAXFACENUM since it is not used anymore. Change
1052 NewSocket.faces_sent from array into pointer.
1053socket/{init.c, loop.c}: Allocate/initialize NewSocket.faces_sent.
1054socket/request.c: Remove safeguard/error message since it depends on
1055 MAXFACENUM.
1056Andreas Kirschbaum 2005-10-24
1057
1058Code improvements:
1059common/image.c: Declare some variables and functions as static or const; add
1060 safeguards while loading config files; remove support for numeric face
1061 names (no active archetype or map does use it); in free_all_images()
1062 deallocate memory allocated for smoothing.
1063crossedit/xutil.c: Remove assignment to nrofpixmaps since ReadBmapNames()
1064 already sets this variable.
1065include/{global.h, libproto.h, loader.h}: Remove now static variables and
1066 functions.
1067Andreas Kirschbaum 2005-10-24
1068
1069common/readable.c: Fix out of bounds access to max_titles[] in
1070 init_book_archive().
1071common/image.c, include/define.h, include/global.h: Remove unused variables
1072 potion_face and POTION_FACE_NAME.
1073common/image.c, include/global.h: Remove unused variable blank_look.
1074Andreas Kirschbaum 2005-10-24
1075
1076Make shout command work in old socket emulation mode.
1077common/commands.c: Sort all command arrays in init_commands().
1078Andreas Kirschbaum 2005-10-23
1079
1080common/item.c - fix spelling mistake
1081common/utils.c include/libproto.h - new function make_list_like that takes a
1082 string of comma deliminated words, and puts an and in the right place.
1083include/sproto.h server/apply.c server/shop.c -new function can_pay - checks
1084 that a player can pay for every unpaid item that they are holding before
1085 starting to purchase them.
1086Brendan Lally 2005-10-21
1087
1088plugins/cfpython/{Makefile.in, Makefile.am}, plugins/cfpython/include/cfpython.h:
1089 Corrected improper regeneration of the function prototypes using
1090 "make proto" for the cfpython plugin.
1091Gros 2005-10-20
1092
1093plugins/cfpython/{cfpython.c, cfpython_object.c, cfpython_map.c},
1094plugins/cfanim/cfanim.c, plugins/common/plugin_common.c, server/plugins.c:
1095 Added support for execution of python_init.py upon initialization of cfpython.
1096 Reduced the console spam produced by various leftover debugging messages.
1097Gros 2005-10-19
1098
1099plugins/common/include/plugin_common.h: add CF_PLUGIN macro.
1100plugins/cfpython/cfpython.c: add CF_PLUGIN to exported functions.
1101plugins/cfpython/include/cfpython_proto.h: fix prototypes.
1102Ryo 2005-10-19
1103
1104plugin/*, plugin_logger/*, plugin_anim/*, plugins/*,
1105server/{apply.c, attack.c, c_chat.c, c_object.c, c_wiz.c, gods.c, main.c,
1106monster.c, player.c, skills.c, swap.c, time.c, timers.c}, include/{plugin.h,
1107sproto.h}: Replaced the old plugin interface by the 2.0 one.
1108 Upgraded the Python and Animator ones to the new interface.
1109 Removed obsolete Logger plugin.
1110Gros 2005-10-19
1111
1112server/main.c: Template Maps: Allow %x, %y, and %n in the path to respectively be
1113 replaced with, the x coord, the y coord, and the parent map name.
1114Alex Schultz 2005-10-18
1115
1116server/{main.c, swap.c}, common/map.c, include/{libproto.h, map.h}: Add support
1117 for random template maps (still need to document, and still need to add support
1118 for template maps created from non-random templates)
1119Alex Schultz 2005-10-16
1120
1121common/info.c: fix -m1 crashing (34 chars, not 32!), and -m2 crashing under Win32.
1122include/sproto.h: fix cast_change_ability definition.
1123server/gods.c: fix cast_change_ability to hide the 'can't recast' message.
1124server/spell_effect.c: don't stack word of recall forces. Add a 'silent' parameter
1125 to cast_change_ability to not display 'can't recast xx while xx is in effect'
1126server/spell_util.c: fix cast_change_ability call.
1127Ryo 2005-10-16
1128
1129include/{global.h, sproto.h, config.h}, server/init.c, common/init.c, lib/Makefile.in:
1130 Add directory in preparation for template (where the template can optionally be
1131 from the random map generator) maps.
1132Alex Schultz 2005-10-15
1133
1134server/c_wiz.c: make reset command show the names of other players on the
1135map when it fails.
1136Brendan Lally 2005-10-14
1137
1138server/c_party.c: fix another obscure party crash bug
1139Brendan Lally 2005-10-12
1140
1141server/c_party.c: fix a couple of loops that could crash under certain circumstances
1142Brendan Lally 2005-10-11
1143
1144common/object.c: use canonical_key instead of key, else == always fails.
1145server/apply.c: drop "on_use_yield" item if required when applying potion, food or poison.
1146 This lets players get empty bottles/vials/... when using potions.
1147Ryo 2005-10-09
1148
1149Added GetMarkedItem to Python, cleaned compilation warnings.
1150 plugin/plugin_python.c
1151 plugin/include/plugin_python.h
1152
1153Moved gps code to Python script, thus cleaning relevant code from server core.
1154 common/item.c: remove item description.
1155 include/define.h: remove gps define.
1156 server/apply.c: remove gps function.
1157Ryo 2005-10-08
1158
1159Prevent objects from losing inventory when thrown.
1160include/libproto.h, common/object.c: Add new parameter "free_inventory" to
1161 free_object(). Is set, free inventory as well instead of dropping it on the
1162 ground.
1163common/object.c: In get_split_ob() prevent inventory of splitted object to be
1164 dropped.
1165Andreas Kirschbaum 2005-10-07
1166
1167common/object.c: Use object_create_clone in get_split_ob; Fixes things inside
1168 of objects disappearing when throwing.
1169Alex Schultz 2005-10-7
1170
1171Make damage done by area spells not depend on monster size.
1172include/sproto.h, server/attack.c: Add additional parameter "full_hit" to
1173 hit_map() and hit_player(). If set, do full damage, if unset scale down by
1174 monster size.
1175server/{apply.c, attack.c, disease.c, monster.c, player.c, rune.c,
1176spell_attack.c, spell_effect.c, spell_util.c, time.c}: Change callers to set
1177 "full_hit" parameter according to the attack used.
1178Andreas Kirschbaum 2005-10-07
1179
1180common/{arch.c, object.c}, crossedit/{Attr.c, Defines.h, Edit.c},
1181include/libproto.h, server/{plugins.c, time.c}: Rename functions with
1182 mixed-case names to lower case only.
1183crossedit/Defines.h: Remove prototypes for nonexisting functions.
1184Andreas Kirschbaum 2005-10-07
1185
1186server/apply.c: In prepare_weapon() do not lose a reference to the item name.
1187Andreas Kirschbaum 2005-10-06
1188
1189include/sproto.h, server/shop.c - make value_limit static, change its
1190arguments to add some checking for NULL pointers
1191Brendan Lally 2005-10-06
1192
1193server/monster.c: In move_monster() prevent hp/sp overflows for monsters with
1194 very high maxhp/maxsp and very high regeneration rates.
1195Andreas Kirschbaum 2005-10-05
1196
1197common/treasure.c - prevent crashes with some broken treasure lists.
1198Brendan Lally 2005-10-05
1199
1200server/shop.c: convert val to sint64 - compilation issues with Win32. Checked with
1201 patch author that it's fine.
1202Ryo 2005-10-04
1203
1204common/map.c - fix output names in new_save_map
1205--
1206server/shop.c - don't assume that shop_specialisation_ratio only gets passed
1207items with valid types.
1208--
1209common/map.c - /actually/ fix pointer issue
1210--
1211common/map.c - fix potential issue with NULL pointer
1212Brendan Lally 2005-10-04
1213
1214common/map.c - fix an inequality in for loop - not sure if this actually
1215fixes anything of note, but the previous form was definatly wrong.
1216
1217common/item.c - big item type table, function to deal therewith
1218common/loader.l - add player_sold flag
1219common/map.c - shop related header parsing
1220include/define.h - define typedata, player_sold flag and some new shop flags
1221include/libproto.h - define typedata related functions
1222include/map.h - define new shop headers
1223include/sproto.h - define new functions in shop.c
1224server/apply.c - Change shop mat usage message
1225server/c_object.c - Change display of price estimates
1226server/shop.c - new functions describe_shop, value_limit, shopkeeper_approval,
1227shop_greed, shop_specialisation_ratio, substantially alter query_cost_string
1228and query_cost to make use of these
1229server/skill_util.c - make bargaining a directly usable skill
1230doc/Developers/shops - document the above
1231doc/Developers/maps-technical - add shopheader names, and reference to shops doc
1232Brendan Lally 2005-10-03
1233
1234server/disease.c: check for value <= 0 as some diseases get dumped on a map
1235 with value == 0 (negative values will eventually underflox, but it'll take time).
1236
1237Apply patches courtesy quisar.
1238 #1307880 Allow to add a param to the cast command
1239 #1306987 Allow to summon lower level pet monsters
1240Modified files:
1241 include/player.h sproto.h
1242 server/c_range.c login.c pets.c player.c spell_util.c
1243Ryo 2005-10-01
1244
1245common/button.c: explicit cast of stats.food to uint32 when used as sacrifice count.
1246common/image.c: strlen returns size_t. Remove unused FindFaceName.
1247common/object.c: obj::count is tag_t. Can't decrease item's nrof by a negative value.
1248include/libproto.h: fix prototypes.
1249include/player.h: weight and weight_limit are sint32, so last_ should be the same.
1250include/sproto.h: nrof is uint32, not int.
1251server/apply.c: nrof is uint32, can't eat a negative number of items. obj::count is tag_t.
1252server/c_misc.c: remove unused variable.
1253server/c_object.c: use uint32 instead of int to specify number of items to drop/put.
1254server/plugins.c: strlen returns size_t.
1255server/spell_effect.c: distances are uint32 and not int.
1256socket/loop.c: remove now obsolete cast of -1 to uint32 for last_weight.
1257socket/request.c: explicit cast of weight_limit to sint32 when comparing to last_weight.
1258Ryo 2005-10-01
1259
1260plugin/plugin_python.c: added CF[SG]etWeightLimit.
1261plugin/include/plugin_python.h: function prototypes.
1262server/plugins.c: update player inventory if item teleporter from that.
1263Ryo 2005-09-30
1264
1265lib/collect.pl.in: can now use lines like "attacktype fire electricity poison" instead
1266 of hard to remember numbers. Numbers are still supported, you can even mix both.
1267Ryo 2005-09-28
1268
1269server/spell_effect.c: In recharge() verify that the object to charge is in
1270 fact a wand or staff.
1271Andreas Kirschbaum 2005-09-27
1272
1273Changed quest behaviour, now uses its own archetypes. Can change npc/magic ear
1274 text based on quest status.
1275Warning: not totally tested. Quest start/end works, rest needs some tweaks & fixes.
1276common/quest.c: new functions, some cleaning.
1277doc/Developers/quest: update (partially).
1278include/define.h: new item types.
1279include/libproto.h: new definitions.
1280server/c_misc.c: update.
1281server/monster.c: take into account quest overrides.
1282server/time.c: markers now start/end tasks if needed.
1283Ryo 2009-09-25
1284
1285server/c_party.c - fix another party list corruption bug, and a couple of
1286possible infinite loops
1287Brendan Lally 2005-09-25
1288
1289Clean some compilation warnings.
1290 common/map.c: remove unused variable.
1291 common/readable.c: strlen returns size_t.
1292 include/object.h: objectlink id should be tag_t since it's the item's "count" field.
1293 server/c_misc.c: strlen returns size_t.
1294 server/c_object.c: strlen returns size_t.
1295 server/c_party.c: remove_party returns void, value not used anyway. Fordward declaration.
1296 server/c_wiz.c: settings.worldmaptiles[x|y] is uint32.
1297 server/gods.c: strlen returns size_t.
1298 server/hiscore.c: maxchar is const.
1299 server/skill_util.c: strlen_returns size_t.
1300Ryo 2005-09-25
1301
1302include/player.h sproto.h
1303server/attack.c c_party.c player.c
1304Fix several bugs in patch #1194964, including one that caused segfaults
1305one that corrupted the party list, and one that broke party password recognition
1306remove partyid from the party struct - use party pointers instead
1307remove functions find_party() and find_party_struct() - no longer needed or used.
1308make form_party a local function - it is only used by the party form command,
1309and can't easy be used safely elsewhere.
1310Brendan Lally 2005-09-25
1311
1312server/build_map.c: remove unused variable.
1313--
1314Commit patch #1194964 (party obsoletion) by cavesomething.
1315Affected files:
1316 include/player.h sproto.h
1317 server/apply.c attack.c c_party.c login.c main.c pets.c player.c
1318 skill_util.c skills.c spell_util.c
1319--
1320include/win32.h: turn off harmless warning.
1321Ryo 2005-09-24
1322
1323Fix bug #744327 ('immortal' monsters): Prevent monsters from loosing hp or sp
1324if they have negative Con/Pow. For hp, this made some monsters unkillable
1325because they eventually had negative hp.
1326--
1327server/monster.c: In move_monster() do gain hp/sp only if Con/Pow is positive.
1328Andreas Kirschbaum 2005-09-24
1329
1330Update client inventory view for players dieing in a shop with unpaid items in
1331inventory.
1332--
1333server/player.c: Send removed item to client in remove_unpaid_objects(). Do
1334 not call remove_unpaid_objects() multiple times in kill_player().
1335Andreas Kirschbaum 2005-09-17
1336
1337Allow directors/movers to specify a specific arch/name/race.
1338include/sproto.h: Add should_director_abort to here.
1339server/{apply.c, time.c}: Add should_director_abort for the logic code
1340 for this change, and add checks for it in director/mover code.
1341doc/Developers/objects: Add documentation for directors including this
1342 change, and update mover documentation.
1343Alex Schultz 2005-09-15
1344
1345Make untriggered TIMED_GATEs work again.
1346server/apply.c: Clear object speed only for connected objects.
1347Andreas Kirschbaum 2005-09-13
1348
1349This change is mostly cosmetic and a preparation for the new movement
1350type code. Basically, it just changes the old object movement_type
1351field to attack_movement. This makes sense because that is what that
1352field is called in saved and loaded objects/archetypes, and thus
1353frees up that name for the new movement code.
1354--
1355common/button.c: field name change
1356common/loader.{cl}: field name change
1357doc/Developers/objects: Add section on new movement types, update old
1358 documentation to note it is attack_movement and not movement_type
1359 field that is important.
1360include/object.h: field name change.
1361server/attack.c: field name change.
1362server/monster.c: field name change
1363server/pets.c: field name change
1364server/skills.c: field name change.
1365server/spell_attack.c: field name change
1366server/spell_effect.c: field name change
1367MSW 2005-09-12
1368
1369Allow a DM to cast spells and prayers in no-magic/no-prayer areas. Add new
1370command "wizcast" to toggle this setting.
1371common/loader.l: Set/reset FLAG_WIZCAST for flag "wiz".
1372common/loader.c: Rebuilt
1373include/define.h: Add new flag FLAG_WIZCAST; remove unused flag
1374 FLAG_NO_PRETEXT.
1375lib/Makefile.am: Add new help file for wizcast.
1376lib/Makefile.in: Rebuilt.
1377plugin_animator/plugin_animator.c: Set/reset FLAG_WIZCAST in animate_one().
1378server/apply.c: Always allow FLAG_WIZCAST to enchant weapons and armour.
1379server/c_misc.c: Add new function command_wizcast().
1380server/c_wiz.c: Set/reset FLAG_WIZCAST when entering/leaving DM mode.
1381server/commands.c: Add "wizcast" command.
1382server/spell_effect.c: Always allow FLAG_WIZCAST to use the spell probe.
1383server/spell_util.c: Always allow FLAG_WIZCAST to cast spells and prayers.
1384Andreas Kirschbaum 2005-09-09
1385
1386server/monster.c: Set FLAG_READY_SKILL in monster_check_apply() for monsters
1387 with skills. This fixes hill giants and trolls not throwing boulders
1388 anymore.
1389server/monster.c: Add missing "break" statement in monster_can_pick(). It did
1390 prevent some monsters from picking up scrolls.
1391Andreas Kirschbaum 2005-09-08
1392
1393common/{anim.c, image.c, los.c, map.c, porting.c, treasure.c},
1394include/define.h, random_maps/treasure.c,
1395server/{apply.c, c_misc.c, c_object.c, c_wiz.c, commands.c, daemon.c,
1396hiscore.c, init.c, login.c, player.c, plugins.c, resurrection.c, weather.c},
1397socket/{init.c, item.c, loop.c, lowlevel.c}: Use LOG() for error messages and
1398 debug output instead of stdout/stderr. Include filename in error messages.
1399server/resurrection.c: Fix error message in read_player().
1400Andreas Kirschbaum 2005-09-04
1401
1402socket/item.c: Make selecting objects from ground view work again.
1403common/object.c: Fix update of player's ground view in insert_ob_in_map().
1404 Previously the ground view was not updated after applying exits or after
1405 being hit by a spell.
1406Andreas Kirschbaum 2005-09-03
1407
1408Fix bug #1102991 (Duplicate grapical display of the same monster):
1409doc/Developers/protocol: Change semantics of map_scroll command to what the
1410 server actually does: big faces outside the viewable area are cleared. Add
1411 newmap command.
1412include/newserver.h: Increase MAX_HEAD_OFFSET to 8 (the size of a Greater
1413 Demon).
1414socket/request.c:
1415 MapRedrawCmd(): Disable mapredraw command; it is now just ignored.
1416 MapNewmapCmd(): Clear map state before sending newmap command.
1417 check_head(): Remove redundant code.
1418 update_space(): Move invariant condition out of loop to speed it up. Fix
1419 uninitialized variable. Remove redundant condition. Fix off-by-one array
1420 access.
1421 update_smooth(): Remove unused code. Properly send cleared big faces.
1422 draw_client_map(): Remove duplicate check. Properly clear newly visible
1423 area when scrolling the map.
1424Andreas Kirschbaum 2005-08-31
1425
1426common/{loader.l, map.c, object.c}, include/{define.h, map.h, object.h}:
1427 Accelerate map loading (a lot) and map saving (a bit) codes to improve map
1428 transition experience.
1429common/loader.c: Rebuilt.
1430
1431Add (slightly reformatted) patch #1276121 (Crossedit: handle big faces) by
1432 Kevin Rudat:
1433crossedit/CrEdit.c: UpdatePosition(): Use new drawing subroutines.
1434crossedit/CrFace.c: DrawObject(): Use new drawing subroutine.
1435crossedit/CrList.c: Redisplay(): Use new drawing subroutine.
1436crossedit/CrUtil.c, crossedit/CrUtil.h: Remove FaceDraw(), add DrawFacePart()
1437 and DrawPartObject().
1438crossedit/png.c: Upload the whole image, not just the top-left corner.
1439Andreas Kirschbaum 2005-08-30
1440
1441Fix bug #1256173 (Magic drain not exploding head):
1442server/spell_effect.c: Prevent mana transfer to/from caster himself; also
1443 create fireball for overcharges resulting from sucking mana.
1444Andreas Kirschbaum 2005-08-30
1445
1446Fix bug #1059537 (Chainmail mutations):
1447common/loader.l: Remove code that "fixes" broken item names by removing a
1448 leading material name. This effectively renames "mithril chainmails" into
1449 "chainmails".
1450common/loader.c: Rebuilt.
1451Andreas Kirschbaum 2005-08-29
1452
1453Fix player weapon speed/speed. There are a few bugs this fixes:
14541) when player hit something, a has_hit field was set to true, to denote
1455 they hit something and to use weapon speed. However, this was only
1456 cleared when player issued a command. Thus, if you are running
1457 and hit something, you'd continue at weapon_speed pace until you
1458 needed to change direction.
14592) Because has_hit was used, this basically put in a 1 tick lag - you'd hit
1460 something, but not until objects were processed and speed given would
1461 you get your extra speed. Likewise, after you killed something, you'd
1462 get your burst of speed for the next tick also.
1463--
1464server/main.c: Clear has_hit, change function to only do bounds checking,
1465 not actually do weapon_speed adjustments.
1466server/player.c: Give player speed boost when they hit something.
1467MSW 2005-08-28
1468
1469Add patch #1274385 by Kevin Rudat to make crossedit draw floors on tiles with
1470items.
1471crossedit/CrEdit.c: Add call to update_position() in UpdatePosition().
1472Andreas Kirschbaum 2005-08-28
1473
1474Add patch #1271417 by Kevin Rudat to stop crossedit losing regions. Patch is
1475slightly modified to properly handle all map fields.
1476crossedit/Edit.c: Copy all map fields in MapMoveScrollResize(). Do not add a
1477 msg header to already existing maps.
1478crossedit/crossedit.c: Call init_regions() at program initialization.
1479Andreas Kirschbaum 2005-08-28
1480
1481socket/init.c: Make setsockopt(REUSEADDR) work if using gcc in Ansi C mode on
1482 Linux.
1483Andreas Kirschbaum 2005-08-28
1484
1485common/map.c: Change default values for reset_timeout, enter_x, and enter_y
1486 map headers to zero. In set_map_reset_time() use MAP_DEFAULTRESET if
1487 reset_timeout is zero. This change prevents crossedit from adding these
1488 headers by just loading and saving a map.
1489include/config.h: Add MAP_DEFAULTRESET.
1490Andreas Kirschbaum 2005-08-27
1491
1492server/rune.c: Fix crash if casting disarm out of map bounds.
1493server/spell_effect.c: Fix crash if casting polymorph out of map bounds.
1494Andreas Kirschbaum 2005-08-25
1495
1496Apply patch 1200555 - addition of key/value lists which allows arbitrary
1497storing of data in objects - see doc/Developers/key-value for more
1498information
1499---
1500loader.l, loader.c: Add add_key_value() function which parses the unknown
1501 line in the object/archetype. Update get_ob_diff() to make differences
1502 for the key/value lists.
1503common/object.c: Add functions for properly comparing the key/value lists,
1504 setting and getting the vaues, clearing values upon freeing of object,
1505 etc.
1506doc/Developers/Makefile.am: Add key-value file.
1507doc/Developers/key-value: Documentation of this feature.
1508include/libproto.h: Rebuilt
1509include/object.h: Addition of key_value struct, addition of key_values
1510 field to object.
1511MSW 2005-08-22
1512
1513socket/request.c: Fix range checking of toggleextendedtext parameters.
1514Andreas Kirschbaum 2005-08-17
1515
1516The following fix code that basically does "for(x = pos-5; x < pos+5; x++)".
1517This is not correct because it includes "pos-5" but not "pos+5".
1518common/los.c: Make lighted distance equal in all directions.
1519server/disease.c: Make infection distance equal in all directions.
1520server/monster.c: Make lighted distance equal in all directions.
1521Andreas Kirschbaum 2005-08-17
1522
1523Add patch by Kevin Rudat for applyable but non
1524pickable objects to have item items.
1525doc/Dvelopers/objects: Update item types.
1526socket/item.c: Use the head of any objects we send. Should generally
1527 only be an issue for objects on the ground, as currently there is no
1528 large objects players can pick up. Also fix up some of the formatting/
1529 indenting in this file.
1530MSW 2005-08-16
1531
1532server/attack.c, include/define.h, common/loader.l doc/Developers/objects:
1533Add a flag FLAG_IS_LIGHTABLE, to make lightable objects such as lanterns
1534able to work again
1535lib/archetypes: recollect archs
1536Brendan Lally 2005-08-16
1537
1538server/build_map.c: Add support for buildable signs, and magic mouths/ears.
1539Alex Schultz 2005-08-15
1540
1541lib/Makefile.am, lib/Makefile.in: Actually install help file for showpets.
1542common/living.c, include/living.h: Make global arrays really const.
1543Andreas Kirschbaum 2005-08-15
1544
1545server/gods.c: Fix crash for monsters without appropriate god.
1546server/gods.c: Add missing braces around body of if statement.
1547Andreas Kirschbaum 2005-08-14
1548
1549NPCs instead of being given a random god are for preference given the god that
1550likes their race. If one can't be found, then we fall back to a random god.
1551Affected files:
1552server/gods.c include/sproto.h
1553Brendan Lally 2005-08-12
1554
1555String fields in structures using add_string are now const char*. Functions in
1556 shstr (add_refcount, add_string, free_string, ...) now take/return const char*.
1557More argument replacing from char* to const char*.
1558Fixed a potential string corruption in recipe.c (when dumping) and readable.c (was
1559 using strtok on a add_string-ed string, when strtok changes argument).
1560Fixed a few type mismatch on qsort calls.
1561Global char arrays (messages and such) are const char* too.
1562Removed unused typedefs / structures.
1563
1564Affected files:
1565 common/anim.c image.c info.c item.c living.c object.c quest.c readable.c recipe.c
1566 shstr.c treasure.c
1567 include/arch.h commands.h define.h face.h funcpoint.h global.h god.h libproto.h
1568 living.h map.h material.h object.h player.h race.h recipe.h skills.h sproto.h treasure.h
1569 random_maps/random_map.h reader.[cl] style.c
1570 server/apply.c attack.c c_object.c c_range.c c_wiz.c gods.c
1571 main.c monster.c pets.c player.c plugins.c resurrection.c shop.c skill_util.c skills.c
1572 spell_attack.c spell_effect.c time.c timers.c
1573 socket/item.c
1574
1575Ryo 2005-08-12
1576
1577Arguments are now const char* instead of char* when available. This ensures
1578the variable is not changed in random places.
1579Affected files:
1580 common/porting.c quest.c readable.c recipe.c re-cmp.c shstr.c treasure.c
1581 include/libproto.h sproto.h win32.h
1582 server/c_misc.c c_object.c c_party.c c_wiz.c egoitem.c gods.c hiscore.c init.c login.c
1583 main.c monster.c player.c resurrection.c rune.c shop.c skill_util.c skills.c
1584 spell_effect.c spell_util.c win32.c
1585Ryo 2005-08-12
1586
1587Add help for showpets, and update help for killpets
1588 lib/help/{showpets, killpets}
1589Add a new command 'showpets' to give a numbered list of the pets that a player
1590controls. These numbers can be passed to showpets to give more detail about one
1591pet, or they can be passed to killpets to control which pets are killed.
1592Also allow killpets to take a name as an argument. Affected files:
1593 include/sproto.h
1594 server/{c_misc.c, commands.c}
1595Make random maps take the region of the map creates them. Affected files:
1596 random_maps/{random_maps.h, random_maps.c}
1597 server/main.c
1598Brendan Lally 2005-08-11
1599
1600------------------------------------------------------------------------------
1601Changes for 1.8.0:
1602
1603Update for release 1.8.0.
1604include/Makefile.am: missing quest.h file
1605Rest automatic rebuild
1606MSW 2005-08-10
1607
1608Replaced "depletion" by ARCH_DEPLETION (defined in object.h). Affected files:
1609 common/living.c
1610 include/object.h
1611 server/apply.c gods.c spell_effect.c
1612Ryo 2005-08-10
1613
1614server/player.c: Set map for arrow as returned by get_map_flags -
1615 otherwise when firing at edge of tiled maps, arrows could end up
1616 in wrong place.
1617MSW 2005-08-09
1618
1619include/config.h: Make DEBUG default - appears last commit changed this
1620 as unrelated to actual changes in place.
1621include/sproto.h: Rebuild
1622server/player.c: fire_bow() - add checks for wall/out of map. fire_bow()
1623 wasn't using right coordinates on check, which caused problems in
1624 threewide mode at edge of maps.
1625MSW 2005-08-07
1626
1627plugin_logger/plugin_logger.c: make it compile under Win32.
1628Ryo 2005-07-30
1629
1630server/player.c: fix crash when news or rules > HUGE_BUF.
1631Ryo 2005-07-29
1632
1633server/{monster.c, pets.c}: Fix bugs in arena petmode and clean up most of
1634 it's logic into it's own function.
1635lib/help/petmode: Document the arena petmode in the "help petmode" output.
1636Alex Schultz 2005-07-28
1637
1638server/skills.c: use correct sp/grace for inscription.
1639Ryo 2005-07-27
1640
1641The following changes prevent spells in player's inventories from being
1642damaged by casting spells, using skills, or praying.
1643server/attack.c: Limit cancellation and acid attacks to visible objects only.
1644server/gods.c: Limit god granted remove curse/damnation to visible objects
1645 only.
1646server/skills.c: Limit the skills sense curse and sense magic to visible
1647 objects only.
1648server/spell_effect.c: Limit the spells detect curse and detect magic to
1649 visible objects only.
1650Andreas Kirschbaum 2005-07-26
1651
1652server/skill_util.c: don't try to send a message if monster killed/removed.
1653Ryo 2005-07-23
1654
1655socket/init.c: settings values to 0 before using'em works better, usually ^_-
1656Ryo 2005-07-22
1657
1658random_maps/random_map.h: Add prototype for set_random_map_variable().
1659server/main.c: Remove prototype for set_random_map_variable().
1660lib/Makefile.am, lib/Makefile.in, lib/help/whereabouts: Add help for
1661 whereabouts command.
1662server/apply.c: Properly terminate destination string with '\0' in
1663 apply_item_transformer(). Avoid clearing the string buffer multiple times.
1664Andreas Kirschbaum 2005-07-20
1665
1666doc/Developers/item_transformation: fixed documentation.
1667server/apply.c: remove incorrect comment. Item transformer uses food for max use.
1668Replaced some hardcoded values with define. Modified files:
1669 common/arch.c
1670 include/object.h
1671 plugin/plugin_python.c
1672 server/apply.c attack.c build_map.c spell_attack.c spell_effect.c time.c
1673Ryo 2005-07-19
1674
1675include/win32.h: add PLUGIN_SUFFIX definition.
1676Ryo 2005-07-18
1677
1678server/plugins.c: Merge mostly identical code from #ifdef WIN32 and #else
1679 blocks. Use opendir/readdir/closedir instead scandir for Unix because WIN32
1680 probably does not have these functions. Prevent loading one plugin multiple
1681 times.
1682include/sproto.h: Update prototypes for plugin functions.
1683server/c_wiz.c: Add success/failure messages to plugin and plugout commands.
1684 Do not crash due to missing parameter.
1685Andreas Kirschbaum 2005-07-18
1686
1687server/pets: Fix off-by-one error in follow_owner().
1688server/c_wiz: Allow the summon and teleport commands to place the summoned
1689 player/DM north-west of DM/player.
1690Andreas Kirschbaum 2005-07-17
1691
1692Use const char* instead of char* when possible. Remove unused variables in weather code.
1693Affected files:
1694 common/map.c region.c utils.c
1695 crossedit/stubs.c
1696 include/funcpoint.h libproto.h sproto.h
1697 random_maps/standalone.c
1698 server/weather.c
1699Ryo 2005-07-17
1700
1701server/apply.c: Make converters that increase value non-functional.
1702Andreas Kirschbaum 2005-07-17
1703
1704server/{monster.c, pets.c}: Fixed bug in previous commit of arena petmode
1705 that cause pets that should be friendly to eachother to fight.
1706Alex Schultz 2005-07-16
1707
1708common/{map.c, readable.c, treasure.c},
1709crossedit/{Attr.c, png.c, Cnv/{CnvFiles.c, CnvPath.c}},
1710plugin_animator/plugin_animator.c,
1711plugin_logger/maps.c,
1712server/{alchemy.c, c_misc.c, c_wiz.c, init.c, main.c, monster.c, pets.c,
1713player.c, resurrection.c, rune.c, skills.c, spell_effect.c, time.c,
1714weather.c}:
1715 Fix spelling errors in string constants.
1716server/c_misc.c: Remove superfluous trailing '\0' from strings.
1717Andreas Kirschbaum 2005-07-15
1718
1719server/{c_misc.c, monster.c, pets.c}, include/player.h: Add new "arena"
1720 petmode which allows pets to attack players and other pets while in the
1721 arena.
1722Alex Schultz 2005-07-16
1723
1724*Makefile.in, aclocal.m4, configure: Rebuilt generated files.
1725lib/Makefile.am: Update list of help files to install.
1726server/skills.c: Do not reveal a hidden DM in attempt_jump().
1727server/skills.c: Do not reveal a hidden DM in steal().
1728server/player.c: Ignore hidden DM in stand_near_hostile(). Formerly it always
1729 returned false if a hidden DM was present.
1730Andreas Kirschbaum 2005-07-15
1731
1732server/c_object.c: Improved pickup. You can now do pickup +bow, or pickup -shield.
1733 Much simpler then fiddling with sums of 2^x values.
1734Ryo 2005-07-15
1735
1736server/c_party.c: Make party passwords with a length of 8 characters work
1737 again.
1738lib/artifacts: Fix type of lockpicks of quality/high quality.
1739Andreas Kirschbaum 2005-07-15
1740
1741Those commits remove the dependency on the plugin towards the library. All functions
1742 used from the plugin are hooked, instead of being called directly. This fixes bugs
1743 under Windows, and simplifies compilation. Also, many new callbacks were defined.
1744Affected files:
1745 include/plugin.h plugproto.h sproto.h
1746 plugin/plugin_python.c
1747 server/plugins.c
1748Note that at some point some functions could be moved out of plugin_python and put in
1749 plugin_general to be shared between different plugins.
1750Ryo 2005-07-15
1751
1752Those commits remove the whole "glue/callback" logic. Instead functions are just
1753defined as external, and should be implemented (even as dummy) by all programs.
1754Affected files:
1755 common/arch.c button.c glue.c init.c item.c living.c logger.c los.c map.c object.c
1756 time.c treasure.c
1757 crossedit/stubs.c: new file with dummy functions.
1758 crossedit/Makefile.[in|am]: add this new file.
1759 include/funcpoint.h libproto.h sproto.h
1760 random_maps/standalone.c: add dummy functions for those externals.
1761 server/init.c: remove obsolete setup_library()
1762
1763Added a wrapper function for check_trigger from plugins.
1764 include/plugin.h: new function
1765 server/plugins.c: wrapper for check_trigger.
1766
1767Ryo 2005-07-15
1768
1769plugin/plugin_python.c: (add|free)_string should *not* be called directly under Win32.
1770 Therefore let's use the hooks. Also, when removing an object, better check it's not the
1771 current object (CFPython.RemoveObject(CFPython.WhoAmI()) anyone?).
1772Ryo 2005-07-15
1773
1774server/spell_util.c: use on_same_map instead of checking directly map pointers.
1775Ryo 2005-07-15
1776
1777Those changes implement a quest tracking system. Check the doc/quests document for more info.
1778common/quest.c: new file with a few quests-related functions.
1779doc/Developers/mapguide: point to quests file for instructions on quests.
1780doc/Developers/quests: new file with instructions on how to use quests,
1781 and implementation details.
1782doc/Developers/README: added quests file.
1783include/libproto.h: new functions in quest.c.
1784include/quest.h: new file with a few defines for quests.
1785include/sproto.h: new function command_quest, update talk_to_wall definition.
1786lib/help/quests: new help file for quests command.
1787server/c_misc: new command_quests function.
1788server/commands.c: link command_quests to "quests".
1789server/monster.c: update talk_to_wall and talk_to_npc to check for quests.
1790server/time.c: modify marker behaviour to handle quests.
1791Ryo 2005-07-14
1792
1793common/{button.c, treasure.c, utils.c}, server/{c_wiz.c, login.c, shop.c,
1794skill_util.c, spell_effect.c}, socket/{image.c, item.c}: Fix printf like
1795 format specifiers. At least one of them fixes a means to crash the server.
1796Andreas Kirschbaum 2005-07-14
1797
1798Those changes introduce party spells. Casted spell should be defined through 'other_arch'
1799 field. Note that this needs through testing to make sure it works as intended.
1800include/spells.h: new spell type, 'party spell'.
1801server/spell_util.c: new spell type, party spell.
1802Ryo 2005-07-10
1803
1804server/{login.c, player.c}: Fix buffer overflow with pl->title. Based on patch
1805 by Scott Kullberg.
1806crossedit/{Edit.c, Cnv/CnvPrompt.c}, server/{ban.c, hiscore.c, login.c,
1807player.c, shop.c, win32.c}: Properly terminate destination string of strncpy
1808 with '\0'.
1809server/init.c: Fix error message.
1810Andreas Kirschbaum 2005-07-10
1811
1812configure.ac, configure, aclocal.m4, Makefile.in: Add AM_MAINTAINER_MODE
1813 macro to configure.ac - this should hopefully supress auto regeneration of
1814 makefiles.in
1815MSW 2005-07-08
1816
1817Add a --with-python option to configure. Also, update the python
1818detection script to check for 2.5 (not out yet, but might as well be prepared.)
1819Will try to commit files in proper order so that dependency checking is correct
1820and it won't try to rebuild makefiles or other files.
1821--
1822acinclude: Updated checks for --with-python
1823aclocal.m4: updated
1824configure.ac,configure: Updated checks for --with-python
1825config.sub, config.guess - update to latest versions
1826INSTALL: Updated build directions
1827MSW 2005-07-08
1828
1829lib/Makefile.am, lib/Makefile.in: Remove map_check from normal distribution
1830 due to different license on file.
1831random_maps/monster.c: Reduce monster density on random maps - take into account
1832 size of monsters when calculating density.
1833utils/metaserver.pl.in: At a timeout value that limits how often clients can
1834 ask for metaserver info.
1835MSW 2005-07-08
1836
1837lib/settings: Turn of fastclock as default option.
1838socket/loop.c: Change behaviour of metaserver/flushmaps/watchdog
1839 calls if fastclock is set - don't do those any faster than normal.
1840MSW 2005-06-22
1841
1842Server can now be used as a Windows server, with command-line options
1843 -regsrv (register server and exit), -unregsrv (unregister server and exit)
1844 and -srv (should not be used directly, for the service control manager call).
1845server/init.c: add command-line options.
1846server/main.c: loop is no more infinite under Windows. Save and clean after it, too.
1847server/win32.c: add service routines.
1848Ryo 2005-06-22
1849
1850common/living.c: Print correct message when (un-)wearing items with negative
1851 luck.
1852Andreas Kirschbaum 2005-06-14
1853
1854include/living.h: Patch from Kari Pahula to remove obsolete variable
1855 declarations.
1856Andreas Kirschbaum 2005-06-01
1857
1858server/skill_util.c: Print correct permanent experience ratio for experience
1859 values >2 billion.
1860Andreas Kirschbaum 2005-05-22
1861
1862server/apply.c: Do not unlock LAMP items when turning them on or off.
1863server/apply.c: Fix CONVERTER items with slaying "money" to trigger for MONEY
1864 items only.
1865server/player.c: Generate proper plural name for player's gravestones.
1866Andreas Kirschbaum 2005-05-21
1867
1868Ensure that object->msg always has a trailing \n character. This is necessary
1869to prevent corrupted map files.
1870plugin/plugin_python.c: Add trailing \n to message set by
1871 CFPython.SetMessage() if not already present.
1872server/plugins.c: Add trailing \n to message set by HOOK_TELEPORTOBJECT if not
1873 already present.
1874server/rune.c: Add trailing \n to rune messages.
1875Andreas Kirschbaum 2005-05-21
1876
1877Apply qal21's patch [ #1205421 ]: Implement new Python functions:
1878GetArchType, GetFacing, GetLevel.
1879plugin/plugin_python.c, plugin/include/plugin_python.h: Add new functions.
1880doc/Developers/python: Describe new functions.
1881Andreas Kirschbaum 2005-05-20
1882
1883server/monster.c: Fix monsters to cast spells from spellbooks.
1884Andreas Kirschbaum 2005-05-15
1885
1886Fixed compilation issue.
1887server/apply.c: can't declare a variable after some function call.
1888socket/info.c: removed unused variable.
1889Ryo 2005/05/07
1890
1891Corrected code to compile under -ansi gcc flag:
1892 * correction of some non posix compatible calls around scandir
1893 * changing configure to detect the absence of 'alphasort' prototype
1894 * converted some '//' comment to /**/ one
1895 * reran automake1.8/autoconf2.50/autheader2.50
1896Note even it it compiles with -ansi -pedantic, it still need cleanup to
1897get 64 bits experience code working!
1898Tchize 2005/05/07
1899
1900Applied Casper1's patch [ #1193516 ] for Hurd support.
1901 * socket/lowlevel.c: #ifdef some code part that won't work.
1902Change some char* to const char*, when values shouldn't be changed. Changed files:
1903 * include/libproto.h
1904 * common/arch.c
1905 * common/living.c
1906Ryo 2005-05-03
1907
1908Change some char* to const char*, when values shouldn't be changed. Changed files:
1909 * include/sproto.h
1910 * socket/info.c
1911 * socket/item.c
1912Ryo 2005-04-30
1913
1914Change some char* to const char*, when values shouldn't be changed. Changed files:
1915 * include/sproto.h
1916 * server/apply.c
1917 * server/ban.c
1918 * server/spell_util.c
1919Ryo 2005-04-27
1920
1921server/skills.c: Change it so that jeweler skill is used to identify
1922 amulets, not alchemy skill.
1923MSW 2005-04-27
1924
1925Apply patch 1190107 so server compiles on HURD.
1926common/porting.c: Add define for MAXPATHLEN
1927socket/init.c: Add check for __GNU__ for setsockopt()
1928MSW 2005-04-27
1929
1930Change to have objects generated by creator properly fixed up (material,
1931for potions, spell object, etc).
1932---
1933common/treasure.c: add GT_MINIMAL flag to change_treasure() to do minimal
1934 processing for objects created.
1935include/treasure.h: Add GT_MINIMAL define.
1936server/apply.c: Add call to fix_generated_item() in convert_item()
1937MSW 2005-04-27
1938
1939Various minor bugfixes.
1940common/los.c: Patch to fix negative lighting. Use isqrt instead of sqrt,
1941 so we only want integer values anyways.
1942include/libproto.h, include/sproto.h: Rebuilt as there were some improperly
1943 matching prototypes.
1944random_maps/rogue_layout.c: Replace sqrt with isqrt calls.
1945server/c_misc.c: Make name_cmp() a static declaration so it won't be put
1946 in the sproto.h file.
1947server/init.c: Remove /* within comment string.
1948server/monster.c: Change sqrt to isqrt
1949MSW 2005-04-16
1950
1951Those changes are just changing char* to const char* in some function
1952prototypes.
1953Affected files:
1954 common/recipe.c
1955 common/region.c
1956 common/treasure.c
1957 common/utils.c
1958 include/libproto.h: match headers.
1959 server/main.c
1960Ryo 2005-04-16
1961
1962Those changes add the ability to transform items through 'item_transformer'
1963 (163)-type items
1964 See doc/Developers/item_transformation for more info.
1965common/item.c: don't display 'slaying' field for food.
1966include/define.h: add new 'ITEM_TRANSFORMER' type.
1967include/sproto.h: add new function 'apply_item_transformer'.
1968server/apply.c: new 'apply_item_transformer' function to handle that item type.
1969Ryo 2005-04-15
1970
1971common/map.c: map pathnames are now const char*, no reason for something else.
1972common/region.c: remove unused variable.
1973include/libproto.h: update functions definitions.
1974include/sproto.h: weathermap_to_worldmap_corner now returns a const char*.
1975include/win32.h: define missing NAME_MAX as MAX_BUF.
1976server/c_misc.c: remove unused variable. Use const char* when possible.
1977server/weather.c: weathermap_to_worldmap_corner now uses const char* as
1978 return type.
1979Ryo 2005-04-14
1980
1981Random map code improvements - add support for subdirectories in the
1982style maps for random maps. Add difficulty_increase parameter for random
1983maps to control how fast they get harder.
1984doc/Developers/random-maps: Add notes about difficulty_increase parameter.
1985random_maps/Makefile.am: Update proto directive to use cproto, not cextract.
1986random_maps/random_map.c: Update to use difficulty_increase when figuring
1987 difficulty of maps. Add code to save it in list of parameters.
1988random_maps/random_map.h: Add difficulty_increase field to structure.
1989random_maps/reader.l, reader.c: Add code to find difficulty_increase parameter.
1990random_maps/rproto.h: rebuilt.
1991random_maps/special.c: Pass in difficulty increase to
1992 write_parameters_to_string()
1993random_maps/style.c: Remove old scandir - replaced by our own load_dir() -
1994 necessary because we need to check type of files, which scandir doesn't
1995 easily let us do. Since it is now our own routine, just return
1996 array of file names instead of dirent structures.
1997MSW 2005-04-13
1998
1999utils/Makefile.am: Add cfmeta-rrd to list of files to add to distributions
2000utils/cfmeta-rrd: Example of sample script that takes data and stores it into
2001 rrd file and draws graphs (new file).
2002utils/metaserver.pl.in: Add recording of useful stats to external file so they
2003 can be processed by other external scripts.
2004MSW 2005-04-13
2005
2006server/shop.c: Pass in player object to pay_from_container() - code was
2007 trying to deref pouch->contr which was null. Only occurs when player
2008 has 2 different money objects of the same type, but 2 crashes observed
2009 on metalforge.
2010MSW 2005-04-13
2011
2012socket/image.c: Change esrv_send_face to check for <=0 instead of <0 on face
2013 number.
2014socket/request.c: Change if statement that acted improperly to determine when
2015 to send faces.
2016MSW 2005-03-27
2017
2018include/sproto.h: get_who_escape_code_value is void, not void*.
2019server/c_misc.c: move local function outside the function.
2020server/c_wiz.c: remove sleep( 1 ) that would cause whole server to sleep one
2021 sec.
2022Ryo 2005-03-23
2023
2024common/living.c: Allow luck to drop back to zero. Limit bad luck object to
2025 +/-100 to prevent overflows.
2026Andreas Kirschbaum 2005-03-22
2027
2028common/living.c: When randomly adjusting luck, change both op->stats.luck and
2029 the applied bad_luck object.
2030server/attack.c: Do not decrease luck if a player kills himself with a spell
2031 or pet.
2032Andreas Kirschbaum 2005-03-20
2033
2034server/c_wiz.c: change command_free() and command_remove() to always
2035 process the head of the object - doing this operations on the non head
2036 will typically always cause problems.
2037MSW 2005-03-19
2038
2039This change makes it so that the smoothing information is pushed to the client
2040(if the client is using smoothing) instead of a process were we tell the
2041client the smoothlevel and the client then has to request the face info for
2042smoothing. If we know the client wants the info, much easier to push it to
2043the client. This simplifies the client code (doesn't have to keep track
2044of what is requests). It also fixes the 'problem' that when you join the
2045game, you get a few frames with no smoothing and then the smoothing shows
2046up, which seems a bit odd. My testing shows that old clients that want
2047smoothing use this new logic withouth any problems.
2048--
2049common/image.c: add smooth_face default so that we don't have to look it
2050 up everytime.
2051include/define.h: Add SMOOTH_FACE_NAME used by image.c
2052include/global.h: Add smooth_face extern declaration.
2053include/newserver.h: Update comment on what faces_sent is used for,
2054 add NS_FACESENT_* values which determines what info for the face was
2055 sent.
2056socket/image.c, socket/init.c, socket/item.c: Update faces_sent checks/set
2057 to check against NS_FACESENT bitmask.
2058socket/request.c: Update faces_sent as mentioned above. And SendSmooth(),
2059 rewrite AskSmooth() to use SendSmooth(). Modify update_smooth()
2060 to send smoothing information to the client.
2061MSW 2005-03-19
2062
2063common/map.c: Clean up if statement ins blocked_link() which caused warning
2064 messages - broke it apart to make it a little clear. Add check for
2065 premature end of map header - make code more resilent in case of truncated
2066 saved maps. Fix saving of region name in new_save_map() - saving the
2067 pointer to the region isn't what the loader is expecting, and is highly
2068 non portable even if it was.
2069MSW 2005-03-18
2070
2071Applied patch:
2072* #1145089 (cavesomething): Region support.
2073common/Makefile.am: add new 'region.c' file.
2074common/init.c: add 'REGIONS' setting.
2075common/map.c: add 'region' map key.
2076include/config.h: add regions file default name.
2077include/global.h: add 'first_region' global variable and settings.
2078include/libproto.h: add region.c functions prototypes.
2079include/map.h: add region structure.
2080include/sproto.h: add new region-related command.
2081lib/Makefile.am: add 'regions' file.
2082lib/regions (new): regions definition file.
2083server/c_misc.c: add region information to current_map_info. Add new 'whereami' command.
2084server/commands.c: add 'whereami' command.
2085server/init.c: add regions settings, and load data.
2086Ryo 2005-03-15
2087
2088Applied patches:
2089* #1119366 (salathar): wiz food, DMs don't use food anymore.
2090* #1161816 (cowboyatheart) : Add wands/staves/rods/horns to new pickup.
2091* #1119762 (salathar): afk command.
2092common/loader.[lc]: add 'FLAG_AFK'.
2093include/define.h: add 'PU_MAGIC_DEVICE. Add 'FLAG_AFK'.
2094include/sproto.h: add 'command_afk'.
2095server/c_misc.c: add 'AFK' to who display, add command_afk.
2096server/c_object.c: add new flag to dump.
2097server/commands.c: add command_afk.
2098server/player.c: wiz don't use food. Check for rod/wand/horn for new pickup flag.
2099Ryo 2005-03-13
2100
2101*Makefile.in, aclocal.m4, configure, utils/config.guess, utils/config.sub,
2102utils/ltmain.sh: Rebuild generated files.
2103acinclude.m4: Check whether Python supports the "L" format specifier. Do not
2104 build python plugin if not.
2105Andreas Kirschbaum 2005-03-09
2106
2107common/{map.c, readable.c, treasure.c}, crossedit/Attr.c, server/{apply.c,
2108attack.c, c_wiz.c, init.c, monster.c, pets.c, shop.c, skill_util.c, skills.c,
2109spell_attack.c, spell_effect.c, time.c}, socket/{info.c, request.c}: Add
2110 missing newline character to LOG() messages.
2111common/living.c, include/living.h: Change type of weight_limit to uint32.
2112socket/request.c: Remove non-portable assignment to rvalue.
2113doc/{README_PLUGINS.doc, README_PYTHON.txt, plugins}, doc/Developers/{README,
2114plugins, python}: Update plugin documentation.
2115plugin/plugin_python.c, plugin/include/plugin_python.h: Whitespace changes,
2116 remove obsolete comments.
2117plugin/plugin_python.c: Only set WhoAmI when running the command registered by
2118 CFPython.RegisterCommand. Set default result value to "success".
2119plugin/plugin_python.c: Fix memory leaks by freeing old strings before
2120 assigning a new value.
2121plugin/plugin_python.c: Use correct format specifiers for item values and
2122 experience values.
2123plugin/plugin_python.c: Make CFPython.IsCanBePicked return whether the object
2124 can be picked up. (Did return whether the object cannot be picked up.)
2125plugin/plugin_python.c: Do not return a pointer to a variable on the stack.
2126server/plugins.c: Fix pointer type mismatch while processing
2127 CFPython.RegisterCommand.
2128plugin/plugin_python.c: Change second parameter of CFPython.CheckMap to use
2129 a map object instead of a map name. Now it works for tiles maps.
2130acinclude.m4: Add check for python 2.4 to match this file with aclocal.m4.
2131Andreas Kirschbaum 2005-03-06
2132
2133plugin/plugin_python.c: Increase limits of values the Python script may set
2134 to the ranges given by objects in the archetypes file.
2135Andreas Kirschbaum 2005-02-28
2136
2137common/object.c, include/libproto.h: change nrof parameter of get_split_ob to
2138 uint32 type.
2139server/c_object.c, include/sproto.h: change nrof parameter of drop_object to
2140 uint32 type.
2141plugin/{plugin_python.c, include/plugin_python.h},
2142plugin_animator/{plugin_animator.c, include/plugin_animator.h},
2143server/{apply.c, attack.c, gods.c, monster.c, player.c, skills.c, time.c,
2144 timers.c}: Change type of CFParm.Value[5] and StackParm1[] to uint32 to be
2145 able to pass an "nrof" value.
2146plugin/plugin_python.c, plugin/include/plugin_python.h: Remove spell wrapper
2147 functions.
2148plugin/plugin_python.c, plugin/include/plugin_python.h: Replace skill-IDs by
2149 skill names. Remove skill-ID wrapper functions.
2150Andreas Kirschbaum 2005-02-20
2151
2152------------------------------------------------------------------------------
2153Changes for 1.7.0:
2154
2155configure, configure.ac, include/autoconf.h.in: Update for
2156 version 1.7.0. Add check for libz - needed by libpng (at least on my
2157 system), which is needed for the editor.
2158MSW 2005-01-23
2159
2160common/object.c: Change CAN_MERGE() from an inline function, since
2161 it calls itself and inline functions are not supposed to do that.
2162 Update type check in insert_ob_in_map() to check against defined
2163 type (EXIT) instead of hardcoded integer value (66).
2164crossedit/xutil.c: Update to just include Defines.h, which then includes
2165 all the other necessary files, including global.h.
2166include/global.h: Add #ifdef checks for the UINT*_MAX types, as some
2167 systems already define these values, which results in a redefinition
2168 error. Also fix up // style comment.
2169include/shstr.h: Include proper cast in TOPBIT definition.
2170server/main.c: Don't display 'xyz left the game' messages if the player
2171 is only at the get name or get password prompt. Prevents possible
2172 spoofing of that message.
2173server/player.c: Clean up formatting of check_pick() function. If player
2174 is using newpickup to pick up booze, also pick up poison unless
2175 they know it is cursed.
2176socket/request.c: AskSmooth() - change buffer type to uint8 so that
2177 it matches what the SockList structure wants.
2178utils/scores.pl.in: Use skill_praying to find players god, and not the
2179 deprecated experience_wis object.
2180MSW 2005-01-23
2181
2182aclocal.m4, configure: Add check for python 2.4.
2183common/re-cmp.c: Fix improper comparison *(str+1) instead of str+1
2184server/login.c: don't allow null names.
2185server/main.c: Disable logging of removed objects - filling up log
2186 files on archmage of all the errors.
2187server/player.c: Fix improper initialization of attacktype in
2188 for loop. Give players max grace, sp when they die - also, if they
2189 are near starvation, give them a bunch of food.
2190server/spell_effect.c: Put cap on duration of godly retribution - it
2191 can otherwise last so long that if a player is killed by it at
2192 their savebed location, spell could still go on after players
2193 temporary immunity ends. Retribution as increases in damage,
2194 so no need to really increase damage and duration to really high
2195 amounts.
2196server/spell_util.c: In fire_arch_from_position(), and check that
2197 player isn't casting spell on top of wall - fixes for many
2198 spells, including ball lightning.
2199server/time.c: Change comparsion on return of get_map_flags() from
2200 == P_OUT_OF_MAP to & P_OUT_OF_MAP - keeps syntax consistent.
2201MSW 2005-01-11
2202
2203plugin/plugin_python.c, plugin_animator/plugin_animator.c,
2204plugin_animator/plugin_animator.c: Use script return value set by
2205 CFPython.SetReturnValue(): access to stack was off by one. Do not return a
2206 pointer to a local variable on the stack.
2207plugin/plugin_python.c, plugin_animator/plugin_animator.c: Handle all defined
2208 events.
2209Andreas Kirschbaum 2005-01-10
2210
2211server/spell_attack.c: apply patch #1096921 courtesy Salathar.
2212 Charmed monsters now lose the 'generator' flag, to prevent
2213 things like mice outbreak in bigworld maps.
2214Ryo 2005-01-07
2215
2216plugin/plugin_pyhton.c, plugin/include/plugin_python.h: Remove obsolete
2217 functions: SetGender, SetRank, SetAlignment, SetGuildForce, GetGuildForce,
2218 CreatePlayerForce, CreatePlayerInfo, GetPlayerInfo, GetNextPlayerInfo,
2219 SetPreviousObject, SetNextObject.
2220plugin/plugin_python.c, plugin/include/plugin_python.h: Add missing attack type
2221 wrapper functions, function CFPython.SetDamned(), wrapper functions for
2222 missing cost flags, and wrapper functions for event types.
2223plugin/plugin_python.c: Add an optional parameter to CFPython.SetName() to
2224 specify name_pl as well. Always set name_pl.
2225plugin/plugin_python.c: Fix a buffer overflow in CFPython.RegisterCommand():
2226 allocated memory was not sufficient to hold the trailing '\0'.
2227plugin/plugin_python.c: Use #define constants.
2228plugin/include/plugin_python.h, plugin/plugin_python.c,
2229plugin_animator/plugin_animator.c, server/plugins.c: General cleanup - merge
2230 duplicate code, remove debugging code, rename variables, rename C function
2231 names to match the Python function name, use hook functions where
2232 appropriate.
2233include/sproto.h, plugin/plugin_python.c, server/plugins.c, server/shop.c:
2234 Use uint64 type for variables holding money. Use Python long integers to
2235 pass these variables to/from the Python plugin.
2236Andreas Kirschbaum 2005-01-07
2237
2238plugin/plugin_python.c: Check values passed in from the Python code; generate
2239 proper Python exceptions for invalid values.
2240plugin/plugin_python.c, plugin_animator/plugin_animator.c: Make sure all
2241 fields on the stack are initialized. Prevent stack overflow: check was one
2242 off, causing a buffer overflow. Decrement stack pointer in error case.
2243Andreas Kirschbaum 2005-01-06.
2244
2245common/regexp.c: Fixed couple flaws in regexp handling. First, there was an
2246 off by one error in the handling of matches (if the match was for example
2247 eureca, player could just say eurec, and it would treat that as a valid
2248 match). Second case was that the regular expression logic would not
2249 try comparing the rest of the passed in string after a partial match -
2250 In the eureca case above, if the passed in string was 'where is eureca',
2251 after matching the first e (in where), it then fails to match the
2252 next letter and would give up. It now tries comparing the rest of
2253 the passed in string with the regex (so after that failure, it
2254 will try to match 're is eureca'.
2255server/apply.c: Add missing 'return 0' to shop_mat code that is needed
2256 to prevent unpaid objects from teleporting out of the shop. Also
2257 extend code so that non living objects can't use shop mats.
2258server/player.c: Insert force into the player when they die making them
2259 immune to any spells on the space they reappear on - this prevents
2260 multiple deaths if there is large spell effect going on in the
2261 savebed location. Duration of force should be long enough for most
2262 spells to run their course, but no so long that the player can use
2263 it for much of an advantage (plus, killing yourself to get such
2264 an advantage seems odd, and the force only makes the player immune
2265 to the attacktypes currently on the space)
2266server/spell_effect.c: Fix spell casting walls (lighting wall,
2267 firewall, etc) in that the spell object they cast was not being
2268 inserted, resulting in the walls not doing anything.
2269MSW 2004-12-28
2270
2271Applied patch (bug misc/zoo2) by Lalo
2272server/time.c: creators can now create multi part objects.
2273Applied patch 1086102 by Salathar:
2274server/attack.c: If player kills another player, add (pk) to the death
2275 message.
2276Applied patch 1086103 by Salathar:
2277server/move.c: If player pushes another player, send message to both players
2278 that pushed happened. Previously, when pushing another player, the pusher
2279 wouldn't get any notice.
2280MSW 2004-12-28
2281
2282
2283Applied patch 1001079 - make alchemy books say what skill & equipment
2284 is needed - by Kevin Rudat.
2285common/readable.c: Update code that generates book title, contents
2286 to denote what skill and equipment is needed.
2287random_maps/{random_map.c, reader.l, reader.c}, server/main.c:
2288 Remove generate_treasure_now as an option
2289 for random maps - none are using delayed treasure, and IMO, if someone
2290 did, it would horribly break things, so it should never be used - given
2291 that, no reason to leave the code there.
2292server/main.c: Add additional debugging for process events on removed
2293 objects - trying to track down occasional disease crash.
2294server/time.c: Fix crash in move_player_mover() - it was never map tile
2295 aware, but even more so, appears to have always been broken if the
2296 player move tried to push the player off the edge of a map. Check
2297 for out of map condition, as well as make it map tile aware.
2298MSW 2004-12-28
2299
2300Applied patches #1086095 and 1088385 courtesy Salathar:
2301 common/map.c: hidden DM is non blocking
2302 server/c_chat: can't do emotions towards hidden DMs. Player's emotions
2303 always displayed in split window.
2304 server/c_wiz.c: add an extra player leave message when DM hides
2305 server/main.c: don't display leave messages for hidden DM when connection timeout
2306server/c_party.c: party password max length is 7, due to buffer size.
2307 (i think it was a patch from Casper?)
2308Ryo 2004-12-25
2309
2310server/c_wiz.c: Remove item when 'free' by DM if not removed, avoiding crash.
2311Ryo 2004-12-22
2312
2313server/c_party.c: Make party passwords of 8 characters work, disallow longer
2314 passwords. Based on patch #1080096 from Casper.
2315 Correct help message for party commands.
2316Andreas Kirschbaum 2004-12-10
2317
2318plugin/plugin_python.c: change 'long long' so 'sint64' (typedef).
2319Ryo Saeba 2004-11-29
2320
2321common/object.c: apply patch #1066665 courtesy Salathar for exits with
2322 blockview 1.
2323lib/formulae: apply patch #1064643 courtesy Salathar to fix broken formulae.
2324lib/wizhelp/speed: remove file, command changed name.
2325lib/wizhelp/server_speed: updated 'speed' command help.
2326server/c_wiz.c: apply patch #1063051 courtesy Salathar to update muzzle message.
2327server/commands.c: apply patch #1052224 courtesy Casper to change
2328 'speed' to 'server_speed' as name is ambiguous.
2329Ryo Saeba 2004-11-25
2330
2331common/loader.l: Fix passed size in FAST_SAVE_LONG() - was one too long,
2332 causing truncated diffs after "dam_modifier" entry.
2333Andreas Kirschbaum 2004-11-15
2334
2335This commit adds the functionality of patch 991916, although the patch
2336as submitted was used as a baseline to start from.
2337include/sproto.h: rebuilt
2338server/c_chat.c: Rename command_chat() to command_tell_all() which takes
2339 a few more optional parameters. Add command_shout() and command_chat()
2340 that invoke command_tell_all() with the appropriate changes.
2341server/commands.c: Add chat to list of command table.
2342MSW 2004-11-08
2343
2344plugin/plugin_python.c: Run the script python_init.py right after
2345 initializing the interpreter.
2346Andreas Kirschbaum 2004-10-21
2347
2348server/c_party.c: actually warn party members of password change. Notify when
2349 someone joins party.
2350Ryo 2004-10-21
2351
2352plugin/plugin_python.c, plugin/include/plugin_python.h, server/plugins.c:
2353 Fix comments, change whitespace.
2354Andreas Kirschbaum 2004-10-19
2355
2356Fix some bugs I introduced in my last commit.
2357common/map.c: Add back in call to sum_weight that got removed when removing
2358 the object checking code.
2359common/treasure.c: Have fix_generated_item() blank out the randomitems
2360 field after it has created treasure.
2361server/apply.c: Only clear randomitems after create_treasure() - don't
2362 presume it should get blanked out for other reasons - with change
2363 to treasure.c above, this should be more reliable and fix starting
2364 skill issue, as randomitems was getting blanked out for CLASS object.
2365server/main.c: Change processing of players a little - found crash where
2366 autosave was called for a removed player (map had got swapped out) -
2367 don't do autosave logic if player is removed. Move the autosave code
2368 to after the players action, so that can just have a single check of
2369 removed status.
2370MSW 2004-10-17
2371
2372include/sproto.h, server/egoitem.c: Change create_artifact() to return whether
2373 the artifact was created.
2374server/plugins.c: Change CFWCreateArtifact()/HOOK_CREATEARTIFACT to return
2375 whether the artifact was created.
2376plugin/plugin_python.c: Define new function create_object() to create
2377 objects. Use this function to fix CFPython.CreateObjectInside() and
2378 CFPython.CreateObject(): creation of artifacts does work now.
2379plugin/plugin_python.c: Fix CFPython.GetNextPlayerInfo() to work with long
2380 force names. Remove duplicate variable initialization.
2381server/plugins.c: Remove the use of malloc() in initOnePlugin().
2382Andreas Kirschbaum 2004-10-18
2383
2384plugin/plugin_python.c, plugin_animator/animator_box.c,
2385plugin_animator/plugin_animator.c, plugin_logger/arena.c,
2386plugin_logger/plugin_logger.c: Use HOOK_FREEMEMORY to free memory allocated
2387 by HOOK-functions. Fix memory leaks.
2388plugin/plugin_python.c, server/plugin.c, plugin_animator/animator_box.c: Fix
2389 some more mismatches between plugin interface and implementation.
2390 CFPython.Get/SetSkillExperience() use 64-bit exp values now.
2391 CFPython.CastAbility() works again.
2392Andreas Kirschbaum 2004-10-16
2393
2394plugin/plugin_python.c, server/plugin.c: Fix type mismatches between plugin
2395 interface and implementation.
2396plugin/plugin_python.c, server/plugin.c: Add/remove "static" to/from some
2397 variables. Fixes a memory leak in CFPython.SaveObject().
2398plugin/plugin_python.c: Fix reference counting for Python objects.
2399Andreas Kirschbaum 2004-10-15
2400
2401common/living.c: Fix exp functions to use the player objects expmul
2402 value when determining level gains, and not the skills. Also,
2403 fix bug where players last hp/sp/grace gain I think was being
2404 re-rolled when player gained level in skill.
2405common/loader.l, loader.c: Add better recording of non existant objects
2406 (no archetype for them) in maps. Also, handle such objects in
2407 players inventories properly (which is to just discard them)
2408common/map.c: Add better logging about discarded archetypes. Since the
2409 loader now deals with objects without archs in inventories, that
2410 code doesn't need to be in the server.
2411common/object.c: copy_object() was not properly nulling out the
2412 next field in the event object, pointer to event list was also
2413 incorrect, causing events to not be copied properly.
2414doc/spoiler-html/spoiler.html: Rebuilt.
2415server/apply.c: Apply patch by MT that fixes problem of entire inventory
2416 not being copied properly. Fix problem that objects in creatures
2417 were not having any sub treasure created (eg, put a pyro_book in
2418 a monster on the map, and the pyro_book wouldn't have a spell in
2419 it) - now we make sure we process inventory objects as well as map
2420 objects, creating treasure as needed.
2421server/monster.c: Reverse order of cast_spell() and drain_rod() in
2422 monster_use_range() - drain_rod() should go first, because
2423 case_spell() can in rare cases destroy the rod.
2424MSW 2004-10-14
2425
2426server/c_misc.c: Add natural skin resistances to 'statistics' output for
2427 dragon players.
2428Ryo 2004-10-10
2429
2430common/readable.c: Apply patch by Kevin Rudat to add some alchemy book names.
2431common/readable.c: Apply patch by Kevin Rudat to fix buffer overrun while
2432 generating book titles.
2433Andreas Kirschbaum 2004-10-09
2434
2435include/sproto.h: Add function prototype.
2436server/c_wiz.c: Add 'command_stack_clear' to clear DM item stack.
2437server/commands.c: Link function to function array.
2438Ryo 2004-09-26
2439
2440server/player.c: Allow to 'reply' to players that logged out but did not yet
2441 drop the connection. Now reply works like other communication commands.
2442common/utils.c: Fix random_roll() and die_roll() to not return out of range
2443 values.
2444include/define.h: Add parentheses around arguments of FABS macro.
2445Andreas Kirschbaum 2004-09-19
2446
2447server/rune.c: Prevent creation of level 0 runes. Re-enable runes to cast
2448 multiple spells.
2449Andreas Kirschbaum 2004-09-14
2450
2451include/config.h: fix Win32 log path so there actually is a log.
2452plugin/plugin_python.c: uint doesn't exist under Win32, use uint32 instead.
2453
2454Patches from tracker, courtesy Kurtat:
2455patch 1022942: Random documentation updates
2456 doc/SurvivalGuide
2457 doc/Developers/programming_guide
2458 doc/Developers/protocol
2459 lib/settings
2460 lib/help/cast
2461patch 1022973: Words for numbers in spellbook description
2462 server/c_object
2463Ryo 2004-09-12
2464
2465server/attack.c: Pass in skill (string) to change_exp instead of skop->skill -
2466 skop can be null, resulting in a crash here. In addition, other calls
2467 to change_exp in this function use the skill string, so it is good to
2468 be consistent.
2469MSW 2004-09-09
2470
2471server/c_wiz.c: Don't forget to skip blanks after reading item number or stack
2472 position. Works better for commands like patch :)
2473Ryo 2004-09-06
2474
2475common/object.c: Fix insert_ob_in_map so right coordinates and map
2476 value are used on GET_MAP_OB call - was using values before changes
2477 for tiling were applied.
2478MSW 2004-09-02
2479
2480server/player.c: allow to 'talk' to players with ambiguous names: use a
2481 perfect match even if other partial matches exist.
2482Andreas Kirschbaum 2004-08-30
2483
2484include/define.h
2485server/shop.c
2486 add new flags F_IDENTIFIED and F_NOT_CURSED to query_cost() to pretend
2487 the item to be identified/not cursed or damned.
2488server/alchemy.c
2489 fix possible abuse of shadow alchemy: do not allow the generated items
2490 to be more valuable than the ingredients when using alternate recipes.
2491Andreas Kirschbaum 2004-08-24
2492
2493common/map.c: Add extra check to make sure variable is set before calling
2494 strcmp - this can happen if the map file that is being loaded is
2495 0 bytes - without this, the server would crash.
2496MSW 2004-08-23
2497
2498
2499server/disease.c: fix crash when casting diseases on tiled maps.
2500server/move.c: fix problem with multi-tile monsters and pass thru walls.
2501server/spell_effect.c: fix magic walls sometimes appearing in wrong place.
2502Andreas Kirschbaum 2004-08-20
2503
2504common/loader.l, loader.c: in check_loaded_object() - don't give spell
2505 objects inventory if we are in the arch_init phase. When loading objects
2506 in common loader routine, if object doesn't have arch, set the object
2507 name to the arch name so that it is more meaningful than 'singularity'.
2508common/map.c: If object has inventory, check to make sure the inventory
2509 objects have an archetype set - if not, remove and free the object -
2510 objects without archetypes causes crashes.
2511MSW 2004-08-17
2512
2513server/apply.c: fix_auto_apply() - add some debugging statements, as I've
2514 seen crashes caused by monsters with scrolls with no spells - need to
2515 figure out how those are showing up.
2516server/c_wiz.c: command_kick() - fix occasional crashes when player isn't
2517 on any map when kicked. command_create() largely rewritten so it doesn't
2518 crash the server on any malformed values passed in, add some more features
2519 so it should be easier to create objects.
2520MSW 2004-08-16
2521
2522server/apply.c: better to not create a treasure for spellbooks that already have
2523 something in inventory. Else you get 2 spells in the book, which then
2524 mutates when loading (first spell is the book's spell, and order changes every
2525 load/save...)
2526Ryo 2004-08-16
2527
2528Those changes mostly add an item stack for DMs. It makes it easier to dump & patch &
2529manipulate items without having to copy numbers all the time.
2530Basically, you can use '$x', meaning item at position x on stack. Or even
2531omit argument, defaulting to stack top.
2532When using an object number, it gets stacked automatically (up to 50 items).
2533Also add a 'diff' command, letting the DM see the result of 'get_ob_diff' on items,
2534to spot differences easily.
2535
2536common/player.c: free item stack when freeing player structure.
2537include/player.h: add item stack to player structure.
2538include/sproto.h: new functions for stack.
2539include/win32.h: missed commit for 1.6.1 version.
2540server/c_misc.c: push item dumped with 'deumpbelow' on dm stack.
2541server/c_wiz.c: add stack functions. Use'em on patch, create, remove, free, and such.
2542 Add 'diff' command.
2543server/commands.c: add new stack & diff commands.
2544Ryo 2004-08-15
2545
2546server/spell_attack.c: fix mood_change when spell has no attacktype.
2547 In this case, do a specific saving throw, to ensure a level 1 player
2548 can't charm a level 125 monster.
2549Ryo 2004-08-14
2550
2551random_maps/exit.c
2552random_maps/random_map.c
2553random_maps/random_map.h
2554random_maps/reader.l
2555random_maps/rproto.h
2556random_maps/special.c
2557random_maps/wall.c
2558 added fix for random maps with single arch walls,
2559 added level indicator on random map signs
2560 added new parameter 'exit_on_final_map'- see documentation
2561TM 2004-08-07
2562
2563include/plugin.h
2564plugin/plugin_python.c
2565server/c_wiz.c
2566server/plugins.c
2567 add event hooks for Kick and Muzzle(toggle_shout) commands.
2568 fix CFSetQuantity by changing the int to uint and remove 100000 item limit.
2569 pythonplug now looks for event scripts in maps/python/events.
2570TM 2004-08-02
2571
2572server/skills.c: xp for writing is now multiplied by skill level, to
2573 make it possible to level.
2574Ryo 2004-07-17
2575
2576common/loader.c: add #ifndef for non-existant Win32 header
2577include/win32.h: #define vsnprintf _vsnprintf to fix linking issue
2578Ryo 2004-07-03
2579
2580server/skill_util.c: Fix skills command so that it properly displays
2581 percentage of permanent exp.
2582server/time.c: Modify move_arrow() so that it removes thrown objects
2583 with no inventory.
2584MSW 2004-06-22
2585
2586socket/info.c: Replace sprintf() calls with snprintf() - got metalforge
2587 crash with apparent buffer overun - going to snprintf should prevent
2588 the problem in the future.
2589MSW 2004-06-21
2590
2591server/c_wiz.c: for command_create() - check to see if 'of' parameter
2592 is a spell archetype name, and do the right thing if it is. This
2593 allows things like 'create rod_heavy of spell_large_lightning'.
2594 Note that the command_create is still a seriously broken function
2595 in many regards.
2596server/rune.c: Fix write_rune() when trying to find the spell in encase
2597 in the rune - assignment was incorrect, so it always took the last
2598 matching spell in the players inventory, not the best matching spell.
2599server/spell_util.c: Change the call to prayer_failure() so that its
2600 potency is based on how badly short the player is short of grace. Eg,
2601 if only 1 point short, potency of 1. This changes from before where
2602 the potency was always the difference in mana.
2603MSW 2004-06-17
2604
2605server/attack.c: Fix hit_with_arrow() so that it uses the proper map
2606 when inserting the arrow.
2607server/c_wiz.c: Add note about brokeness of command_create()
2608server/spell_effect.c: execute_word_of_recall() - don't attempt recall
2609 if player isn't on any map.
2610MSW 2004-06-15
2611
2612common/object.c
2613include/define.h
2614include/player.h
2615include/sproto.h
2616server/attack.c
2617server/c_object.c
2618server/player.c
2619server/shop.c
2620socket/item.c
2621socket/loop.c
2622socket/request.c: Remove explicit calls to
2623 esrv_update_item(UPD_WEIGHT, pl, pl) for player objects. Instead
2624 send the new weight whenever it changes.
2625Andreas Kirschbaum 2004-06-13
2626
2627server/spell_attack.c: cast_destruction() - have it change the skill
2628 for the caster so that exp is properly awarded.
2629common/object.c: insert_map_in_ob() - remove CAN_MERGE checks after the
2630 map translation - otherwise, we can have bogus coordinates
2631 that are used for GET_MAP_OB.
2632random_maps/style.c: pick_random_object() - have it return null object
2633 (and probably crash) instead of getting into an infinite loop.
2634server/c_wiz.c: command_kick() - check FLAG_FREED of player. Remove all
2635 the broken skill/exp object granting code in command_possess() - this
2636 is probably still a broken function.
2637common/item.c: describe_monster() - if the creature/player is stealthy,
2638 mention it when the object is described.
2639common/loader.l, loader.c: Fix passed in size to get_ob_diff() - was one
2640 to long, causing string corruption.
2641server/spell_attack.c: mood_change() - fix get_map_ob call - wasn't using
2642 correct coordinate variables, resulting in crash.
2643MSW 2004-06-10
2644
2645server/c_party.c: gsay improvements, courtesy Katia.
2646Ryo 2004-06-09
2647
2648server/commands.c: Disable 'possess', that crashes server.
2649server/monster.c: Make monsters use wands/horns/... again. Also make'em
2650 ignore DMs all the time (even when not invisible).
2651server/skill_util.c: Fix the change_skill when called for monsters.
2652Ryo 2004-06-06
2653
2654server/c_misc.c: Add sum_weight() call to fix_me command so that players
2655 weight is properly recalculated.
2656server/skills.c: Fix up attempt_steal() so that it doesn't improperly
2657 remove object from target when person doing the stealing can't pick
2658 it up.
2659server/spell_attack.c: Set maxhp properly, so multipled fireballs, etc
2660 can be going off at the same time.
2661server/spell_effect.c: Fix up cast_create_missile() so more esoteric
2662 missiles can be created.
2663MSW 2004-05-31
2664
2665include/sproto.h: new 'dmhide' command.
2666server/commands.c: new 'dmhide' command.
2667server/c_wiz.c: added 'dmhide' command. Player becomes DM, and 'hide's immediately. Others
2668 only see him/her leave the game, they don't know s/he's DM.
2669Ryo 2004-05-24
2670
2671include/book.h: Increase the size of BOOK_BUF, so inscribed books can hold
2672 more informatin.
2673lib/Makefile.am, lib/Makefile.in: Add the 'rename' to the list of help
2674 files.
2675lib/archetypes: update the glyph/rune spells to have proper face.
2676lib/bmaps, lib/crossfire.* - add glyph.111 image.
2677server/gods.c: Modify tailor_god_spell() to look harder to find a god -
2678 necessary for glyph spells.
2679server/spell_attack.c: Give players 50% of exp for monsters they charm.
2680MSW 2004-05-19
2681
2682common/object.c: Correct get_search_arr() to return a proper permutation.
2683Andreas Kirschbaum 2004-05-18
2684
2685server/main.c: Have process_events display information from dumped object.
2686 also, more refinement on checking of object status.
2687MSW 2004-05-16
2688
2689server/build_map.c: change 'player' variable to 'pl', since a player
2690 structure already exists. Also fix disappearing pedestals on non-unique
2691 maps (put'em over floor, they are visible but hey, can't have everything :p)
2692server/c_wiz.c: fix learn_spell.
2693Ryo 2004-05-16
2694
2695server/main.c: freeing removed objects appeared to have more of a
2696 consequence than expected - only remove the object if it was on a map
2697 (op->map). It turns out that the artifact code uses objects that
2698 are removed to store what the new object is.
2699server/spell_effect.c: Fix cast_create_food() to call
2700 find_archetype_by_object_name() instead of find_archetype(). In this
2701 way, players can use invoke without having to know the archetype name.
2702server/c_wiz.c: Modify command_banish() to record dm name, player name,
2703 and date of command.
2704server/acinclude.m4: Patch by acinclude.m4 to add python 2.3 support.
2705 Rebuilt files (Makefile.in, aclocal.m4, configure, configure.in). add
2706 config.guess, config.sub since automake now includes them in the Makefile.in
2707 file.
2708MSW 2004-05-15
2709
2710
2711Added a new item type: ground positioning system (GPS).
2712This lets a player know his/her location in the world.
2713Only works in 'world_xxx_xxx' maps.
2714
2715include/define.h: add new item type, 'GPS' (162).
2716include/sproto.h: add new function, 'apply_positioning_system'.
2717server/apply.c: handle new item type.
2718Ryo 2004-05-15
2719
2720server/spell_util.c: SP_level_spellpoint_cost() - never have a spell
2721 cost 0 spellpoints due to attunement or other bonuses - spell always
2722 cost at least 1 sp/grace.
2723server/main.c: Fix process_events() so it doesn't purge removed players
2724 from the list - players get in the removed state at play again
2725 prompt.
2726server/apply.c: Fix fix_auto_apply() so we don't generate additional
2727 spells for spellcasting objects that already have them (regression
2728 from fix from 5/11 below)
2729MSW 2004-05-13
2730
2731server/pets.c: Fix summon golem, summon pet monsters so that the summoned
2732 monsters are not worth any exp. Fixes bugs were players could
2733 summon monsters and then kill them.
2734server/skills.c: Fix do_skill_detect_curse() and do_skill_detect_magic()
2735 so that they don't process objects the player is incapable of picking
2736 up (eg, floors). Fixes experience exploit.
2737server/apply.c: modify fix_auto_apply() so that it properly generates
2738 items for creatures that start with objects in their inventory.
2739MSW 2004-05-11
2740
2741server/spell_util.c: Fix cast_spell() so that failed spells (due to
2742 encumberance or other penalties) still cost some random number of grace/
2743 mana points.
2744MSW 2004-05-10
2745
2746common/treasure.c: Change the loading of the artifacts file to actually
2747 calloc() the object - reset_object() doesn't clear all the values,
2748 like active_next, active_prev, so better to just do it there.
2749server/main.c: Add code in process_events() that checks for removed objects -
2750 have seen occasional crashes caused by them.
2751MSW 2004-05-08
2752
2753Armor enchantment now uses setting values.
2754common/init.c: new values to init in settings.
2755include/global.h: new setting values.
2756include/config.h: new default values for settings.
2757lib/settings: explanation for those new values.
2758server/apply.c: change armor improvement code to use setting values.
2759server/init.c: read new settings.
2760Ryo 2004-05-08
2761
2762common/init.c: there's a #define LOGFILE, use it instead of hardcoded value.
2763include/config.h: change default logfile path to previous value in init.c.
2764server/c_wiz.c: Fix 'nodm' displaying incorrect messages, and forgetting to
2765 update player count on map.
2766Ryo 2004-05-08
2767
2768server/apply.c: Fix apply_special() to properly deal with LAMP objects - it
2769 wasn't dealing properly with the split off lamp compared to the one it
2770 was supposed to deal with - was crashing server.
2771MSW 2004-05-04
2772
2773common/item.c: describe_monster() - print luck when describing players (fixex
2774 perceive self not showing luck)
2775server/attack.c: kill_object() - don't give player exp if he kills himself -
2776 compare owner against what was killed, not the hitter.
2777server/pets.c: summon_object() - move breaking out for last treasurelist
2778 after we set the last valid treasurelist - otherwise, the list entry for
2779 the treasurelist was never used. Change summoned creatures so that
2780 the items they have are god given, and thus disappear when they
2781 are killed - prevents players from summoning and then looting their pets.
2782server/spell_attack.c: explode_bullet() - Get owner of the spell so that we
2783 can properly tailor the explosion portion of the spell for the god
2784 of the worshipper.
2785MSW 2004-05-03
2786
2787server/shop.c: patch from Andreas Kirschbaum for Windows compilation.
2788server/spell_effect.c: patch from Andreas Kirschbaum for Windows compilation.
2789Ryo 2004-05-03
2790
2791common/porting: changed open_and_uncompress to use const char* instead of
2792 char*, since value shouldn't be changed (and isn't).
2793include/libproto.h: changed prototype for open_and_uncompress
2794Ryo 2004-04-28
2795
2796------------------------------------------------------------------------------
2797Changes for 1.6.0:
2798
2799configure, Makefiles: Rebuilt for 1.6.0 release
2800doc/*/Makefile.am: Modified to use one makeps.pl utility in scripts directory.
2801doc/scripts/makeps.pl: Make this the definitive copy - fix problem with it
2802 trying to combine big images when it doesn't need to. Remove other copies.
2803doc/playbook/chap1.tex, doc/playbook/chap5.tex: Fix some obvious errors,
2804 but overall, the playbook is still quite out of date.
2805doc/playbook/treas2-extract: Have it not include abilities in given items,
2806 have it properly deal with multiple underscores in arch names.
2807doc/spoiler-html/spoiler.html, doc/spoiler.ps: Rebuilt
2808MSW 2004-04-26
2809
2810server/apply.c: apply_savebed() - make call to terminate_all pets before
2811 call to remove_ob() so that pets are properly removed.
2812common/item.c, server/c_object.c: Fix code so that skill tools (talismans,
2813 holy symbols, etc) are properly describe. Clean up formatting of long_desc()
2814MSW 2004-04-25
2815
2816
2817Change most shop buy/sell functions to use 64 bit values. Problem arises
2818where player would sell valuable item, and if they wanted to buy them back,
2819it would overflow a 32 bit value, so they could buy them back for free.
2820Note quite as odd when you consider the buy/sell price for really valuable
2821items to be very different.
2822include/global.h: Add UINT32_MAX and other max type defines for our typedef
2823 values so that we have standard setting of what the cap is.
2824server/apply.c: Change get_payment call to take second argument.
2825server/plugins.c: Add note about bug in handling of query_cost in this
2826 function.
2827server/shop.c: query_cost() now returns 64 bit. Many other functions
2828 updated to also take/return 64 bit cost values. Have cost_string
2829 nicely deal with values that are beyond affordability. Rename get_payment2()
2830 to get_payment(), and remove the later, which was just a simple wrapper
2831 function that called get_payment2.
2832server/spell_effect.c: Update alchemy code. Remove some suspect use of
2833 static values.
2834MSW 2004-04-24
2835
2836server/apply.c: fix check_weapon_power() so it operates on overall character
2837 level and not skill level - this matches up what the out of skills
2838 displays.
2839MSW 2004-04-20
2840
2841common/button.c: Patch by Bernd Edler to have proper speed set for items
2842 activated by buttons.
2843server/apply.c: Apply the 'special prayer' marker stuff, since it wasn't
2844 used anymore.
2845server/gods.c: Check for FLAG_EQUIP on spells and not for a special prayer
2846 marker to guess if a spell is a god given spell or not.
2847server/spell_util.c: Patch by Bernd Edler so that firewalls are immune
2848 to casting time.
2849MSW 2004-04-17
2850
2851server/shop.c: Decrease adjustment limit for expensive items to 10000 to get a
2852 continuous adjustment function. That is you will get much less when selling
2853 items with a value between 800pp and 2000pp.
2854Andreas Kirschbaum 2004-04-16
2855
2856common/map.c: Change blocked_link() to take a map parameter. Also, change code
2857 in blocked_link() to assume that the caller has set up appropriate map and
2858 coordinates related to tiling (in all functions that currently call
2859 blocked_link, this is the case)
2860include/libproto.h: Rebuilt.
2861server/move.c, server/player.c: update call to blocked_link to include the map.
2862MSW 2004-04-15
2863
2864common/object.c: Change CAN_MERGE() so that it compares the stats structure of
2865 the objects being merged. Fixes problems of rings improperly merging with
2866 other rings that have different stat values.
2867server/monster.c: Modify check_earthwalls() and check_doors() to take a
2868 map structure as an option parameter, and use that structure when
2869 calling get_map_ob. Fixes a crash in cases where earthwalls/doors
2870 were at the edge of a tiled map, and creature was on other map moving into
2871 it.
2872server/move.c: Change move_ob() to adjust coordinates for tiling, and
2873 pass in these adjusted coordinages (and map) to the check_() functions
2874 in monster.c
2875random_maps/treasure.c: Apply patch by Andreas Kirschbaum so that it does
2876 more work in trying to place keys on maps.
2877MSW 2004-04-13
2878
2879common/living.c: Patch by Bernd Edler to remove cap on exp for players.
2880MSW 2004-04-09
2881
2882common/item.c: If potion wasn't given a random spell, use the archetype
2883 name when it is identified.
2884common/treasure.c: Fix potion codes so that healing and magic power potions
2885 get the proper spell inserted into them. Also fix line termination issue.
2886server/skill_util.c: Add check in skill_attack() to make sure current_weapon
2887 is not null - there has been some crashes here, but I can't figure out
2888 how it gets to this state, so better to at least handle it.
2889MSW 2004-04-07
2890
2891server/player.c: In flee_player(), make sure the enemy to the player is
2892 on an actual map - fixes crashes.
2893MSW 2004-04-06
2894
2895common/potion.c: Fix up change_abil() to more properly deal with potions -
2896 characters could get 0 stat values. Also, messages were not being properly
2897 displayed. Patch is slightly modified from one sent in by Bernd Edler.
2898MSW 2004-04-05
2899
2900server/main.c: Add extra checking for valid map coordinates after we grab
2901 them from the destination map itself - if a map is broken and has
2902 default enter_ coordinates outside the maps range, this previously
2903 resulted in a crash.
2904server/pets.c: Pass the correct map object into insert_ob_in_map().
2905MSW 2004-04-03
2906
2907server/monster.c: fixed wiz's hidden mode not working on monsters.
2908Ryo 2004-03-28
2909
2910common/porting.c
2911include/libproto.h
2912include/win32.h: added 'const' specifier to str-related functions.
2913Ryo 2004-03-26
2914
2915common/exp.c
2916common/living.c
2917common/loader.[cl]
2918common/porting.c
2919server/c_misc.c
2920server/c_wiz.c
2921server/hiscore.c
2922server/resurrection.c: fixed %lld to %I64d for Windows.
2923Ryo 2004-03-26
2924
2925server/attack.c: Add scare_creature() function, which sets FLAG_SCARED
2926 and also sets up appropriate enemy. Clean up some formatting in
2927 other functions, and fix friendly fire - move it out of the loop for
2928 all attacktypes (can be after we have figured out max damage). Also,
2929 has a bug where if an attach wasn't doing any damage, friendly fire could
2930 actually make it do damage (eg, fear spell).
2931server/player.c: Fix up flee_player() to be map tile aware. Also, add
2932 call to flee_player() in handle_newcs_player() so player will run away.
2933MSW 2004-03-24
2934
2935server/attack.c: Add missing skill=NULL in kill_object() - can be rare
2936 cases where the proper skill can't be found.
2937server/move.c: Fix push_object() so that it also updates the pushers/
2938 pushees map - should only happen in tiled map cases.
2939server/pets.c: Fix summon_object() so that if a summon cult monsters was
2940 cast, we try to find the god from the owner. If still can't find the
2941 god, just return instead of crashing.
2942server/rune.c: Change trap_disarm() to call destroy_object() on the
2943 trap object, so that all the trapss inventory is also destroyed
2944 and not dumped on the ground.
2945server/skills.c: Only players without arms to steal.
2946server/spell_util.c: Change cast_spell to set up the skill pointer for the
2947 caster even if the caster is the wizard.
2948MSW 2004-03-22
2949
2950server/treasure.c: patch from Bernd Edler to enable multiple
2951 'allowed' lines in artifacts.
2952Ryo 2004-03-12
2953
2954Those fixes make DMs more 'stealthy' (when hiding/unhiding).
2955Also use yet unused colors for player join/leave, and DM join/leave.
2956This way those messages appear in a different window in split window
2957mode, to make the messages easier to spot.
2958server/apply.c: change color for player leave message.
2959server/c_misc.c: let DMs see hidden DMs.
2960server/c_wiz.c: make DMs more stealthy.
2961server/login.c: change color for player joining message.
2962server/main.c: change color for player joining/exiting message.
2963Ryo 2004-03-12
2964
2965common/item.c: Fixed calc_item_power() to return valid item power for
2966 items with high enchantments.
2967Andreas Kirschbaum 2004-03-07
2968
2969server/spell_effect.c: small patch by Karla Stenger to put player's name
2970 in the 'race' field of marking runes. This way, a DM can know who wrote
2971 a rune, in case it has some bad vocabulary :)
2972Ryo 2004-03-06
2973
2974server/spell_attack.c: change check_cone_push function to use arch weights.
2975move function up for resuability and change to check_spell_knockback
2976include/sproto.h: change function name
2977TM 2004-02-28
2978
2979
2980common/image.c: removed unused variables.
2981common/item.c: conditionally remove unused variables.
2982common/map.c: conditionally define variables, unused under Windows.
2983include/global.h: turned off a conversion warning under Windows.
2984Ryo 2004-02-28
2985
2986
2987common/living.c: changed 'signed char' to 'sint8' for set|get|change_attr_value.
2988common/map.c: map size is sint16, for arch_blocked.
2989include/libproto.h: update prototypes for set|get|change_attr_value and arch_blocked.
2990random_maps/rproto.h: changed prototype for surround_flag3.
2991random_maps/wall.c: changed surround_flag3 to use sint16 instead of int for map
2992 coordinates.
2993server/apply.c: attribute values are sint8 in eat_special_food and
2994 apply_changes_to_player. Some explicit casts.
2995server/player.c: map coordinates are sint16, in hideability.
2996server/spell_attack.c: map coordinates are sint16, not int.
2997server/spell_effect.c: stats are sint8 in cast_change_ability. Map coordinates are
2998 sint16 in move_aura.
2999server/time.c: generate_monster doesn't return a value.
3000Ryo 2004-02-27
3001
3002
3003common/living.c: Have give_skill_by_name() update the skill pointers in the
3004 player object.
3005server/spell_attack.c: Properly set maxhp in the cone spell - this is used
3006 in ok_to_put_more() to make sure one spell doesn't hit a single space
3007 too many times.
3008MSW 2004-02-23
3009
3010common/object.c: Change CAN_MERGE() so that we never merge applied objects -
3011 whether or not they are rings.
3012lib/*: different spell for dragons vs players for firebreath - update
3013 treasures so monsters use ability version.
3014server/gods.c: Add missing call to link_player_skills(), resulting in players
3015 having multiple praying skills.
3016server/skill_util.c: Change learn_skill() so we don't create a skill pointer
3017 for the player if they didn't learn the skill (even if they can't use
3018 such a created skill, it is still a bit confusing). Fix finding of
3019 hand to hand skills to make sure the player can in fact use the skill
3020 in question.
3021server/spell_attack.c: Fix cast_cone() so that it properly hits all directions.
3022MSW 2004-02-22
3023
3024
3025include/define.h,server/shop.c: Apply patch by Bernd Edler that gives
3026 bargaining experience based on the amount of money a character saves.
3027 Higher the bargaining skill, the more money they can save.
3028MSW 2004-02-16
3029
3030doc/Developers/spells: Update type on casting_time - include suggested value
3031 for times so that results are hopefully more coherent.
3032lib/archetypes, treasures.bld: rebuilt.
3033lib/treasures: Change some of the 'spelldirect' types to just the actual spells,
3034 so that two seperate archs don't have to be maintained.
3035server/c_wiz.c: Add some basic sanity checking to command_remove() so that
3036 we don't unnecessarily crash.
3037server/skills.c: write_scroll() - have it reset value of the scroll so that
3038 the scrolls so inscribed by players have better chance of merging.
3039server/spell_attack.c: cast_cone() - if the caster is a trap, have it hit
3040 the center space, so that characters who detonate cone traps will get hit
3041 by the effects. Also, reduce range of cone spells if they are going
3042 in all directions, compared to being targetted in a speciifc direction.
3043server/spell_util.c: cast_spell() - put lower limit on player speed_left value
3044 when casting spells - since higher up the calling stack, the player speed
3045 is also reduced, we need to set the lower limit here so that the player
3046 isn't out of action longer than they should be.
3047MSW 2004-02-16
3048
3049include/map.h: removed unused fields from wmapdef..
3050include/object.h: removed unused field from object.h. Changed glow_radius to sint8 to be
3051 coherent with struct MapSpace.
3052include/player.h: removed unused fields from player structure.
3053server/apply.c: removed unused known_spell field.
3054Ryo 2004-02-16
3055
3056common/object.c: change get_owner() so that it also returns no valid owner if
3057 the owner is removed. This fixes a crash if a player quits but is still
3058 sitting at the play again prompt when something he owns kills something.
3059server/skill_util.c: Fix show_skills() so that if the character has too many
3060 skills for whatever reason, we don't crash, and instead print an error
3061 to the player.
3062server/spell_attack.c: Fix typo - not sure actual effect, but probably nothing
3063 good. '+ +' should just have been '+'
3064MSW 2004-02-12
3065
3066common/Makefile.am: Clean up proto - lex seems to toss some new symbols in
3067 now days.
3068common/map.c, common/object.c, server/player.c, socket/item.c,
3069 socket/request.c: change parameters of get_map_from_coord from int to
3070 sint16, so the op->x,op->y can get passed directly in. Update callers of
3071 this function.
3072lib/archetypes: Add damned 1 to the shop floors.
3073server/pets.c: Fix problem with big (multisquare) pets following the owner
3074 across tiled map boundaries.
3075socket/item.c: Fix problem of players being able to see everything within
3076 containers by just looking at them.
3077MSW 2004-02-10
3078
3079common/treasure.c: add_abilities(): For potions and horns (spell casting
3080 objects) convert the other_arch into a spell and put into the object -
3081 otherwise, the spell casting object casts the wrong spell.
3082common/object.c: Clean up formatting of copy_object. Only real code change
3083 is to fix events - copied event data wasn't getting malloc'd, and thus
3084 when another object of that event was freed, it freed the event data
3085 for all objects derived from it.
3086common/treasure.c: Fix fix_generated_item() so that books generated by
3087 monsters with no_pick set don't inherit that for the book itself.
3088 Still do it for other objects of the creator type.
3089MSW 2004-02-08
3090
3091server/c_object.c: fixed sack_can_hold for the 'won't fit' cast,
3092 missing 'return 0'
3093server/gods.c: applied Karla Stenger's patch, making sure 'praying' is
3094 applied when becoming fellower of a god
3095Ryo 2004-02-08
3096
3097Changed map-building to work on non-unique maps too.
3098server/build_map.c: removed check for unique map.
3099Ryo 2004-01-19
3100
3101
3102Added map-building code. This lets players change unique maps,
3103 adding & removing walls, doors, stuff like that.
3104 New item types BUILDER & MATERIAL. New item flag FLAG_IS_BUILDABLE.
3105 New range attack (builder).
3106----
3107Changelog: change prescribed date format to be coherent with usage :)
3108common/loader.l: added 'is_buildable' flag.
3109include/define.h: added defines for item types & subtypes, and item flag.
3110include/player.h: new range type 'builder'.
3111include/spropo.h: new function apply_map_builder.
3112server/apply.c: handle new range type.
3113server/build_map.c: new file, handles all build-related code.
3114server/c_object.c: added 'buildable item' to examine function.
3115server/Makefile.am: added build_map.c to compilation.
3116server/player.c: handle new range type.
3117socket/info.c: handle new range type.
3118Ryo 2004-01-18
3119
3120
3121Fix a crash related to plugin hooks
3122common/object.c: clear_object(): object's event's hook/plugin/options
3123 are initialized with FREE_AND_COPY, so they are shared strings.
3124 Better to release'em with FREE_AND_CLEAR_STR instead of
3125 FREE_AND_CLEAR, else nice crashes...
3126Ryo 2004-01-16
3127
3128Fix writing not inserting correctly item in inventory, and Windows-
3129 specific stuff too
3130server/skills.c: write_scroll(): Better to insert spell in scroll,
3131 and not the other way around
3132server/skill_util.c: fix Windows-specific int64 stuff.
3133Changelog: fix Mark's 2003 to 2004 :)
3134Ryo 2004-01-16
3135
3136Fix a bunch of crashes observed on metalforge:
3137server/player.c: do_hidden_move(): Move call to find skill so that it is
3138 always called.
3139server/skills.c: write_scroll(): Fix freeing of spell object in
3140 scroll - newscroll->inv isn't valid after calling remove_ob, so
3141 need to copy object to temporary pointer first.
3142server/spell_effect.c: cast_detection(): Pass in skill to use. If no
3143 skill in use, use the caster object - fixes pointer derefence
3144 as op->chosen_skill wasn't always set.
3145server/spell_util.c: modify caster_level() to always return at least 1.
3146 Fixes pointer potential divide by zero problems - also guarantees
3147 that players will be able to cast first level spells even if
3148 repelled to that spellpath. ok_to_put_more() - Fix to use correct
3149 map pointer variable. find_target_for_friendly_spell() - make it
3150 so it handles tiled maps OK.
3151MSW 2004-01-15
3152
3153common/object.c: fix the monsters on tiled maps bug that I may have
3154 mentioned a while ago. Seems that the server assumed that all
3155 parts of a multi part monster are on the same map as the head
3156 while moving.
3157DVS 2004-01-12
3158
3159common/living.c: fix fix_player() so that character gets benefits/penalties
3160 for sp/hp/grace/etc regen bonuses as related to the god they worship.
3161server/player.c: dragon_ability_gain(): Modify so that character now gets
3162 attacktype of new ability that they gain. Also, add code so that
3163 the characters face/animation can change (getting set to values the bonus
3164 ability).
3165MSW 2003-12-27
3166
3167common/object.c: Set op->events=NULL in reset_object(), and move the
3168 clearing of the op->events structure to be before the memset in
3169 clear_object() - this was otherwise resulting in a memory leak,
3170 as memset would clear the pointer without actually freeing the data.
3171server/attack.c: Fix indentation of hit_map(), modify it so that attacks
3172 won't destroy items with no_pass set.
3173server/login.c: set op->speed=0, call update_ob_speed() before calling
3174 reset_object() - fixes problem with players not moving with recent
3175 changes to initting the active lists to NULL.
3176msw 2003-12-20
3177
3178
3179server/skills.c: changed NDI_UNIQUE to NDI_BLACK for the meditation
3180 message (so that messages can correctly be grouped, also makes it
3181 coherent with praying).
3182Ryo 2003-12-20
3183
3184Those fixes deal with gcc3.3 infinite loop.
3185Fixes (except sizeof/memset) courtesy Bernd Edler.
3186---
3187common/item.c: use right buffer size for safe_strcat.
3188common/object.c: clear active_next and active_prev when cleaning an object.
3189include/define.h: fixed *curlen=maxlen-1; instead of *curlen=maxlen=1;
3190socket/init.c: initialize whole ns->inbuf.buf, instead of setting first
3191 element only to 0. Also allocated with a sizeof( unsigned char ) * size,
3192 in case size changes one day. And initialize some more fields.
3193Ryo 2003-12-18
3194
3195
3196Those changes deal only with warning cleaning under Windows.
3197Mostly, using the right type at the right place, or doing explicit casts.
3198---
3199common/object.c: changed free_arr_[xy] to short[] instead of int[].
3200include/global.h: changed free_arr_[xy] to short[] instead of int[].
3201 Changed Windows-specific comments to C-style comments, not C++-style.
3202include/sockproto.h: play_sound_player_only takes sint8, not int, for
3203 coordinates. play_sound_map takes a short for the sound number.
3204socket/image.c: some type fixing, explicit casts.
3205socket/init.c: Windows-specific type fixing.
3206socket/lowlevel.c: explicit casts to char for SockList_AddInt64
3207socket/request.c: fixed types to match function parameters, or added
3208 explicit casts when needed.
3209socket/sound.c: play_sound_player_only takes sint8, not int, for
3210 coordinates. play_sound_map takes a short for the sound number.
3211Ryo 2003-12-14
3212
3213server/rune.c: Fix it so that players won't be hit by traps if they are
3214 not next to them when set off (firing arrows at a door for example).
3215server/spell_util.c: Fix spell_failure() to properly damage player if they
3216 fumble. Fix cast_spell() to not complain about not having enough
3217 grace if the spell doesn't take grace. Add same check for mana, but that
3218 is much less likely, as harder to get negative mana.
3219socket/request.c: Fix problem where map sending code was not properly avoiding
3220 duplicating the head of a big image on multiple layers. This bug most often
3221 manifested itself of player standing on lower right corner of large building,
3222 and something else standing on other portion of building - player would seem
3223 to disappear.
3224MSW 2003-11-30
3225
3226lib/adm/collect_images.pl: forced binary mode for written files.
3227 This lets the script work correctly under Windows.
3228Ryo 2003-11-29
3229
3230server/apply.c: correctly display learned skill's name, and not the
3231 scroll's.
3232server/skills.c: make 'sense curse' and 'sense magic' check items
3233 on the ground too.
3234Ryo 2003-11-25
3235
3236common/loader.l, loader.c: Fix firewalls so that their spell is properly
3237 initialized - uses 'dam' and not sp for those objects
3238server/apply.c: Fix check_weapon_power so that it finds proper wc object.
3239 Fix unapply_for_ob so that it won't unequip cursed/damned weapons if
3240 player switches objects.
3241MSW 2003-11-11
3242
3243bulk of this is to fix exp loss when changing gods if you have more than
32442 billion exp, removal of spells when you switch levels, and not giving you
3245all new spells when you switch religions.
3246--
3247common/living.c: Update exp functions to be fully 64 bit aware. Don't
3248 take away from player total exp if SK_SUBTRACT_SKILL_EXP is passed in.
3249common/utils.c: Add 64 bit version of random_roll(), called random_roll64()
3250lib/treasures: Make indentation consistent for some treasures.
3251server/apply.c: Use the FLAG_STARTEQUIP to denote god given spells, instead
3252 of using special prayer markers. This simplifies the spell learning
3253 and removal code.
3254server/gods.c: Make exp loss for changing religions 64 bit compliant.
3255 Fix become_follower() so that it doesn't give all the new gods special
3256 spells if you switch religions. Fix code so that it properly removes
3257 all special prayers from previous god, and also print out message on what
3258 spells you lost. Don't set the prayer skill as applied in various
3259 areas - this results in two skills being applied, which isn't proper.
3260MSW 2003-11-09
3261
3262common/living.c: Win32 compilation fix (levels is sint64, not uint64)
3263include/plugin.h: new hooks for free & fix_player. Required for Win32.
3264include/plugproto.h: new prototypes for CFWFreeMemory and CFWFixPlayer,
3265 wrappers for free( ) and fix_player( ). Required for Win32.
3266include/sproto.h: added prototypes for new plugin hooks and improved tell
3267 command helper.
3268plugin/plugin_python.c: wrap calls to fix_player, free and free_object
3269 with plugin ones when memory allocated by CF's main exe. Required for
3270 Win32 to work correctly.
3271server/c_chat.c: improved 'tell' command to accept first letters of player
3272 name only, case-insensitive. If 2+ players match, returns with a failure
3273 message.
3274server/player.c: new function find_player_partial_name. Returns player whose
3275 beginning of name matches specified string, NULL if more than one matches.
3276 Fix move_player to check specified direction's validity.
3277server/plugins.c: added wrappers for free( ) and fix_player( ). Required for
3278 Win32 compatibility.
3279Ryo 2003-11-07
3280
3281common/treasure.c, doc/Developers/spells: Fix generation of rods so they have
3282 enough charges to cast the spells. Update documentation on what maxhp for
3283 the archetype of rods means.
3284MSW 2003-11-01
3285
3286server/player.c: Fix crash in stand_near_hostile when it is called on
3287 tiled maps with player near edge.
3288MSW 2003-11-01
3289
3290Various bug fixes:
3291common/arch.c: Fix item_matched_string() so that it only passes in the length
3292 of the pssed in name in the strncasecmp(), and not the shorter of the
3293 passed in string or item name. Otherwise, if player does a 'drop wand of',
3294 unidentified wands (name just wand) would match. Similarly, if a player
3295 did 'drop ringmail', unidentified rings would match, etc.
3296common/living.c: Fix fix_player() to always process the praying skill with
3297 respect to resistances and whatnot. This is necessary because the
3298 god give abilities are put in this skill, and those shouldn't go away
3299 depending on if the skill is in use or not. Also fix bug in add_exp
3300 routines which wasn't multiplying permanent exp by PERM_EXP_GAIN_RATIO
3301common/object.c: Fix find_obj_by_type_subtype() - had extraneous semicolon
3302 after the for loop, so the if code that was supposed to be for each object
3303 was never called and instead would crash as it would get called with tmp
3304 was null.
3305server/attack.c: Fix problem with kill_object() not finding proper skill -
3306 it would use the skill object instead of the skill. Fix problem of
3307 poisoning not setting up proper skill name in poisoning object.
3308server/c_range.c: If player is invoking a spell, don't update their
3309 range_magic value.
3310server/skill_util.c: Fix divide by zero problem if improperly passed
3311 skill object.
3312MSW 2003-10-26
3313
3314TRIGGER_MARKER:
3315common/glue.c, common/button.c, include/define.h, funcpoint.h, libproto.h
3316 server/init.c: Add trigger_marker (type #52) which is a Marker that can be
3317 triggered. Useful for placing forces in player when connected trigger is tripped.
3318TM 2003-10-26
3319
3320common/glue.c, common/object.c, common/player.c, include/funcpoint.h,
3321 server/init.c, server/monster.c, server/shop.c, server/skill_util.c: add
3322 find_skill_by_number() function - this replaces find_skill. Locate new
3323 function in skill_util.c, which is more a proper place than
3324 common/player.c - this change necessitated adding glue function pointers
3325 so the other common files can call it.
3326server/spell_effect.c: Fix cast_heal() so if the spell is not one that heals
3327 hit points, don't process the code that checks for that and sets
3328 a false success value.
3329socket/metaserver.c: Clean up formatting - no code changes.
3330MSW 2003-10-25
3331
3332server/apply.c: small fix to apply_spellbook in the rare case when
3333 the spellbook contains no spell (happens when DM issues a bad
3334 'create' command for instance :).
3335Ryo 2003-10-04
3336
3337server/c_new.c: fix command_run and command_fire so they check
3338 the given direction is [0..8]. This enabled weird things like
3339 hitting non-adjacent monsters.
3340 Patch by Karla Stenger on cf-devel, slightly modified by me.
3341Ryo 2003-10-21
3342
3343common/arch.c: fix item_matched_string() so that matching makes sense -
3344 the ordering was wrong, so that we would match something with a low
3345 priority, and skip over looking to see if that same object would get
3346 a better match. Order the function so that we look for the best
3347 matches first.
3348MSW 2003-10-08
3349
3350socket/request.c: Clean up some compile warnings. Improve big face
3351 handling - there were cases where data wasn't being sent when
3352 it should have, and vice versa. Basically, do better checking
3353 to see if we should send a big face for a particular layer, and
3354 also better checking to make sure we don't send the same face more
3355 than once for the same layer. Also, change esrv_map_scroll()
3356 to clear out spaces that appear into view - adds a little extra bandwdith,
3357 but necessary because otherwise the fact there is a big face on the edge
3358 doesn't always get sent.
3359MSW 2003-10-07
3360
3361TODO: various updates.
3362common/button: Old patch by David Seikel: change inventory checkers so that
3363 the monster/player is also checked against. And do more proper for checkers
3364 that check against slaying or race - if the trigger doesn't have
3365 those set, we don't want to compare a null against another null and
3366 get success).
3367server/apply.c: Change apply_shop_mat() so that it removes unpaid objects from
3368 monsters (or thrown containers for that matter). Old patch by Bernd Edler
3369 to improve messages dragons get for eating various food types.
3370server/player.c: Add another missing call to fix_player(). Modify
3371 move_player_attack() so that the target player doesn't hit back if
3372 they are the WIZ or on a battleground
3373MSW 2003-10-06
3374
3375utils/player_dl.html utils/player_dl.pl.in: New files - scripts for allowing
3376 character directories to be downloaded over the web.
3377configure.ac: Add check for 'tar', so that we can put it in the script above.
3378Makefile.in (All of them): Changed because TAR variable propogated to them.
3379MSW 2003-09-30
3380
3381server/time.c: Real change is to add a missing call to fix_player - without
3382 this new players would be getting messed up maxsp/maxgrace values. Cleaned
3383 up formatting in move_player_changer() while doing the other change.
3384 MSW 2003-09-28
3385
3386common/living.c, include/libproto.h: Update some functions to take 64 bit int
3387 values for exp usage.
3388random_maps/random_map.c: Don't ever make rogue maps symmetric -
3389 creates unconnected maps. Clean up layoutgen() to not have a bunch
3390 of duplicated code.
3391MSW 2003-09-25
3392
3393server/skill_util.c: Call esrv_send_inventory on the cauldron if we
3394 performed alchemy. Needed for cauldron's contents to get updated.
3395 MSW 2003-09-23
3396
3397 Modified files:
3398 TODO common/anim.c common/arch.c common/button.c common/exp.c
3399 common/init.c common/item.c common/living.c common/loader.c
3400 common/loader.l common/logger.c common/object.c
3401 common/re-cmp.c common/readable.c common/recipe.c
3402 common/treasure.c doc/Developers/objects
3403 doc/Developers/protocol doc/Developers/python
3404 doc/Developers/skills doc/Developers/spells
3405 include/Makefile.am include/Makefile.in include/attack.h
3406 include/config.h include/define.h include/global.h
3407 include/includes.h include/libproto.h include/living.h
3408 include/map.h include/newclient.h include/newserver.h
3409 include/object.h include/player.h include/plugin.h
3410 include/skills.h include/sockproto.h include/spells.h
3411 include/sproto.h include/timers.h lib/Makefile.am
3412 lib/Makefile.in lib/animations lib/archetypes lib/artifacts
3413 lib/bmaps lib/bmaps.paths lib/collect.pl.in lib/crossfire.0
3414 lib/crossfire.1 lib/faces lib/formulae lib/settings
3415 lib/treasures lib/treasures.bld lib/adm/collect_images.pl
3416 plugin/plugin_python.c plugin/include/plugin_python.h
3417 server/Makefile.am server/Makefile.in server/alchemy.c
3418 server/apply.c server/attack.c server/c_misc.c server/c_move.c
3419 server/c_object.c server/c_party.c server/c_range.c
3420 server/c_wiz.c server/commands.c server/disease.c
3421 server/gods.c server/init.c server/login.c server/main.c
3422 server/monster.c server/pets.c server/player.c
3423 server/plugins.c server/resurrection.c server/rune.c
3424 server/shop.c server/skill_util.c server/skills.c
3425 server/spell_effect.c server/spell_util.c server/swamp.c
3426 server/time.c server/weather.c socket/info.c socket/init.c
3427 socket/item.c socket/loop.c socket/lowlevel.c
3428 socket/metaserver.c socket/request.c socket/sounds.c
3429 Added Files:
3430 server/spell_attack.c
3431 Removed Files:
3432 include/skillist.h lib/skill_params lib/spell_params
3433
3434 Updated code for skill + spell code. skills and spells are now objects.
3435 tuning these now means changing the archetypes. New spells can now
3436 be added just by making a new archetype. Lots of code cleanup
3437 also done.
3438 MSW 2003-09-12
3439
3440
3441TRAPS:
3442 include/define.h
3443 common/object.c, treasure.c
3444 server/attack.c, skill_util.c, skills.c, rune.c, time.c, player.c,
3445 apply.c Established new type traps distinguished from runes. Traps
3446 are more mechanical in nature, not impacted by detect magic or
3447 counterspell (maybe in future once skills are settled out more fine
3448 tuning changes in detecting and disarming these too...). Traps also
3449 can now trigger connected objects if they are detonated. Migrated
3450 traps to new type and made new generic trap archetype for more complex
3451 trapping (ye olde red shaded tile...) TM -2003-09-04
3452
3453
3454friendly_fire:
3455 Added friendly_fire to attack.c, called from hit_player.
3456 Will put a cap on maxdam that is a percentage (1-100%) of damage (min
3457 1) based on SET_FRIENDLY_FIRE value when players attack in peaceful
3458 mode. Changed who, statistics to show this setting better and added
3459 help file for peaceful. It would be nice to have a indicator in the
3460 client for this as well. TM - 2003-08-25
3461
3462protocol/doc/code:
3463 Changed the way smoothing is done. Switched the smooth
3464 command to binary mode, rebuild archetype files, added doc
3465 on smoothing, updated protocol file.
3466 Changed a the "togglemapextended smoothing" to "togglemapextended
3467 smooth" to prevent problem of compatibilities with previous cvs
3468 smoothing releases.
3469Tchize 2003-07-08
3470
3471protocol:
3472 Added new command to send extended map informations to the
3473 client. Mainly used for now to send smoothing informations.
3474 Also commented the modifications in the protocol file ind doc/
3475lib/Makefiles:
3476 Changed to install the smooth file too. Needed by smooth code
3477common/loader.l and loader.c
3478 completly reworked get_ob_diff to improve speed at mapsave time.
3479 For now function is interlaced with commented old code. Will clean
3480 up when code will be proved working. (hope middle of july)
3481Tchize 2003-07-03
3482
3483server/apply.c: Fix auto_apply - missing else, causing extra
3484 treausres to be generated inside of shop tiles.
3485server/monster.c: Fix npc_call_help to be map tile aware.
3486MSW 2003-06-18
3487
3488lib/collect.pl.in: Modify it so that it will collect .trs (treasure) files and
3489 build a treasures.bld from that as well as the existing treasures file. In
3490 this way, treasure information for objects can be put in the arch
3491 directory.
3492lib/Makefile.am, Makefile.in: Modified so that it copies over the
3493 treasures.bld to treasures in the destination directory. Have
3494 the collect directive also build the images, so that a double
3495 make isn't necessary.
3496lib/treasures.bld: Added file - like the archetypes, this is the pre-
3497 build treasure file. Until .trs files are added, this will just
3498 match the treasures file with some additional comments.
3499MSW 2003-05-26
3500
3501common/map.c: Fix bug causing unnecessary crashes - ok for the map
3502 to match if the object has been removed.
3503socket/loop.c: Only make call to draw_client_map() if we have a valid
3504 map to draw.
3505MSW 2003-05-26
3506
3507common/anim.c: Patch by AV to make sure multipart monsters animations
3508 stay in sync. MSW 2003-05-25
3509
3510server/apply.c: Fix bug in that we weren't calling esrv_map_scroll()
3511 when player used a shop map but lacked sufficient funds to pay
3512 for his items.
3513MSW 2002-05-23
3514
3515common/item.c, common/utils.c, include/config.h: Add #define NEW_MATERIAL_CODE
3516 and checks in the other files for this - if this is commented out
3517 (default), then the new material naming code is disabled - material
3518 names won't be put in the items names as shown in the inventory
3519 (can still see material by examining an object), and objects that are
3520 created will be created with the default material (eg, iron for
3521 most armor/weapons, eg, brass, bronze, copper items won't show
3522 up anymore).
3523lib/settings: Add comments from the old config.h file that describes
3524 what the options already does. Having no comments in this file
3525 or in config.h anymore is very unfriendly.
3526MSW 2003-05-20
3527
3528server/player.c: Have players start at max hp/grace/sp.
3529MSW 2003-04-14
3530
3531server/c_range.c: Add check to make sure we are actually removing a
3532 golem and that the object hasn't been freed/recycled and the
3533 player not updated. Fixes crashes.
3534MSW 2003-04-13
3535
3536acinclude.m4: Update path to find python includes, since aclocal.m4 gets
3537 derived from this file.
3538configure.ac, configure: Add utils/scores.pl to list of files to substitute on.
3539common/loader.l, loader.c: Add subtype for objects - will be used in future work.
3540common/object.c: Add subtype diff check in CAN_MERGE()
3541common/porting.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have
3542 hardcoded 777 permissions.
3543doc/Makefile.in, doc/Makefile.am, doc/Developers/Makefile.am,
3544 doc/Developers/Makefile.in: Move some of the spell docs around and merge
3545 them together
3546doc/Developers/objects: Add notes about subtype.
3547doc/Developers/spells: New file, contains preliminary work on spell objects.
3548include/config.h: Remove command about DM_MAIL and LIBDIR from file, as they
3549 are options no longer present. Update comment about SAVE_MODE, and add
3550 SAVE_DIR_MODE
3551include/object.h: Add subtype field to object.
3552server/login.c: Have it use SAVE_DIR_MODE when doing the mkdir, and not have
3553 hardcoded 6700 permissions.
3554utils/Makefile.in: Updated to know about scores.pl
3555utils/scores.pl.in: New file - reads player file to generate HTML score
3556 file.
3557MSW 2003-04-04
3558
3559TODO: Various update
3560aclocal.m4,configure: Update path to find python (fix again)
3561common/image.c: Minor update to a ocmment in the code.
3562common/los.c: Add missing P_OUT_OF_MAP checks that resulted in some incorrect
3563 LOS calcuations.
3564include/funcpoint.h: Remove draw_func function pointer.
3565lib/Makefile.am, in: Remove bmaps.paths to from being installed or being part
3566 of distribution - bmaps.paths is only needed when collecting the image
3567lib/*: Rebuilt
3568server/c_object.c: Patch by Bernd Edler to have the apply functions take into
3569 acount if the item is equipped or not when looking for good matched items.
3570server/commands.c: Move printlos to normal commands. I don't think it reveals
3571 any information that is in any way harmful. And since it dumps the
3572 output to the players screen, no concern of it filling up log files.
3573 Also, when doing LOS debugging, it is pointless to have it as a DM command
3574 because LOS is ignored for DM's.
3575server/disease.c: Modify remove_symptoms to remove all symptoms the player
3576 may have a disease. Modify infect_object() to not allow a creature to
3577 have more than one instance of the same disease.
3578socket/info.c: remove draw() - instead, draw_client_map() can be used,
3579 as that is most the only thing draw() did anyways.
3580socket/loop.c: Update draw() calls to draw_client_map()
3581socket/request.c: Remove special handling for darkness==4 cases (first
3582 space that is in full darkness) - this is extra complications and causes
3583 display problems. Update draw_client_map() to include the little bit
3584 of logic that draw() had that this function did not have.
3585MSW 2003-04-01
3586
3587
3588common/glue.c, include/funcpoint.h: remove draw_func() pointer - no longer
3589 needed, so code that sets up pointer removed.
3590lib/*: rebuilt - facings added to old player animation information.
3591 ruined_temple archetype added.
3592server/init.c: remove set_draw() function
3593server/player.c: remove call to draw() - socket code takes care of this.
3594MSW 2003-03-24
3595
3596server/spell_effect.c: Some code cleanuip to cast_change_attr - mostly
3597 to combine the processing of the stat improving spells together.
3598 The actual change to playability is that bless and holy possession
3599 don't stack if cast multiple times.
3600server/spell_util.c: Modify create_aura so that player can't have more than
3601 one aura (of the same type) active at a time.
3602MSW 2003-03-20
3603
3604server/apply.c: Change weapon improving code to only use up the number of
3605 potions that it needs, and not all on the ground. Required adding
3606 another arg to eat_item() which is the number of items to consume.
3607include/sproto.h: Rebuilt for new eat_item() (actually, a static, so no
3608 longer shows up in this file)
3609server/attack.c: Change did_make_save to strip out magic attacktype when making
3610 saves for objects - otherwise, things like poison cloud destroy objects.
3611server/time.c: deal with player animations special in process_object - need to
3612 pass in the facing value, and not direction, since direction gets reset.
3613MSW 2003-03-19
3614
3615common/anim.c: Pass direction to animate_object() - needed for player
3616 animations as player's facing may not match direction.
3617crossedit/Attr.c, server/main.c, server/time.c: Update calls to animate_object()
3618include/libproto.h: rebuilt
3619include/newserver.h, plugin_animator/animator_box.c, socket/init.c,
3620 socket/request.c: Remove newanim field from socket structure - not needed -
3621 how to animate is determined by object, not by socket.
3622server/move.c: Add check to P_OUT_OF_MAP in teleport function.
3623server/player.c: change move_player to call animate_object, so it gets full
3624 power of functionality it supports instead of 4 way hardcode animation
3625 information.
3626server/spell_effect.c: When altars are consecrated, don't look to arch name
3627 for first portion of name - always call them Altar of %s - fixes problem
3628 where altar is special god altar that has god's name in archetype, resulting
3629 in altar of .. of ...
3630MSW 2003-03-18
3631
3632Patch for 64 bit experience total, as well as flexible number of levels.
3633Basically, max level is now dynamic, set in exp_table file. Experience
3634is now a 64 bit value, so much higher totals now allowed. To
3635allow for flexible levels, add new function - did_make_save() which is used
3636for players/monsters to see if they make their saving throw - this is
3637necessary because the savethrow[] array may not be as large as max level -
3638did_make_save takes this into account.
3639NOTE: If your updating a server, you will need to copy over/set up a
3640new exp_table file that has max_levels defined and at least one of the
3641tables uncommented. There are no longer any compiled in defaults
3642--
3643configure, configure.ac: Add AC_CHECK_SIZEOF calls for long and long long
3644 so we can know which one to use for 64 bit support (other checks
3645 may need to be added)
3646common/exp.c: Remove levels table, replace it with a 64 bit pointer.
3647 Change init_experience to allocate appropriately sized table, have it
3648 read max_level value from exp_table file. Replace atoi calls with
3649 atoll to get 64 bit value. Update dump_experience to properly
3650 print 64 bit values.
3651common/info.c: Update dump routines that dump exp to properly print
3652 64 bit values.
3653common/init.c: Add initializing for settings.max_level value.
3654common/item.c: Update sprintf's to handle 64 bit output of exp (speed)
3655 value in objects.
3656common/living.c: change MAX_EXP define, update MAX_EXP_IN_OBJ define,
3657 add MAX_SAVE_LEVEL which corresponds to how large the savethrow
3658 table is. Change MAXLEVEL to settings.max_level. Change level_exp()
3659 to return 64 bit value, other updates in functions to use 64 bit
3660 values. Add did_make_save() function.
3661common/loader.l, common/loader.c: Update load/save routins of exp to
3662 deal with 64 bit values.
3663common/map.c: Update calculate_difficulty to use 64 bit values when
3664 storing exp - unlikely to make a difference, since unlikely any map
3665 will get to a point where it has that much exp on it.
3666common/porting.c: Remove dead code from save_long(), add save_long_long()
3667 to save 64 bit values.
3668include/autoconf.h.in: SIZEOF_LONG and SIZEOF_LONG_LONG values added.
3669include/global.h: Add code to typedef sint64/uint64 types based on what
3670 type gives us those values. Add max_level to settings array.
3671include/libproto.h: rebuilt.
3672include/living.h: Replace exp field with 64 bit value.
3673include/player.h: Update party kill log exp tracking to have 64 bit
3674 values.
3675lib/exp_table: Udpate comments about max_level, uncomment what
3676 was the default table so new installs have working table.
3677 Add 5 levels to all the tables.
3678random_maps/monster.c: Update place_monsters to use 64 bit when storing
3679 exp total for map/per square.
3680server/apply.c: Replace MAXLEVEL with settings.max_level, add
3681 did_make_save calls where appropriate
3682server/c_misc.c: have statistics command properly print 64 bit
3683 exp value.
3684server/c_wiz.c: Have stats command properly display 64 bit value.
3685server/hiscore.c: Replace exp values with 64 bit values, update to
3686 properly load/display them.
3687server/player.c: replace savethrow[] reference with did_make_save()
3688server/skill_util.c: Update skills command to properly show 64 bit exp values.
3689server/spell_effect.c: replace savethrow[] reference with did_make_save(),
3690 allow players to cast directors right beneath themselves, but other
3691 walls must be on empty space.
3692MSW 2003-03-07
3693
3694Various bug fixes.
3695crossedit/Attr.c: Minor cleanup to eliminate some compile time warnings.
3696plugin/plugin_python.c: Remove some unused variables, thus fixing up some
3697 compiler warnings.
3698random_maps/random_map.c, random_maps/random_map.h, random_maps/special.c:
3699 Add MIN_RANDOM_MAP_SIZE values instead of hardcode constants.
3700server/monster.c: Fix communicate - odd bug can be map gets swapped out
3701 just after player is transferred to another map, causing crashes as
3702 map that was originally spoken on is no longer in memory.
3703server/rune.c: add missing free_object call when erasing runes.
3704server/skills.c: Change write_on_item to determine type of writing based
3705 on content of mesage, or lack thereof, and not the marked object.
3706 Fix problem of buf not being initalized.
3707MSW 2003-03-06
3708
3709
3710Various bug fixes.
3711Makefile.am, Makefile.in: Put crossedit as the last directory, so any build
3712 errors for crossedit doesn't effect anything else.
3713README: Update ftp site listing.
3714TODO: More things aded.
3715aclocal.m4, configure: Add missing / when checking in /usr/local for
3716 python headers.
3717common/map.c: Add some debugging in free_all_objects that checks to make sure
3718 there are not objects remaining that belong to the map just freed -
3719 only active if MANY_CORES is set.
3720random_maps/random_map.c: Increase minimum random map size to 10x10 - this
3721 is need for square spirals to work properly I think.
3722server/spell_effect.c: Have perceive self tell dragon players what they are
3723 currently focused on. Fix town portal to remove force objects from
3724 players if destination is no longer available.
3725server/swap.c: Reset maps reset_time when loading them in in read_map_log() -
3726 this is only used if recycle temp maps is on. Also, do sanity checking
3727 on reset_time value - bogus values were observed on metalforge.
3728socket/request.c: Update map timeout in draw_client_map() - in this way,
3729 we don't swap out a map within a players view only to swap it back
3730 in.
3731MSW 2003-03-01
3732
3733------------------------------------------------------------------------------
3734Changes for 1.5.0:
3735
3736*/Makefile.in, related files: Updated for 1.5.0
3737server/attack.c: Don't change weak wall image if no damage was actually done.
3738server/c_object.c: Include math.h - needed for pow()
3739server/spell_effect.c: fix infinite loop in town_portal
3740MSW 2003-02-24
3741
3742common/anim.c: Fix for 8 way facing animations.
3743lib/treasures: Add sheep treasures
3744lib/* (rest) - rebuilt
3745server/spell_effect.c: Fix up counterspell - mainly fix a bug in that if
3746 counterspell hit a multipart magic that used magic as an attacktype,
3747 it would also crash. However, code also woudln't work properly on
3748 tiled maps, and I'm dubious if it would work properly if there was more
3749 than one effect on a space.
3750MSW 2003-02-23
3751
3752server/skills.c: Fix jump so that it updates the clients map properly.
3753server/spell_effect.c: insert town portals below the player so it
3754 works better with apply.
3755MSW 2003-02-20
3756
3757server/move.c: Fix transfer_ob so that it sends newmap command to client
3758 if we're moving a playing - otherwise fog of war displays bad
3759 information on the client.
3760MSW 2003-02-19
3761
3762More bugfixes:
3763server/c_wiz.c: Fix reset command - while it deleted the maps, it made things
3764 so that it never got removed from the map listing - instead, just let
3765 flush_old_maps do most of the work.
3766server/main.c: If player tries to enter a random map that has been reset
3767 and that we have no informatino about (eg, going up in a dungeon),
3768 just say the exit is closed instead of making a completely random map
3769 that usually isn't in keeping with the dungeon (and still won't lead
3770 outdoors)
3771server/move.c: In move_teleporter(), change it so that if a player uses
3772 a shop map yet there is no place to put the player, just drop him on
3773 top of a monster - this fixes problem of players getting trapped inside
3774 of shops in random dungeons.
3775MSW 2003-02-16
3776
3777random_map/random_map.c: Include parameters used to make map in msg of map -
3778 this can hopefully be used to debug what is really happening when bad
3779 maps are made.
3780server/rune.c: Modify dispel_rune function (called from disarm spell)
3781 to erase marking runes. While at it, fix it so that it does the right
3782 thing with respect to tiled maps.
3783MSW 2003-02-15
3784
3785include/sproto.h, server/move.c: Modify try_fit() to take mapstruct parameter
3786 for which map we are trying to fit this on - fixes problems with rolling
3787 boulders accross map (only function that currently uses this).
3788MSW 2003-02-14
3789
3790common/item.c: make item_power stop showing up in ring short descriptions.
3791 fix some of the items that were double-displaying materialnames, like
3792 mithril mithril chainmail.
3793common/loader.l: add tooltype
3794common/utils.c: Unless the object is armour or weapons, pick the first
3795 materialname we find. Now, newly generated diamonds will stack.
3796 Fix name_to_material to return NULL if it finds nothing, fixes
3797 navar_city/museum crash.
3798 Change set_materialname to take a materialtype_t argument, allowing
3799 functions to manually set the materialname, rather than let the
3800 randomizer pick for them.
3801include/define.h: Add TOOL and BUILDFAC for item building.
3802include/object.h: add tooltype for item building.
3803include/materials.h: add M_SPECIAL. Set this in an object, to prevent things
3804 like mithril mithril chainmail. This is primarily only needed in
3805 artifacts, because they change the base material of the arch. Also
3806 useful in things like the demonspawn shield, and on maps.
3807lib/artifacts: sprinkle M_SPECIAL around.
3808server/player.c: remove auto_heal. This never should have been
3809 committed, and was never referenced by any code.
3810server/c_object.c: add item building, but add it disabled. Too many
3811 bugfixes were tied in with this code to cleanly add them. When
3812 enabled, this code will add player item building, similar to
3813 create to take place. Requires a host of graphics and arches
3814 to be useable.
3815garbled 2003-02-13
3816
3817random_maps/special.c: Fix possible bug with placement of special maps.
3818Add lore/endlore to object structure to hold general information about objects:
3819common/loader.c, common/loader.l: Add loading and saving of lore field.
3820common/object.c: handle lore field for copy/free/other object operations.
3821 Also, update CAN_MERGE to look at materialname also.
3822doc/Developers/objects: Add notes about lore.
3823include/object.h: add lore field to object.
3824server/apply.c: Fix bug in that cursed weapons were not equipped/
3825 unequipped.
3826MSW 2003-02-11
3827
3828doc/Developers/objects: Add nodes about shared strings in objects.
3829server/c_misc.c: Remove check for name length - check_name takes care
3830 of that for us.
3831server/monster.c: store return value from get_map_flags - seen some
3832 crashes traced back to this area, want to see what it returned.
3833 Allow objects with no msg to still use scripts that listen.
3834server/player.c: Fix potentional issue of freeing/adding players name
3835 when they enter play again - seen some crashes attributed to
3836 odd names.
3837MSW 2003-02-08
3838
3839
3840More bugfixes:
3841server/player.c: Fix permadeath without resurrection - wasn't deleting
3842 player save files as it was supposed to. If permadeath +
3843 resurrection was in use, I believe it all worked as expected.
3844include/shop.h: remove _SHOP_H after endif, causing compiler warnings.
3845include/skills.h: Add check to USING_SKILL to make sure chosen_skill
3846 is not null.
3847server/c_chat.c: Add some missing return values, resulting in compiler
3848 warnings.
3849server/skill_util.c: Remove unused variable. compiler warnings again.
3850server/spell_effect.c: Change dimension door so that you can't go
3851 through spaces that block passsage and also block view (eg walls).
3852 This goes back to the more traditional behaviour. Remove
3853 some unused variables.
3854server/spell_util.c: Add missing P_OUT_OF_MAP to move_missile, resulting
3855 in crashes.
3856server/time.c: if generator is not on a map, don't have it generates.
3857 Fixes crashes.
3858MSW 2003-02-02
3859
3860New materialtype system for crossfire. Based in concept on my original
3861design, but rewritten from scratch to make it easily extensible.
3862
3863In a nutshell:
3864
3865Each of the old materialtypes (metal, glass, stone, wood) are now a class
3866of materials. When an item in the game is created, if it does not have a
3867specific materialname of it's own, a materialname is generated randomly
3868from the matching entries in the "lib/materials" file. This file
3869contains all of the saving throws, and other material specific
3870modifications for each of the expanded materials.
3871
3872Materials can be manually specified in the arch with the "materialname"
3873directive. Such as the gold coins, which are specified to be made of,
3874you guessed it, gold.
3875
3876Saving throws have been slightly rewritten to use the new materialtypes,
3877and a few other minor details associated with materialtypes have been
3878patched up.
3879
3880Adding a new type of stone or wood, is as simple as adding a new entry in
3881the lib/materials file. The game will automatically start distributing
3882them around randomly.
3883garbled 2003-01-29
3884
3885Various bug fixes:
3886common/item.c: If nrof of an item is 0, have it print singular name and
3887 not plural name.
3888server/c_object.c: Fix typo when printing value of optoins - had an
3889 extra 'the' in place. Also, don't print value of objects with
3890 no pick flag set.
3891server/login.c: Enforce maximum name length for new characters.
3892server/monster.c: Change parsing code for messages/@match code -
3893 new code is simpler, and should also be simpler and less bug
3894 ridden, but otherwise functionally equivalant. Also fix up
3895 communicate to work properly on tiled maps.
3896server/spell_effect.c: fix up move_aura to not crash hopefully.
3897MSW 2003-01-26
3898
3899More bug fixes:
3900common/item.c: Add missing braces - was resulting in some items getting
3901 display like 'gauntlets of strength (Str+1)(Str+1).
3902include/map.h: Add MAGIC_MAP definitions to the file.
3903server/shop.c: Put back in code that uses magic_mapping_mark to determine
3904 what items to display in inventory. Update for new one magic mapping
3905 code stores information away.
3906server/spell_util.c: Add missing P_OUT_OF_FLAG check, which resulted
3907 in crashes.
3908socket/info.c: Move MAGIC_MAP definations to map.h. Add check for
3909 P_OUT_OF_MAP. Remove code that stops on P_NO_MAGIC - with that
3910 it wouldn't search the shops.
3911MSW 2003-01-16
3912
3913server/move.c: fix try_to_fit and roll_ob to work properly on tiled maps.
3914Also some performance improvements to those functions.
3915MSW 2003-01-12
3916
3917Bulk of this commit is to improve code for tiled maps - replace
3918wall/blocks_magic/blocks_cleric, etc with get_map_flags which
3919also does map tiling translation as needed. This should fix a lot
3920of the bugs related to map tiling (there are sure to be more out
3921there - all the get_map_ob still need to be checked).
3922Other changes - many spells stopped progressing on spaces that
3923blocked view - that is now removed - didn't make a lot of sense.
3924Other fixes - some cleric spells (eg, word of recall) checked to
3925see if magic was prohibited, didn't check to see if cleric
3926was prohibited.
3927Clean up some bugs in the lighting code that would cause erroneous
3928results. Also, allow players to see immediately around them on
3929outdoor maps no matter how dark the map really is - behaviour
3930on indoor maps is the same.
3931Lots of code reformatted, and lots of obsoleted/dead code removed.
3932Add max range to dimension door.
3933Fix magic map - got broken when the layer stuff was redone - was
3934not showing proper colors. IT also works sensibly on tiled maps
3935now - rather than display based on the map, it gives the player a
393650x50 area centered on where the player is.
3937Change fire_bow - move special player fire modes into own function -
3938makes code much cleaner.
3939Hopefully this fixes more bugs than it introduces.
3940common/los.c, common/map.c, common/object.c, crossedit/Edit.c,
3941include/libproto.h, include/sockproto.h, include/map.h,
3942include/spellist.h, include/sproto.h, random_maps/treasure.c,
3943random_maps/wall.c, server/attack.c, server/c_misc.c,
3944server/c_wiz.c, server/disease.c, server/main.c, server/monster.c,
3945server/pets.c, server/player.c, server/rune.c, server/shop.c,
3946server/skill_util.c, server/skills.c, server/spell_effect.c,
3947server/spell_util.c, server/time.c, socket/info.c: See note above
3948server/apply.c: Limit number of times weapon can be enchanted so
3949 that it won't overflow item_power. Modify enchant armor
3950 to enchant as normal armor is enchanted, also only allows one
3951 item to be enchanted.
3952MSW 2002-01-07
3953
3954common/item.c: Add 'unidentified' to display of examined items if the
3955 item has not been identified. Only display spell regen penalty
3956 for armour if there is in fact a penalty.
3957lib/archetypes: rebuilt for updated demon speed, pick up other new archs.
3958lib/animations, lib/bmaps lib/bmaps.paths lib/crossfire.0 lib/crossfire.1
3959lib/faces: rebuilt
3960server/main.c: Name random maps based on final map component (if available)
3961 or map they are spawned from - this gives so clue in 'who' command
3962 where the players really are.
3963server/monster.c: Fix code that would cause monsters to ignore golems/
3964 avatars.
3965server/pets.c: Clean up a few warnings, fix bug in pet_move that caused
3966 crashes - owner of a pet isn't always a player.
3967server/player.c: Remove on_same_map check - can_detect_monster also
3968 performed check, so no need to have extra call.
3969server/spell_effect.c: modify alchemy to properly deal with tiled maps,
3970 change behavior for spells that block view - they no longer block
3971 alchemy, but spaces that block magic will.
3972MSW 2002-01-05
3973
3974TODO - add notes about item damage - clear it out of my mailbox.
3975common/loader.l, loader.c: Add check at load time to see if monsters
3976 hp is higher than its maxhp and print a debug message if so.
3977devel/Makefile: Remove - makefiles shouldn't be in CVS, only .in versions.
3978server/attack.c: Fix calculation of max_damage in kill_object - this
3979 was being done incorrectly, resulting in fired spell objects causing
3980 incorrect amounts of damage, resulint in some monsters ending up with
3981 a lot of hp. Fix call to kill_object to pass in correct damage value.
3982server/monster.c: Put in check so that monster won't regen to more hp
3983 than they should have.
3984server/spell_util.c: Removed unused variable from move_missile.
3985server/weather.c: fix bug that causes crash if empty space is encountered
3986 on map.
3987MSW 2003-01-03
3988
3989socket/request.c: Fix buffer (malloc) overrun in esrv_send_stats - more
3990 stuff has gotten to be added, without ever increasing the size of the
3991 buffer to hold it.
3992MSW 2003-01-01
3993
3994server/time.c: Fix bad code in stop_arrow that caused crashes/improper
3995freeing of data.
3996MSW 2002-12-30
3997
3998common/treasure.c: Fix initialization of treasure structs to use calloc.
3999server/player.c: Fix infinite loop.
4000socket/loop.c: Make sure we put in null terminator for socket data.
4001MSW 2002-12-26
4002
4003
4004New Arrow and Pet Code:
4005Add bowmode and petmode commands. Allowing the player to change the firing
4006style for bows to one of either threewide, or spreadshot.
4007Allow players to change the operating modes of his pet with petmode. Can be
4008either seek and destroy, defend, or normal historical behavior.
4009Change bows to impart speed to arrows based on damage and other magical
4010plusses. Damage decays over distance, to stop arrows from flying forever.
4011Very fast moving arrows will pierce multiple targets. An arrow moving at a
4012speed greater than 10.0 will go straight through a target, losing 1.0 of
4013speed in the process.
4014Change magic missile to use spell_find_dir instead of find_dir to stop it
4015from flying in a circle and hitting the caster, and to make it stop
4016flying into walls to hit creatures behind the walls.
4017
4018Various bug fixes:
4019common/living.c: Reset glow_radius for players, so they stop glowing
4020 after they snuff out their torch or whatever.
4021server/apply.c: Fix message about improving armour so that it is now
4022 accurate.
4023server/monster.c: Add some debug lines that may show cause of excess
4024 monster hp.
4025server/spell_effect.c: fix compile warning in summon_pet(). Clean up
4026 indentation of alchemy functions, but functional changes is to
4027 insert gold nuggets below player (so more of the actions work),
4028 as well as to reset the view position, so that it won't have the
4029 'previous 50' object selection. Add suggested parens in
4030 cast_detection.
4031server/weather.c: Fix crash in weather code if snow was only object
4032 on space.
4033MSW 2002-12-20
4034
4035+++
4036server/weather.c:
4037More weather routines:
4038
4039Now the game will attempt to completely reformat the world, and modify it
4040with the weather and elevation. When dynamiclevel is set to 5 or above,
4041the game looks at each tile, and the weather conditions present in that
4042tile. It then consults a table of different terrain types, and what
4043conditions they prefer to grow under. If the conditions match the spot,
4044and there is nothing special about the spot (like a house, or a road),
4045then we drop the new tile type on the overlay map on that location.
4046
4047Tuning of this can be done at the top of weather.c, by changing the
4048weather_tile array.
4049
4050Also.. add a feather_map() routine which tries to break up the blockiness
4051of some of the weather effects by spreading the tiles around.
4052
4053This code works.. but needs tuning, and probably a little more testing.
4054Some of the conditions for the various tiles really need to be looked at,
4055and fiddled with.
4056garbled 2002-12-08
4057+++
4058
4059common/exp.c: Fix bug were drain attacks added exp.
4060MSW 2002-12-05
4061
4062server/player.c: Change move_player_attack() so that we look for monsters
4063 to attack even after finding a rollable object - there can be non
4064 blocking rollable objects with monsters on top - we want to attack
4065 the monster, not roll the object.
4066MSW 2002-12-03
4067
4068TODO: Move more items from my mailbox to the TODO list.
4069common/living.c: Init item_power in player to zero in fix_player() -
4070 bogus results were getting generated as it just kept getting incremented.
4071common/porting.c: fix remove_directory so it works properly - checking
4072 for . and .. entries too late, calling unlink instead of rmdir.
4073include/sproto.h: rebuilt
4074lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.0,
4075 lib/crossfire.1, lib/faces: Rebuilt - new archs added, catch is_thrown
4076 addition to thrown rock/boulder archs.
4077server/c_move.c, server/c_range.c: Add another parameter to do_skill() - part, which
4078 is closest part of creature to target object - current only used
4079 for the throw code. Update calls to this function to add additional
4080 parameter.
4081server/c_object.c: Remove the NDI_UNIQUE from the 'item is too heavy
4082 to pick up' so that it won't flood the client with them if players
4083 goes onto space with lots of objects.
4084server/main.c: Minor cleanup to fix compiler warning about ambigous
4085 if/else.
4086server/monster.c: Pass closest part of monster when having it use
4087 a skill so that it doesn't throw rocks into itself. Update calls to
4088 do_skill as described above.
4089server/player.c: Cal delete_player() when player quits - this properly
4090 cleans up any per player unique maps they have. Also, check for
4091 any such maps currently in memory, and delete those so that unique
4092 maps don't get 'gifted' to the next character of the same name.
4093 Update calls to do_skill as described above.
4094server/shop.c: Combine items of the same name together in the output
4095 of the shop listings. Include the number of items, remove special
4096 casing of some objects so that query_base_name is used for all item
4097 types.
4098server/skill_util.c: Modify do_skill() to take additional param as
4099 described above. Also, have do_skill return 1 on success,
4100 0 on failur to use skill, and not return exp - otherwise,
4101 monster code has no idea if skill was successfully used, as throw
4102 doesn't grant exp, and this caused monsters to move into the
4103 object they just threw. Update calls to do_skill as described
4104 above.
4105server/skills.c: Clean up skill_throw function to return meaningfull
4106 value. Also, pass along extra part of closest monster part
4107 to target. Modify do_throw to return value, use closest
4108 part of body as origin point for thwon object.
4109server/spell_effect.c: Use isqrt function instead of definining
4110 ISQRT that used float version. Cleans up compile warning - most
4111 likely not seen before as spell was #ifdef SPELL_ENCUMBERANCE out.
4112server/time.c: Put sanity checking for players speed_left in
4113 move_player_mover() - got some reports of infinite negative speed
4114 on metalforge, and this is the only place in the code where I could
4115 see that happening given the description of the events.
4116utils/arch2xml.py, utils/cfarches.xsl: New script (and template) by
4117 Todd Mitchell. Script can convert archs to xml, and the template
4118 is usuable with mozilla to look at the output.
4119MSW 2002-12-02
4120
4121
4122common/object.c, include/object.h: Add INS_BELOW_ORIGINATOR flag to
4123 insert_ob_in_map - this is used for treasure chests so the
4124 treasure is put below the player. Also fix insertiong of items
4125 on spaces that block view - put them in proper order, and not just
4126 directly above the floor
4127server/apply.c: Tell player what level they need to be if they are not
4128 of sufficient level to improve armor. Modify apply_treasure to
4129 use INS_BELOW_ORIGINATOR flag, clean up some of the other logic
4130 in apply_treasure.
4131server/c_object.c: Modify command_take to use the container inventory
4132 when doing a pickup, and not the container itself.
4133MSW 2002-11-30
4134
4135TODO: Updated with dm 'follow' command.
4136common/loader.l: Rebuilt.
4137common/map.c: Fix up some formatting - no code change.
4138include/player.h, server/apply.c, server/player.c, socket/info.c: Remove
4139 chosen_item_spell field - isn't needed anymore as that information
4140 is determined each time player fires wand/rod/horn. This fixes
4141 those items firing magic bullets if they were equipped when player
4142 saved and rejoined. Some additional cleanup done in rangetostring() -
4143 mostly formatting changes, but minor code changes.
4144MSW 2002-11-29
4145
4146
4147include/shstr.h: Update REFCOUNT_TYPE to be an int - seems to at least fix
4148 the bug of server crashing when running around the bigworld - given the
4149 size of the maps, quite possible that enough objects of the same name
4150 would be in memory to overflow the size size of a short.
4151MSW 2002-11-19
4152
4153Changed a ton of #ifdefs into settings:
4154convert #ifdef NOT_PERMADETH into settings.not_permadeth.
4155SET_TITLE and RESURRECTION are now settings.
4156#ifdef SEARCH_ITEMS -> settings.search_items
4157#ifdef SPELL_ENCUMBRANCE -> settings.spell_encumbrance
4158#ifdef SPELL_FAILURE_EFFECTS -> settings.spell_failure_effects
4159#ifdef CASTING_TIME -> settings.casting_time
4160#ifdef REAL_WIZ -> settings.real_wiz
4161#ifdef RECYCLE_TMP_MAPS -> settings.recycle_tmp_maps
4162#ifdef SPELLPOINT_LEVEL_DEPEND -> settings.spellpoint_level_depend
4163#ifdef EXPLORE_MODE -> settings.explore_mode
4164make explore mode actually *work*.
4165#define MOTD -> settings.motd
4166#define DM_MAIL -> settings.dm_mail
4167garbled 2002-11-12
4168
4169
4170New alchemy code, as discussed on the developer list. Now recipies include
4171two new tags: skill and cauldron. With skill, you can set which skill
4172activates this recipie, and the cauldron, corresponds to the arch name of
4173the facility you will use when creating the item. In this way, item
4174creation is now more generalized than just alchemy, and specific formulae
4175can be written to utilize different skills, or perhaps special formulae
4176would require a hard-to-find cauldron.
4177
4178Functionally, the alchemy, or alchemy-like-skills are now activated by
4179the use_skill command. The secondary use of the alchemy spell has been
4180withdrawn, so now it functions in the way it was originally intended again.
4181garbled 2002-11-11
4182
4183socket/loop.c: add a setting fastclock. This makes the server's clock run
4184*really* fast. For now, it's good for debugging purposes, but in the
4185future it will allow a dm to ravage a world with weather quickly.
4186include/define.h: add FLAG_IS_WATER
4187include/global.h: add fastclock to settings
4188include/map.h: add water to weathermap structure
4189include/sproto.h: add tons of new functions in weather.c
4190common/init.c: update for FLAG_IS_WATER
4191common/loader.l: update for FLAG_IS_WATER
4192server/init.c: add code to read fastclock setting
4193server/weather.c: Complete update, largely rewritten. Now the world is
4194cut into a 100x100 matrix of weathermaps. Each one of these maps is
4195computed at initial boot, and written to disk, following which, they are
4196simply read from disk at boot. For each of the main weather types
4197(pressure, humitidy, base temperature, wind direction, wind speed) the
4198game recomputes the entire weathermap, applying smoothing algorithims, or
4199derriving each map from it's predecessor. Weathermaps are only used if
4200you have set your dynamiclevel to 1 or greater, and, are using the bigmap
4201set. At this time, there is still no functional change to the game,
4202bigmap, or not.
4203utils/maps.c: This program will generate ppm files from each of the
4204weathermaps. Mostly for debugging, but curious DM's might find it useful
4205to see the weather.
4206garbled 2002-10-27
4207
4208server/c_chat.c: Fix some buffer overflow issues - use snprintf or
4209 use new_draw_info_format instead.
4210lib/artifacts: Update some cloaks not to require a minimum magic level,
4211 since that will never be met.
4212MSW 2002-10-16
4213
4214Minor bugfixes:
4215common/living.c: Fix it so that if you die, you won't _gain_ exp in any
4216 skills - could happen if new table is harder - 3 level loss could still
4217 mean having higher exp total.
4218common/map.c: Fix on_same_map so check to see if either object has null
4219 map value - prevents crashes.
4220MSW 2002-10-13
4221
4222
4223Experience cleanup - the main functional change is that no upper limit of
4224 exp in an individual skill, save for the limit that there is an upper
4225 limit of total exp a player can have. Thus, if a player concentrates
4226 complete in one skill, he could get to level 110 in it. A lot of
4227 code cleanup was done - so much had gotten added to the exp code that it
4228 was a real mess.
4229common/living.c: re-arrange some of the code, so all the exp related
4230 functions are together. remove adjust_exp(), change check_dm_add_exp_to_obj()
4231 to check_exp_adjust. Add new functions add_player_exp(), check_exp_loss(),
4232 check_exp_add(), subtract_player_exp().
4233include/libproto.h: rebuilt.
4234server/c_wiz.c: Update command_addexp() to use new exp functions.
4235server/gods.c: Update lose_priest_exp() to use new exp functions.
4236MSW 2002-10-11
4237
4238configure, configure.ac: Remove --enable-old-layout option - that is more than
4239 3+ years old now. Add --enable-dmalloc option so code can be compiled
4240 with dmalloc debugging without needing to change/rebuild the configure
4241 files.
4242common/porting.c: Add stdarg.h to list of included files.
4243include/autoconf.h.in: rebuilt, HAVE_LIBDMALLOC undef added.
4244random_maps/square_spiral.c: fix bound checking value.
4245MSW 2002-10-07
4246
4247common/item.c: Fix bug with identified potions not getting set to proper name.
4248MSW 2002-10-03
4249
4250Bugfixes: Add golem_count element to player structure so we can properly
4251 detect when golem is destroyed. This fixes a crash in some places as the
4252 code tried to remove this already removed golem.
4253 Fix crash when null player maps.
4254include/player.h: Add golem_count element to player structure.
4255server/player.c: Add code in handle_newscs_player() that checks status of
4256 golem, clears op->contr->golem is value is bogus
4257server/spell_effect.c, server/spell_util.c: Initialize golem_count
4258 value when golem is created.
4259socket/request.c: Check for null map value.
4260MSW 2002-10-02
4261
4262Mostly bugfixes, but the addition of a wiz 'hide' command which makes the
4263 wiz out of sight so to speak.
4264--
4265common/loader.l, common/loader.c: Fix bug where flag values were being saved
4266 with actual value of the flag (eg, 32768, 16, etc) instead of 1/0 value -
4267 Code effectively worked the same, just was a bit odd looking at save files.
4268include/player.h: Add hidden element to player structure.
4269include/sproto.h: Add command_hide(), update proto for players_on_map()
4270lib/Makefile.am, lib/Makefile.in: add wizhelp/hide file.
4271server/apply.c: Add error checking to converts so it doesn't crash if the
4272 converter doesn't have a proper other_arch. Modify shopmats so that they
4273 don't transport spell effects, like fireballs an burning hands.
4274server/attack.c: Modify code so players can drain other players exp.
4275server/c_misc.c: Modify various functions to not show info on hidden DM.
4276server/c_wiz.c: Add command_hide(), clean up command_invisible() a bit.
4277server/commands.c: Add hide command to dispatch table.
4278server/main.c: Add code to not update players on map for hidden dm.
4279server/player.c: Give hidden dm perpetual invisiblity.
4280server/skills.c: Only get exp if you actually stole an item - fixes abuse
4281 whereby players who couldn't carry item could continually 'steal' it from
4282 monster and just gain exp.
4283server/swap.c: modify players_on_map() to take addition arg to determine if
4284 real players on map should be shown, or if we shouldn't count hidden dms.
4285socket/info.c: Modify code so that oldsockets don't get reports on high verbose
4286 messages.
4287socket/metaserver.c: Modify metaserver update to not include hidden dms.
4288utils/Makefile.in: update datestmp.
4289MSW 2002-09-27
4290
4291
4292server/pet.c: Add check to pet_move() to make sure the space we are
4293 checking is within the map, and handle map tiling.
4294MSW 2002-09-23
4295
4296Various updates:
4297NOTE - You need to install the updated archetypes (included below)
4298 if you run this code without the updated archs, you will likely find
4299 many things do not work.
4300acinclude.m4 aclocal.m4 configure: more refinements for libpython detection.
4301common/button.c: Two push_button() changes - have it check for ACTIVATE_ON_
4302 PUSH/RELEASE to determine if the object should get activated. Also,
4303 change behaviour of TIMED_GATE so that multipart timed gates work.
4304common/loader.l, loader.c: Update with acttivate_on_push/release
4305doc/Developers/objects: Add notes about how to add flags to objects.
4306include/define.h: add new FLAG_ values
4307include/win32.h: update by pstolarc so it compiles on Win32.
4308lib/archetypes: rebuilt
4309MSW 2002-09-17
4310
4311common/map.c: Fix problem with ordering in check_linked() - checking
4312 for NO_PASS was before checks for inventory checkers, resulting in
4313 inventory checkers that require the player to have an item not working.
4314MSW 2002-09-15
4315
4316
4317------------------------------------------------------------------------------
4318Changes for 1.4.0:
4319
4320server/disease.c: Change move_disease() somehwat - before, if you were
4321 not susceptible to a disease, it would never run its course. Yet you
4322 would still get stuck with the symptoms. there was a case on
4323 metalforge where a character had a symptom with no disease, and
4324 had immunity, yet was still getting stuck with the symptoms. Not sure
4325 if this change will help prevent that in the future or not.
4326include/player.h: Change item_power in player structure to be 16 bits -
4327 8 bit values were getting overflowed.
4328MSW 2002-09-14
4329
4330INSTALL: Update directions with new automake method.
4331common/Makefile.am, common/Makefile.in: Fix code for building the libproto.h
4332 file - it was including loader.l and not loader.c
4333common/exp.c: Add init_experience() and dump_experience() functions -
4334 init_experience() loads the experience table from a file. Add default
4335 experience table into this file
4336common/init.c: Add call to init_experience()
4337common/living.c: Remove experience tables - players can select the one they
4338 want by changing the exp_table file. Remove reference to new_levels[] -
4339 only levels[] is used now for the formentioned reason.
4340include/config.h: Update notes about SIMPLE_EXP system.
4341include/libproto.h: rebuilt.
4342lib/Makefile.am, lib/Makefile.in: Add exp_table to list of files.
4343lib/exp_table: New file that contains experience information.
4344server/c_object.c: Modify command_take() to look for objects above the player
4345 to pick up, then objects below. This fixes the bug with not being able
4346 to use the take command on items from a chest the player opens without
4347 moving off the space.
4348server/init.c: Add -mexp dump switch to dump the experience table. Allow
4349 the simple experience system to be set in the settings file.
4350server/skill_util.c: Fix oddness in calc_skill_exp() which could result
4351 in add amounts of exp given.
4352MSW 2002-09-10
4353
4354
4355include/sproto.h: rebuilt
4356lib/help/killpets: New file
4357lib/Makefile.in: Add help/killpets file.
4358server/c_misc.c: Add command_kill_pets().
4359server/commands.c: add killpets command which kills your pets.
4360server/monster.c: Add some code in check_enemy so that the enemy
4361 has to be a monster/generator/player to be considered valid -
4362 I was seeing things like arrows ending up as target enemies.
4363MSW 2002-09-07
4364
4365More bugfixes:
4366common/loader.l, loader.c: Fix up the handling with speed with respect
4367 to style maps - the objects were still getting put on the active
4368 list.
4369common/map.c: Fix up blocked_link() to behave more like the
4370 blocked_two() function - inventory checkers and door handling.
4371 Comment out blocked_two since it isn't used anymore. Modify
4372 load_objects to remove objects on style maps from the active
4373 list. Remove some of the debug messages about map loading.
4374common/object.c: Add remove_from_active_list() function for use
4375 in map.c to remove objects from active list.
4376common/porting.c: Comment out debug message if open_and_uncompress()
4377 can open a file - caller of the function should print out messages,
4378 and it really isn't much of an error in any case.
4379include/libproto.h: rebuilt.
4380random_maps/special.c: Modify place_special_exit() - this should fix
4381 bug of very large treasure maps - problem was if the generated map
4382 size was too small, when generate_random_map was called, it would
4383 generate a newly sized map that was much larger. Code was also
4384 re-arranged some to make it a little more readable.
4385server/attack.c: Fix crash when creature may not have an owner and
4386 it kills something else.
4387server/move.c: comment added - no code change.
4388socket/request.c: Fix off by one error in esrv_send_animation() -
4389 rare condition as it only showed up when trying to send the last
4390 animation (zombie) - only an issue if the player is put on top of
4391 a zombie for some reason (no other space for them) - observed when
4392 leaving the random dungeon in the undead church in scorn without
4393 clearing out all the zombies first.
4394MSW 2002-09-06
4395
4396
4397CHANGES: Update build instructions for the plugin.
4398random_maps/square_spiral.c: Fix bug that could cause the search
4399 function to go off the edge of the map looking for a clear space.
4400 Doesn't happen often, but one crash did happen here.
4401server/monster.c: Fix some bugs with monsters and wakeup - remove
4402 check for friendly that could never be true, and also fix
4403 logic so that monsters will now find the players.
4404MSW 2002-09-05
4405
4406common/button.c: Fix do_mood_floor() to look at all objects on space for
4407 something to effect, not just things above the moodfloor.
4408server/attack.c: Add missing check to make sure the plugin exists before
4409 we try to access the plugin function.
4410common/readlable.c: Fix crash caused by passing null value to mon_desc -
4411 check for non null was at end of { } do loop - check should be at the
4412 start.
4413server/monster.c: Make it so that monsters with see invisible are not
4414 immune to blind - monster can be given appropriate resistance to make
4415 it so it is not effected by blind.
4416MSW 2002-09-04
4417
4418server/main.c: Move #endif in crypt_string to more proper place.
4419server/monster.c: Fix bad if statement that may have been waking up
4420 monsters when they shouldn't have been.
4421MSW 2002-09-03
4422
4423This change mostly deals with improving behaviour of pet monstes.
4424Most of the code is from K. Reinert - however, I did some code cleanup/
4425fixes related to pet monsters, so it is difficult to note where
4426each piece of code came from. One thing this does fix is handling of
4427multipart pets - these now work properly.
4428common/map.c: Update comment for get_rangevector() - no code change.
4429common/object.c: Add get_search_arr() which is used in pet monster code.
4430 This returns a semi random scrambling of the freearr array.
4431doc/Developers/protocol: Update documentation about map1a protocol command.
4432include/libproto.h, include/sproto.h: rebuilt.
4433server/attack.c: Have drain attacks return 1 damage so that it is clear
4434 that you are actually hitting your opponent. Otherwise, you would
4435 get messages that 'you missed xyz', even though you are draining it.
4436 This extra point of damage shouldn't change balance in any significant
4437 way.
4438server/monster.c: Update hnadling of enemies for pet monsters. It should
4439 more intelligently choose the monsters and not switch/clear the
4440 enemy field for no reason anymore. Change find_nearest_living_creature to
4441 use the get_search_arr() to more randomly choose direction of target -
4442 before, there was a proclivity to always look in the north direction.
4443 Modify can_hit() to look for closes part of enemy - otherwise, monsters
4444 may not attack opponents even if they were right next to them because
4445 they couldn't get to the enemies head. Remove move_object from
4446 this function - merged with move_ob in move.c
4447server/move.c: Fix move_ob to use 'cleaner' code of move_object, but
4448 also have specific features that move_ob had (player handling).
4449 Before move_ob didn't handle multipart objects correctly, and the
4450 two functions were largely the same. Now move_object() just calls
4451 move_ob - the only difference in the functions is that move_ob()
4452 takes 3 parameters instead of 2 of move_object() (added
4453 parameter is originator). I think this should now mean multipart
4454 player objects may now work.
4455server/pets.c: get_pet_enemy enhanced to be much smarter about
4456 selecting/finding things for the pet to attack.
4457server/player.c: Remove commented out line of init_beforeplay
4458MSW 2002-08-31
4459
4460server/attack.c: Modify drain attack code so that if some agent of the
4461player is doing the drain (eg, avatar, summoned monster, or even spell),
4462player gets exp added to his total. Otherwise, the agent could suck all
4463the exp out of the monster, resulting in no gain for the player.
4464Also, fix bug in drain code where uninitialized value was being used
4465if enemy had 0 protection to drain.
4466MSW 2002-08-30
4467
4468Various bugfixes:
4469common/map.c: Change so that same logic is used to determine pclose/fclose
4470 that is used to determine popen/fopen - otherwise, compressed map
4471 files probably don't work properly.
4472common/treasure.c: Do a memset to make sure entire treasureslist is
4473 set to sane values.
4474lib/archetypes: Fix 'slaying' field (which determines spell name) in
4475 god_spelldirect_face_of_death and god_spelldirect_finger_of_death
4476server/apply.c: Fix infinite loop if the player had cursed items
4477 that needed to be unapplied to apply an item - setting up next
4478 item iteration was inside if check when it shouldn't be. Also,
4479 print message to player if this is the case.
4480server/monster.c: Better format some of the code for improved readability.
4481 Fix indentation of can_see_enemy. Clean up invisiblity check - may
4482 have fixed a bug - old code should have worked, but wasn't very
4483 readable.
4484server/move.c: Fix some bad code from last checkin - didn't fix
4485 the crash on no floor for door type, and instead removed
4486 check type from next line by accident.
4487server/player.c: Remove call for init_beforeplay - this is already
4488 properly called, and re-calling it resulted in some things being
4489 redone when they shouldn't be.
4490server/skills.c: Add message if there is nothing to steal form the monster.
4491server/spell_effect.c: Improve message when invisiblity duration is
4492 maximized.
4493socket/init.c: change O_NDELAY to O_NONBLOCK of fcntl.
4494MSW 2002-08-25
4495
4496doc/Developers/objects: Update with new (better) information from
4497 Todd Mitchell. Doc is more complete, and now has an index which
4498 should make it easier to find things.
4499server/move.c: Fix dereferencing NULL problem - was looking at op->above,
4500 but op could be NULL if the map had no objects on a space (typically
4501 not the case, but...) No reason I can see that we care about the object
4502 above - just process in normal order.
4503MSW 2002-08-21
4504
4505server/time.c: Possible fix for bug seen on metalforge -
4506 in move_player_mover, make sure we are working with the head of the
4507 monster.
4508MSW 2002-08-13
4509
4510More spoiler-html fixes - was not including attacktype information, but
4511also fixed some formatting issues.
4512common/item.c: Include attacktypes in describe_monster.
4513doc/scripts/Makefile.in: Add monsters-extract.pl file.
4514doc/spoiler-html/Makefile.in: Update to use ../scripts/monster-extract.pl
4515 file, remove monster-extract file.
4516doc/spoiler-html/spoiler.html: rebuilt.
4517MSW 2002-08-11
4518
4519Fix spoiler-html generation to show resistances. Need to do normal spoiler
4520next. Add a new docs/scripts directory to hold the common scripts,
4521instead of spoiler, spoiler-html, playbook, and playbook-html each having
4522their own copies.
4523configure, configure.in: Add doc/scripts directory.
4524doc/spoiler-html/Makefile.in: Update build directions to use
4525 ../scripts/items-extract.pl
4526doc/spoiler-html/spoiler.html: Rebuilt with updated information.
4527doc/scripts/Makefile.in: Makefile for directory.
4528doc/scripts/items-extract.pl: perl version of the items-extract file.
4529doc/spoiler-html/items-extract: awk version - no longer used.
4530MSW 2002-08-02
4531
4532common/item.c: Have describe monster show resistances of monsters - useful
4533 for spoiler output, as well probe spell.
4534server/disease.c: Fix typo.
4535MSW 2002-08-02
4536
4537include/global.h: add FREE_AND_CLEAR_STR macro, relocate DELETE_STRING
4538 by the other macros.
4539server/c_misc.c: Fix string printout in applymode function.
4540server/disease.c: Update name_pl in diseases.
4541server/player.c: replace FREE_AND_CLEAR with FREE_AND_CLEAR_STR - was
4542 freeing data that shouldn't be freed.
4543MSW 2002-08-01
4544
4545Various fixes:
4546INSTALL: Update with note about --with-includes configure option.
4547common/loader.c, common/loader.l: Add comment about flag_invis_undead
4548include/define.h: Add FLAG_INVIS_UNDEAD
4549lib/adm/map_info: Modify to not follow symbolic links.
4550server/monster.c: Modify can_detect_enemy to be a bit more straightforward
4551 in its logic. Also, modify detection of invisible creatures - don't
4552 reduce duration, just return that the monster can detect the player.
4553 There were also spurious messages about the player being seen.
4554 Modify can_see_enemy to check FLAG_INVIS_UNDEAD, also fix broken
4555 comparison
4556server/player.c: Clear FLAG_INVIS_UNDEAD when invisibility ends. Fix
4557 action_makes_visible() - had reverse logic on FLAG_MAKE_INVIS check,
4558 and a typo in the printed message.
4559server/spell_effect.c: cast_invisible() to use FLAG_INVIS_UNDEAD -
4560 also check for maximum duration, and only search active objects when
4561 clearing enemy.
4562server/weather.c: Fix off by one on comparision when intializing maps
4563 darkness when loading map from disk. In dawn_to_dusk, don't do
4564 further processing if the light hasn't changed.
4565MSW 2002-07-29
4566
4567
4568
4569Various bug fixes, add glyph spell:
4570TODO: Updated
4571common/map.c: Fix change_map_light() - if darkness was reduced to zero,
4572 it wouldn't properly notify the players or update the maps they are
4573 on. Also, make it more robust to handle changes by more than one.
4574include/define.h: Increase NROFREALSPELLS
4575include/spellist.h: Add glyph spell.
4576include/spells.h: Add SP_GLYPH entry.
4577server/attack.c: Fix up kill_object() - it has had some many various
4578 additions that it was difficult to follow the logic. It should also now
4579 do better check on skill objects when awarding experience.
4580server/player.c: Add some checks/addition to properly deal with freeing the
4581 name_pl in the player object. Fix it so that if you are braced, you
4582 still won't attack friendly creatures.
4583server/rune.c: Add cast_generic_rune() to handle the glyph and rune spell.
4584server/spell_effect.c: Fix up some pointers in cast_cause_disease() -
4585 needed so that it works properly when embedded in a glyph. Have it
4586 return 1 even if no one caught anything - you still cast the spell, so
4587 you should lose the grace for it.
4588server/spell_util.c: Fix some formatting. Break out the code dealing
4589 with rune into cast_generic_rune()
4590socket/loop.c: Add flag to player command mapping, and update structure -
4591 if flag is set, command can only be issued when player is in play,
4592 and not when waiting at the quit or login prompt - fixes crashes where
4593 players could wait for the map to get swapped out (after quitting), and
4594 then looking at a space.
4595socket/request.c: Fix map2cmd so that invisible players are drawn.
4596MSW 2002-07-24
4597
4598Add dm command 'freeze' which freezes a player from doing anything for some
4599amount of time.
4600include/sproto.h: rebuilt.
4601lib/Makefile.in: Add freeze to wizhelp files.
4602lib/wizhelp/freeze: New file.
4603server/c_wiz.c: Add command_freeze(). Also, break out
4604 get_other_player_from_name() - several functions need the same logic
4605 of getting a player named X that is not us - making it a function
4606 reduces the duplicate code. Fix some formatting for some functions.
4607server/commands.c: Add command_freeze to the dispatch table.
4608MSW 2002-07-17
4609
4610lib/Makefile.in: add a 'archonly' directive that only collects archetypes
4611 and doesn't collect images.
4612lib/archetypes: rebuilt for fixes made to arches.
4613lib/collect.pl.in: modified to take second parameter -ARCHONLY, that causes
4614 it not to save out animation, bmaps and faces file.
4615server/apply.c: Change order of print when applying/unapplying - print out
4616 the 'you apply/unapply' before we print out the changes that applying
4617 the item does. It seems odd for it to be 'you feel stronger. you apply
4618 xyz'. Fix can_apply_object() so that if a player needs to unapply
4619 several items, the right return code is returned and we don't say
4620 the player has a choice.
4621server/player.c: Fix missing clearing of player->next.
4622MSW 2002-07-15
4623
4624-- Start body commit notes --
4625Major commit. This adds body locations which is used for equipping items.
4626Equipment has information which body part it gets equipped to, and monsters
4627have information on how which body locations they can have.
4628
4629As part of this work, I also did a lot of code cleanup.
4630
4631To use this, you must use up to date archetypes - the ones included
4632in this commit are fine - just make sure you install them. If
4633you don't, players will not be able to equip items.
4634
4635common/arch.c: Initialize body_used to be same as body_info for
4636 archetypes - this way when monsters are created, they can
4637 start equipping items right away.
4638common/exp.c: update new_exp() - some flags it checked for before no longer
4639 exist or have new names.
4640common/info.c: describe_item() now takes second parameter - update
4641 dump_abilities to use new calling convention.
4642common/item.c: Add table that describes the body_info locations and
4643 their names. Add functions that calculate item power for objects
4644 that don't have it set. Update display functions to show
4645 item_power in items. Update describe_monster() - use_horn/wand/rod
4646 merged into just use_range. Modify describe_item() to take second
4647 paramater - who the item is being described for. Show item_power
4648 in describe_item.
4649common/living.c: Pull out MAXLEVEL from being defined in this file -
4650 define in in define.h, since other files use it. Add NUM_STATS
4651 define - replace hard coded values of having just 7 stats with it.
4652 Update change_abil to not display that the player has a new
4653 attacktype when equipping a bow that has it - fix_player() ignores
4654 the attacktype of the bow, so it was incorrect information.
4655 fix_player(): Initialize player ranges structure to null -
4656 will get filled in by code in function, updated to deal with
4657 updating the body_used data from body_info in the objects.
4658 Replace instances of last_heal with gen_sp_armour. Rearrange
4659 some code to make function more readable.
4660common/loader.c, common/loader.l: Remove the variable_const information - no
4661 longer needed and confusing for new people when adding in new object
4662 elements. Add set_body_info() - parses the string from the load file and
4663 sets the appropriate array element. Add check_loaded_object() - does
4664 sanity checking for an object after finished loading - replaces need for
4665 long processing directive in the actual rules by having seperate function.
4666 Remove unused flags from load directives (apply_once, no_pretext,
4667 can_apply), add some new ones (item_power, gen_sp_armour), update others
4668 to can_use_range. Replace flag_links with simple array that contains the
4669 name for each corresponding flag. Update get_ob_diff to not use the V_
4670 values and just include the actual string name - all recent changes have
4671 done this, just updated for old stuff. Update get_ob_diff to save new
4672 values that have been added.
4673common/object.c: clear_object: Modify to use memset to clear
4674 the structure to zero - this is less error prone than listing
4675 all the specific values, and probably faster. Also, makes it
4676 easier to add new elements - no need to update object.c in most
4677 cases.
4678common/player.c: Remove get_player_ob routine - this is now merged
4679 in with get_player_ob in server/player.c. Remove generate_ext_title -
4680 not used.
4681common/readable.c: Update to pass second argument to describe_item.
4682common/treasure.c: Update to calculate item_power of generated items.
4683 Clean up a lot of code formatting. Update add_abilities
4684 to use gen_sp_armour values, not last heal (note, it appears
4685 the last_heal values weren't being used before). Update
4686 calls to describe item to take second parameter.
4687doc/Developers/objects: Update will_apply notes, add note about
4688 item_power, body location.
4689include/define.h: Comment out unused flags (flag_apply_once, flag_paralyzed,
4690 flag_no_pretext, flag_ready_rod, flag_read_horn). Add flag_use_shield.
4691 rename flag_use_wand to flag_use_range. rename flag_ready_wand to
4692 flag_ready_range. Add flag_ready_scroll. Update ARMOUR_SPELLS access
4693 macro. Add AP_PRINT flag to apply flags. Add CAN_APPLY_.. return types
4694 for can_apply_object function.
4695include/includes.h: add strftime, mktime checks to this file.
4696include/libproto.h: rebuilt.
4697include/living.h: Add NUM_STATS define, update extern declarations
4698 to use it for sizing.
4699include/loader.h: remove the V_.. info and xbm_.. externs that were not
4700 used.
4701include/newserver.h: Remove ext_tile information.
4702include/object.h: Add Body_Locations structure, NUM_BODY_LOCATIONS define.
4703 Add definitions for WILL_APPLY values. Clean up object structure -
4704 formatting is now consistent, ordering of values groups values
4705 together more logically. Update all types to use the int8/int16/int32
4706 types. Several unused fields removed.
4707include/player.h: Update rangetype enum. Add unapplymode enum.
4708 Clean up player structure - type updates, unused fields removed,
4709 formatting fixed up.
4710include/spells.h: remove range_name extern. Update SpellTypeFrom
4711 field to combine wand/rod/horn into spellMisc - none of the
4712 spell casting code was differentiating these.
4713include/sproto.h: rebuilt.
4714lib/Makefile.in: Add new help files (applymode, bind, brace)
4715lib/archetypes: rebuilt for body_info, gen_sp_armour, item_power,
4716 can_use_shield information.
4717lib/artifacts: updated for item_poer and gen_sp_armour changes.
4718lib/treasures: remove unused _force for player treasure.
4719plugin/plugin_python.c: Change FLAG_USE_WAND to FLAG_USE_RANGE.
4720server/apply.c: Move stftime, mktime to include/includes.h. Remove
4721 draw_find() - one line function can just as easly be in the
4722 code itself. Update calls to long_desc to pass second parameter.
4723 move gravestone_text() to player.c file. Add direction parameter to
4724 apply_scroll() - in this way monsters can use it properly.
4725 Remove dead code. Update apply_special function. Add
4726 unapply_special(), get_item_from_body_location(), unapply_for_ob(),
4727 and can_apply_object() functions.
4728server/attack.c: Remove SET_FLAG(op, FLAG_PARALYZED) line - no code
4729 was ever checking status of FLAG_PARALYZED.
4730server/c_misc.c: add command_body() which dumps body information for
4731 player. Update who as idle element in player structure removed -
4732 was not being used by anything. Add command_applymode() to
4733 set players prefered unapply method. Remove calls to unlock_player()
4734 in various functions - unlock_player() has not done anything
4735 meaningful for a while.
4736server/c_object.c: Modify long_desc to take a second parameter
4737 which is who is examing the object. this is needed so that we
4738 can pass it down to some of the lower level functions.
4739 Update calls to describe_item to pass this second parameter.
4740 remove FLAG_NO_PRETEXT code - no archetyps were using it. When
4741 examining objects, also tell player where to put them on.
4742server/c_range.c: Update legal_range() - we now store the object that
4743 is responsible for a range in the player object, so code is
4744 much simpler. Update change_spell() to not destroy golem
4745 just by readying another spell - we now let players regain control
4746 of golems after switching to another range. Update change_spell
4747 to use item name of object for range description.
4748server/c_wiz.c: remove reference to count_left from player object -
4749 field removed from structure.
4750server/commands.c: add new commands (applymode, body) to command dispatch
4751 table.
4752server/login.c: Remove unlock_player() and lock_player() and calls to it -
4753 current checking of names at login should be sufficient to
4754 prevent duplicates. Remove dead code from check_name. Update
4755 load/save code for unapply mode value. Add set_flag(op,
4756 FLAG_USE_SHIELD) if player is allowed to use armor - needed since
4757 flag_use_shield is really a class feature and so is not automatically
4758 updated for old player files.
4759server/main.c: Remove references to count_left. memset marker object to
4760 NULL - seems to increase stability on metalforge server.
4761server/monster.c: Many updates related to the body info - monsters follow some
4762 rules as players. Add monster_should_cast_spell function - monsters will
4763 use this for all spellcasting related actions (abilities, scrolls, wands,
4764 etc). Update for merged rod/horn/wand ranges. Update bow use by monsters
4765 - they don't actually need to equip it to fire - this way we don't need to
4766 constantly swap the monsters weapons between the bow and melee item. Use
4767 fire_bow from player.c for most of the work. Modify scroll usage -
4768 monster will use it when player is near, not when it first picks it up.
4769 Add FLAG_READY_SCROLL to denote the monster has a scroll to use. Also,
4770 monster now casts it in appropriate direciton. Merge the
4771 monster_use_wand/rod/horn into monster_use_range. Modify
4772 check_good_weapon and check_good_armour to just look at the stats of the
4773 two items without needing the monster to apply it first.
4774server/player.c: Print motd in green so it is more noticable. Update
4775 get_player function to do work it did before as well as that of
4776 get_player_ob. Have get_player take a parameter which is the object of
4777 the player if he has one. Modify to use memset to clear the player
4778 structure - more sure fire than explicitly listing values to initialize.
4779 Remove calls to unlock_player. Modify fire_bow so that monsters can also
4780 use the function. Add fire_misc_object() to fire_wand/rod/horn - removes
4781 code from fire(). Add gravesetone_text() to this file.
4782server/shop.c: Update to pass second parameter to describe_item().
4783server/skill_util.c: Update check_skill_to_fire since there are fewer
4784 rangetypes now. change range_scroll name to range_golem, as that is
4785 a bit more accurate for what it actually does. Modify show_skills()
4786 to show player his item power and total of items he has equipped.
4787server/skills.c: Add second paramater to long_desc, remove references to
4788 count_left.
4789server/spell_effect.c: Add second paramater to long_desc, remove references to
4790 count_left. Update range_scroll to range_golem
4791server/spell_util.c: remove references to count_left. Update messages
4792 if player trying to cast where he can't with new range names.
4793socket/info.c: Update range information and how we display what it is -
4794 we will use the object name of the range if available. Remove
4795 reference last_known_spell, last_shoot, last_spell, last_value
4796 player structure fields.
4797socket/init.c: Remove ext_title information.
4798socket/request.c: Add element for life_stealing in the resistance array.
4799 Remove references to idle, count_left in player structure. remove
4800 ext2 title information.
4801MSW 2002-07-14
4802-- End body commit notes --
4803
4804common/anim.c, common/button.c, common/friend.c, common/glue.c,
4805 common/init.c,common/logger.c, common/los.c, common/porting.c,
4806 common/time.c, common/utils.c, crossedit/png.c, crossedit/xutil.c,
4807 include/attack.h, include/config.h, include/map.h, include/material.h,
4808 include/newclient.h, include/skills.h, include/treasure.h,
4809 random_maps/decor.c, random_maps/door.c, random_maps/floor.c,
4810 random_maps/monster.c, random_maps/special.c, random_maps/standalone.c,
4811 random_maps/style.c, random_maps/wall.c, server/alchemy.c,
4812 server/c_chat.c, server/c_party.c, server/gods.c, server/hiscore.c,
4813 server/init.c, server/pets.c, server/resurrection.c, server/rune.c,
4814 server/time.c, socket/metaserver.c: Update banner copyright
4815 with proper contact information.
4816MSW 2002-07-14
4817
4818server/disease.c: Fix propogation of diseases with negative damage (these
4819 do a percent of the creatures damage). The new disease was getting
4820 a damage rating of 1 in all cases because we were passing a negative
4821 value to random_roll for the top end of the range.
4822MSW 2002-07-08
4823
4824common/arch.c: Add 'unlocked' match for item_matched_string.
4825lib/help/drop, lib/help/dropall: Help files for these commands.
4826lib/Makefile.in: Update to include help commands above.
4827server/spell_effect.c: Fix formatting of summon_pet() function. Modified so
4828 that it no longers sucks player spellpoints when casting it via scroll -
4829 scrolls should not cast the player spellpoints. No idea why that code was
4830 there - in fact, casting off a scroll used more sp than casting from
4831 memory. Modify cast_cause_disease() function so that if the passed
4832 direction is 0, we refer to the facing and cast in that direction - this
4833 means spells of cause disease now work. Also perform some minor formatting
4834 changes in the function.
4835TODO: Add not about inscription.
4836MSW 2002-07-05
4837
4838common/arch.c: Fix bug in item_matched_string which was matching all
4839 values (inverse in fact) when passed with count > 1 in matching
4840 string - missing ! operator.
4841README: Update - remove note about windows client, since it is currently
4842 unsupported and could stop working in some future release.
4843MSW 2002-07-05
4844
4845------------------------------------------------------------------------------
4846Changes for 1.3.0:
4847
4848socket/request.c: If players were using the original map command with
4849 an even map size, server would try to send too much data to client -
4850 checking in server would result in an abort. Modify code to now properly
4851 send right number of spaces.
4852lib/Makefile.in: remove extraneous / in front of motd entry in file list.
4853include/version.h: Update for version 1.3.0
4854Makefile.in: Update for version 1.3.0
4855lib/archetypes: rebuilt.
4856MSW 2002-07-01
4857
4858doc updates: Rebuild the doc files, but most of this is fixing some of the
4859doc build stuff to correctly working with the new image set naming
4860scheme and fixing some bugs. Some doc is certainly out of date - the
4861playbook doesn't mention the classes for example.
4862doc/handbook.ps, doc/spoiler.ps: rebuilt
4863Note: all the doc/playbook changes also apply to the same files in
4864 doc/playbook-html.
4865doc/playbook/Makefile.in, doc/playbook/makeps, doc/playbook/makeps.pl:
4866 replace the awk makeps script with the perl one.
4867doc/playbook/items-extract: Don't show invisible items.
4868doc/playbook/levels-extract: Update so that it properly finds the declaration
4869 of the levels in living.c
4870doc/playbook/treas1-extract: Clear type when we get a new Object header. was
4871 resulting in duplicate entries for the characters.
4872doc/playbook/treas2-extract: Don't include forces of the no_class_face_change
4873 as part of characters treasures
4874doc/playbook-html/chap1.html: Update ftp site information.
4875doc/spoiler/Makefile.in, doc/spoiler/makeps.pl, doc/spoiler/makeps:
4876 replace the awk makeps script with the perl one.
4877doc/spoiler/items-extract: Add a space after the name match so that it won't
4878 match on the name_pl field.
4879doc/spoiler-html/items-extract: Add a space after the name match so that it won't
4880 match on the name_pl field.
4881doc/spoiler-html/makeps.pl: Update to handle new naming scheme for images.
4882doc/spoiler-html/spoiler.html: rebuilt.
4883lib/Makefile.in: Fix error in variable not being surrounded by parens.
4884MSW 2002-06-30
4885
4886
4887server/rune.c: Fix bug that allowed players to use marking runes to create
4888 arbitrary objects by embedding a endmsg in the string.
4889MSW 2002-06-26
4890
4891lib/ban_file: Update comments to describe how it actually works.
4892server/commands.c: Add some time cost to shout, say, and tell commands. This
4893 prevents abusive players from issuing huge number of these commands.
4894MSW 2002-06-20
4895
4896doc/playbook-html/Makefile.in: Remove some superfluous blank lines
4897 in the file.
4898configure, configure.in, plugin/Makefile.in: Modify configure script to
4899 subtitute PLUGIN_TARGET, have plugin/Makefile not build/install
4900 plugin if necessary support libraries are not in place.
4901common/item.c, include/material.h: Move the declaration/initialization
4902 of materialtype from material.h to item.c
4903server/main.c: Modify crypt_string so that on Freebsd systems, it will
4904 use des_crypt if available, if not, won't encrypt.
4905MSW 2002-06-18
4906
4907TODO: Additional updates.
4908Add support for loading the EMERGENCY_.. locations from a .emergency file in
4909the map directory. This makes it easy to switch map distributions without the
4910need to recompile. The emergency information is now stored in the settings
4911structure.
4912common/init.c: add EMERGENCY_ defines to default values in setting. Add
4913 init_emergency_mappath which loads the information.
4914include/config.h: Remove NEW_WORLD_MAP definition, as it is no longer
4915 needed. Update some of the EMERGENCY_.. information as we don't need
4916 to include the information for the new world map.
4917include/global.h: Add emergency_.. fields to settings structure.
4918server/login.c, server/main.c, server/player.c: Update references from
4919 the EMERGENCY.. values to settings.emergency values.
4920MSW 2002-06-15
4921
4922lib/Makefile.in: modified so that it doesn't overwrite commonly customized
4923 files (eg, motd, dm_file, ban_file). These files will get installed
4924 on new installations.
4925MSW 2002-06-14
4926
4927common/item.c: break out monster description into describe_monster
4928 function from describe_item - the later was a really long function.
4929 Reveal weapon speed for identified weapons, spell point regen
4930 penalty and max speed for identified armor - this was discussed about
4931 6 weeks ago. Clean up the code to reduce the number of redundant
4932 if statements and otherwise confusing code in describe_item.
4933MSW 2002-06-14
4934
4935configure.in, configure, plugin/Makefile, plugin/Makefile.in,
4936 plugin/Makefile.old: Modify the plugin module to gets its needed
4937 information from configure. configure.in modified to look for Python.h and
4938 to find the python library. plugin/Makefile.in is a new file.
4939 plugin/Makefile.old is the old plugin/Makefile (removed) - may be useful
4940 for sites where configure does not work for some reason. The use of
4941 --with-includes=-I/usr/include/python2.2 (or the like) will likely be
4942 needed for configure to find the Python.h file. Note - if you
4943 are doing a CVS update, you will need to re-run configure with the
4944 appropriate options for this change to take effect.
4945MSW 2002-06-13
4946
4947server/main.c: If on freebsd system, don't crypt the password.
4948Crypt on freebsd behaves diferently, and since there is little reason
4949to encrypt passwords, easier to just leave them decrypted.
4950Fix for sourceforge bug 469017
4951MSW 2002-06-13
4952
4953More minor changes, including a fix for the disappearing object bug -
4954this was caused by the flag_links not getting updated the last
4955time new flags were added. Problem probably only showed up now
4956because loader.c wasn't rebuilt until recent changes.
4957--
4958common/loader.c, common/loader.l: add extern to arch_init, when
4959 loading and get an object from a file, complain and ignore it if
4960 arch_init is not set (only time we should get object (vs arch) for
4961 names is when we load the archetypes file). Add missing entries
4962 to flag_links array.
4963common/treasure.c: Fix code so that proper plural names are generated
4964 for custom items (potions, flesh items, etc).
4965include/define.h: Add note about updating flag_links when NUM_FLAGS is
4966 increased.
4967server/skills.c: don't let players steal from players with FLAG_WIZ set.
4968MSW 2002-06-09
4969
4970Mostly bugfixes. I'm not sure if this will fix the disappearing arch problem-
4971none of the changes made in the original multiple name would seem to
4972cause it, so hard to say if any of these changes may fix it.
4973--
4974common/arch.c: Change get_archetype_by_name to be more efficient and
4975 not leak memory. Modify code that frees all archetype data to free
4976 the name_pl information. Make sure the clone.name_pl is set to
4977 NULL. When singularites are created, set the name_pl for them.
4978common/loader.l, common/loader.c: Modify code that fixes up name_pl
4979 to be more correct when it fixes up name_pl for old objects.
4980common/map.c: Modify load_map_header so that tile_paths will be normalized -
4981 need for editor to be able to load maps that have a multipart object
4982 that spans the maps.
4983crossedit/Edit.c: Modify some calls of out_of_map to OUT_OF_REAL_MAP, since
4984 tiling code really isn't fully in place for the editor. Modify
4985 EditPerformFill so that it actually works and doesn't crash the editor.
4986include/global.h: Move FREE_AND_COPY macro from loader.l to here so that
4987 all source code files can use it.
4988lib/adm/map_info: Modify to actually be able to examine just a sub
4989 portion of the map directories, and not all of them. Don't always
4990 show the unused objects - information isn't very interesting if only
4991 a portion is being examined. Modify the exit examining code to properly
4992 deal with random maps (if there is a finalmap component, make sure
4993 that does exist.) Loade the bmaps file and not the faces file to
4994 find valid faces.
4995plugin/plugin_python.c: Add missing %s that described what script
4996 was actually loaded.
4997random_maps/special.c, server/alchemy.c, server/c_misc.c, server/gods.c,
4998 server/login.c, server/player.c, server/spell_effect.c: Set up proper
4999 name_pl value for code that changes the name of objects.
5000server/apply.c: Use FREE_AND_COPY to set up names. Set up proper
5001 name_pl values for cases that change name. In apply_lighter, call fix_player
5002 if player is lighting an object in his inventory - necessary for the
5003 players glow_radius to get updated so the change actually takes effect.
5004socket/request.c: Modify esrv_map_scroll so that it properly clears cells
5005 that are moving out of view - failure to do this was resulting in the
5006 map1a updating these spaces with empty faces. This was causing
5007 fog of war wackiness with the client.
5008MSW 2002-06-06
5009
5010
5011common/button.c: Fix mood floor code - before, it was changing the moods
5012 of all sorts of objects (luggage, itself, etc). Now, it only
5013 changes objects above the floor, and only monsters.
5014MSW 2002-05-31
5015
5016
5017Main change is the addition of name_pl and client_type to object
5018structure. The name_pl contains the proper plural name instance - fixes
5019problem of '2 tooths'. client_type is sent to the client so that client
5020doesn't need to figure out sorting on its own. Client_type is an object
5021attribute, so can be modified in maps to hide the real type.
5022--
5023common/arch.c: item_matched_string() modified to use the name_pl field
5024 when trying to match names, and not to try to make the name plural
5025 itself.
5026common/item.c: query_short_name(),query_base_name() modified to
5027 use name_pl instead of trying to make the name plural.
5028common/loader.c, common/loader.l: Add code to load and save the name_pl
5029 value and client_type. Add logic when object is finished loading
5030 to set name_pl value to same as name or arch name if no name_pl
5031 is specified - this supports old maps/characters in which the objects
5032 dont have a name_pl field yet. Disable logic for need_an and need_ie
5033 flags since they are no longer needed. Fix bug that caused
5034 elevation not to get saved.
5035common/object.c: Add client_type check for CAN_MERGE function. Add
5036 appropriate logice in functions to handle setting, clearing, and
5037 copying of name_pl values. Remove unused anim_... fields
5038 initialization.
5039doc/Developers/objects: Add information about the name_pl field and
5040 client_type.
5041doc/Developers/protocol: Remove item protocol command info - it has
5042 been obsoleted. Add information about item2 protocol command.
5043include/define.h: Remote ST1_* values - they were not being used.
5044 comment out FLAG_AN and FLAG_NEED_IE values.
5045include/newserver.h: Add itemcmd to socket structure - this is the
5046 version of the item protocol command that will be sent to the client.
5047include/object.h: Add name_pl and client_type field to object structure.
5048 Remove unused anim_* values.
5049lib/archetypes: rebuilt with new archetypes that contain client_type
5050 and name_pl information.
5051lib/bmaps, lib/bmaps.paths, lib/crossfire.1, lib/crossfire.0, lib/faces:
5052 rebuilt.
5053server/monster.c: Remove anim_ references that were not being used.
5054socket/init.c: Initialize itemcmd version in the socket to 1.
5055socket/item.c: Remove special handling for clients of old versions - all
5056 clients now have to be at least sc_version 1024 (which has been around for
5057 a long time). This simplifies a lot of the object code that deals with
5058 sending or not sending plural names to the client - now always send them.
5059 Change code that sends item to client to use the item revision (currently
5060 1 or 2) that the client wants. If version 2, send along client_type
5061 information.
5062socket/request.c: Handle 'itemcmd' parameter in setup command. Make
5063 sure it is in proper range. If client is very old (sc_version < 1024)
5064 tell them so.
5065MSW 2002-05-30
5066
5067
5068crossedit/png.c, crossedit/xutil.c: Increase size of temporary buffers that
5069 are used when loading images - necessary to allow the editor to run without
5070 crashing.
5071include/newserver.h: Remove quick_pos from the MapCell structure.
5072server/main.c: Add code to set the coordinates to the EMERGENCY_X/Y
5073 values if using the EMERGENCY_MAP.
5074socket/request.c: Fix code that was causing darkness to get repeatedly
5075 sent for some spaces.
5076MSW 2002-05-19
5077
5078The bulk of this commit is to modify the server to only send the lower
5079rightmost part of multipart archetypes that use the same head. This allows
5080support of big images in the client.
5081
5082common/arch.c: Modify first_arch_pass to figure out the tail_x/y values for
5083 multipart archs. Rename the prev variable to head, as that it really what
5084 it is. Remove quick_pos info.
5085common/object.c: remove quick_pos info from object.
5086doc/Developers/images: Add notes about using merged images.
5087doc/Developers/protocol: Add information about the map1a command, which
5088 is used to for big image support. Remove map2 documentation.
5089include/map.h: Add MAP_LAYERS define instead of using hardcoded value of 3.
5090include/newserver.h: Change the MapCell to use MAP_LAYERS - saves
5091 considerable memory. Add defines for MAX_CLIENT_ map sizes.
5092 Remove map1cmd, map2cmd elements from socket structure - instead use enumeration
5093 of mapmode - only one map type will be used at any time by the client, so
5094 no reason to have individual elements - it also makes it easier to add new
5095 mapmode commands.
5096include/object.h: remove quick_pos, update_tag from object structure.
5097 Add tail_x, tail_y values to archetype structure.
5098include/player.h: Remove some now unused values from the player structure
5099 (drawn, floor, floor2, darkmask). These have been superseded by the
5100 map cells in the socket structure for quite a while.
5101include/sockproto.h: rebuilt
5102server/player.c: Remove code that initialized the drawn values in the player
5103 structure since they no longer exist.
5104socket/init.c: Replace map1cmd, map2cmd elements in socket structure with
5105 mapmode element. Modify init_ericserver so that it properly passes an
5106 int when setting the SO_REUSERADDR field.
5107socket/request.c: Modify code in SetUp function to use the new mapmode
5108 enumeration in the socket structure. Add support for map1acmd setup
5109 option. Throughout map code, replace MAXMAPCELLFACES with MAP_LAYERS.
5110 modify map_clearcell to take options for values to clear the cell to.
5111 Add have_head, check_head, and update_space commands - used with the
5112 map1 command to store and find head information.
5113 draw_client_map1 modified to support map1a extensions, as well as added
5114 logic for checking for heads in blocked and out of viewable map spaces.
5115 Some of the code is simplified by using the update_space function, since
5116 the logic for processing each layer was otherwise the same. remove
5117 draw_client_map2 function. esrv_map_scroll has same logic - some
5118 variables and code formatting changes.
5119MSW 2002-05-18
5120
5121server/login.c, server/c_misc.c: Don't save characters with 0 experience.
5122This apparantly fixes some abuses. MSW 2002-05-18
5123
5124server/attack.c: Don't generate PLAYER_KILL_PLAYER messages if kill
5125happened on battleground. Also, datestamp the messages.
5126MSW 2002-05-13
5127
5128server/attack.c: Generate log message when a player kills another player -
5129include the ip address of the killer to make it easier to add them to
5130ban files. MSW 2002-05-06
5131
5132------------------------------------------------------------------------------
5133Changes for 1.2.0:
5134Makefile.in, include/version.h: Update for 1.2.0 release
5135lib/Makefile.in: have it make an archive for the archetypes.
5136MSW 2002-04-28
5137
5138
5139doc/Developers/protocol: Add documentation about the map2 protocol command.
5140socket/request.c: Fix bad indentation for the map2 function. No actual
5141 functional code changes, but some comments updated. Running diff with the
5142 -w option will make the changes, or lack thereof, more viewable.
5143MSW 2002-04-28
5144
5145crossedit/xutil.c: Update to use name of png file.
5146lib/archetypes: collected - pl_dragon arch changed a while back, with no
5147 new collect.
5148lib/collect.pl.in: Add some notes about usage if no option is given or
5149 if --help is given.
5150server/gods.c: Fix that resulted in weapon/armor restrictions not working.
5151MSW 2002-04-23
5152
5153Various minor bugfixes. Note the changes may appear larger than they
5154really are due to formatting/indentation changes. Run diff -w to
5155supress those:
5156make_win32/installwin32.bat: Update for new image files.
5157server/c_object.c: Fix SAVE_INTERVAL #ifdef block. It failed to compile
5158 as it was written. Simplify code, but it should have the same effect.
5159server/move.c: Modify push_object so that if a player swaps position
5160 with his pet, we send a esrv_map_scroll. This should save bandwidth,
5161 and also prevents display corruption when fog of war on the client
5162 is in use. Add some new comments, adjust some formatting.
5163server/player.c: Fix minor typo in comment.
5164server/skills.c: Modify new_draw_info that is responsible for the
5165 "You pray" messages to not have the NDI_UNIQUE flag so that
5166 they can get batched up, depending on users value of output-count
5167server/swap.c: Remove swapped out per player unique maps from the list
5168 of maps. Reduces cpu and memory consumption by a minor amount, and
5169 results in a cleaner 'maps command output.
5170server/weather.c: Add standard crossfire banner to top of file.
5171 Modify long long declartion to just be a long.
5172MSW 2002-04-20
5173
5174socket/item.c: Add checks to esrv_move_object - before it just trusted
5175the client that the destination target to move items into was a container.
5176Now do valid checking that the object can be picked up, that the container
5177can hold it, etc. MSW 2002-04-18
5178
5179Add utils/crossloop.web.in script. This script is used on metalforge -
5180 it generates the backtrace file, compresses the core, and sends out
5181 mail.
5182configure.in, configure: Rebuilt to make the crossloop.web script.
5183utils/Makefile.in: Install the crossloop.web script. Include the
5184 crossloop.web.in script when making the archive.
5185utils/crossloop.web.in: New file.
5186MSW 2002-04-14
5187
5188Update to improve image caching and faceset support in the client.
5189 The main change is adding the 'requestinfo image_info' and
5190 'requestinfo image_sums' commands.
5191common/image.c: Checksum the bmaps file when we load it - we send this as
5192 part of the image_info data.
5193doc/Developers/protocol: Document the requestinfo data.
5194include/global.h: Add extern for bmaps_checksum, and the define for
5195 ROTATE_RIGHT which is used for checksumming.
5196include/newserver.h: Update SC version to 1027 so that clients can
5197 know if they can issue requestinfo commands.
5198include/sockproto.h: rebuilt
5199lib/adm/collect_images.pl: Add support for it to make a crossfire-images
5200 distribution that the client can use to bootstrap its image set.
5201socket/image.c: Change SendFaceCmd to take a NewSocket parameter instead
5202 of a player parameter - in this way, it can be used before the
5203 AddMe command - this allows the client to download images before
5204 issuing that command. Add send_image_info and send_image_sums
5205 function which send the requestinfo data to the client.
5206socket/loop.c: Move the askface command from the player commands to the
5207 newsocket commands. Add RequestInfo functino that determines the
5208 type of request and calls the specific function to deal with it.
5209MSW 2002-03-25
5210
5211------------------------------------------------------------------------------
5212Changes for 1.1.0:
5213
5214Updates for 1.1.0 release - pretty much all minor bug fixes, like
5215compiler warning messages, invalid ANSI C constructs, missing files to
5216include in the distribution.
5217Makefile.in, include/version.h: update version.
5218include/Makefile.in: Add some missing files
5219include/libproto.h, sproto.h: rebuilt to prevent compiler warnings
5220lib/Makefile.in: Include the wizhelp files in the archive.
5221server/apply.c, server/skill_util.c: fix invalid code (function parameter
5222 names can't match structs/typedefs), add a missing return value.
5223server/c_move.c, server/c_new.c, server/c_object.c, server/commands.c,
5224 server/daemon.c: Don't include the sproto.h if CEXTRACT is defined.
5225server/plugins.c: fix printf command that was printing wrong value type.
5226doc/spoiler-html/Makefile.in: Remove extraneous newline
5227
5228server/player.c: modify play_again to remove the player object if not done so
5229already. This fixes a crash observed on metalforge when a player quit at the
5230roll/swap stats prompt (undocumented that you can use 'q' then to do so). It
5231looks like this should also fix crashes that may be associated with the kick
5232and shutdown wiz commands.
5233MSW 2002-03-12
5234
5235Added new dragon race to crossfire.
5236Players of this dragon race can gain resistances
5237by eating the flesh of their defeated foes.
5238They can also specify in a certain resistance-type
5239and gain various abilities when increasing levels.
5240This "focus" can be switched by eating very special
5241As announced on cf-devel, this is the patch which
5242adds a new dragon-race to Crossfire.
5243Players of this dragon race can gain resistances
5244by eating the flesh of their defeated foes.
5245They can also specify in a certain resistance-type
5246and gain various abilities when increasing levels.
5247This "focus" can be switched by eating very special
5248flesh, which will be available for sale.
5249Dragon players gain special titles which cannot
5250be overwritten by manually set titles.
5251AndreasV 2002-03-01
5252
5253lib/collect.pl.in: Modified so that it uses the image.base.xyz.png to make
5254sure each listed face in objects has an image, and not the old xbm images
5255for that task. Also, ignore all files that end in .png, .xpm, or the
5256face extension - consider them legitimate files for the arch directory.
5257MSW 2002-02-25
5258
5259socket/image.c: Change type of image data to be uint8 from char. Checksums
5260were being incorrectly calculated when using the char type. MSW 2002-02-25
5261
5262server/main.c: If exit is damned, update players death & WoR home-position
5263 and delete town portal.
5264server/apply.c: Fix bug in move_apply. return was used instead of goto
5265 leave, so recursion_depth wasn't decremented.
5266mids 02/13/2002
5267
5268server/spell_effect.c: Fix bug in summon_cult_monster that would result
5269in crash if monster was killed when inserted. MSW 2002-02-10
5270
5271common/map.c: load_map_header: If the map message is empty, don't copy
5272 uninitialized data as the message. This fixes various crashes.
5273lib/Makefile.in: Remove the adm/*xpm* utilities, as they are no longer
5274 needed or distributed.
5275server/apply.c: set the player speed to zero after they use a savebed.
5276 Fixes crashes with players that have constant image animation (fireborns)
5277 when they apply the savebed and the map then gets swapped out.
5278server/plugins.c: Fix some serious memory leaks. Some still remain, with
5279 my comments included.
5280server/skills.c: Removed unused variable.
5281MSW 2002-02-05
5282
5283include/player.h include/sproto.h server/c_chat.c server/player.c:
5284 New player command 'reply', replies to the last person who told you
5285 something.
5286server/c_wiz.c: New DM command 'teleport', lets a DM teleport next
5287 to target player, it is an inverse summon.
5288server/commands.c: Add hooks for 'reply' and 'teleport'.
5289mids 2002-01-16
5290
5291TODO: updated with bugs, remove things that have been done and are no
5292 longer TODO's.
5293configure.in, configure: Remove lib/xpmtopix.pl file form those to be
5294 built, as that file has been removed.
5295common/object.c: Fix bug in check_walk_on which would result in spell
5296 objects not being properly processed - the intention is not to process
5297 spell objects - we should stop going up (in previous loop) when we
5298 get such an object, not on the way down. This fixes directors not
5299 working really well.
5300MSW 2001-01-13
5301
5302Add the concept of overlay maps to the code. An overlay map is a map which
5303is loaded on top of another map, replacing values in the header, and placing
5304objects on top of other objects. This is the fundamental part of the new
5305weather code, but also can be used to allow dynamic editing of the worldmaps
5306by DM's eventually.
5307garbled 2002-01-01
5308
5309server/spell_effect.c: fix animate_bomb so that if the bomb is in a container,
5310 it does not crash the server - the problem was that it was calling
5311 drop, which would then drop it right back into the container. also, the
5312 x and y coordinates were not being properly set.
5313MSW 2001-12-31
5314
5315This change lets the server have multiple image sets. The client
5316can then request which image set to use, and the server will use
5317that image set, falling back to other sets as necessary. I have tested
5318this with CVS client, and works fine at least in terms of old functionality.
5319=
5320doc/Makefile.in: Add images file which describes image guideline.
5321doc/Protocol: Various updates - some things missing, added other notes
5322 about facesets.
5323doc/images: New file, describes guidelines for image sets, as well
5324 as some of the internals
5325include/newserver.h: Update for multiple image set - redid most of the
5326 image definitions as they were out of date with only png being supported.
5327include/sockproto.h: rebuilt
5328lib/Makefile.in: remove crossfire.png, add crossfire.0, crossfire.0. Update
5329 build directions to use crossfire.0 instead of crossfire.png
5330lib/adm/collect_images.pl: Modified to collect all the image sets, remove
5331 support for collect xpm and xbm images.
5332lib/crossfire.0: new file, base images
5333lib/crossfire.1: new file, alternate images
5334lib/image_info: New file, describes image sets.
5335lib/crossfire.png, lib/xpmtopix.pl.in: Removed - no longer needed.
5336socket/Makefile.in: add image.c file.
5337socket/image.c: Moved all image related data in this file - this includes
5338 loading the image files, as well as the protocol commands.
5339socket/init.c: move read_client_images to image.c file. set ns->faceset
5340 and ns->facecache to 0. Move freeing of image data to image.c
5341socket/request.c: fixed some indentation inconsistencies.add setup commands
5342 for faceset as facecache. Move SetFaceMode,SendFaceCmd,esrv_send_face
5343 to image.c file.
5344MSW 2001-12-31
5345
5346common/loader.l, common/loader.c, common/object.c, include/object.h,
5347 socket/item.c:
5348 Remove sub_type and sub_type2 information -
5349 these were poorly named fields and not properly implemented.
5350common/treasure.c: Add missing return type to change_treasure function.
5351crossedit/Edit.c: Add SET_MAP_FLAGS macro to set P_NEED_UPDATE flag
5352 before calling update_position.
5353include/config.h: Add NEW_WORLD_MAP selection which results in proper
5354 emergency save paths if you are using the maps-bigworld distribution.
5355server/c_wiz.c: Fix the formatting (indentation) of the command_create
5356 function. No actual changes in how it runs, but the old
5357 formatting was really terrible and inconsistent.
5358server/main.c: remove call to send_mapstats_cmd
5359server/monster.c: Update the comment style to be proper, as well
5360 as the comments themselves.
5361socket/request.c: Fix up improper indentation in esrv_update_stats.
5362 remove send_mapstats_cmd function.
5363MSW 2001-12-23
5364
5365Lots of changes here. Basically implement a night and day system, as
5366well as tracking of game time. A clockdata file is now created and
5367updated by the server to increment time. Time increases by 1 hour,
5368approximately every 2 minutes of real time. Right now this code has
5369virtually no effect, but as maps are updated with outdoor settings,
5370nightfall will occur automatically. The time command has been modified
5371to show the current game time, and the clock objects have been changed to
5372show the game time as well.
5373garbled 2001-12-18
5374
5375common/map.c: Fix some bugs relating to map tiling. MSW 2001-12-16
5376
5377common/object.c random_maps/Makefile.in
5378 server/c_wiz.c server/player.c server/plugins.c server/timers.c
5379 socket/request.c: Most of the changes are to just fix compiling warnings
5380 or errors so that it compiles on sparc solaris with the workshop
5381 compiler (things like }; should just be }). Declaration for alphasort
5382 was missing in plugins.c. random_maps/Makefile.in had the wrong order in
5383 linking - the system library needs to be linked in after the crossfire
5384 libraries.
5385crossedit/App.c: Fix for running on 8 bit color - colormap was not being
5386 initialized to usuable default value.
5387crossedit/xutil.c: Broken code when duplicating faces for undefined
5388 images. That code should never really be used, as pixmaps currently
5389 are always contiguous.
5390MSW 2001-12-15
5391
5392
5393Include mapstats cmd for extended clients (sdl iso). Cmd is needed for automaps
5394 ambient media infos, map name and map parameter infos. Paramter infos are used
5395 for "fire & forget" animation tags inside the map2 cmd (next patch).
5396server/main.c: include a automatic mapstats cmd every time the player enters a new map.
5397 Its the "default" mapenter cmd. The script event should used for special cases.
5398include/sockproto.h and socket/request.c: include the mapstats cmd function.
5399MT 2001-12-03
5400
5401This checkin for the most part removes support for xpm and xbm graphics -
5402 now the only image supported is the png.
5403common/arch.c: comment out printing on warning of object having no type -
5404 getting 300 meaningless messages at startup is annoying.
5405common/image.c: Remove X11 color information from colorname array. Remove
5406 processing of color_fg and color_bg information from face file - only
5407 use color_fg if no magicmap information is available - foreground
5408 and background infoformation was only needed for bitmap graphics.
5409common/loader.c, loader.l: Add elevation element, comment out some logging
5410 messages that are excessive and only really relevant for people
5411 who want to fix them (really should be in the collect script
5412 anyways). Remove some unused code.
5413common/map.c: add outdoor field to map structure - add support for loading
5414 and saving it.
5415crossedit/App.c,crossedit/CrUtil.c, crossedit/Defines.h, crossedit/crossedit.c
5416 crossedit/xutil.c: Remove support for non png graphics.
5417crossedit/Attr.c: Add support for elevation variable, remove code for non
5418 png graphics.
5419doc/map-technical: Add note about outdoor field.
5420include/face.h: remove fg, bg fields from face struecture.
5421include/global.h: Update colorname array definition.
5422include/loader.h: Add V_ELEVATION field.
5423include/map.h: Add outdoor field to map structure.
5424include/newserver.h: Update types so it only loads/knows about png information.
5425include/object.h: Add elevation field to object structure.
5426lib/Makefile.in: Remove support for building crossfire.xpm and crossfire.xbm
5427 files.
5428lib/animations, lib/archetypes, lib/bmaps, lib/bmaps.paths, lib/crossfire.png,
5429 lib/faces: Rebuilt. Main difference is a few sea types, and the fact
5430 that it hadn't been collected for a while.
5431server/spell_effect.c: Modify dimension door so that it calls MapNewmapCmd
5432 so that fog of war does not get confused. Also, removes call to
5433 draw as functions further up will do that.
5434server/spell_util.c: Remove color information from attack information that
5435 shuffle_attack uses.
5436socket/init.c, socket/request.c: Remove support for non png images.
5437MSW 2001-12-02
5438
5439Various minor bugfixes -
5440common/loader.c: rebuilt
5441include/map.h: Change width,height,enter_x,enter_y to be 16 bit instead
5442 of 8 bits.
5443lib/treasures: change skull treasure to tooth instead of skull_tooth since
5444 the later is not currently in the distributed archetypes file
5445server/monster.c: Optimize some code, remove some other that is not used.
5446server/plugins.c: Fix un initialized value in initPlugins that would
5447 cause crash at startup if plugin directory does not exist.
5448MSW 2001-11-13
5449
5450common/object.c: Modify copy_owner so that if a player is passed in
5451 as the object to copy, we properly set that player as the owner of the
5452 object instead of returning. This fixes the lack of exp when poison
5453 inflicted from a weapon kills something. MSW 2001-11-05
5454
5455common/map.c: Fix bug in get_rangevector which was causing reverse
5456 of documented procedure. This also resulted in monsters not attacking
5457 adjacent creatures with physical attacks. MSW 2001-11-03
5458
5459Add weapontypes to the game. These are currently used for nothing other
5460than messages, which are not fully written yet. Players should not see them
5461appear yet.
5462Fix the bug where you opened a door with a key and saw "You ."
5463Fix a bug in the PLUGIN code where current_weapon wasn't set when the
5464player loaded from savefile.
5465Take the setting of current_weapon out of #ifdef PLUGIN
5466garbled 2001-10-31
5467
5468server/spell_util.c: Add out_of_map check to can_see_monsterP. Fixes
5469 crash when casting ball lightning/divine shock (and likely other events)
5470 on maps not surrounded by walls. MSW 2001-10-07
5471
5472New attacktype messages for damage. Now it gives you the message for the
5473damage type you actually did. So if you are attacking with stormbringer,
5474you get electrical or drain-based messages. Also added special messages for
5475the attack-based skills like punching, karate, etc.
5476garbled 2001-10-06
5477
5478common/map.c: Add INS_ON_TOP flag to insert_ob_in_map calls to preserve
5479 stacking order. Modify update_position to generate map spaces with
5480 more proper order.
5481common/object.c: Modify insert_ob_in_map so that it preserves stacking
5482 if INS_ON_TOP is set.
5483crossedit/CrEdit.c: Add missing code that would draw third face on a space.
5484include/object.h: Add INS_ON_TOP flag/define.
5485random_maps/exit.c: Modify code so that if the random maps leading to
5486 a special map are reset, they will properly link in with an already loaded
5487 final map (and update exit from final map back up) as needed. Also fix
5488 bug in that if the final map has been reset, a new one will now be properly
5489 loaded.
5490random_maps/random_map.c:Update minimum size to be 7 (up from 6) - fixes
5491 bug which caused crashes when square_spiral maps of 6x6 would fail to
5492 generate.
5493random_maps/random_map.h,random_maps/room_gen_onion.c: move OPT_values from
5494 room_gen_onion to random_map.h since the square_spiral code uses them.
5495random_maps/square_spiral.c: Update call to map_gen_onion to use
5496 OPT_.. values instead of constant integer.
5497random_maps/treasure.c: Add some casts to sprintf statements to eliminate
5498 some compiler warnings.
5499server/main.c: Modify enter_exit code such that a random map has
5500 reset, we generate a new random map. This can happen when the random_map
5501 resets before the map that leads to them resets.
5502MSW 2001-10-06
5503
5504Add a new command category called communications commands. Place tell,
5505shout and say in here. Also create emotion functions. These functions
5506have no real effect on the game, but make communications between players
5507more colorful and fun. They are mostly fluff. Included with this patch
5508are two new convenience functions, new_info_map_except, and
5509new_info_map_except2, which allow the programmer to write to an entire
5510map, except for certain individuals.
5511
5512garbled 2001-09-27
5513
5514Add complete processing code for luck. This new code removes all
5515previous instances of luck, and adds a few new convenience utilities.
5516Now, every die roll in the game is affected by luck in some small way.
5517This causes luck to be an intangible benefit to the player, without
5518totally unbalancing the game. The new functions are random_roll,
5519die_roll, and rndm, which should be used in place of RANDOM() whenever
5520possible.
5521
5522garbled 2001-09-26
5523
5524This checkin mainly fixes multipart teleporters - they should now
5525work properly. Also a minor fix to make the new pickup code work.
5526server/apply.c: apply_shop_mat rewritten to be more 'presentable'.
5527 Minor changes were needed in any case to pass the player/creature
5528 a a second object to teleport.
5529server/c_object.c: change the sscanf to be unsigned when getting value
5530 for new pickup mode. At least on my system, if the value in the
5531 string was larger than the max signed value, sscanf set it to the
5532 max value.
5533server/move.c: teleport function largely re-written. Instead of the
5534 third arg being the 'originator', it is now the object to teleport.
5535 This allows the head of the teleporter to get passed to this function
5536 even if the object to teleport is not on the head.
5537server/time.c: move_teleporter modified to also check for objects on the
5538 other parts of multipart teleporters. Also, pass the head object
5539 to the teleport function so that proper destination is used.
5540MSW 2001-09-02
5541
5542Add Nils Lohner patch that new selections to the pickup mode.
5543
5544include/define.h: Pickup type defines added.
5545include/player.h: Change mode (pickup mode) to 32 bits.
5546server/c_object.c: command_pickup function modified to support all
5547 the new pickup options.
5548server/player.c: Fix for path_to_player to prevent crashes. Add check
5549 in move_player_attack just in case. check_pick function modified to
5550 support new pickup options. do_some_living modified to eat flesh
5551 items if player is starving and they don't have any food.
5552server/spell_effect.c: cast_detection modified so that detect magic/curse
5553 will not show objects beneath the floor. Change so that detect_monster
5554 and detect_evil spells copy the face of what they detected - gives better
5555 appearance on client.
5556socket/item.c: fix bug LookAt that ws checking blocked_los on wrong
5557 offset.
5558MSW 2001-08-28
5559
5560Enhancements to make monsters 'do the right thing' with relation
5561to tiled maps (ie, will detect players and attack them if on an adjoining
5562tiled maps). This involved a rewrite of path_to_player - I've tested this
5563out, and if anything, it seems that monsters may be more aggressive on
5564spellcasting.
5565++
5566common/map.c: blocked modify to make sure it is checking valid coordinate
5567 value. blocked_link,blocked_two modified to translate for tiled maps.
5568 Add load_and_link_tiled_map which loads a tiled map and links in all
5569 pointers relative to adjoining maps. out_of_map modified to use
5570 this function instead of doing the work itself. Add get_rangevector
5571 function that returns offset, direction, and distance between two
5572 objects, taking into account tiled maps. get_rangevector_from_mapcoord
5573 added which is similar to get_rangevector, but takes a map and coordinates
5574 instead of a second object. on_same_map function added which returns
5575 true if the two objects are on the same logical (ie tiled) maps.
5576doc/crossfire.doc: Add note about what Int does for monsters.
5577include/map.h: Add some comments, and add structure for rangevector
5578 function return values.
5579server/attack.c: add calls to on_same_map instead of doing op->map
5580 comparisons.
5581server/monster.c: Many functions modified to properly handle tiled
5582 maps properly.
5583server/pets.c: get_pet_enemy modified to know about tiled maps.
5584server/player.c: get_nearest_player modified to know about tiled maps.
5585 path_to_player rewritten to know about tiled maps - I think some other
5586 bugs were also fixed in return values. Split player_attack_door
5587 from move_player attack to keep functions a more reasonable size.
5588 move_player_attack, player_can_view modified to know about tiled
5589 maps.
5590server/skills.c: can detect_enemy modified to take another parameter -
5591 call in steal updated to pass this parameter.
5592server/spell_util.c: ok_to_put_more, can_see_monsterP modified to
5593 handle tiled maps properly.
5594socket/item.c: look_at modified to return proper results when player
5595 looks at something on an adjoining tiled map.
5596++ End of checkin
5597
5598common/object.c:decrease_ob_nr modified to correctly update client when
5599 player uses item from container that is on the ground (bookshelf for
5600 example)
5601server/time.c: move_teleporter modified to skip over wall/floors and
5602 teleport whatever is above them.
5603MSW 2001-08-05
5604
5605common/map.c: modify link_multipart_objects to preserve name and title of
5606 head when making the more parts. modify update_position so that it should
5607 never show an invisible face to the player.
5608common/object.c: fix check_walk_on so that spells will now properly get
5609 affected by spinners and directories.
5610include/sockproto.h: Rebuilt to include MapNewmapCmd
5611server/hiscore.c: Fix crash if player savebeds map on map which does not
5612 have a name. Use the path instead.
5613server/move.c: modify teleporter function to send MapNewmapCmd to client
5614 if player got teleported. Needed for fog of war code.
5615server/time.c: modify move_teleporter so that it will not teleport walls.
5616socket/Makefile.in: Modified to use cproto to generate proto files.
5617MSW 2001-08-04
5618
5619
5620common/Makefile.in crossedit/Makefile.in doc/Makefile.in
5621doc/playbook-html/Makefile.in doc/spoiler/Makefile.in
5622doc/spoiler-html/Makefile.in lib/Makefile.in lib/crossfire.png
5623random_maps/Makefile.in socket/Makefile.in utils/Makefile.in: Fix up
5624so that distclean now clears out all appropriate files - MSW 2001-08-01
5625
5626common/map.c free_map Set in_memory status to MAP_SWAPPED - fixed bugs of maps
5627 not getting reset properly
5628common/object.c: insert_ob_in_map - was passing wrong value to check_walk_on,
5629 resulting in some things not working as expected.
5630doc/Protocol: Clarify how the sending of the version command works.
5631server/move.c: move_ob redone. It should hopefully be more efficient (only'
5632 remove objects after verifying they can in fact move). IMO, code is
5633 also simpler, and hopefully has fewer bugs.
5634socket/init.c: InitConnection - modified to set faces_sent[0] to one
5635 so that we will never send any information about face 0 to the client.
5636 facecode 0 is sent in the map1 command to clear spaces/layers.
5637MSW 2001-07-30
5638
5639Added support for the newmap cmd needed for the fog_of_war code
5640in the gtk client.
5641include/newserver.h: added newmapcmd:1 to NewSocket struct
5642server/main.c: added call to MapNewmapCmd in enter_map()
5643socket/init.c: init code for new newmapcmd value in NewSocket
5644socket/request.c: deal with "newmapcmd" value in client setup string
5645 Added MapNewmapCmd( player* pl) function.
5646SMACFIGGEN 2001-07-21
5647
5648
5649common/object.c: remove_ob - set P_NEED_UPDATE before calling update_position
5650to prevent warnings from update_position being called with P_NEED_UPDATE
5651being set. MSW 2001-07-19
5652
5653socket/request.c: Fix bug in map1 command which resulted in it sending
5654too much data with even maps. For example, if the client requested
5655a 16x16 map, the server would effectively send a 17x17 map to the client.
5656MSW 2001-07-19
5657
5658+++
5659Major redo of map code:
56601) Remove encounter map support (with the much better random map code,
5661 I don't see much reason for it)
56622) Remove map_ob from map structure, and instead store relevant information
5663 in map structure itself. Remove strange meanings (stand_still meaning
5664 fixed reset time for example)
56653) Redo internal structure of map and how information on each space was
5666 stored - this should make future extensions much easier, as well
5667 as making debugging easier.
56684) Make USE_LIGHTING standard part of game.
56695) Redo how lighting objects are handled - instead of making a linked list
5670 of the light giving objects, at field to mapspace that contains
5671 lightsource for the space.
56726) Rewrite insert_ob_in_map to take optional parameter that determines
5673 other behaviour. This replaces insert_ob_in_map_simple.
5674 Function now does sorting of some objects, so performance for lots of
5675 spell objects on one space should be much better.
56767) Change how multipart objects are saved. Now only save the head, and
5677 link in the rest of the parts when map is loaded. Additional parts
5678 linked in are put just above floor level when linked in, so things like
5679 shops won't hide items that someone drops on them. For monsters, this
5680 linking shouldn't be a problem - once they start moving, they will get
5681 relinked as normal (on top).
56828) Modify update_object to only call update_position when necessary
5683 (ie, space attributes change). Otherwise, let the map transmission
5684 code call update_position when necessary (ie, in players view) - this
5685 saves cpu time as time will not be spent updating spaces that no one
5686 will see (before, how the space looks was updated whenever a space
5687 had an object added or removed).
5688
5689TODO: remove some things that have now been done.
5690common/Makefile.in: Remove ltostr.c and sqrt.c from list of files
5691common/ltostr.c, common/sqrt.c: Moved into porting.c
5692common/anim.c, common/button.c, common/item.c: Update calls to update_object
5693common/living.c: have fix_player calculate light value for player/monster.
5694common/logger.c: Remove code that has server exit if too many LOG messages
5695 happen too quickly. This was not a reliable mechanism, and it should
5696 really be up to the functions doing the logging to know if they can
5697 continue or not.
5698common/los.c: Changes on how it deals with lighting on maps - get light
5699 value from map space array instead of using the linked list. Functions
5700 that managed the light list have been removed. Change logic of
5701 line of sight function to be more efficient (before, we may examine
5702 the same space multiple times). rename update_all_los to
5703 update_all_map_los, and change update_all_los to take coordinates
5704 so that we only have clients within view of the change recalculate
5705 los. Also, have update_all_los check for tiled maps that may have
5706 clients that need to get updated.
5707common/map.c: remove refresh_map - this used to be used to try to recover
5708 from map errors if many_cores was not set - IMO better to core and
5709 just restart and really fix the error than try to deal with possible
5710 corruption that may otherwise result.
5711 Move open_and_uncompress and close_and_delete functions to porting.c -
5712 they are 'common' functions that are not related to the map code.
5713 Remove some lighting related code, as that is no longer done with
5714 a list. Many modifications because of new map structure. And
5715 logic to load and save the new map structure format. Modify
5716 many of the functions to take map tiling into account. Change
5717 way multipart objects are saved, and add logic to relink objects
5718 when maps are loaded up. Remove some functions that are only
5719 used by the editor into the editor. Move update_position from
5720 object.c to map.c as it is better placed in map.c. Modify
5721 function to figure out light for a space. Make out_of_map a
5722 function that knows about map tiling. New function - get_map_from_coord
5723 which knows about map tiling and does coordinate and map translation.
5724common/object.c: Have update_object take another parameter which tells
5725 update object what has changed about the object. This lets the function
5726 know if it should call update_position right away or if it can just
5727 mark the space as needing an update at a later time. move update_position
5728 to map.c.
5729 insert_ob_in_map: now takes another parameter that describes actions not
5730 to do. modified to know about map tiling and do appropriate translation.
5731 Does some object sorting so it should handle spell objects more
5732 efficiently.
5733 insert_ob_in_map_simple is now replaced by
5734 using appropriate flag to this changed version of insert_ob_in_map.
5735 Clean up remove_ob - seemed to have done things in a more complicated
5736 fashion that is no longer necessary. Modify check_walk_on to look
5737 at all objects on space, not those below the object - with changes to
5738 insert_ob_in_map, new object won't always be on top.
5739common/porting.c: functions from ltostr.c, sqrt.c, as open_and_uncompress
5740 close_and_delete, make_path_to_file from map.c
5741common/treasure.c: Modified to use updated insert_ob_in_map
5742crossedit/Attr.c: Rename Layout to AppLayout so other files can use it.
5743crossedit/CrEdit.c: Modified to use new map header. Modified drawing
5744 routines, as face values could be null
5745crossedit/Edit.c: Move many functions from common/map.c that are only
5746 used here and thus don't need to be in common/map.c. Modify to use
5747 new map structure.
5748crossedit/Makefile.in: Change to use cproto to make proto.h file.
5749crossedit/png.c: change user_read_data to be static so proto doesn't pick
5750 it up.
5751doc/Makefile.in: add map-technical to list of files.
5752doc/crossfire.doc: remove map information that was in this file.
5753doc/map-technical: new file. Describes inner workings of how the maps work.
5754include/config.h: remove RANDOM_ENCOUNTERS (no longer available) and
5755 USE_LIGHTING (now standard part and always on).
5756include/define.h: move P_... values to map.h
5757include/global.h: add definition for compression externals, as they
5758 are used in a few files. remove map macro functions - moved to map.h
5759 as appropriate. Add FREE_AND_CLEAR macro that frees data and then
5760 sets the pointer to NULL.
5761include/map.h: Largely redone - many new macros, new map structure.
5762include/object.h: remove lights object link pointer from objects.
5763 At some #defines that are the flags for update_object and
5764 insert_ob_in_map
5765include/player.h: Add a few comments.
5766random_maps/decor.c,random_maps/door.c, random_maps/exit.c,
5767 random_maps/floor.c,random_maps/monster.c,random_maps/special.c,
5768 random_maps/standalone.c, random_maps/style.c,random_maps/treasure.c,
5769 random_maps/wall.c:
5770 modified to use modified insert_ob_in_map function,
5771 use new macros to access map structure related data
5772server/Makefile.in: Remove encounter.c file. Use cproto instead of
5773 cextract to create proto file.
5774server/alchemy.c,server/attack.c,server/c_object.c,server/c_wiz.c,
5775 server/disease.c, server/login.c, server/main.c, server/monster.c,
5776 server/move.c, server/pets.c, server/player.c, server/resurrection.c,
5777 server/rune.c, server/shop.c,server/skill_util.c, server/skills.c,
5778 server/spell_effect.c, server/spell_util.c, server/swap.c, server/time.c
5779 modified to use modified insert_ob_in_map function,
5780 use new macros to access map structure related data.
5781 change calls to update_all_los, remove lighting related code.
5782server/apply.c: modified to use new insert_ob_in_map function. Update
5783 calls to update_object. remove RANDOM_ENCOUNTER code.
5784 for exits, modified to use the head for valid coordinates since the
5785 other parts may not have valid values since they are not saved out to
5786 disk anymore.
5787server/c_misc.c,server/hiscore.c: modified to use new map
5788 structure/information.
5789server/commands.c: remove dumplights command.
5790server/encounter.c: removed - code no longer used
5791server/init.c: remove RANDOM_ENCOUNTERS code.
5792server/script.c: change Script_getMapObject to return NULL since there
5793 is no longer a map object. Modify to use new insert_ob_in_map and
5794 update_object functions.
5795socket/info.c: Modified to use new map structure/macros
5796socket/request.c: Modify draw_map_routines to use get_map_from_coord so
5797 that it properly deals with tiled maps. Modified to deal
5798 with potentially NULL face values. Modified update routine to
5799 call update_position for spaces within player view which need an
5800 update
5801MSW 2001-07-13
5802+++
5803
5804
5805common/object.c, common/player.c, include/object.h, server/skill_util.c:
5806 Remove the unused LINKED_SKILL code.
5807common/Makefile.in: Use cproto to make prototypes - cextract fails for
5808 some reason and now seems unsupported. Cproto generates a bunch
5809 of warnings, but does do the job.
5810common/arch.c,server/apply.c, server/main.c, server/monster.c: cleanup some
5811 compile warnings (unusued variables, returns without value
5812doc/playbook/Makefile.in: Create proper dependencies for files.
5813doc/playbook/treas2-extract: Add player_force to value to ignore.
5814doc/spoiler-html/spoiler.html: rebuilt
5815server/skill_util.c: Remove the unused LINKED_SKILL code. Prevent
5816 characters that have meditation skill from learning melee weapon skill.
5817MSW 2001-06-28
5818
5819doc/Protocol: Add 'darkness' setup option documentation.
5820include/newserver.h: add darkness element to socket structure.
5821include/script.h,server/script.c: remove static declaration from script.h,
5822 move it to script.c
5823socket/init.c: init darkness element in socket structure.
5824socket/request.c: Add support in setup command for client to set if it
5825 wants darkness information or not. Modify map update functions such
5826 that if the client does want darkness information, server does not
5827 send it. Improve darkness handling so that if using the map1
5828 protocol command, send darkness for first blocked space due to
5829 darkness - this makes it possible for client to interpolate results
5830 better.
5831MSW 2001-06-16
5832
5833common/item.c: Add boots and gloves to items which are not magical just
5834 because they have resist physical. This bug resulted in most all boots
5835 and gloves being shown as magical, even though they had no special
5836 properties.
5837socket/request.c: remove some dead code. Memset entire map cell
5838 to zero when scrolling and the map is cells is one that was not in
5839 view. This fixes redraw problems when using large viewable maps.
5840MSW 2001-06-11
5841
5842doc/Protocol: update information for the mapcmd, add map1cmd to
5843 section of setup commands.
5844include/newserver.h,socket/init.c: add map1cmd element to socket structure that
5845 determines which protocol (map,map1) will be used for sending the
5846 map.
5847socket/request.c:add 'map1cmd' to list of setup options. when sending
5848 the map, use the map1cmd element to determine what protocol command
5849 to use to send it.
5850MSW 2001-06-07
5851
5852server/shop.c: Fix bug that resulted in items in shop being paid,
5853as well as not generating proper listing. MSW 2001-06-06.
5854
5855Checkin of code that supports larger map sizes (configurable in
5856config.h).
5857common/los.c: update los code since it only handled 11x11 maps. Now
5858 uses formulatic approach so any map size should be supported. This
5859 does result in a few more spaces getting blocked around corners,
5860 but it doesn't seem that bad - certainly not compared to the ability
5861 to have larger viewable maps.
5862common/map.c, crossedit/CrEdit.c, crossedit/Edit.c, include/global.h,
5863 include/map.h,random_maps/monster.c,random_maps/special.c,
5864 random_maps/standalone.c, server/apply.c,server/c_misc.c,
5865 server/spell_effect.c,socket/info.c:
5866 change mapx,mapy to what they really point to,
5867 as it prevented using those as variable/structure element names.
5868common/object.c: update_position - if faces for different layers are
5869 duplicate, set the duplicates to be blank to increase client
5870 update efficiency.
5871doc/Protocol: Add map1 command description, update setup command to
5872 describe setting of mapsize.
5873include/config.h: add MAP_CLIENT_X/Y to set maximum map size we can
5874 send to the client.
5875include/newserver.h: add mapx, mapy values to socket structure
5876include/player.h: Use MAP_CLIENT_X/Y for sizing arrays that hold
5877 map related information in player structure.
5878server/player.c: As per player.h above, use appropriate sizing when
5879 initializing player stucture.
5880server/shop.c: Update mapx,mapy like above, but re-do shop listings code as
5881 it was doing a lot more work than necessarily (I think some changes
5882 got put in for sorting, and the old object manipulation was never
5883 removed when that got done)
5884socket/init.c: set default client map size to 11x11 in the socket.
5885socket/item.c: LookAt - change checks for position checking (such that
5886 you can only look at things in bounds) use max viewable map size.
5887socket/request.c: Make setup commands a little more forgiving if there are
5888 extra spaces. Add 'mapsize' command to setup command. Update
5889 old map sending code to use socket map sizes (to support even
5890 smaller than normal maps, or 13x13 or 15x15 maps). add draw_client_map1
5891 command which implements the map1 protocol command.
5892MSW 2001-06-03
5893
5894random_maps/treasure.c, wall.c: fix a problem where hidden doors
5895surrounding a treasure could destroy exits. --PeterM 5/31/2001
5896
5897Make ALLOW_SKILLS standard part of game (remove #ifdef's for it)
5898Files affected: common/living.c common/object.c common/treasure.c
5899 include/config.h include/player.h server/apply.c server/attack.c
5900 server/c_move.c server/c_range.c server/c_wiz.c server/commands.c
5901 server/init.c server/login.c server/monster.c server/player.c
5902 server/rune.c server/skill_util.c server/spell_util.c
5903Make MULTIPLE_GODS standards part of game (remove #ifdefs for it)
5904Files affected: common/readable.c include/spellist.h include/config.h
5905 server/attack.c server/gods.c server/skills.c server/spell_effect.c
5906 server/spell_util.c
5907doc/Makefile.in, doc/Protocol: Add protocol description file here instead
5908 of in the client distribution.
5909include/global.h: Move declaration of MAX_EXP_CAT near top of file
5910 so it is set before player.h is included.
5911include/newclient.h: Add CS_STAT_SKILL* values for sending skill
5912 experience information to client.
5913include/newserver.h: Add skillexp value to socket struct which determines
5914 if client wants skill experience informatiion.
5915include/player.h: Add skill information tracking to player structure
5916 so we can easily know when to send updates to client.
5917random_maps/expand2x.c: remove unused variable to prevent compiler warnings.
5918random_maps/square_spiral.c: Include prototype information on all systems,
5919 not just win32 to prevent compiler warnings.
5920server/skill_util.c: Initialize skill pointers to make it easier to
5921 find skill information when we want to update client.
5922socket/init.c: Init socket->skillexp to 0.
5923socket/loop.c: Fix indentation of table - whitespace change only
5924socket/metaserver.c: Minor fix to prevent compile warnings (on the sprintf
5925 that composes the data to send to the metaserver)
5926socket/request.c: Redo SetUp function to be more compact and IMO simpler as
5927 wll as easier to read (functionality remains the same).
5928 VersionCmd modified to warn users of on dxclients (code on MT)
5929 StatsCmd added to send skill information if client wants it.
5930The sending of skill experience is by MT, rest of the changes by me.
5931MSW 2001-05-28
5932
5933common/readable.c: When making recipe books, give the recipe that they
5934 are for in the title. Makes it more worthwhile to buy them.
5935lib/treasures.c: Increase the chance of readables in chests some (in fact,
5936 add a chance.)
5937MSW 2001-05-25
5938
5939lib/artifacts: Reduce potency of Poison artifact foods.
5940server/apply.c: When eating poison artifact foods, hit player with poison
5941 attacktype instead of just subtracting hp. This way people with
5942 poison resistance get proper benefit. MSW 2001-05-24
5943
5944doc/metaserver, doc/Makefile.in: Add metaserver file which describes
5945 working of metaserver and format of data fields.
5946socket/metaserver.c: Add reporting of inbytes, output bytes, and uptime in
5947 seconds to notification of metaserver
5948MSW 2001-05-24
5949
5950server/player.c
5951common/living.c
5952include/libproto.h: New experience loss on death policy implemented.
5953(As per consensus.) 3 levels or 20%, whichever is less.
5954 --PeterM 5/24/2001
5955
5956server/spell_util.c: Fix typo in polymorph code (when enabled in config.h)
5957MSW 2001-05-24
5958
5959server/disease.c: replace disease->owner check with get_owner.
5960MSW 2001-05-24
5961
5962server/pets.c: pet_move - fix formatting to be 4 space indentation.
5963 if we remove the monster, free it here instead of having move_monster
5964 do it. Add check for was_destroyed after first call to move_ob -
5965 crashes have been observed in that function, and I believe that is the
5966 cause.
5967server/monster.c: move_monster: let pet_move free the pet if necessary.
5968server/spell_effect.c: Clear sleeping flag of monsters when casting
5969 summon pet monster (or other creatures). Some archs have this
5970 value on by default, so the monsters don't follow the player until
5971 an enemy is found.
5972MSW 2001-05-22
5973
5974socket/item.c: Don't raise player to top of stack when they look at
5975 something. I think this may be causing server crashes in some
5976 circumstances - plus its not really needed anyways.
5977socket/loop.c: block_until_new_connections: Add call to flush_old_maps
5978 so maps are reset while waiting for a new player.
5979MSW 2001-05-22
5980
5981configure.in, configure: Fix png and Xpm library detection. Suggested
5982patch by Yann Chackhoff, applied by MSW 2001-05-20
5983
5984
5985------------------------------------------------------------------------------
5986Changes for 1.0.0:
5987
5988common/living.c: Fix AC wrapping problem - now limit ac to +/- 120.
5989MSW 2001-05-12
5990
5991include/config.h: Add NO_POLYMORPH feature selection
5992include/spellist.h: If NO_POLYMORPH is set, make it so that polymorph will
5993 not show up in wands/rods
5994server/spell_util.c: Handling for NO_POLYMORPH selection
5995MSW 2001-05-11
5996
5997server/rune.c: Make sure rune message is newline terminated. Fix map
5998corruption problem. MSW 2001-05-10
5999
6000Various improvements to make finding memory leaks easier.
6001common/anim.c: Add free_all_anim function
6002common/arch.c: Modify free_all_arch to free more data
6003common/init.c: If running under MEMORY_DEBUG, don't pre-allocate objects.
6004common/map.c: Add free_all_maps functiion.
6005common/object.c: Modify object allocations if using MEMORY_DEBUG to only
6006 malloc one object at a time, and not pre-allocate objects.
6007common/readable.c: Fix memory leak.
6008common/shstr.c: Include autoconf.h so it can pull in dmalloc.h file.
6009include/config.h: Remove notes of what was removed a long time ago.
6010 Add MEMORY_DEBUG option.
6011include/libproto.h, include/sockproto.h, include/sproto.h: automatic rebuild
6012server/c_misc.c: Fix 'malloc info command so it reports right memory total
6013 for maps. Add command_style_map_info which sums up memory used by
6014 style maps.
6015server/commands.c: Add style_info wiz command which dumps memory usage
6016 for style maps.
6017server/init.c: Have sighup handler call cleanup function.
6018server/main.c: Fix clean_tmp_files which could result in crash if one
6019 of the maps in memory has 0 reset time. Modify cleanup function
6020 to free more data.
6021server/player.c: op_on_battleground: Fix compile warning about unuused variable.
6022socket/init.c: Change name of free_all_ericserver to free_all_newserver,
6023 have it free all face data.
6024MSW 2001-05-08
6025
6026socket/item.c: Modify look_at to not stop when it finds the first invisible
6027 object.
6028server/monster.c: Modify monster_check_pickup to check to see if the
6029 next object got destroyed. I'm not sure the exact way this happens,
6030 but I've seen one crash where this did happen - I'm guess some
6031 function further down in the monster_check_apply look may call
6032 this or destroy the item.
6033MSW 2001-05-01
6034
6035common/object.c: Add clear_owner function.
6036include/libproto.h: rebuild.
6037server/player.c: Modify op_on_battleground to look for battleground
6038 anyplace on space. Temp for for wall of thorns on space - as long
6039 as maps don't try to abuse the use of battlegrounds, should be OK.
6040server/time.c: Add clear_owner call to stop_arrow. Fixes problem of
6041 thrown objects not getting saved.
6042MSW 2001-04-28
6043
6044common/object.c: Have update_object map the look window for redraw if
6045 the object is not something the client normally animates (like a lever).
6046 MSW 2001-04-27
6047
6048server/apply.c: Modify apply_id_altar check for player - had a && instead of
6049 a ||.
6050socket/item.c: Modify ApplyCmd so a removed player can not apply objects.
6051 Fix crashes caused by players applying savebeds after they have
6052 used the bed. MSW 2001-04-26
6053
6054server/spell_util.c: have put_a_monster generate random monster
6055 abilities.
6056TODO, doc/mapguide: Various minor updates.
6057MSW 2001-04-25
6058
6059server/c_object.c: Pass right object to query_cost_string so that
6060 if you pick up an unpaid object into a container, it generates
6061 the correct price. MSW 2001-04-22
6062server/c_wiz.c: fix shutdown and reset_map wizard commands/function
6063 so they no longer crash the server. MSW 2001-04-22
6064
6065server/monster.c: add check to was_destroyed when monster fires an
6066 arrow. Call was certainly missing, and appears to be responsible for
6067 crash. MSW 2001-04-20
6068
6069server/player.c: Clear op->chosen_skill when we get to the play_again
6070 prompt. Otherwise, the server may try to use this later on, and it
6071 no longer points to a valid object, so it results in a crash.
6072 MSW 2001-04-19
6073
6074server/skill_util.c: Add missing call to out_of_map in skill_attack which
6075 could result in crashes if player is at edge of maps and decides to attack
6076 in direction off map. MSW 2001-04-18
6077
6078server/attack.c: Remove error message about golem without owners,
6079 also add better checking before clering the op->contr->golem field.
6080common/map.c: set status flag on maps to MAP_SAVING so remove_ob does
6081 not do extra work when we are deleting a map (ie, immediate reset)
6082 from emory.
6083server/skills.c: If someone is stolen from a player, send an esrv_delete_item
6084 to the client so the clients inventory remains correct.
6085MSW 2001-04-16
6086
6087common/re-cmp.c: Modify re_cmp functiion so that it properly matches
6088 strings not at the start 'ie, dude chain will now match against
6089 the chain value'.
6090server/monster.c: Properly alter direction monster moves if they are
6091 feared or confused. It was properly altering direction when monsters
6092 were using range attacks, but not if they were just wanting to move.
6093MSW 2001-04-12
6094
6095common/living.c: Don't use the last_heal object in experience objects as
6096 sp regen penalty. This should fix the problem of inconsistent sp regen
6097 rates - last_heal is used in experience objects if the permanent experience
6098 option is turned on. MSW 2001-04-11
6099
6100PeterM:
6101server/spell_util.c: fix peace so it gives experience
6102common/button.c: change the "error" to a "debug" message
6103 to reduce server crashing.
6104
6105------------------------------------------------------------------------------
6106
6107Changes for 0.98.0:
6108
6109server/skills.c: Modify inscription so that when inscribing cleric spells,
6110 it reduces grace. Before, reduced mana no matter the type of spell.
6111server/c_object.c: Fix bug in pick_up where it was not using the right
6112 count for picking up objects if the player did not specify one. This
6113 allowed players to put objects into containers that should not really
6114 fit.
6115server/player.c: Don't let players shoot arrows at themself. Also,
6116 minor changes to use new_draw_info_format.
6117server/swap.c: If recycle temp maps, don't save out random maps to
6118 get recycled. MSW 2001/04/07
6119
6120PeterM 2001/04/06:
6121include/libproto.h common/object.c server/apply.c server/spell_util.c
6122Added a new function: instead of stacking many burnout or firetrail
6123objects, only 1 per square is added. Real reduction in server overhead.
6124No reduction in cosmetic effect.
6125
6126common/porting.c: Fix compile warnings/bugs introduced by Win32 changes.
6127server/time.c: Modify move_player_mover so that it determines direction
6128 of the mover and then process accordingly, as well as formatting
6129 changes.
6130server/c_object.c: modify examine so that it properly shows info about
6131 magic bullet spell books. MSW 2001-04-05
6132
6133common/item.c: Modify identify function to clear the NO_SKILL_IDENT
6134 flag so objects will now merge. Also, once the object has been
6135 identified, the no_skill_ident doesn't have meaning anymore.
6136 MSW 2001-04-03
6137
6138server/c_object: Modify examine command to only be able to examine
6139 valid objects, and not whatever is on top of the space, which may be
6140 insivisible. MSW 2001-04-01
6141
6142include/sproto.h, server/c_wiz.c server/main.c server/player.c socket/loop.c:
6143Modify leave function to take a second parameter that determines if it
6144should print a message about the player leaving the game or not. Proper
6145use of this prevents duplicate XXX left the game messages. MSW 2001-03-29
6146
6147common/image.c, include/define.h, include/global.h: Add empty_face structure
6148 and appropriate code to initialize it. This is used for the server side
6149 look selection.
6150include/newserver.h: Add NUM_LOOK_OBJECTS to control number of look objects
6151 to send at any one time. add look_position field to the newsocket
6152 structure.
6153server/move.c: clear look position as player moves.
6154server/player.c: initalize look_position element in structure.
6155socket/item.c: modify esrv_draw_look to sne NUM_LOOK_OBJECTS at any one
6156 time, and to also send pseudo objects that lets the player scroll up and down.
6157 modify ApplyCmd so that if it detects the application of one pseudo objects
6158 to adjust the look_position.
6159MSW 2001-03-29
6160
6161common/readable.c: Name spellbooks based on level of spell, and not
6162 just randomly. Patch by Preston Crow, applied by Mark Wedel 2001-03-29
6163
6164configure, configure.in, include/autoconf.h, includes.h: add check for
6165 time.h and include it if we find it.
6166socket/item.c: esrv_move_object - have it check to see if the object is
6167 already on the ground before we try to re-drop it. Likewise, check
6168 to see if it is already in players inventory before we try to pick
6169 it up.
6170common/object.c: Don't send face updates to the client or make
6171 the space as needing to be redrawn. Client now deals with animation
6172 of the look window on its own.
6173utils/(metaserver.pl crossloop add_throw.perl crossloop.pl)
6174lib/(Makefie.in, checkarch.pl collect.pl xpmtopix.pl) - - deleted
6175 from CVS - '.in' versions of these files now exist and the real
6176 versions are created as part of the configure process. Update
6177 Makefile.in to reflect this change.
6178MSW 2001/03/28
6179
6180common/object.c: have update_position just update the flag that the
6181 server needs to send the look window to the client and don't send the
6182 item at this point, as sending the look will do that.
6183server/main.c: process_players1: Remove call to draw (which updates
6184 the client map) - the handle newclient in socket/loop.c already
6185 does this and there is no reason to send multiple instances of the
6186 same map.
6187MSW 2001/03/23
6188
6189server/c_object.c: drop_object function: send delete item to client as
6190 item is dropped. This fixes a problem of phantom objects in the
6191 inventory. Unrelated change to not call esrv_send_item for objects
6192 that are dropped - esrv_draw_look will get called later on and will
6193 update this at that time. MSW 2001/03/23
6194
6195server/c_object.c: Update the return value for some matches - they
6196 function was returning immediately when it got a match, but did not give
6197 them a high match value, so searching for 'key ring' used to return a
6198 match value of 6 or so on the key ring, but a 14 on a key.
6199
6200common/object.c: Modify find_free_spot to call arch_out_of_map so that
6201 it properly deals with multipart objects.
6202server/main.c: Fix enter_map so that we first use the golem (and not player)
6203 when calling find_free_spot. Also, modify code so that it properly
6204 updates coordinates of the multipart golem.
6205MSW 2001/03/20
6206
6207server/skills.c: Fix orate so that we check for a positive chance (and just
6208not nonzero chance) for successful oration. Due to adjustments, at low levels,
6209the oratory chance can be negative. MSW 2001/03/20
6210
6211server/spell_effect.c: Change cast_change_attr to find an enemy (and not
6212friend) when casting the curse spell. MSW 2001/03/20
6213
6214server/apply.c: Increase size of buf to be a HUGE_BUF to very
6215long item names don't cause a stack overflow. MSW 2001/03/20
6216
6217common/object.c: Modify update_position so that we don't show invisible
6218players to other players. MSW 2001/03/20
6219
6220------------------------------------------------------------------------------
6221Changes for 0.97.0:
6222
6223MSW 2001/03/18:
6224common/init.c: add RESET_LOCATION_TIME initializer to settings structure.
6225include/config.h: Add RESET_LOCATION_TIME value. If nonzero and the save was longer than
6226 the specified time in seconds, player will be returned home upon login from
6227 save.
6228include/global.h: Add reset_loc_time field to settings structure.
6229server/login.c: Remove some unused variables, add support to return player
6230 home as described above.
6231server/spell_effect.c: Fix for crashes when casting control undead and your
6232 god does not have an enemy. Now properly check to make sure we are not
6233 dereferencing null pointers.
6234
6235
6236MSW 2001/03/16:
6237Change code so that if player dies and loading the players savebed map does
6238not work, return player to EMERGENCY_MAPPATH instead. New function added
6239to server/main.c called enter_player_savebed which does the work,
6240Files changed: include/sproto.h server/main.c server/player.c
6241 server/spell_effect.c (comment added)
6242Unrelated change: Remove messages about multiple resist types set.
6243Files changed: common/loader.l common/loader.c
6244
6245MSW 2001/03/15:
6246server/spell_effect.c: Add physical attacktype when casting holy possession.
6247 Otherwise, characters who use karate end up not being able to damaage
6248 anything.
6249
6250MSW 2001/03/09:
6251crossedit/App.c: Move the loading of images to later in the editor
6252 startup state. In this way, the client can allocate the colors it
6253 needs for its windows before the the png images use up all the colors.
6254crossedit/png.c: New png loader implementation. New version is much
6255 faster (50 times faster). As part of this, only 8 bit displays,
6256 a private colormap will be allocated, and after that gets filled
6257 up, a color mapping routine will be used - this makes the png
6258 images loadable on an 8 bit system in addition to the speedup.
6259crossedit/xutil.c: Adding timing information for loading of images.
6260 call init_pngx_loader before starting to load png images. Pass
6261 colormap to png_to_xpixmap by pointer and not value so that
6262 the loader can change the colormap.
6263
6264AV 2001/03/09:
6265common/button.c: Added new attribute to altar triggers: "last_sp 1".
6266 If set, the altar trigger will push the connected value only
6267 by dropping the sacrifice, NOT by altar reset. If unset ("last_sp 0")
6268 it will work like it used to (push by sacrifice and by reset).
6269
6270MSW 2001/03/06:
6271server/spell_effect.c: Fix message when consecration fails - use the ob->name
6272 field and not the ob->title field. Also fix broken logic that checked
6273 for the floor.
6274server/init.c: Related to 3-4 change which changed the default name of
6275 the logfile to "" so we know to use stderr. This doesn't work for
6276 daemon mode, so if the name is "", we use the default logfile instead.
6277
6278MSW 2001/03/04:
6279TODO: add re-connecting player to new client if client logs in with
6280 right name/password.
6281common/init.c: Open up the logfile with the provide filename when given
6282 the -log option.
6283server/init.c: Make set_logfile a first pass option so the init_library
6284 has the right logfile name to work with.
6285server/main.c: Fix crash if map has an exit path yet that file does not
6286 exist. Give proper error message.
6287
6288
6289MSW 2001/03/01:
6290server/main.c: Modified random_map code so the server will not
6291 crash if the exit object has no message (and thus variables to set
6292 for the random map).
6293 Modified so that golems move away from player when player
6294 changes map. Values were reversed before, causing the golem to move
6295 towards the player.
6296
6297MSW 2001/02/25: General player login cleanup. This should fix the crash
6298 when players re-roll stats too often. So far, it also seems to
6299 have the additional effect that calculated players on map now appears
6300 to be correct.
6301common/player.c: No longer allocate the player object structure in
6302 get_player_ob (function is really misnamed). Callers to this function
6303 were not using the allocated function.
6304server/login.c: Add leave_map call when player is loaded.
6305server/main.c: Add leave_map function.
6306server/player.c: Move get_player function to start of file - can declare
6307 it static that way. Move some initialize from add_player to get_player.
6308 Add set_first_map function. Add appropriate calls to leave_map
6309 and set_first_map when players join and leaves the game.
6310
6311MSW 2001/02/22:
6312TODO: Add some items, remove some others, remove outline of future versions,
6313 since it was out of date.
6314common/loader.l,loader.c: Declare msgbuf a static outside the lex_load function.
6315 lex_load was otherwise clearing it each time it was called, which resulted
6316 in empty messages for the random artifacts (since the call lex_load one
6317 line at a time). Instead, we just zero this at start of load_object.
6318 Original reason of this change was due to purify errors - as I look at the
6319 code, it appears even before these changes that it was clearing the buffer
6320 properly.
6321common/map.c: removing pending field from map objects.
6322common/re-cmp.c: Comment out some code which was resulting in too many
6323 false compares.
6324include/config.h: increase default for MAX_OBJECTS. 6000 is a bit small
6325 on current systems.
6326include/map.h: Remove pending field from map structure.
6327random_maps/treasure.c: Increase size of doorlist. Fixes crash, in that
6328 if a random map could place 8 doors around the treasure, the list
6329 was not terminated, so the problem would eventually try to read/dereference
6330 random memory after the array.
6331server/c_misc.c: Remove pending field from maps, so remove functions
6332 and other places that referred to it (like the maps command)
6333server/c_wiz.c: fix up wiz map reset command. Not really tested, but
6334 old code had some definate problems just from visual inspection.
6335server/main.c: Further fix for unique exits - relative paths to unique maps
6336 from non unique maps should now work.
6337server/monster.c: Various fixes - one is that should get more reliable distance
6338 values for multipart monsters. Second, modify dist_att to calculate from
6339 closest part of monster, and not the head of the monster.
6340server/pets.c: Remove code dealing with pending objects.
6341server/player.c: Don't remove invisible objects in players inventory when
6342 playing with permadeath mode.
6343server/spell_util.c: If you try to cast denied spell, it no longer costs any
6344 spellpoints.
6345socket/item.c: Fix bug where it was using 'item' protocol command instead of
6346 'item1'
6347End of MSW 2001/02/22 checkin.
6348
6349------------------------------------------------------------------------------
6350Changes for 0.96.0:
6351
6352MSW 2001/01/11:
6353include/rproto.h: Rebuilt for new random map code.
6354server/player.c: remove player insert in key_roll_stat - player is already
6355 inserted.
6356server/swap.c: When swapping out map, see if it has already reached reset time,
6357 and if so, just delete it and not save it. In flush_old_maps, now have
6358 it check for maps that have no timeout set - this sometimes happens when
6359 players save/die on maps.
6360
6361
6362MSW 2001/01/11:
6363Other than various general cleanups, the main change this code does is
6364that style maps (for random maps) get loaded special now - they objects
6365they contain are not put on the active list, and they use a private map
6366list so they do not appear in the output of the 'maps command.
6367common/arch.c, common/treasure.c,server/login.c: Update calls to load_object
6368common/loaderl.l,loader.c: Update lex_load to take an optional flags option.
6369 This is currently only used so that the loader can decide if it should
6370 call update_ob_speedto put objects on the active list or not.
6371 Calls to lex_load updated. load_object modified to take another option
6372common.map.c: remove PROCESS_WHILE_LOADING and CHECK_ACTIVE_MAPS ifdefs.
6373 update calls to load_object. Remove some dead code.
6374include/config.h: Remove CHECK_ACTIVE_MAPS and PROCESS_WHILE_LOADING flags.
6375 Those options did not work, and in all likelihood, this would be done
6376 via threading now days and not what code was there.
6377include/libproto.h, sproto.h: updated or various function changes.
6378include/map.h: Add MAP_STYLE flag.
6379random_maps/exit.c: Call set_map_timeout after we load the final map
6380 so it will get swapped out.
6381random_maps/standalone.c: Add dummy set_map_timeout function so it compiles.
6382random_maps/style.c: Add load_style_map function which does the job of
6383 actually checking to see if a style map is in memory, and if not,
6384 loads it up. Updates the pointers so it appears on a map style map list
6385 and not the general map list.
6386server/main.c: create set_map_timeout function that deals with setting the
6387 map timeouts. Fix bug so server doesn't crash if two players kill each
6388 other on hall of selection.
6389server/monster.c remove dead code.
6390socket/loop.c: If realloc fails, catch it and exit with meaningful
6391 error message.
6392End of MSW 2001/02/11 checkin.
6393
6394MSW 2001/02/08:
6395server/login.c:Fix that would prevent maps from getting swapped out properly -
6396we would try to swap out a map the player is in the process of leaving - move
6397swap out code until after we have moved the player to the new map. MSW
63982001-02-08
6399
6400
6401MSW 2001/02/06:
6402common/porting.c: relocate clean_path from this file to server/main.c
6403server/main.c: relocate clean_path from porting.c. Add unclean_path.
6404 Modify enter_unique_exit so it supports relative maps on unique maps.
6405 Modify enter_exit so word of recall (or other forcelike fields), work
6406 when the return point is a swapped out unique map.
6407
6408MSW 2001/02/05:
6409server/attack.c: Fix blind and paralyze - logic for reducing duration was
6410 broken, resulting in zero duration for most characters. It should now
6411 work properly, reducing according to the amount of protection.
6412
6413
6414MSW 2001/02/02:
6415common/item.c: Don't have armour item types get returned as magical if they
6416 have an armour value - that is to be expected. This eliminates the false
6417 positives that you otherwise get on armor when you cast detect magic.
6418include/newserver/h: and checksum field to FaceInfo struct. Update
6419 version_sc to 1026.
6420socket/init.c: calculate image checksums as we load the images.
6421socket/request.c: If client is at least version_Sc 1026, use face1 protocol
6422 command that includes the checksum.
6423
6424MSW 2001/01/31:
6425common/object.c: Fix that that spells cast on spaces with no floors get
6426 set properly after the spell expires.
6427common/player.c: Use skill tools first (lockpicks, talismans, etc) before
6428 using native skills. In this way, an object with bonus automatically
6429 gets used.
6430common/living.c: Fix so that negative con bonuses work properly - fixes
6431 bug where a higher con could result in lower total hp due to improper
6432 calculation.
6433
6434MSW 2001/01/30:
6435Complete rewrite of the exit handling code. Hopefully as an effect, this will
6436fix the player appearing in the middle of the oceans. I think the code
6437should also work better in many other areas. Main enhancements is a 3x3
6438area for pets to follow player to new map, as well as golems now following
6439players to the new maps.
6440include/sproto.h, random_maps/rproto.h - rebuilt.
6441random_maps/random_map.c: Change generate_random_map to take a structure
6442 with the random map paremeters.
6443random_maps/reader.l, reader.c: Add set_random_map_variable function that
6444 reads the map parameters from a char buffer. Also, remove some leftover
6445 comments that were from the common/loader.l file.
6446random_maps/rogue_layout.c: Change some functions to be static so make proto
6447 doesn't collect them.
6448random_maps/standalone.c: Add opening of parms file into main function since
6449 it ws removed from the random_map.c file.
6450server/apply.c: Don't display the message of random maps to the players
6451 as they enter them, as this message is random map parameters, and not
6452 a real message.
6453server/login.c: #if 0 out using of the player loading element in the structure.
6454 this isn't used right now.
6455server/main.c: Bulk of the changes. main changes are to break apart the
6456 old enter_exit function into smaller functions that more logically do
6457 the needed function (random maps, unique maps, and transferring the player
6458 to the new map). random map code now passes the parameters via
6459 structure instead of file in /tmp. Code is much more understandable now
6460 and hopefully bugfree.
6461server/pets.c: minor changes/bugfixes. Search full SIZEOFFREE array, use
6462 real owner variable when print out messages.
6463server/player.c: Remove usage of the loading variable in the player structure.
6464End of MSW 2001/01/30 checking.
6465
6466MSW 2001/01/23:
6467Various cleanups/fixes as detected by purify:
6468common/anim.c: animation[0] was given a null pointer as the name, but
6469 bsearch/or comparison function will try to de-reference it.
6470 Give it a unique name.
6471common/loader.l: msgbuf was being used initialized in the main loading
6472 function. loader.c also regenerated.
6473common/object.c: find_free functions were not checking to see if the
6474 spaces they were examining were out of the map. Added checks
6475 to do so.
6476server/apply.c: buf was being used uninitialized in the function.
6477socket/init.c: input buffer needs to be initialized as we do a
6478 strncasecmp against the buffer which may not have any data in it.
6479
6480
6481MSW 2001/01/18:
6482server/skill_util.c: add change_skill_to_skill function to be used when
6483 we already know the skill object we want to use. This is more efficient
6484 than change_skill which takes a skill number and then searches the
6485 inventory for the object.
6486 remove extra esrv_send_item from do_skill_attack - don't need to send
6487 skills to player.
6488 do_skill_attack: remove call to hth_damage - that function does not take
6489 into account objects in the player inventory that increase damage,
6490 and since that is called each attack, it is not feasible to have it
6491 search the players inventory. Instead, we just rely on damage generated
6492 by fix_player - only think hth_damage did was adjust damage based on
6493 level difference.
6494
6495PeterM 2001/01/16
6496Added randomly-generated nethack-style maps to crossfire's
6497random map generator.
6498
6499MSW 2001/01/15:
6500Change blindness and paralyze so that duration is reduced based on protection
6501the player has. file server/attack.c
6502
6503MSW 2001/01/15:
6504Various fixes for friendly object code:
6505common/button.c: Add missing call to remove_friendly_object
6506common/friend.c: Pretty much completely re-written. add_friendly_object now
6507 checks to make sure the object being added isn't already on the list,
6508 remove_friendly_object will remove objects whose tags don't match,
6509 and added clean_friendly_list.
6510common/object.c: No reason to use the function pointer to
6511 remove_friendly_object since that function is in the lib.
6512common/time.c: Make DEBUG_TIME always on (no longer compile time option).
6513 other areas use the global var pticks, so if it was turned off, compile
6514 would break anyways.
6515common/treasuer.c: No longer print debug messages on artifacts created.
6516 Cluttered log file making it hard to see more important errors.
6517include/config.h: Remove DEBUG_TIME define.
6518include/libproto.h: Rebuilt for clean_friendly_list function.
6519server/main.c: rewrote do_specials to do things based on pticks variable.
6520 This allows various specials to be spread out across multiple ticks
6521 easier. Also, added clean_friendly_function to part of what this does.
6522server/skills.c: add missing call to remove_friendly_object. Also, removed
6523 from #if 0 .. #else .. #endif code.
6524End of MSW 2000/01/15 checkin.
6525
6526PeterM 2001/01/08: Wrathful Eye spell implemented.
6527
6528MSW 2000/12/26:
6529Checkin of Jan's new god intervention code. I haven't played around with
6530it much, but I haven't seen any really obvious problems.
6531common/living.c: remove learn_prayer_chance
6532common/treasure.c: Various changes to treasure generation - mostly to
6533 deal with starting equipment and putting it in the inventory.
6534doc/crossfire.doc: Update docs on god intervention.
6535include/define.h: GT_... flags removed.
6536include/treasure.h: GT_... flags added. Addition flags added from
6537 what was in define.h before.
6538lib/archetypes, lib/crossfire.png, lib/treasures: Updated with new
6539 archetypes and treasures.
6540random_maps/standalone.c,server/rune.c,server/time.c: Calls to
6541 create_treasure updated
6542server/apply.c: New functions for god intervention added, update calls
6543 to create_treasure, other god related changes.
6544server/c_wiz.c: Calls to create_treasure updated, various functions to
6545 allow DM's to learn/unlearn spells added.
6546server/commands.c: Various commands added to the wiz set of commands.
6547 See commen for c_wiz.c
6548server/disease.c: Changes to reduce_symptoms
6549server/gods.c: Numerous updates for god intervention code.
6550server/player.c: Modifications for starting player equipment.
6551server/skill_util.c: Display the god the character worships when they
6552 issue the skills command.
6553server/skills.c: Minor cosmetic change made to message when praying on altar.
6554server/spell_effect.c: Changes related to gods, cure spells, and
6555 generation of treasures & items.
6556End of MSW 2000/12/26 checkin.
6557
6558
6559MSW 2000/12/23:
6560include/define.h: Add SIZEOFFREE1 and SIZEOFFREE2 values to use instead of
6561 arbitrary constants in the code.
6562server/monster.c: change communicate function to use above values. Before
6563 it was stopping one short of the full 2 space array, so one particular
6564 space (-1, -2 relative to player) would not hear players speech.
6565server/attack.c: Don't exit hit_player function if damage is reduced to 0
6566 in magical attacks. This was preventing face of death and probably a lot
6567 of effect only spells from working.
6568server/spell_util.c: modify check_cone_push to use move_object to blow
6569 the objects. Before, multisquare monsters were getting sliced
6570 into their individual components - move_object deals with multisquare objects
6571 properly.
6572
6573PeterM 2000/12/18: Re-add the conflict spell (various files)
6574attack.c: fix a bug which could easily have led to seg fault,
6575 and did when I was testing under efence.
6576
6577MSW 2000/12/17: Various changes. Note that the scope of files in this checkin
6578make it appear that a lot was changed, but in fact it was mostly just
6579re-orginization - very little code has actually changed.
6580include/autoconf.h.in: Add HAVE_LIBDES to file.
6581include/config.h: Remove comments after defines for MAP_MIN/MAX timeouts.
6582 This just removes some warnings during compile. comments are now
6583 on lines by themselves.
6584include/player.h: remove shootstrength for player structure. It was unused.
6585server/Makefile.in: remove input.c file, add c_range.c file.
6586server/c_chat.c: remove command_last, add command_shout and command_tell
6587 from input.c to this file. Also fix bug in command tell which
6588 would let players crash server at will.
6589server/c_misc.c,server/c_object.c: Relocate many functions
6590 from input.c into these files.
6591server/c_move.c, server/c_new.c: Add standard crossfire banner comment.
6592server/c_range.c: New file - contains range related commands,
6593 including spell casting (relocated from input.c)
6594server/c_wiz.c: move command_invisible from input.c into this file.
6595server/commands.c: Remove unused commands (bell, last, strength)
6596server/input.c: removed file.
6597server/main.c: Change HAVE_DES_H to HAVE_LIBDES
6598server/player.c: When choosing a race, draw it facing south for best
6599 presentation of image.
6600server/spell_util.c: Remove dead code (#if 0 shootstrength related
6601 code)
6602socket/loop.c: remove unused variables.
6603NOTE: Due to the addition/removal of files, you will need to do
6604'config.status; make depend; make' from the top level directory for
6605everything to be compiled properly.
6606End of MSW 2000/12/17 checkin.
6607
6608
6609PeterM: 2000/12/17: Various problems fixed in
6610random_maps/*.c: endless loop removed,
6611exit leading to blocked area of spiral fixed.
6612
6613
6614PeterM: 2000/12/17: Stat max bug fixed.
6615server/apply.c
6616
6617
6618MSW 2000/12/16:
6619server/player.c: If the player race archetype has a message, print that out.
6620 This allows a descriptive message about what the different races will
6621 get. The message is removed from the player once they decide on the
6622 race.
6623common/living.c: Add some parens around some PR resistant checks - eliminates
6624 warnings from gcc.
6625server/disease.c: have cure_disease remove all diseases a player is infected
6626 with. The code suggested it was attempting to do so, and the
6627 messages it printed out certainly suggested that the character
6628 was disease free.
6629
6630
6631PeterM: 2000/12/14: Added spiral map layout
6632
6633PeterM: 2000/12/14:
6634Restructuring of the random map code. Functionally, it
6635should be identical. All global variables moved into the
6636functions.
6637
6638MSW 2000/12/10:
6639utils/metaserver.pl: Various improvements. Main one is that tcp
6640connections to port 13326 of the metaserver will dump the information
6641in a easily parsable format for the client or other applications.
6642include/config.h: Set ARCHTABLE size to correct value.
6643server/player.c: Have server send update item to client for players face
6644 while select class. Added esrv_new_player in Roll_Again, because
6645 without it, the client had yet to receive information on what tag
6646 the player was so could not make sense of the updated face.
6647server/spell_effect.c: Balance issues for polymorph. Reduce maximum
6648 value for high valued objects, remove ability to polymorph generators,
6649 put maximum level on polymorphed monsters and give them saving
6650 throws against the effects.
6651
6652MSW 2000/12/5:
6653server/player.c: Move location of where it sets the player has_hit variable
6654until after we have confirmed that the player has actually attacked a monster
6655and not that the space is blocked. Fixes various problems and make
6656behaviour more predictable.
6657common/button.c: Do not set path_attuned when loading connected objects from within
6658the editor. This is normally done for random map code/glue logic.
6659common/player.c: When trying to find a skill to use, use a native skill
6660first before going off and returning a skill object like a talisman.
6661
6662MSW 2000/12/4:
6663common/treasure.c: Make it so resistances from artifact files are absolute
6664 adjustments.
6665Makefile.in configure configure.in: Fix check for libdes to see if des_crypt
6666 exists in libdes before setting HAVE_LIBDES
6667crossedit/Makefile.in: Add Cnv/libCnv.a before LIBS - should fix
6668 linking error on irix systems.
6669utils/metaserver.pl: modified so it ignores entries from hosts that
6670 report their name as put.your.hostname.here
6671
6672MSW 2000/12/3:
6673crossedit/Attr.c: Add the new resist names to set of variables one can set.
6674
6675MSW 2000/12/3:
6676Misc changes. Main one is adding PNG support to the editor.
6677TODO: Remove outdated things to do (like partial resistance code)
6678configure, configure.in, include/autoconf.h.in: Add check for libpng.
6679include/global.h: Remove displaymodes - moved to crossedit/Defines.h
6680crossedit/App.c, crossedit/App.h crossedit/CrEdit.c crossedit/CrFace.c
6681 crossedit/CrList.c crossedit/CrUtil.c crossedit/Edit.c crossedit/crossedit.c
6682 crossedit/xutil.c, crossedit/png.c (new file): Add support for png display
6683 in crossedit.
6684crossedit/Makefile.in: Add png.c file.
6685server/c_misc.c: Change who command to only display real players, and not
6686 players in process of connecting/unconnecting. Also, remove code to display
6687 old sockets, since those are not supported anymore.
6688
6689MSW 2000/12/3:
6690Checking for partial resistance code. Various minor errors also fixed
6691(compiler warnings, unused variables, Makefile.in changes, etc).
6692PR code also includes support to send protections to the client.
6693Files changed:
6694 common/Makefile.in common/button.c common/exp.c
6695 common/friend.c common/holy.c common/info.c common/init.c
6696 common/item.c common/living.c common/loader.c common/loader.l
6697 common/object.c common/player.c common/re-cmp.c
6698 common/readable.c common/treasure.c crossedit/App.c
6699 crossedit/crossedit.c crossedit/proto.h doc/crossfire.doc
6700 include/define.h include/global.h include/libproto.h
6701 include/newclient.h include/newserver.h include/object.h
6702 include/player.h include/sproto.h lib/Makefile.in
6703 lib/archetypes lib/artifacts lib/crossfire.png
6704 lib/crossfire.xbm lib/crossfire.xpm random_maps/rproto.h
6705 random_maps/special.c random_maps/style.c server/Makefile.in
6706 server/apply.c server/attack.c server/c_misc.c
6707 server/c_object.c server/commands.c server/disease.c
6708 server/gods.c server/input.c server/monster.c server/player.c
6709 server/resurrection.c server/rune.c server/spell_effect.c
6710 server/spell_util.c server/swap.c socket/metaserver.c
6711 socket/request.c
6712 Added Files:
6713 include/attack.h
6714
6715
6716------------------------------------------------------------------------------
6717Changes for 0.95.8:
6718
6719MSW 2000/11/26:
6720utils/metaserver.pl (added), utils/Makefile.in: Add metaserver.pl script.
6721
6722MSW 2000/11/25:
6723include/patchlevel.h (removed), doc/spell-docs/Makefile (removed),
6724include/Makefile.in, include/version.h, server/init.c, server/main.c,
6725socket/metaserver.c: remove patchlevel.h - include the patchlevel in the
6726 version.h file, update other files to use version as a single string.
6727
6728MSW 2000/11/25:
6729socket/metaserver.c: If on FreeBSD systems, do not attempt to connect to
6730the metaserve. FreeBSD seems to have a problem using sendto on a connected
6731soccket.
6732
6733MSW 2000/11/25:
6734configure.in, configure, include/autoconf.h.in, server/main.c: Update
6735to check for libdes.a and des.h and use those for password decryption - fixes
6736a problem on freebsd if it is using md5 crypt. Hopefully it doesn't break
6737anything. main.c was also checking for HAVE_CRYPT_H too early.
6738include/sproto.h: Needed updating. Unrelated to above changes.
6739
6740
6741MSW 2000/11/22
6742server/main.c: Modify enter_exit so that it properly uses per player
6743unique maps that are only in memory and not on disk. Remove unused
6744variable from process events (unrelated change).
6745
6746PeterM 2000/11/18:
6747 New spells added:
6748 1) Sanctuary (aura of counterwall)
6749 2) Peace (make monsters unable to fight)
6750 3) Spiderweb (create spider webs)
6751 4) rage (heroism, armour, haste, regenration combined)
6752 5) forked lightning (lightning which forks and strikes )
6753 6) flaming aura (aura of fire)
6754 7) vitriol combined ball/cone/pool acid attack spell
6755 8) vitriol splash (spell for internal use only)
6756 9) ironwood skin (clerical version of armour spell)
6757
6758Not implemented: 10) poison fog
6759
6760MSW 2000/11/17:
6761socket/metaserver.c: More changes - use fcntl to set O_NONBLOCK. Don't
6762 close socket if connect fails, since with sendto it is not required
6763 that the connect works.
6764
6765PeterM: 2000/11/17
6766define.h spells.h spellist.h spell_util.c spell_effect.c:
6767 windstorm spell implemented.
6768attack.c: saving throw behavior modified. Items take a bit
6769of DAM to destroy now instead of being destroyed with 1hp attacks.
6770
6771MSW: 2000/11/16:
6772socket/metaserver.c: Add #ifdef MSG_DONTWAIT into metaserver.c for systems
6773 that lack that definition.
6774random_maps/style.c: alphasort was not properly de-referencing pointers
6775 when doing name comparisons, and thus returned garbage results,
6776 resulting in a crash when entering random maps. This only happens
6777 for systems which lack scandir in normal libraries (like Solaris).
6778 BSDs and linux have scandir built in, and did not have a problem.
6779server/disease.c: fix infect_object - server would crash if player did
6780 not have praying skill and was infecting someone else.
6781end of changes, MSW 2000/11/16
6782
6783PeterM : 2000/11/14
6784PeterM: Made some changes so that non-disease effects may be done without
6785being labelled as a disease. Also, fixed a bug in which we'd kill something
6786and then try to insert something in the killed thing's map.
6787
6788
6789
6790metaserver update:
6791common/init.c: Add meta_ fields to settings structure initialization.
6792include/global.h: Add meta_ fields to settings structure.
6793include/sockproto.h: Updated for new meta_ functions.
6794lib/Makefile.in: Have it install settings file.
6795lib/settings: Default settings file with some metaserver default value.s
6796server/init.c: Add load_settings file. Add call to metaserver_init.
6797server/main.c: Add call to metaserver_update in do_specials.
6798socket/Makefile.in: Add metaserver.c to list of files.
6799socket/metaserver.c: File that deals with metaserver related data.
6800socket/item.c: Remove some unused variables. Unrelated to metaserver changes.
6801socket/loop.c: Add calls to metaserver_update in block_until_new)connection. Change
6802 function so that if there are no active players, it still timeouts and
6803 does metaserver update. Basically changed to do it the way the
6804 WATCHDOG code did it.
6805End of metaserver update. MSW 2000-11-13
6806
6807server/player.c: removed unused tmp2 variable from move_player_attack.
6808modify depletion in kill_player so the maximum depletion for a stat is -50. This
6809should preven stat wrapping from -126 to 127. MSW 2000-11-08
6810
6811==============================================================================
6812MSW 2000-11-07
6813common/item.c: query_base_name was not return plural version of items
6814with 'of' in name. Also, much of the function was not using safe_strcat,
6815which could result in buffer overlow problems.
6816
6817common/object.c: Change update_position so that we always generate
68183 images per space. This fixes players standing on top of dragon transports,
6819but generally works for things like monsters standing on objects.
6820insert_ob_in_map: change 'return' statement to 'return NULL'. Also
6821remove unused map pointer.
6822decrease_ob_nr: Fix bug for client updates when player drops item that
6823is then consume. It was using op->above after object was removed to
6824find the player. Store above pointer before we remove the object.
6825
6826socket/item.c: Don't terminate pointer as returned by query_base_name -
6827instead, terminator buffer after we copy it. For simple object,
6828query_base_name may directly return a pointer to the objects name
6829which is only long enough to hold the name itself.
6830
6831socket/lowlevel.c: Abort if we are trying to send the client a packet
6832longer than supported by the protocol. Since that buffer is static,
6833overflowing it will just create memory corruption - easier to stop
6834then than try and debug it later.
6835
6836End of MSW checkin 2000-11-7
6837==============================================================================
6838
6839
6840PeterM: 2000-11-06
6841server/spell_util.c crash bug removed from move ball lightning:
6842ball lightning mover improved in general. --PeterM
6843
6844--------------------------------------------
6845--- BEGIN stop_item() / attack fix patch --- Jan Echternach 2000-11-06
6846--------------------------------------------
6847
6848Summary of this patch: Provide new stop_item() function for properly
6849handling "moving" items on a map (flying arrows, thrown objects,
6850active cones); obsoletes the workarounds. Fix some attack bugs (with
6851possible server crashes) - many attackers attacked while being
6852removed, even though much code could only handle the attacker being on
6853the same map as the victim (not even the attacker being in the
6854victim's inventory, e.g. poison).
6855
6856common/object.c: insert_ob_in_map(): Call check_walk_on() after
6857update_object() because the latter needs to update some very
6858important flags used by a lot of code before this code is called
6859by check_walk_on().
6860
6861common/object.c: get_split_ob(): Completed support for splitting
6862removed objects.
6863
6864common/object.c: decrease_ob_nr(): Rewrote this function: Added
6865support for removed objects. Removing an object completely didn't
6866always update the environment's weight properly. Removing an amount
6867of 0 from an object with nrof == 0 destroyed the object. Improved
6868performance a bit (don't need to update the player's weight if an
6869object below the player is modified).
6870
6871server/apply.c: move_apply(): Added recursion limit.
6872
6873server/apply.c: move_apply(): THROWN_OBJ and ARROW: Use new
6874hit_with_arrow() function.
6875
6876server/apply.c: move_apply(): FBULLET and BULLET: Call
6877check_fired_arch() only when the victim blocks the square (FLAG_NO_PASS
6878or FLAG_ALIVE).
6879
6880server/attack.c: save_throw_object(): Use new stop_item() function
6881before trying to modify an object. Added originator to all
6882insert_ob_in_map() calls.
6883
6884server/attack.c: hit_map(): Added log message if the hitter is not on
6885a map. Added was_destroyed() check after calling save_throw_object().
6886
6887server/attack.c: get_attack_mode() and abort_attack(): New functions
6888to determine the type of attack (simple or full attack).
6889
6890server/attack.c: attack_ob(): Now only attack_ob_simple() with default
6891damage and weapon class values.
6892
6893server/attack.c: attack_ob_simple(): Contains most of old attack_ob(),
6894but takes damage and weapon class as parameters, needed for
6895hit_with_arrow(). Uses get_attack_mode() and abort_attack() to
6896support new "simple" attack mode.
6897
6898server/attack.c: stick_arrow() and hit_with_arrow(): Moved those parts
6899of old stop_arrow() and move_arrow() that dealt with attacking a
6900victim over here.
6901
6902server/attack.c: hit_player(): Uses get_attack_mode() and
6903abort_attack() to support new "simple" attack mode.
6904
6905server/attack.c: paralyze_player(): Use insert_ob_in_map_simple()
6906instead of insert_ob_in_map() because the callers are not prepared for
6907this function triggering any complex machinery, and
6908insert_ob_in_map_simple() should be enough for plain visual effects.
6909
6910server/attack.c: thrown_item_effect(): Don't need to deal with thrown
6911objects, hit_with_arrow() already does everything necessary.
6912
6913server/attack.c: adj_attackroll(): Added log message if hitter and
6914victim are not on the same map.
6915
6916server/c_object.c: Fixed two typos in "can't pick up xxx" messages.
6917
6918server/c_object.c: pick_up_object(): Removed can_pick() check because
6919pick_up() already checks this. Added support for picking up removed
6920objects because the stop_item() in pick_up() can now call us with
6921removed objects. Moved FLAG_STARTEQUIP check to pick_up(). Fixed
6922weight limit lookup for monsters that have strength > MAX_STAT.
6923
6924server/c_object.c: pick_up(): Use new stop_item() function.
6925
6926server/player.c: fire_bow() and server/skills.c: do_throw(): Removed
6927FLAG_NO_PICK workaround for flying objects. stop_item() now handles
6928this correctly.
6929
6930server/rune.c: spring_trap(): Fix unlimited trap recursion. Since
6931traps are triggered by move_apply(), the result of triggering a trap
6932may trigger the trap again before it is deactivated.
6933
6934server/rune.c: spring_trap(): Runes that don't cast spells can only be
6935triggered by living objects.
6936
6937server/spell_effect.c: move_cancellation(): Don't call hit_map() with
6938a removed attacker.
6939
6940server/spell_util.c: cast_cone(): Only print warning message about
6941cones that don't have FLAG_FLY/WALK_ON if the cone does any damage.
6942
6943server/spell_util.c: move_cone(): Removed workaround for cones in ice
6944cubes. stop_item() now handles this correctly.
6945
6946server/spell_util.c: explode_object(): Rewrote this function: New
6947interface - exploding object must not be removed when the function is
6948called, it must have an other_arch (i.e. it must be able to explode),
6949and it will be gone for sure when the function terminates. Removed
6950some code with no effect. Don't call any attack functions with
6951removed attackers.
6952
6953server/spell_util.c: check_fired_arch(): Rewrote this function.
6954
6955server/spell_util.c: move_fired_arch(): Rewrote most of this function:
6956Don't attack with removed attackers. Call check_fired_arch() instead
6957of duplicating its code.
6958
6959server/spell_util.c: move_ball_lightning(): Don't attack with removed
6960attackers. Rewrote the movement algorithm to simplify this task.
6961
6962server/time.c: stop_item() and fix_stopped_item: New functions.
6963
6964server/time.c: fix_stopped_arrow(): Contains most of the old
6965stop_arrow() function. Unlike stop_arrow(), it takes an arrow that is
6966not removed. Removed FLACK_NO_PICK workaround.
6967
6968server/time.c: stop_arrow(): Stops arrows and thrown objects and puts
6969them on the map. Sticking objects into targets is no longer handled
6970by stop_arrow(), but by hit_with_arrow().
6971
6972server/time.c: move_arrow(): Don't attack with removed attackers.
6973
6974socket/item.c: esrv_move_object(): Removed misleading comment.
6975
6976------------------------------------------
6977--- END stop_item() / attack fix patch --- Jan Echternach 2000-11-06
6978------------------------------------------
6979
6980server/time.c: Add call to esrv_update_item to update the face for
6981the client after the player chooses a class. MSW 11/3/2000
6982
6983server/c_object.c, socket/item.c: Fixed for long item support. pick_up_object
6984in c_object was overwriting a fixed length string, causing server crashes.
6985item.c was not properly terminating plural version of object name, resulting
6986in corrupt packets being sent to the client. MSW 11/2/2000
6987
6988PeterM:
6989 ball lightning made stronger, strikes larger area, never
6990 hits player.
6991 divine shock spell added.
6992
6993include/sproto.h: Removed prototype of obsolete make_gravestone()
6994function.
6995server/apply.c: Put back gravestone_text() function that was removed
6996accidently a while ago, needed by NOT_PERMADEATH.
6997server/player.c: Don't use the dead player as the originator of object
6998movements. Fixed string handling for NOT_PERMADEATH.
6999- Jan Echternach 10/30/2000
7000
7001
7002Major race/class change by PeterM:
7003BEGIN:
7004*****************
7005apply.c: new function, apply changes to player. If the change is a CLASS,
7006player receives certain attributes from the class.
7007
7008login.c: make sure people using the old race/class archetypes in their
7009player files can still use them.
7010
7011player.c:
70121) give_initial_items modified for greater flexibility: you
7013can pass in a treasurelist.
70142) Also, initial forces are applied to the player.
70153) Comment added on the stat roll function.
70164) Word of recall into the new class-choice map (unfortunately hard-wired.) for newly-rolled players.
70175) gen_sp and gen_hp and gen_grace now allowed to go negative to slow down player
7018regen.
7019
7020skill_util.c
70211) Don't give out basic skills anymore. This interferes with the class code.
7022
7023spell_util.c
70241) Praying failures moderated in frequency.
70252) Summoned creatures enhanced in wc, speed, depending on casting level.
70263) Word of recall allowed to work in no-magic areas if a flag is set.
7027
7028time.c
70291) Move player changer function added.
70302) Marker object expiration added.
7031
7032living.c: cleric fail chance array modified.
7033
7034map.c: bugfix for random map/recycle tmp map problem.
7035
7036define.h: defines added for playerchangers and class types
7037 base 10 numbers added for the spell paths.
7038
7039spellist.h: fixed up summoning spells a little
7040
7041sproto.h: new prototypes
7042
7043config.h: hate RECYCLE_TMP_MAPS, turned it off
7044
7045maps/HallOfSelection: new map for class choice.
7046
7047lib/treasures: classs/race stuff heavily modified
7048lib/archetypes, animation, bmaps, bmaps.paths, crossfire.png faces
7049 crossfire.xbm New faces, etc.
7050
7051END race/class stuff 10/16/2000
7052apply.c: bugfix for random map/recycle tmp maps interaction. --PeterM 10/16/200
7053
7054include/skill* server/skill_util.c: levitation skill added.
70559/26/2000. --PeterM
7056
7057common/map.c server/apply.c: Fix an interaction between
7058RECYCLE_TMP_MAPS and random maps which would cause crashing.
7059peterm: 10/12/2000
7060
7061disease.c spell_effect.c: peterm: 10/5/2000
70621) Diseases moderated in power by ~1/2 and randomized.
7063 Now monsters can have a mild/moderate/serious/fatal case
7064 of a particular disease.
70652) cause disease spells modified to NOT go through objects
7066 spells ordinarily couldn't go through.
7067
7068------------------------------------------------------------------------------
7069
7070Changes for 0.95.7:
7071
7072README: Add crossfire.csua.berkeley.edu server.
7073TODO: Remove entry about setable behaviour for keyrings, since that has now
7074been done.
7075include/patchlevel.h, Makefile.in: Update for 0.95.7 MSW 9/20/2000
7076
7077lib/maps: got rid of the stuff that was there. Useless stuff.
7078the maps dist. is the thing to use. --PeterM
7079
7080
7081common/living.c, server/skill_util.c: Patches by Garth Denley:
7082Fixes divide by zero crash, sets up perm exp when a new player is loaded,
7083seperates permanent exp code/calculations into another function.
7084checked in by MSW, 8/24/2000
7085
7086lib/crossfire.png: ground/sea*png - remove transperancies from png images
7087since they should not be transparent. MSW 8/23/2000
7088
7089doc/spoiler.html/(Makefile.in,empty.pbm, makeps.pl, spoiler.html): Modify
7090to make gif images from png source instead of xpm images. A valid question
7091to ask is why convert to gif at all and not just keep in PNG format. The
7092answer right now is that png support in netscape at least still is not very
7093good, and it displays gifs better. MSW 8/8/2000
7094
7095Add/Remove some LOG calls:
7096common/living.c: Remove log messages about gen_sp values on armor
7097server/login.c, server/main.c: Add messages about player logins/logouts with
7098IP address. Useful for tracking potentially troublesome players and where
7099they are player from. MSW 8/7/2000
7100
7101The following change basically does the following: When the server sends an
7102item name to the client, this item name is now two pieces - the first piece
7103of the name is its singular form, the second piece is the plural name. This
7104now makes items in the inventory appear more proper in terms of pluralization
7105and just normal English. I did notice that the server does not know how
7106to properly make 'torch' plural - it turns it into torchs. A matching
7107check in for the client has also been done.
7108include/newserver.h: Update VERSION_SC to 1024
7109common/item.c: Change query_base_name to take a second option on whether
7110 we should generate a plural version of the name or not.
7111socket/item.c: Modify functions to use second argument on the query_base_name
7112 function. Update item commands to send two part names (singular & plural).
7113 Modify esrv_send_look to use item1 protocol command instead of item command.
7114server/c_object.c: Update item_matched_string to use second option to
7115 query_base_name. Modify function to check against both singular and
7116 plural versions of name.
7117server/shop.c: Modify shop_listing command usage in query_basename to use
7118 second option. It will also generate the singular name, but that is only
7119 used on sorting, so I don't think it will generally cause any problems.
7120include/libproto.h: rebuilt because query_base_name has an addition opt.
7121Mark Wedel 8/6/2000
7122
7123include/config.h, include/global.h, common/init.c, common/living.c,
7124server/init.c, server/player.c, server/skill_util.c: Add permanent
7125experience and balanced stat loss features (code by Garth Denley).
7126Permanent experience make some experience in the skills permanent. Balance
7127stat loss makes stat loss less likely/costly at low level and more costly
7128at higher levels. These features are by default off, but can be turned
7129on either in the config.h file or via command line options. Code checked
7130in by MSW 8/1/2000
7131
7132server/time.c: Update the change_object function such that if the object
7133is in a players inventory, send a delete & send_item for the object that
7134has changed (the delete + send_item is necessary due to the ways objects
7135change, so we just can't sent a update_item). This fixes the 'torches
7136go dim & then out but client inventory not updated' bug, and likely fixes
7137some other problems - I am not sure how many other objects out there
7138change. MSW 7/28/2000
7139
7140random_maps/treasure.c: potential crash bug fixed. Only applied
7141when a bad archetype was given as a wallstyle. I will also put
7142in a redundant archetypes fix. --PeterM 7/26/00
7143
7144lib/adm/map_info, lib/adm/map_check: Update to use new layout of installed
7145files (share/crossfire), know about random exits (it doesn't do any checking
7146to make sure the values are sane, which it probably should, but at least it
7147won't complain about them), update to use /usr/bin/perl. MSW 7/25/2000
7148
7149server/resurrection.c
7150include/spellist.h: PeterM: fixed a few unintended things about
7151resurrection: experience removal was wrong, spellpoints/levels
7152changed. --PetrM
7153
7154lib/archetypes: Update to keep in sync with arch tree. Changes to
7155about a dozen arch's to remove the 'a' in their name. MSW 6/27/2000
7156
7157server/c_object.c: Fix command_drop which was doing incorrect check for
7158invisible object - it was supposed to skip over them and only do visible
7159objects, instead it was doing the reverse. Fixes the 'drop command.
7160MSW 6/27/2000
7161
7162server/input.c: Make the inventory command more robust for very long
7163object names - specify a maximum number of characters we will take from
7164the name. Without this, you could get buffer overruns that cause crashes.
7165No normally generated items would ever likely have names long enough to
7166exploit this bug however. MSW 6/27/2000
7167
7168INSTALL, README: Update mailing address to real-time address. MSW 6/27/2000
7169
7170server/login.c: Load and save usekeys value in player save file. MSW 6/27/2000
7171
7172Patch by Jeffry Hantin which fixes glow objects in map.
7173insert_ob_in_map_simple now will call the appropriate light updating code.
7174Applied by MSW 6/26/2000
7175
7176server/player.c: check_pick(): Rewrite of this function to consistently
7177skip items that can't be picked up, and to only use a single loop over all
7178items on the map square. - Jan Echternach 6/23/2000
7179
7180------------------------------------------------------------------------------
7181Changes for 0.95.6:
7182
7183server/monster.c: Patch by Neil Muller so that corrupt/bad @match entries
7184will not cause the server to crash. Applied by MSW 6/21/2000
7185
7186lib/archetypes: rebuilt for 0.95.6
7187lib/collect.pl: Modify to search the archetypes directories in alphabetical
7188order - before I believe they were collected in basically inode order.
7189This should make it easier to multiple people to run the collect script
7190not have basically an entirely new archetyeps file. MSW 6/21/2000
7191
7192server/commands.c; server/c_object.c: dump_object_from_tag(): Removed
7193broken command. Fixes server crashes very easily triggered by players.
7194- Jan Echternach 6/21/2000
7195
7196server/attack.c: deathstrike_player(): Check for def_lev == 0 very early
7197(and print error message if we find such an invalid level). Should fix
7198server crash in case archetypes or maps get broken again in that an
7199alive object has level < 1. - Jan Echternach 6/21/2000
7200
7201Makefile.in: Update version to 0.95.6
7202include/patchlevel.h: Update to .6 for 0.95.6 release
7203common/porting.c, include/config.h, include/loader.h, include/skills.h,
7204include/spells.h, include/treasure.h, include/version.h, random_maps/style.c:
7205 Update my mail address and copyright date. Mostly committed to sync
7206 up my data with the CVS repository - MSW 6/20/2000
7207
7208random_maps/treasure.c server/apply.c: made containers able to
7209have more than one treasure in them, made a fix to treasure.c, which would
7210change the options given to it in an unintended way. --PeterM 6/20/2000
7211
7212
7213common/living.c: fix_player(): Bugfix: Don't reset FLAG_FLYING,
7214FLAG_REFL_SPELL, FLAG_REFL_MISSILE and FLAG_SEE_IN_DARK if the archetype
7215has these flags. - Jan Echternach 6/19/2000
7216
7217
7218random_maps/* Numerous changes improving random maps, including
7219two crash-fixes, a new type of 'special', ability to copy inventory
7220of monsters when putting them into maps... --PeterM 6/19/2000
7221
7222New naming scheme for random maps: they won't grow in size
7223indefinitely anymore. --PeterM 6/17/2000
7224
7225server/input.c: command_cast_spell(): Bugfix: Call check_skill_to_fire()
7226even for wizards because this function has the important side effect
7227of setting the current skill and experience objects.
7228- Jan Echternach 6/19/2000
7229
7230server/apply.c: apply_treasure(): Bugfix: We need to trigger runes as
7231they are found in the treasure chest, because move_rune() will no longer
7232trigger them for us. - Jan Echternach 6/18/2000
7233
7234Updated the INSTALL directions. MSW 6/16/2000
7235
7236Modified the editor to make certain objects (teleporters, creators,
7237markers) more easily editable. --PeterM 6/16/2000
7238
7239Modifed how firewalls worked. They can now be triggered by
7240handles as well as turned. Ones which are turned by handles
7241cannot be triggered by handles. PeterM 6/15/2000
7242
7243fixes to random_maps:
7244exit.c: won't crash if named final_map doesn't exist
7245room_gen_onion.c: reordered the options more sanely
7246special.c: fixed a crash-bug: nuke_map would nuke parts of monsters, but
7247not the whole monster. --PeterM
7248
7249server/skill_util.c: Fix type in change_skill - was doing an == operation
7250when it should just have been an =. MSW 6/13/2000
7251
7252common/anim.c: animation_object() - return if object does not have a valid
7253animation after logging error. Before, we logged the error and would
7254promptly crash. MSW 6/13/2000
7255
7256server/apply.c: apply_treasure(): Bugfix: Set FLAG_NO_APPLY before
7257moving object to the top. - Jan Echternach 6/13/2000
7258
7259server/time.c: move_marker(): Bugfix: Call update_ob_speed() after
7260changing force->speed. - Jan Echternach 6/13/2000
7261
7262server/spell_util.c: move_swarm_spell(): Improved distribution of
7263fired objects. Fixed starting position of fired objects to be able to
7264hit targets immediately in front the caster. - Patch by Jeffrey Hantin,
7265applied by Jan Echternach 6/13/2000
7266
7267server/disease.c, sproto.h, rune.c Fixes from jhantin@derringer.net for diseases:
7268 Reversed strstr calls, force argument added to infect_object,
7269diseases in immune carrier last forever, needles use infect object,
7270cast_cause_disease won't fail. --PeterM 6/9/2000
7271
7272common/loader.l: Fix handling of objects with no animation. Fixes server
7273crash if object's archetype has an animation, but object doesn't.
7274- Jan Echternach 6/9/2000
7275
7276common/loader.l: get_ob_diff(): Bugfix: Issue a "is_animated 0" line
7277if the object has an animation, but doesn't have FLAG_ANIMATE.
7278- Jan Echternach 6/9/2000
7279
7280server/apply.c: manual_apply() and monster_apply_special(): Don't check
7281for FLAG_UNPAID if object is applied. This should make the code more
7282robust if an unpaid item get's applied accidently.
7283- Jan Echternach 6/9/2000
7284
7285server/apply.c: apply_special(): New optional flags AP_NO_MERGE and
7286AP_IGNORE_CURSE. - Jan Echternach 6/9/2000
7287
7288server/monster.c: find_mon_throw_ob(); server/skills.c: find_throw_ob():
7289Bugfix: Use AP_NO_MERGE flag to prevent unapplied object be merged with
7290other objects. - Jan Echternach 6/9/2000
7291
7292server/spell_effect.c: animate_weapon: Bugfixes: Correctly unapply
7293weapon. Don't set FLAG_APPLIED directly on weapon in golem, but use
7294apply_special(). Don't call esrv_send_item() when caster is not a player
7295(fixes server crash if monster casts this spell).
7296- Jan Echternach 6/9/2000
7297
7298random_map/<various> Fixes in the map code for various things, including:
72991) crash bug on
7300multi-square monsters. 2) no treasures in final_map, 3) new feature of doing
7301walls only, .... --PeterM 6/9/2000:
7302
7303common/button.c: do_mood_floor(): Bugfixes: Only players can have pets.
7304Call add_friendly_object() for friendly monsters.
7305- Jan Echternach 6/8/2000
7306
7307server/spell_effect.c and server/spell_util.c: Several functions: Only
7308add a pet if there really is a pet's owner, and it's a player.
7309- Jan Echternach 6/8/2000
7310
7311server/spell_effect.c: cast_charm() and cast_charm_undead(): Bugfixes:
7312Only players can cast these spells. This fixes server crash if
7313a monster casted a charm spell, and the charmed pet was killed.
7314Call add_friendly_object for friendly monsters.
7315- Jan Echternach 6/8/2000
7316
7317common/friend.c: remove_friendly_object(): Use llevError for error
7318messages. - Jan Echternach 6/8/2000
7319
7320common/living.c: fix_player(); server/gods.c: tailor_god_spell();
7321server/spell_effect.c: summon_avatar() and animate_weapon(): Bugfix: Set
7322a string to NULL after calling free_string(). This fixes a nasty bug
7323that caused the string's reference count drop below 0, which resulted
7324in corruption of malloc()'s internal data structures (and possibly
7325server crashes). - Jan Echternach 6/8/2000
7326
7327server/time.c: move_creator(): Bugfix: Call free_string() to free old
7328values of op->name and op->title before overwriting them with new values.
7329- Jan Echternach 6/8/2000
7330
7331common/object.c: insert_ob_in_map_simple() and insert_ob_in_map():
7332Check that we don't insert freed objects. - Jan Echternach 6/8/2000
7333
7334server/attack.c: hit_player_attacktype() and hit_player(): Bugfix: Check
7335that find_god() really found a god, and that 'god->slaying' is not NULL.
7336Fixes crash if a monster casted turn undead and actually hit something.
7337- Jan Echternach 6/8/2000
7338
7339server/attack.c: hit_player(): Check that a pet's owner is a player.
7340Prevents server crashes if a monster has a pet monster due to a bug
7341somewhere. Use llevError for error message. - Jan Echternach 6/8/2000
7342
7343server/time.c: move_arrow(): Use llevDebug level for "Arrow had no
7344map" message. - Jan Echternach 6/8/2000
7345
7346server/c_object.c, server/spell_effect.c, server/spell_util.c: Bugfixes:
7347Added some missing checks for destroyed objects. Use was_destroyed()
7348or return value of insert_ob_in_map() to check for destroyed objects,
7349not FLAG_FREED or FLAG_REMOVED. Don't use op->count of destroyed objects.
7350- Jan Echternach 6/8/2000
7351
7352server/shop.c: get_payment2(): Type of tag is 'tag_t', not 'long'.
7353- Jan Echternach 6/8/2000
7354
7355server/spell_effect.c: animate_bomb(): Fix environment checks.
7356- Jan Echternach 6/8/2000
7357
7358server/spell_util.c: fire_bolt(): Bugfix: Set level of bolt.
7359- Jan Echternach 6/8/2000
7360
7361server/spell_util.c: explosion(): Bugfix: Set FLAG_NO_APPLY before
7362moving the exploding object to the top. - Jan Echternach 6/8/2000
7363
7364server/spell_util.c: put_a_monster(): First create the monster
7365completely, then just insert its head. - Jan Echternach 6/8/2000
7366
7367server/time.c: generate_monster(): Bugfix: Don't free generators that
7368are used up in this function. process_object() already does this.
7369This fixes steambolt (which is a generator but must not used up here -
7370generate_monster() wasn't looking at FLAG_IS_USED_UP) and all generators
7371which should really be used up (because process_object() didn't expect
7372generate_monster() to destroy the object). - Jan Echternach 6/8/2000
7373
7374server/rune.c: trap_disarm(): Bugfix: Use SK_level() to determine
7375disarmer's level. Fixes server crash if multisquare monster casts
7376"disarm". - Jan Echternach 6/8/2000
7377
7378server/attack.c: hit_map(): Use was_destroyed() to properly check for
7379destroyed next object. Use llevError for error messages. Skip all
7380objects that are (no longer) at the specified map position.
7381- Jan Echternach 6/8/2000
7382
7383server/map.h server/main.c Increased buffer sizes for map paths.
7384Needed for random map code. --PeterM 6/6/2000
7385
73866/4/2000: Fix done to disease.c which causes diseases to
7387put experience into the appropriate category. --PeterM
7388
73896/4/2000: Added race fields to a lot of monsters. Modified
7390disease arcs so that they'll be specific to races. Changed
7391include/spellist.h to re-enable the disease spells. --PeterM
7392
73936/4/2000 (disease.c) Added a self-limiting parameter to diseases so
7394that their power can be tuned to be reasonable. --PeterM
7395
7396lib/crossfire.png: Some floors modified to no longer have transperencies.
7397include/newserver.h: Add Send_Face_Png made, also update versions of
7398 the protocol
7399include/newclient.h: Add CF_FACE_PNG constant.
7400socket/request.c: Add support for receiving PNG facemode request,
7401 ad final logic to send png images to the client.
7402Changes by Mark Wedel, 6/2/2000
7403
7404lib/checkarch.pl: Check for archetypes with type FIRECHEST but no level.
7405- Jan Echternach 5/29/2000
7406
7407server/apply.c: move_apply(): Added handling of THROWN_OBJ, CANCELLATION
7408and BALL_LIGHTNING.
7409server/spell_effect.c: cancellation(): Traverse inventory of objects
7410with type THROWN_OBJ.
7411- Jan Echternach 5/29/2000
7412
7413server/player.c: fire_bow() and server_skills.c: do_throw(): Bugfix: Don't
7414use op->count of freed objects. Use was_destroyed() to check for freed
7415objects instead of QUERY_FLAG (FLAG_FREED). - Jan Echternach 5/29/2000
7416
7417server/spell_util.c: fire_a_ball(): Bugfixes: Use op->other_arch as
7418the archetype to fire, not FBULLET. (-> Firechests now cast fire balls
7419again, not snowballs.) Set level of fired archetype. Check if object
7420was destroyed after insert_ob_in_map(). - Jan Echternach 5/29/2000
7421
7422server/time.c: move_firewall() and move_firechest(): Do nothing if
7423object has no map. Fixes server crashes if a dm creates such a thing
7424in the inventory. - Jan Echternach 5/29/2000
7425
7426lib/collect.pl: Modify so that it does not complain about png files in the
7427arch directory MSW 5/28/2000
7428
7429common/item.c: Fix query_short_name - wasn't generating all item names
7430properly because of changes made a few days ago - some areas manipulate
7431the string being worked on and was not updating the length properly.
7432MSW 5/26/2000
7433
7434doc/mapguide: Fix some typos. MSW 5/26/2000
7435
7436include/define.h: Add MIN_ACTIVE_SPEED value to determine what threshold
7437something will be put on the active list or not instead of using
7438varying values throughout the source code.
7439common/item.c, common/object.c, server/monster.c, server/pets.c,
7440server/spell_effect.c: Updated to use the MIN_ACTIVE_SPEED instead of
7441hardcoded values. MSW 5/26/2000
7442
7443include/define.h,include/global.h, common/image.c: Remove following old
7444face information: INV_*_FACES, BLOCKED_FACE, STIPPLE[12]_FACE. This
7445is just a general cleanup - the server has not used these since the
7446X11 code was pulled from the server. MSW 5/26/2000
7447
7448common/living.c: Add entries for the attack type AT_INTERNAL in description.
7449include/material.h: Update to include saves against INTERNAL attacktype.
7450include/living.h: Remove defunct objects_saves external referance.
7451The additions of internal to the tables should not really be needed, as
7452internal attacktypes should not be used publically, but these also act as
7453placeholders for future attacktypes. MSW 5/26/2000
7454
7455* server/attack.c: hit_map(), hit_player(); server/spell_effect.c:
7456move_cone(); server/rune.c: spring_trap(); server/spell_util.c:
7457move_missile(): Bugfix: Added missing was_destroyed() calls.
7458* server/rune.c: spring_trap(): Bugfix: Call trap_show() before the rune
7459has a chance to be destroyed.
7460* server/attack.c: hit_map(), hit_player(): Check for freed objects
7461right at the beginning of the function. Removed check that hitter has
7462a name from hit_player().
7463* server/spell_util.c: move_cone(): Bugfix: Remove cone objects in
7464inventories from active list, this fixes the cone without map problem when
7465a flower was hit with ice and put into an icecube.
7466* server/spell_util.c: move_missile(): Bugfix: Don't call hit_map() while
7467missile is removed from the map.
7468* server/apply.c: manual_apply(): Handle MMISSILE.
7469- Jan Echternach 5/26/2000
7470
7471* server/spell_effect.c: animate_weapon() and server/spell_util.c:
7472summon_monster(): Bugfix: Set FLAG_FRIENDLY for friendly objects.
7473- Jan Echternach 5/26/2000
7474
7475* server/attack.c: hit_player(): Bugfix: remove_friendly_object()
7476was called always after an object with type GOLEM had been killed,
7477but friendly objects are objects with FLAG_FRIENDLY, not objects with
7478type GOLEM. This fixes some "Remove_friendly_object(): Can't find
7479object" errors. - Jan Echternach 5/26/2000
7480
7481-----------------------------------
7482--- BEGIN apply() cleanup patch --- Jan Echternach 26/5/2000
7483-----------------------------------
7484
7485* player specific code moved from apply() to player_apply() and
7486player_apply_below().
7487
7488* apply(): null pointer check removed
7489
7490* (bugfix?) print message if scroll is unusable because of invalid
7491spell number
7492
7493* bugfix: if the altar casted a spell, the message was sent to the
7494(destroyed!) sacrifice, not the player
7495
7496* split apply() -> move_apply() / manual_apply()
7497
7498* move_apply(), check_walk_on(), insert_ob_in_map() and other functions:
7499New parameter 'originator' that is the object that caused another object
7500to be inserted into the map. This removes the need to look through all
7501map objects above an altar to find the player who dropped the sacrifice.
7502
7503* always check FLAG_UNPAID in manual_apply()
7504
7505* don't check FLAG_UNPAID in apply_special(), new function
7506monster_apply_special() which checks FLAG_UNPAID and calls apply_special()
7507
7508* many new functions like apply_altar() and apply_spellbook() to make
7509the switch statements in move_apply() and manual_apply() shorter
7510
7511* changes to actual apply() code:
7512
7513ALTAR:
7514 spell casting altars should work now if not operated by a player
7515 common/button.c, operate_altar(): altar's message is sent to altar's
7516 map, not player's map
7517 bugfix: if sacrifice was accepted, apply() didn't tell the caller
7518 that it has been destroyed
7519ARROW, CONE, FBULLET, BULLET:
7520 now returns 'victim destroyed' if victim was killed by the attack
7521TRAPDOOR:
7522 play sound only if something fell through the trapdoor
7523 print trapdoor message _before_ falling into trapdoor
7524TRIGGER_ALTAR (in check_trigger()):
7525 don't check for sacrifices if called from animate_trigger()
7526 don't call check_trigger() from fix_auto_apply() anymore (this change
7527 breaks maps with altars that have their sacrifice already stored on
7528 them)
7529DEEP_SWAMP:
7530 deep_swamp() -> walk_on_deep_swamp() / move_deep_swamp()
7531 when deep_swamp() (now move_deep_swamp()) is called from
7532 process_object(), assume that state (swamp->stats.food) is already 1
7533EXIT:
7534 removed support for multisquare players
7535 don't print 'is closed' message when moving on an exit, only print this
7536 message if exit is applied manually
7537SIGN:
7538 only increment last_eat if it hadn't reached the limit yet
7539SPELLBOOK:
7540 removed partial support for applying by monsters
7541BOW, WAND, ROD, HORN:
7542 moved code to apply_special()
7543CLOCK:
7544 bugfix: Monsters must not apply a clock, they would crash the server.
7545POWER_CRYSTAL:
7546 Bugfix? Don't call esrv_update_item() if not applied by a player.
7547LIGHTER:
7548 Bugfix? Just return 0 if not applied by a player.
7549
7550* changes to apply_special():
7551
7552BOW:
7553 remove double check_skill_to_apply()
7554ROD, HORN:
7555 change message from "you apply ..." to "you ready ..."
7556
7557BOW: FLAG_READY_BOW is now set by apply_special(), but that seems
7558redundant because monster_check_apply() also sets this flag. Remove
7559setting of this flag from apply_special() because it could have a
7560more complex meaning in monster.c or remove setting of this flag from
7561monster_check_apply() because such stuff should be handled in apply.c?
7562FLAG_READY_BOW is also unset in apply_special() if a bow is unapplied.
7563
7564CONE:
7565 don't multiply damage by 20
7566SIGN:
7567 you can hear magic mouths even if you are blind
7568 however, now you can also read signs with FLAG_WALK_ON/FLAG_FLY_ON if you are
7569 blind
7570 (different object types or a new flag would be required)
7571RUNE:
7572 detonation moved from move_rune() to move_apply() -> runes will now always
7573 detonate if somebody steps on them
7574 allow runes with FLAG_FLY_ON
7575
7576completely removed GRAVE and MONEY_CHANGER
7577
7578common/object.c: was_destroyed(): new function
7579include/object.h: new typedef tag_t
7580move_apply() returns void, check_walk_on() uses was_destroyed()
7581
7582lib/checkarch.pl:
7583 check for archetypes with walk_on, walk_off, fly_on or fly_off and without
7584 a type
7585 check for archetypes with type FIREWALL (type 62) and without a level
7586
7587* server/apply.c: Bugfix: Don't skip calls to change_skill() if wizard -
7588calc_skill_exp() requires change_skill() to set the current experience object.
7589
7590* server/monster.c: find_mon_throw_ob(): Bugfix: Unapply applied object even
7591if heaviest object was choosen.
7592Bugfix: Use monster_apply_special() to unapply, clearing FLAG_APPLIED isn't
7593enough. -> Should fix the "HAS_READY_BOW without bow" errors.
7594* server/skills.c: find_throw_ob(): Bugfix: Use player_apply(), clearing
7595FLAG_APPLIED isn't enough.
7596Replace redundant check for FLAG_INV_LOCKED with error message at end of
7597function if the first check failed somehow and we have choosen an object with
7598FLAG_INV_LOCKED.
7599make_throw_ob(): error message if object is applied
7600
7601* lib/checkarch.pl: check that potions (type 5, POTION) have a level
7602
7603* server/apply.c: apply_special(): Handle all cases of applying and unapplying
7604skill objects.
7605* server/apply.c: manual_apply(SKILL): Just call apply_special().
7606* server/skill_util.c: change_skill(): Rewrite to simply use apply_special()
7607for changing skills.
7608
7609* server/apply.c: apply_special(): Bugfix: Fixed return values.
7610
7611* server/skill_util.c: link_player_skills(): Bugfix: Don't set exp_obj for
7612(visible) skill tools.
7613* server/skill_util.c: link_player_skills(): Bugfix? Reset op->chosen_skill
7614and FLAG_READY_SKILL because we have unapplied all skills.
7615* server/input.c: legal_range(): Bugfix: range_skill is valid only if
7616op->chosen_skill != NULL, not when there is some (unapplied) skill somewhere
7617in the inventory.
7618* server/login.c: check_login(): Bugfix: call legal_range() after
7619init_player_skills() - we can't handle range_skill correctly if skills haven't
7620been initialized.
7621* server/login.c: check_login(): Bugfix: Check return value of legal_range(),
7622and reset op->contr->shoottype to range_none if range was invalid.
7623* server/login.c: check_login(): Bugfix: Don't call fix_weight() - fixing
7624the weight of _all_ players isn't necessary. Just initialize op->carrying
7625directly with sum_weight() instead. This also removes the problem of
7626updating the weight of an object that hasn't been sent to the client yet.
7627* server/login.c: check_login(): Bugfix: We need to call fix_player()
7628(init_player_skills() needs this, and it also makes the code more robust).
7629
7630* server/apply.c: apply_altar(): Bugfix: Print altar's message before
7631casting the spell.
7632
7633* server/spell_util.c: move_cone(): Use copy_owner() instead of set_owner()
7634and manually correcting the skill and experience object pointers.
7635* server/spell_util.c: cast_cone(): Don't set FLAG_FLYING - the archetype
7636needs to have this anyway for move_cone() to work properly. Instead, print
7637error messages if FLAG_FLYING, FLAG_WALK_ON or FLAG_FLY_ON are missing.
7638
7639* server/apply.c: move_apply(): TRAPDOOR: Bugfix: Multiply by op->nrof when
7640calculating the weight.
7641
7642* randommaps/standalone.c, server/apply.c: fix_auto_apply(): Bugfix: Don't
7643call check_trigger() for objects of type TRIGGER. For other trigger types,
7644call check_trigger() only if there is an object above the trigger.
7645This can be used to implement doors that are only open shortly after the map
7646has been loaded.
7647* common/button.c: check_trigger(): Many changes. The triggers should now
7648behave as described in crossfire.doc. -> This breaks maps that rely on old
7649buggy behaviour.
7650
7651* server/monster.c: monster_apply_below(): will_apply & 1 now also applies
7652TRIGGER objects, not only HANDLE objects. Allows an interesting solution for
7653/asyvan/gate9 if there is no second player who can open the middle grate.
7654
7655* common/button.c: check_trigger(TRIGGER_PEDESTAL) and update_button(PEDESTAL):
7656Bugfix: Handle objects with heads correctly.
7657
7658* server/c_object.c: drop_object() and socket/item.c: look_at(): Bugfix: If a
7659player is moved on top with remove_ob()/insert_ob_in_map(), FLAG_NO_APPLY must
7660be set temporarily.
7661* common/object.c: remove_ob(): Bugfix: Don't call move_apply_func() if
7662FLAG_NO_APPLY is set.
7663
7664* server/apply.c: manual_apply(): Don't call apply_special() for objects
7665that are not in the inventory. Return 2 in this case.
7666* server/apply.c: player_apply_below(): Skip objects for which manual_apply()
7667returned 2.
7668
7669* server/apply.c: apply_spellbook(): Bugfix: Don't give experience for items
7670with FLAG_STARTEQUIP.
7671
7672---------------------------------
7673--- END apply() cleanup patch --- Jan Echternach 26/5/2000
7674---------------------------------
7675
7676server/input.c: modify examine_monster to use the maxhp field instead of
7677the arch hp field to determine healthiness of the monster. Also, give
7678this information for all creatures, not just monsters or players.
7679MSW 5/23/200
7680
7681socket/item.c: Add MAXITEMLEN define at top of file and use that to determine
7682 at what point item commands should be broken up. Prior hard coded value
7683 was not always large enough. MSW 5/23/2000
7684
7685include/define.h: add safe_strcat inline/static function. Add
7686 DESCRIBE_ABILITY_SAFE and DESCRIBE_PATH_SAFE which use the safe_strcat
7687 to prevent buffer overuns.
7688common/item.c: Have query_name use HUGE_BUF for its buffer - query_short_name
7689 uses that buffer size, and we call the same thing. have quer_name and
7690 query_short_name use the safe_strcat function. Increase buffer size
7691 in ring_desc to be a VERY_BIG_BUF and also use safe_strcat along with the
7692 DESCRIBE_*_SAFE macros.
7693server/input.c: Modify examine.c to not get buffer overruns for very long/
7694 complicated items. Modify long_desc to also handle long names/descriptions
7695 without buffer overruns.
7696socket/item.c: Modify the functions that prepend the length to the name
7697 of the object to handle very long (>255) object names properly - now we
7698 just truncate it and only send the first 255 bytes. add function
7699 add_stringlen_to_sockbuf to make this task easier.
7700With the above changes, very long named items/items with very long
7701descriptions works properly in both the server (no crashes) and the
7702client (no crashes/protocol errors) MSW 5/22/2000
7703
7704common/item.c: Modify query_short_name to avoid buffer overflow on long
7705ring descriptions. Also, increased size of buffer in this function so
7706that longer ring descriptions will not get truncated. MSW 5/22/2000
7707
7708server/c_chat.c: Add standard banner to top of file. Fix say command so
7709that it does not crash the server if something beyond 256 characters is
7710spoken - extra data is just truncated. MSW 5/22/2000
7711
7712common/object.c: Splitted set_owner() into set_owner_simple() and
7713set_owner(). copy_owner(): New function.
7714server/spell_util.c: explode_object(): Use copy_owner() instead of setting
7715skill and experience objects manually. Bugfix: Don't use op->owner
7716directly (fixed by using the caster in call to SP_level_dam_adjust(),
7717not the owner, which was wrong anyway).
7718server/spell_util.c: fire_arch_from_position(): Use copy_owner() instead
7719of set_owner() if 'op' isn't the real owner but only a spell object
7720owned by somebody else.
7721server/spell_util.c: move_swarm_spell(): Use the swarm spell object as
7722the owner in call to fire_arch_from_position(), which now handles this
7723case correctly.
7724server/spell_util.c: fire_swarm(): Call tailor_god_spell().
7725server/gods.c: determine_god(): op->type==SWARM_SPELL is a spell.
7726server/gods.c: tailor_god_spell(): op->type==SWARM_SPELL is a spell.
7727Always abort function if we couldn't find a god. Always add god's
7728attacktype if the spellop's attacktype has AT_GODPOWER.
7729- Jan Echternach 22/5/2000
7730
7731common/init.c, common/loger.c, include/logger.h, server/init.c: New
7732log level llevInfo which is the new default log level.
7733Many other files: Use llevInfo instead of llevError where appropriate.
7734Use 'settings.debug >= llevDebug' instead of 'settings.debug'.
7735- Jan Echternach 21/5/2000
7736
7737server/main.c: Use a marker object to track current position in the list
7738of active objects. Using a pointer didn't work because all objects on
7739that list can be removed from it by process_object(). One of the things
7740this fixes is bogus "Free object on list" errors.
7741- Jan Echternach 21/5/2000
7742
7743crossedite/Makefile.in: Modify to use $(MAKE) instead of make when
7744descending into subdirectories - fixes compilation on FreeBSD - MSW 5/17/2000
7745
7746socket/init.c: Fix incorrect check on return value from fread when
7747loading xpm images. MSW 5/17/2000
7748
7749Fix server/spell_effect.c - was assigning altar->other_arch to an object
7750and not archetype MSW 5/16/2000
7751
7752server/spell_effect.c: magic_wall(): Duration of darkness spell now
7753implemented with op->stats.food. This avoids problems with very low
7754speed values that were interpreted as infinite duration.
7755lib/spell_params: Changed duration parameters of darkness spell to
7756give a reasonable duration with the new formula.
7757- Jan Echternach 16/5/2000
7758
7759common/living.c: drain_stat(): There are 7 stats now, not 6.
7760- Jan Echternach 15/5/2000
7761
7762server/rune.c: rune_attack(): Check that victim still exists after
7763hit_player() was missing. This fixes server crashes if monster applied
7764a chest, found a diseased needle and was killed by it.
7765- Jan Echternach 15/5/2000
7766
7767server/spell_effect.c: cast_charm(): out_of_map() check was missing.
7768This fixes server crashes when a player casted this spell near the
7769edge of a map. - Jan Echternach 15/5/2000
7770
7771
7772Make image files and code more generic. This was largely done to make
7773adding support for png files easier, but in reality, it means adding support
7774for any new file format is now trivially easy. Format of the image
7775file is:
7776IMAGE <image num> <datalen> <image name>\n
7777followed by the image data.
7778This allows support for binary image formats (png), but also means that
7779the server doesn't need to know anything about the image format - rather
7780it is all just data as far as the server is concerned. I think this
7781actuallyy loads the xpm data a little faster - it would make sense that
7782it should, since it just reads all the data in with one fread instead
7783of parsing it line by line waiting for the end image delimeter.
7784Note: While png images are loaded, they are currently not supported
7785in the client nor will the server send them - that is the next step
7786in the work, but that will require just a few minor changes to the
7787server - most of those change will be in the client.
7788
7789crossedit/xutil.c: Merge bitmap & pixmap load routine into one called
7790 ReadImages, function modified to use above format.
7791crossedit/App.c: Call ReadImages to load images.
7792include/newserver.h: Change FaceInfo structure to have arrays of data
7793 and datalength instead of explicity entries for pixmap vs bitmap data.
7794lib/adm/make_xpm_file.pl, lib/crossfire.cfb, lib/xbmtobdf.c: Removed -
7795 either note needed or replaced by new naming scheme.
7796lib/adm/collect_images.pl: Replacement/improvement of make_xpm_file.pl
7797 above - this handles all image formats (xbm, xpm, png). This is
7798 also more intelligent in that it will not try to rebuild the image files
7799 if there is not a valid arch directory.
7800lib/crossfire.png, lib/crossfire.xbm (new files): .png file is for png
7801 images. xbm is to keep with the new standardized naming convention used
7802 and is for the bitmaps.
7803lib/crossfire.xpm: New format used in file.
7804lib/Makefile.in: Modified to collect via new script as well as new
7805 directives to collect (png files).
7806socket/init.c: Modified to load with the new format and data structures.
7807socket/request.c: Modified to send data with the new data structures
7808 provided.
7809
7810End of image changes, MSW 5/13/2000
7811
7812configure.in, configure: Add check for perl so that we can call scripts
7813properly - MSW 5/13/2000
7814
7815common/re-cmp.c: Add some tolower calls in the comparisons so most
7816regular expressions should not be case insenstive (makes matches & says
7817work better). Note that I did not change the behaviour on range matches
7818(Z-f for example), as I thought there may be side effects in that case.
7819MSW 5/8/2000
7820
7821socket/request.c: Add length checking to NewPlayerCmd so that if the client
7822sends us a really long command, we just truncate the end of it and not
7823overwrite our internal buffers causing crashes. MSW 5/8/2000
7824
7825server/player.c: add out_of_map check to stand_near_hostile function. This
7826fixes a server crash if the player uses a hiding skill near the edge of a map.
7827MSW 5/8/2000
7828
7829common/arch.c, common/loader.l (loader.c): Modify the load routines
7830to strip off trailing whitespace in object names and other_arch fields -
7831I believe this is why altars to Sorig did not generally work, and while
7832generally that white space should not exist, doing a little extra checking
7833for it is not a bad idea - MSW 4/26/2000
7834
7835Add HOLY_ALTAR type, and use that for praying over for gods and the
7836like.
7837doc/crossfire.doc: Add description of HOLY_ALTAR type and meaning
7838 of fields.
7839common/map.c: Disable consecration code for altars.
7840include/define.h: Add type for HOLY_ALTAR
7841include/sproto.h: Update for change of some functions below.
7842server/c_wiz.c: Modify setgod command to call become_follower with
7843 proper second arg.
7844server/gods.c: Change become_follower to take object pointer to god instead
7845 of name, since the holy_altar has the pointer in its other_arch.
7846 Modify pray_at_altar to use the new fields, as well as fixed
7847 what seemed to be numerous bugs in that function.
7848sever/skills.c: Change check from ALTAR to HOLY_ALTAR, also change
7849 check to see if HOLY_ALTAR is consecrated by looking at the
7850 other_arch field.
7851server/spell_effect.c: Update consecrate so that caster must be
7852 higher effective level than the altar, also update for
7853 differing fields.
7854maps/thomas/sisters/shrine0, map/thomas/sisters/tower0: Remove
7855 title from altars on these maps - these were the only two maps
7856 using old style altars consecrated to a god. Since it appears the
7857 real purpose of the altars on these maps was to trigger something
7858 else, they were kept as old style altars.
7859arch/gods/altars (relocated from arch/indoors, as I think the new
7860 location makes more logical sense): Update for new fields/format.
7861 This also affects lib/archetypes, lib/bmaps.paths, lib/crossfire.xpm,
7862 lib/crossfire.cfb
7863lib/adm/archsearch.pl: Modified to hunt out old archetypes - some of the
7864 changes could be useful in general cases.
7865MSW 4/26/2000
7866
7867server/spell_util.c: Fix move_golem so that multi square avatars (golems)
7868don't hit themselves. Remove will_hit_self function (only used in
7869move_golem), since it did not work. Change structure & indenting of
7870move_golem function so it isn't quite so nested - functionality
7871remains the same. When we do find something to kill in move_golem,
7872call attack_ob against it instead of hit_map - hit_map is not save
7873for multi object hitters. MSW 4/24/2000
7874
7875Key usage change: Add new command 'usekeys' that specify how keys
7876are searched for. The three options are inventory, keyrings, and containers.
7877These options apply to both standard keys and special keys. If the player
7878has a key for the door but it is in a container that will not be used,
7879print a friendly message of the key name and container name. Files
7880affected:
7881help/usekeys: Added describing options
7882lib/Makefile.in: Addition of help/usekeys above.
7883include/player.h: Add new enumeration and entry into player structure
7884include/sproto.h: New function prototype
7885server/apply.c: change of Find_Key to new function with slightly
7886 different options
7887server/c_misc.c: add function to support 'usekeys command.
7888server/commands.c: addition of usekeys command
7889server/player.c: rewrite & rename of find_key command, as well as changes
7890to move_player_attack
7891Mark Wedel 4/21/2000
7892
7893server/spell_effect.c: create_bomb(): New spell_type parameter, merely
7894for consistency with itself and with other spell casting functions.
7895- Jan Echternach 4/19/2000
7896
7897server/spell_effect.c: create_bomb(): Set level of created bomb.
7898Fixes the problem that the splints were casted without a level.
7899- Jan Echternach 4/19/2000
7900
7901lib/checkarch.pl: New perl script to check the archetypes file for
7902obvious bugs (like object that is alive but doesn't have a level).
7903- Jan Echternach 4/17/2000
7904
7905include/spellist.h: "meteor swarm" is now a missile spell (PATH_MISSILE)
7906just like "comet". - Jan Echternach 4/17/2000
7907
7908server/spell_util.c: path_level_mod(): Rewrote to fix countless bugs.
7909New interface with explicit base level parameter.
7910server/spell_effect.c: finger_of_death(): Call path_level_mod() with
7911correct base level.
7912server/spell_util.c: casting_level(): New function that combines
7913SK_level() with path_level_mod().
7914- Jan Echternach 4/17/2000
7915
7916server/spell_util.c: Several cosmetic changes (spell type parameter name
7917is spell_type, arch_to_object(get_archtetype(...)) is equivalent to
7918get_archetype(...), use casting_level() if applicable).
7919- Jan Echternach 4/17/2000
7920
7921server/spell_util.c: fire_swarm(): New 'caster' parameter because
7922owner and caster can be different. Level of the swarm object is casting
7923level of the caster, not overall level of the owner.
7924server/spell_util.c: fire_arch_from_position(): Set level of fired
7925arch to casting level of caster.
7926server/spell_util.c: cast_cone(), cast_smite_spell(): Set level of spell
7927object to casting_level() and not SK_level() to honour path_attuned and
7928path_repelled of the caster.
7929server/spell_util.c: move_cone(): Just copy the level for new cone
7930objects.
7931
7932Missing level meant AT_DEATH didn't work, missing call to
7933path_level_mod()/casting_level() meant path_attuned/path_repelled was
7934ignored. - Jan Echternach 4/17/2000
7935
7936server/player.c: fire_bow(): Set level of fired arrow. Arrows with
7937AT_DEATH are now working. - Jan Echternach 4/17/2000
7938
7939server/player.c: fire(): Call check_skill_to_fire() even for wizards
7940because this function has the important side effect of setting the current
7941skill and experience objects. - Jan Echternach 4/17/2000
7942
7943server/skills.c: do_throw(), server/time.c: stop_arrow(), server/player.c:
7944fire_bow(): Flying arrows and thrown objects have FLAG_NO_PICK set because
7945picking these objects is currently broken (and maybe it shouldn't be
7946possible anyway - picking up a _flying_ arrow?). - Jan Echternach 4/17/2000
7947
7948server/c_wiz.c: set_god(): Didn't work at all because it was trying to
7949set the current player as his own god. - Jan Echternach 4/17/2000
7950
7951server/map.c: check_path(): Return value was wrong if the name did not
7952refer to a regular file. A symptom of this bug was that the server crashed
7953if a wizard tried to enter a directory with the 'goto' command.
7954- Jan Echternach 4/17/2000
7955
7956server/map.c: open_and_uncompress(): Check that the file we have opened
7957is (still) a regular file, fail if it's not. This is the right place
7958for such checks if we want to avoid race conditions (e.g. file replaced by
7959directory while trying to open it). - Jan Echternach 4/17/2000
7960
7961c_party.c commands.c daemon.c disease.c gods.c spell_effect.c spell_util.c:
7962Cosmetic fixes - updates to rcsid string to include right file name as well as
7963updates to mail address and/or additions to top banner. Mark Wedel 4/13/2000
7964
7965Various files: Updated my mailing address to be accurate - Mark Wedel
79664/13/2000
7967
7968doc/playbook/handbook.idx: Automatically generated file removed. This
7969is not something normally included in packed up distributions, so no reason
7970to have it in CVS - Mark Wedel 4/13/2000
7971
7972doc/include_html.pl, doc/playbook/make_index.pl, doc/spoiler-html/makeps.pl,
7973lib/adm/make_xpm_file.pl:
7974
7975Change to use /usr/bin/perl instead of /usr/local/bin/perl - real change is to
7976find perl in configure.in and call the scripts with that. Mark Wedel
79774/13/2000
7978
7979
7980server/input.c: Don't try to calculate spellpoint costs for denied spells,
7981because these are undefined and are now causing lots of BUG messages. Also
7982improved formatting: spellpoint costs can be > 99, and don't fill everything
7983with zeros, use spaces instead. Patch by Jan Echternach, applied & checked in
7984by Mark Wedel, 4/12/2000
7985
7986server/skill_util.c: Fixed some log messages that were lacking a newline at
7987the end. SK_level(): Rewrite of this function to simplify its structure.
7988Print error message if we find an invalid level. Add top copyright/contact
7989banner (msw) Patch by Jan Echternach, applied & checked in by Mark Wedel,
79904/12/2000
7991
7992server/apply.c, server/monster.c: Fix in apply.c for encounter maps
7993so that proper message is generated, and differentiate behaviour if it
7994is a floor vs not a floor. Also, change to both files in that apply_below
7995stops at the floor object. Patch by Jan Echternach, applied & checked in by
7996Mark Wedel, 4/12/2000
7997
7998server/apply.c, doc/crossfire.doc: Fix to prevent server crashes when monster
7999applies poison object. doc file is updated to include accurate information on
8000values in poison object. Patch by Jan Echternach, applied & checked in by
8001Mark Wedel, 4/11/2000
8002
8003CREDITS, server/main.c: Add Peter Gardner to list of credits.
8004Mark Wedel 4/4/2000
8005
8006server/apply.c, improve_armour():
8007Maximum armour value reduced to 90. Items can now always be improved up
8008to this value. For armour x you need level x, not level x + 1 as before.
8009esrv_send_item() and fix_player() also called if only magic value was
8010improved. Patch by Jan Echternach, applied & checked in by Mark Wedel,
80114/4/2000
8012
8013server/attack.c, attack_message():
8014More messages. "grind to dust" is more damage than "shred to pieces".
8015Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
8016
8017server/spell_effect.c, magic_wall():
8018Fix calculation of duration of darkness spell. Before, you could get
8019huge negative speed values with high experience levels, which meant very
8020short duration.
8021Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
8022
8023server/spell_util.c:
80241) New argument of fire_swarm() to specify whether it's a magic attack.
8025All swarm spells except meteor swarm are now magic (just as the
8026underlying basic spell).
80272) New function fire_arch_from_position() which doesn't use the owner's
8028position as the starting position of the fired arch.
80293) move_swarm_spell(): Correctly set owner and magic in call to
8030fire_arch_from_position().
80314) Above changes fixes "cause many wounds" spell
8032Patch by Jan Echternach, applied & checked in by Mark Wedel, 4/4/2000
8033
8034
8035common/map.c: Change calls in file to use insert_ob_in_map simple.
8036This fixes bugs with buttons not being applied correctly when the map
8037is loaded - the cause is that push_button is getting called for the
8038button before all the objects the button is linked to have been loaded.
8039Then when the map finishes loading, the call to update_button is called
8040and they are not in sync. This change should make loading slightly faster,
8041mostly because it does not call check_walk_on during the loading, so that
8042buttons don't get pushed/changed around. Mark Wedel 3/28/2000
8043
8044server/player.c: If player is using pickup mode 6, only have them pick up
8045the item if they know it is magical. Prior to change, items would be
8046picked up if they are magical, but not if the player knew that, so the code
8047was giving extra knowledge to players. Bug reported by Kurt Fitzner,
8048checked in by Mark Wedel, 3/26/2000
8049
8050common/map.c: Code fix by Kurt Fitzner so that unique maps will get
8051compressed if so needed. Fixes problem of unique maps not being
8052able to get reloaded as they are saved with the compress suffix but
8053not in compressed form. Code checked in by Mark Wedel, 3/26/2000
8054
8055server/skills.c, server/spell_effect.c: Improve behaviour when identifying
8056items - the identify routine already updates the client if it is
8057in the players inventory, so only send update to client if the item is
8058on the map. Also, do full item update, as many fields may change, and
8059that is what the identify function does. Standard top of
8060file banner also added to skills.c file. Fixes problem of
8061objects in inventory being displayed with two numbers in from
8062(ie, two two bows +1).
8063Bug and initial fix of item updates by Kurt Fitzner,
8064implemented in a bit different way by Mark Wedel. 3/26/2000
8065
8066Makefile.in, doc/Makefile.in: Modified so that making the docarchive
8067now works. The make must be done from the top level for it to work, since
8068some values are passed, but the doc/Makefile.in was missing some declarations
8069and had some other fixes that needed to be done. msw 3/22/2000
8070
8071------------------------------------------------------------------------------
8072Changes for 0.95.5:
8073
8074Makefile.in: comment out the EXTRA_FLAGS (which contains the -Wall
8075entry) - the presumption that everyone is going to use gcc to compile
8076crossfire is a poor one, and -Wall is only supported on gcc. I would
8077rather have it compile on the maximum number of systems without it
8078needing changes than to require the end user to make the customizations.
8079A better long term solution is to have configure.in check for gcc or
8080if -Wall is supported it and have it add it in. msw 3/21/2000
8081
8082server/c_object.c: Fix pick_up_object function to deal with non players
8083picking up objects - prior to fix, program would crash when monsters
8084pick up objects. Also, add standard banner at top of file about
8085copyright, contact, version information. msw 3/21/2000
8086
8087CREDITS, README: Updated to contain my new mailing address. In reality,
8088almost all the files have an out of date address for me, but these
8089are probably the ones people will look at most. README also updated
8090with new ftp location. msw 3/20/2000
8091
8092include/Makefile.in: Update files to include material.h - need when
8093packing up new releases - msw 3/20/2000
8094
8095doc/hanbook.ps, doc/spoiler.ps, doc/spoiler-html/spoiler.html: Rebuilt with
8096latest version of crossfire - not sure if there are any content changes, as
8097the tools to build the file have been updated on my system, causing many
8098changes to the prologue and outputted data. - msw 3/20/2000
8099
8100
8101Change doc/spoiler-html/Makefile.in and doc/playbook-html/Makefile.in to use
8102$(datadir) instead of $(C_LIBDIR). Other add AWK and INCDIR lines so that it
8103properly builds with autoconf setup. msw 3/19/2000
8104
8105Change spoiler.tex, handbook.tex to build properly with later versions
8106of tetex - added language specifier when using the babel package.
8107msw 3/19/2000
8108
8109Add missing doc/playbook/fig directory to the CVS reposistory -
8110msw 3/18/2000
8111
8112Change summon_cult_monster code so that it will no longer summon big monsters
8113on top of walls or the player. Also, if there is not space for a big
8114monster, try to find another pet monster that will fit in the space.
8115File affected: server/spell_effect.c - msw
8116
8117Change gorokh.arc to use anim devil instead of anim Lucifer - fixes crash
8118when using avatars of gorokh - msw
8119
8120Split off kill_player function from do some living, and check for player
8121death upon player login. This splits up an otherwise very large function,
8122but more importantly, the second point allows NOT_PERMADEATH to work as
8123expected when the player is dead when logged out. Previous, the if the
8124player was dead when they logged out, it would just kill off the character
8125permanently (without grave marker or anything), even in NOT_PERMADEATH
8126mode. Also, cleaned up player load code to remove code that supported
8127very old style save files.
8128Files changed: server/login.c server/player.c include/sproto.h - msw
8129
8130Change NO_STAT define in living.h,skillist.h,skill_util.c to NO_STAT_VAL
8131to remove conflict on AIX systems. - msw
8132
8133Fix error in configure.in - was referancing BZIP2, when it should have
8134used BZIP - msw 2/7/2000
8135
8136server/skill_util.c: Fixed spelling of unwield
8137configure.in: Update -z checks to not use eval, double quote the variable.
8138This seems to be needed on solaris and probably other systems.
8139Both changes commited by Mark Wedel, 2/7/2000
8140
8141---SMALL BUGFIX--- John Cater 5/11/1999
8142server/attack.c:
8143- changed the logic in hit_player to attack enemy races with holy word
8144playtested
8145
8146
8147---BEGIN BATCH UPDATE--- DAMN 9/17/1999
8148server/alchemy.c:
8149- minor cleanup
8150
8151server/apply.c:
8152- split multiple lighters
8153
8154server/attack.c:
8155- vulnerability gives -4 to saving throw against non-damage attack effects
8156- immunity to acid reduces the probability of corrosion
8157- immunity and protection and not vulnerability to acid prevents corrosion
8158- magic bonus improves item's saving throw against acid
8159- vulnerability to drain doubles rate of exp loss, protection halves rate
8160- holy word slaying is checked in hit_player, no need to double-check
8161in hit_player_attacktype
8162- prot:magic and vuln:magic affect all magical damage, not just raw magic
8163- Holy Word and Turn Undead affect undead at half strength if they're not
8164listed as an enemy race
8165- Holy Word and Turn Undead have no effect on undead if they're listed as
8166a friendly race
8167- minor bugfix/cleanup
8168
8169server/gods.c:
8170- minor bugfix/cleanup
8171- luck slightly improves chance of divine intervention
8172
8173server/input.c:
8174- fixed typo
8175
8176server/main.c:
8177- trivial bulletproofing, probably no effect
8178
8179server/player.c:
8180- sp regen penalty from armour calculated in fix_player instead of being
8181recalculated for each spell point gained.
8182
8183server/shop.c:
8184- payment will come from open pouches if you don't have enough in your
8185top-level inventory
8186- money for sold items will go into open pouches until they're full,
8187then overflow into top-level inventory
8188
8189server/skills.c:
8190- minor bugfix in throwing
8191- writing in one of a stack of books seperates one book out first
8192
8193server/spell_effect.c:
8194- generalized staff_to_snake to animate_weapon
8195
8196server/spell_util.c:
8197- Staff to Snake, Dancing Sword, and Animate Weapon spells now all use
8198animate_weapon function
8199- holy golems avoid damaging their owners
8200- raw mana spells
8201
8202common/living.c:
8203- minor bugfix
8204- fix_player now calculates sp regen penalty from armour
8205
8206common/readable.c:
8207- spelling fix: grimore -> grimoire
8208
8209doc/crossfire.doc:
8210- minor edits
8211
8212include/defines.h:
8213- moved object type numbers to object.h
8214- moved flag numbers to object.h
8215- moved NROFREALSPELLS to spells.h
8216- moved path numbers to spells.h
8217- moved DESCRIBE_PATH macro to spells.h
8218- moved ARMOUR_ and WEAPON_ macros to player.h
8219- moved player state numbers to player.h
8220- moved monster movement numbers to living.h
8221- moved NROFSKILLS to skills.h
8222
8223include/global.h:
8224- #defines from spells.h and material.h loaded early
8225
8226include/object.h:
8227- now has the #defines for object type numbers
8228
8229include/skills.h:
8230- moved NROFSKILLS here
8231
8232include/player.h:
8233- added gen_sp_armour variable
8234
8235include/spellist.h:
8236- added mana spells, Dancing Sword, and Animate Weapon
8237
8238include/spells.h:
8239- moved NROFREALSPELLS here and updated it
8240- now has the #defines for spell path nummbers
8241- added mana spells, Dancing Sword, and Animate Weapon
8242
8243include/sproto.h:
8244- added animate_weapon and pay_from_container prototypes
8245
8246include/material.h:
8247- new
8248
8249lib/spell_params:
8250- added entries for mana spells along with their fire equivalents
8251
8252lib/formulae:
8253- minor spelling fixes to match minor spelling fixes in artifacts
8254
8255lib/artifacts:
8256
8257Weapons
8258- Sanwe -> Gnarg (any weapon)
8259 chance 5, value x10, magic 0, dam 120%
8260
8261- Lythander (any weapon)
8262 chance 5, value x20, magic 0, luck +1, weight 90%
8263
8264- Gwormi -> Gaea (wooden weapons only)
8265 chance 20, value x50, magic 2, regen +1, dam 110%
8266
8267- Slay Demon -> Valriel (any weapon)
8268 chance 15, value x30, magic 2, weapon speed 120%, slaying demon
8269
8270- (new) Gorokh (any weapon)
8271 chance 15, value x30, magic 2, weapon speed 120%, slaying angel
8272
8273- (new) the Devourers (any weapon)
8274 chance 8, value x30, magic 1, attacktype: physical, cold, depletion
8275
8276- (new) Mostrai (axes and hammers only)
8277 chance 10, value x12, magic 1, dam 140%, weight 115%
8278
8279- (new) Sorig (metal weapons only)
8280 chance 5, value x15, magic 1, weight 95%, weapon speed 125%
8281 attacktype physical, electricity
8282
8283- (new) Ruggilli (metal weapons only)
8284 chance 5, value 15, magic 1, weight 85%, weapon speed 110%
8285 attacktype physical, fire
8286
8287Helmets (moved to after weapons, with the rest of the armour)
8288- Lordliness -> Valriel (full helm only)
8289 chance 20, value x50, magic 2, Wis +1, Cha +1
8290
8291- Uriel -> Sorig
8292 chance 10, value x20, magic 1, ac +1, armour 120%, prot electricity
8293
8294Shields
8295- Theodin -> Mostrai
8296 chance 8, value x24, magic 1, prot fire
8297
8298- Gnarg
8299 chance 8, value x12, magic 1, ac +1, armour 180%, Cha -1
8300
8301Gauntlets
8302- (new) Sorig (gauntlets only)
8303 chance 15, value x75, magic 2, armour 10, weight 125%, attack: electricity
8304
8305- (new) Sorig (gloves only)
8306 chance 10, value x10, magic 1, armour 5, weight 125%, prot: electricity
8307
8308Armour
8309- (new) Valriel (plate and scale only)
8310 chance 6, value x20, magic 1, armour 120%, weight 110%
8311
8312- (new) Gorokh (plate and scale only)
8313 chance 6, value x15, magic 1, ac +2, armour 110%, weight 105%
8314
8315- (new) Ruggilli (plate, scale, or dragon armour)
8316 chance 10, value x55, magic 3, ac +1, armour 120%, weight 90%, prot: fire
8317
8318- (new) Gaea
8319 chance 10, value x25, magic 2, ac +1, armour 120%
8320
8321Cloaks
8322- (lesser version of cloak of the Underworld) the Devourers
8323 chance 3, difficulty 3, value x50, magic 3, weight 50%, material 0, Cha -2,
8324 prot: acid, drain, ghosthit, depletion
8325
8326Bows
8327- (new) Valriel
8328 chance 10, value x15, magic 1, weight 110%, damage 200%
8329
8330- (new) Gorokh
8331 chance 15, value x15, magic 2, damage 160%, attacktype: physical, acid
8332
8333- (new) Lythander (not crossbow)
8334 chance 10, value x22, magic 1, weight 75%, wc +1, speed 150%
8335
8336- (new) Ruggilli (crossbow only)
8337 chance 10, value x18, magic 2, weight 85%, wc +1, speed 110%,
8338 attacktype: fire
8339
8340- (new) Sorig
8341 chance 12, value x20, magic 2, weight 95%, wc +1, speed 125%,
8342 attacktype: electricity
8343
8344- (new) Mostrai (crossbow only)
8345 chance 5, value x50, magic 3, damage 140%, speed 75%,
8346 attacktype: weaponmagic
8347
8348- (new) Thunder
8349 chance 10, dificulty 5, value x10, magic 2, weight 90%, damage 150%, wc +2
8350 attacktype: physical, slow, paralyze
8351
8352...and a few minor spelling fixes
8353
8354---END OF BATCH UPDATE--- DAMN 9/17/1999
8355
8356Add crossfire.oc.humbug.org.au server information to README file - msw
8357
8358Change compress method definitions from being determined by checks
8359on system type to having autoconf find the utilities for us. Also, add
8360bzip2 support. Files affected: Makefile.in configure.in common/map.c
8361server/init.c server/login.c include/config.h include/define.h
8362include/autoconf.h.in - msw
8363
8364Fix in server/rune.c - if the victim of a trap/rune is not on a map
8365and the object has a disease, it would crash the server. Temporary
8366fix put in to make sure there is a map, and if not, use a predefined
8367difficult of 1. I think the real issue is how can an object not on a map
8368be setting a trap (in this particular bug, reported by Klaus Elsbernd,
8369the victim was a thrown object) - msw
8370
8371Change by dragonm@absolut.tegris.org - improve crossedit so that if you
8372try to load a map you alreay have in memory, it will raise the window -
8373it will also give you the option to forget, save changes, or just raise
8374the window if the in memory version of that map has been modified. Checked
8375in by msw. (crossedit, App.c, Edit.c, Edit.h)
8376
8377Bugfix in server/apply.c - apply_container()
8378 When checking for keys to locked containers, only searched player's
8379 inventory, not keyrings. Changed to use FindKey function in player.c,
8380 which does search keyrings.
8381 --DAMN
8382
8383Bugfix in server/main.c - enter_exit()
8384 Unique maps were using their actual location as a path for moving to
8385 a new map. They need to use the location of the original map, not
8386 the character's individual copy of it. This is re-constructed from
8387 the individual map's filename, which is based on the original path.
8388 --DAMN
8389
8390Remove xbmtobdf man page - since it is run automatically and it is likely
8391that people will not run it manually (and it appears to be innacruate - or
8392at least imcomplete), may as well remove it. - msw
8393
8394Change install location of man pages to section 6 instead of section 1 - msw
8395
8396New man page submitted by Egbert Hinzen that is actually correct and
8397accurate as the options now relate to crossfire. - msw
8398
8399 This one is a suggested fix for the alchemy bug that grants obscene
8400 amounts of experience for certain formulas. Those formulas are the ones
8401 that create items with a high fixed level, because those items are
8402 pretty worthless otherwise. Dust of Repelling Undead, for example, is
8403 level 30.
8404 The fix I implemented here is to base the chance of success largely
8405 on the level of the product, so it's very difficult to produce
8406 something like Dust of Repelling Undead, and therefore worth the
8407 extra experience. The chance of success is now based on the
8408 following factors:
8409 1) level of product
8410 2) number of ingredients in formula
8411 3) rarity of formula as listed in "formulae" data file
8412 4) number of batches being made
8413 5) Alchemy skill (if present)
8414 6) enchantment of cauldron
8415 7) luck
8416
8417patch from DAMN
8418This one makes a couple things level dependent that used to be fixed:
84191) time it takes Word of Recall to take effect
84202) amount of energy transferred by Transferrence spell
84213) percentage of energy drained by Magic Drain spell
8422
8423Also, the following effects have been modified:
84241) Followers of a cult that considers undead enemies have a penalty to
8425Command Undead.
84262) Magic Drain gives back to the caster a small portion of the energy
8427drained from the victim.
8428
8429And a bug was fixed:
84301) SP_level_dam_adjust used and SP_level_strength_adjust used the
8431player's level, where they should have used the caster's level.
8432 --Patches from DAMN, applied by PeterM
8433
8434Marker object added, alchemy modified so that recipes
8435can require keycodes and MARKS to execute, detectors modified
8436to be able to detect MARKS, and all of this documented in
8437crossfire.doc --PeterM
8438
8439server/gods.c -- changing gods now costs players their special
8440 prayers. --PeterM
8441server/alchemy.c -- levels less than ten no longer produce
8442 cursed items, but only slag or nothing. --PeterM
8443server/shop.c -- unidentified stuff is worth at most 60gp or so.
8444 ---PeterM
8445
8446random_maps/style.c - fix type in the scandir function which cause
8447compilation problems for those systems that actually need it. - msw
8448
8449Change command_cast_spell so that it preserves a return value from
8450find_spell. This re-enables partial spell matching (ie, cast prot
8451will show all spells that start with that.) - msw
8452
8453------------------------------------------------------------------------------
8454Change for 0.95.4:
8455
8456Add better comment in config.h about the DM_MAIL option - msw.
8457
8458Fixed and doc/playbook/Makefile.in doc/spoiler/Makefile.in so it works with
8459autoconf setup.
8460
8461Updated to properly generated handbook.ps when needed - msw
8462
8463doc/crossfire.doc: Updated with disease code notes, detector notes.
8464
8465crossedit: Fix in edit.c to ensure map objects (mainly is_floor objects)
8466are actually removed visually as well as from a pure object standpoint.
8467
8468Change to save_throw_object: If object is in players inventory and
8469is destroyed, send update to client. This can happen when trying to
8470ignite something in the inventory with flint and steel - msw.
8471
8472In apply_lighter, do more accurate check when seeing if the attempted
8473object was actually destroyed. Also, cache the item name so that if
8474it is destroyed, we have a proper name to print out. - msw
8475
8476fireborns changed to have Pow stat bonus instead of Wis
8477stat bonus. --PeterM
8478
8479Some problems in the random map code fixed: specificially,
8480 1) fountains no longer attempted placement outside map
8481 2) Ignore files/dirs named CVS when looking for styles.
8482
8483I changed a few of the maps to have exits to random maps.
8484I made one random house in Scorn, one random exit in the Hall of Bones
8485to an undead maze, another exit to a random map in the hole SE of
8486Scorn, and one in the bottom of the Tower of the Stars. --PeterM
8487
8488
8489Update lib/Makefile.in to create empty bookarch and temp.maps files as
8490part of install process. - msw
8491
8492Change configure.in script so that by default, files will be put in
8493installdir/var/crossfire and installdir/share/crossfire instead of
8494just installdir/var and installdir/share. This allows crossfire to be
8495installed more cleaning without it having its own top level directory.
8496Old installation behaviour can be gained by using --enable-old-layout when
8497running the configure script. - msw
8498
8499Patch by Carsten Pluntke that fixes a problem with unique maps not being
8500properly reloaded after being swapped out (main.c) - msw
8501
8502Fix so that when picking up objects from a container, the client gets
8503an update to remove the object display from the container (ie, if
8504you pick up all the gold coins from a container, the total in the players
8505inventory always got corrected, but the client still displayed some in the
8506container even if there should not be.) The change is in c_object.c - msw
8507
8508Check that hitter has a valid name before it attacks - fixes some
8509crashes (attack.c) - msw
8510
8511Enhance lib/collect.pl to ignore CVS directories - msw.
8512
8513
8514Improve auto_apply functions so that it will create treasures (random_*
8515items) inside other objects. There is still a limit in that it will only
8516look for these objects inside other top level objects - a random potion
8517inside a chest inside a monster will not be processed. But that
8518should be a rare case, and nesting containers very deep has never been
8519well supported in the code. The code affects is in the apply.c file. -msw
8520
8521Add Xaw to start of libraries when linking crossedit - fixes focus problem.
8522File affected configure.in - msw
8523
8524Fixed a bug in the "depletion on death" code. The depletion
8525never had any stat removal specified. --PeterM
8526
8527Remove berzerk code/variable from player structure. The code had
8528no effect - whatever functionality it once had has been removed in the
8529past. - msw
8530
8531
8532Add flag save information for FLAG_CLIENT_SENT that was otherwise
8533missing (loader.l). This fixes the disappearing archetype bug - msw
8534
8535
8536Fixed buffering bug in lowlevel.c
8537 --David
8538
8539------------------------------------------------------------------------------
8540Changes from Crossfire 0.95.2 to 0.95.3:
8541
8542Fixed missing god animations in the archetypes.
8543
8544SIMPLE_EXP option added. From config.h:
8545 * Define this if you want to use the new (0.95.3) experience system.
8546 * The system has the following changes:
8547 *
8548 * 1) 2000 exp need for second level. All additional levels are shifted
8549 * accordingly.
8550 * 2) Your stats in your skill categories don't affect the amount of
8551 * exp you get.
8552 * 3) Your level difference doesn't affect the exp you get for killing
8553 * monsters.
8554 *
8555 * If this commented out, you get the old system.
8556 *
8557 * This can also be set by using -simple-exp/+simple-exp as a run
8558 * time option.
8559
8560
8561Change treasure lists so that stat improving potions won't show up in
8562shop. They should still show up on the ramdom_potion spaces on the
8563maps (may in fact be slightly more common there than before)
8564
8565Move socket related code out of server directory and into socket directory
8566and re-arrange cod so that what is in what file makes more sense.
8567
8568Code from Peter Mardahl to have death result in stat depletion and
8569not actual stat loss. Setable by via STAT_LOSS_ON_DEATH option in config.h
8570or -stat_loss_on_death/+stat_loss_on_death command line
8571options.
8572
8573Patch by Peter Mardahl to change immunity spells from PATH_PROT to PATH_NULL
8574- this will stop gods from giving out these spells.
8575
8576Patch by Peter Mardahl so that players will never fumble the reading
8577of scrolls. You only get half as much exp for reading the scrolls now
8578however.
8579
8580Update the README file - the list of public servers was grossly out of date
8581and mostly removed. The instructions for running/playing were out of date,
8582containing information for servers with the old X11 code.
8583
8584Change CAN_MERGE so that identified items with different been_applied
8585will merge (this is currently done by just setting the been_applied flags
8586for the object in CAN_MERGE if they have been identified)
8587
8588Temporary fix for disease code - I was seeing endless loops in weight
8589contributions because an disease object op->env points back at itself.
8590In do_symptoms, we check to see if the victim matches the disease we
8591are about to infect them with, and if so, don't proceed further. The
8592cause of this pointer recursion needs to be found instead of
8593this current fix.
8594
8595Change daemon.c so that hpux systems can also use ioctl (.., TIOCTTY, ..)
8596call in addition to SYSV systems.
8597
8598players and logs command added. players show all current player names
8599currently in use, logs show sockets that are currently listening for
8600kill log information. Add limited support for some commands from
8601the socket (hiscore, logs, maps, motd, players, version, who).
8602After socket has been authenticated to have valid server, shout and tell
8603also available. To switch socket into old style mode, first command
8604entered should be 'oldsocketmode'. Server code then knows not to
8605prepend packet length information, so most functions work on this new
8606socket without any changes.
8607
8608Add verify_player function to login.c (takes name and password and verifies
8609they are ok - used for old socket emulation). Also notify all
8610players when a player joins the game (this must have gotten removed
8611at some point).
8612
8613change prototype for cs_write_string to take a constant string. In
8614readpacket, have it read in 100 bytes even if length information looks
8615incorrect (allows easier initial switching to oldsocketmode). If
8616the length of the input buffer is for some reason negative, call abort.
8617
8618Clean up nconns in socket.c - it was being increased 2 times when
8619a socket was added, and decreased by 2 when a socket was removed.
8620Add newline to initial version command so people telneting in for
8621old socket compatibilty get something a little more presentable.
8622command char pointer added to newsocket structure - used for player
8623name or listener html address. Fix in memory overrun/corruption when
8624freeing the last allocated socket - it would write data beyond the allocated
8625data.
8626
8627if new_draw_info is called to notify everyone, also notify sockets
8628running in old mode if it isn't a kill log listener.
8629
8630Update commands.h file so that it won't declare various values if included
8631multiple times - only the first time it is included will it declare the
8632values.
8633
8634Add extern declaration for init_sockets to global.h since other functions
8635now need to access them.
8636
8637Who command extended to also show active socket connections without a player
8638attached.
8639
8640Kill log (watchable from socket) added.
8641
8642Add support to use old socket commands on the new port.
8643
8644Fix by Seikoh Nishita for weapons that slay multiple creatures - before
8645fix, they would not slay anything (args to strstr were reversed)
8646
8647Don't give out exp for orating to monsters owned by another player - fixes
8648abuse since 2 players could quickly orate back and forth and gets lots of
8649exp. The orate function was also cleaned up a bit to be more efficient
8650(presumption is made that there is only 1 monster on any one space, so once
8651we find one, there is no need to do further processing)
8652
8653If door is passable, print a message to the player if he tries to
8654pick the lock and don't let them pick it (examples here are the
8655doors which you can walk through)
8656
8657Fix by Seikoh Nishita that should prevent some crashes when exiting
8658shops - appears that there could be circumstances when i was trying
8659to referance a null pointer in an error message.
8660
8661Add popen_local for sgi systems - without this, sgi can only open one
8662compressed map before it fails to open further compressed maps.
8663
8664Fix by Timo Kokkonen so that resurrection works with the new player
8665save method. This should also fix the problem that dead players when
8666using PERMADEATH being able to log in after dying.
8667
8668Allow FORCE objects to increase digestion/hp/sp/grace regeneration.
8669
8670Remove style.h file, since we now have an automatically generated proto file
8671from random directory source. Also fix in makefine to use proper ar
8672when creating the archive.
8673
8674Add 'race *' to maps/styles/misc/fountains - this fixes a crash when
8675entering random maps.
8676
8677If use presses an incorrect key at the play again prompt, reprint the
8678play again question.
8679
8680Change find_free_spot to return -1 if no spot available, update calls so
8681check for this return value instead of 0 (value = means current spot
8682available)
8683
8684Change pet movement so that pets should no longer jump walls.
8685
8686Update configure, makefiles, and code to use proper locations of installed
8687files (no longer $prefix/lib, instead $prefix/share for read only,
8688and $prefix/var for read/write.
8689
8690When using a special key to open the door, print a message informing the
8691player what key was used to open the door.
8692
8693Minor map cleanups/changes. Some improper exits changed to point the
8694right place, extraneous style maps removed due to new gods, other maps
8695updated to replace now missing altars with their replacements.
8696
8697Change gate code logic so instead of using speed to determine if the object
8698can move itself, we instead check the ALIVE flag (this fixes problems for
8699animated objects, and is a more accurate method in any case.)
8700
8701Fix by S.Nishita so that containers on the ground get properly unapplied
8702when player moves off them.
8703
8704Fix by S.Yoshioka's so that damage for cone spells is calculated properly
8705as they propogate.
8706
8707Remove server side referances to INFOLINES and INFOCHARS, since that is now
8708controlled by the client.
8709
8710Code cleanup to random map generator to prevent compiler warnings.
8711Also, change comparision of val == 0x1 to val-1 = null, since the
8712later is more portable.
8713
8714added some missing newlines to log messages in the newsocket.c file.
8715
8716fix pickup modes some - mode 4 appeared to work ok (pickup all), but mode
87175 wasn't working right (pickup all and stop). I have tested the modes
8718with the X11 client, and they all appear to work properly.
8719
8720House of Healing map (with link from starting city) added by Peter Mardahl.
8721
8722Change player move code so you will no longer swap spaces with a pet
8723monster/other friendly object is you are braced.
8724
8725Fix off by one error in the buffering socket buffering code - this would
8726cause buffer overflows if the data being added equaled exactly the buffer
8727size+1. Similar fix when reading in packets
8728
8729Increase NROFATTACKS to 24 in define.h so the AT_INTERNAL attacktype
8730work properly.
8731
8732Patch by S.Yoshioka so that godpower/holyword spells are not magical.
8733
8734Fix in attack.c by S.Yoshioka to call free_object instead of free for
8735splitting monsters.
8736
8737Fix by S.Yoshioka so that magic bullet or other pure magic spells do
8738damage to other parts of multisquare monsters.
8739
8740Fix by S.Yoshioka so that you can not get exp in other skills with cone
8741spells.
8742
8743Fix by Seikoh Nishita so that magic walsl can not be placed on top of
8744other walls/monsters.
8745
8746Fix by Seikoh Nishita so that we don't clear the NO_STEAL flag on
8747insert_ob_in_map - this makes singing/stealting from the same monster
8748multiple times impossible.
8749
8750Patch by Seikoh Nishita so that boulders will roll off gates.
8751
8752Have server send updated weight of container when dropping all items from
8753a container.
8754
8755New random map decore styles for new religions added.
8756
8757Patches from James Cameron to fix compile errors/warnings.
8758
8759Fix missing animations for some of the gods.
8760
8761Remove *.orig files from maps/picks directory.
8762
8763Maps updated wtih dtabb 2.60, navar_city 2.40 maps from John Cater.
8764
8765------------------------------------------------------------------------------
8766Changes from Crossfire 0.95.1 to 0.95.2:
8767
8768speed_left values should not be changed when loading/saving maps with the
8769editor.
8770
8771Map updates from Anthony Tyson and others (990128 version)
8772
8773Note: I was unable to reproduce the staff to snake killing the client bug.
8774If still in this client/server release, please let me know.
8775
8776Set player->count in esrv_move_item when picking up objects. This fixes
8777a bug introduced in 0.95.1 for the improved pickup code which only allowed
8778picking up of all the objects on the ground.
8779
8780lifesaving items should now disappear from client inventory after they
8781are used.
8782
8783Improve decrease_ob_nr so that items dropped on the ground will get removed
8784from the players inventory if they are used up (fixes bug where you drop
8785the last of some item on an altar but it would not disappear from your
8786inventory)
8787
8788Add check to add_exp so that we don't add experience to non living creatures.
8789This should fix the thrown objects getting lots of speed bug.
8790
8791Random map code by Peter Mardahl added. Various changes made so it will
8792compile on non gcc systems as well as non bsd systems.
8793
8794Another fix for pits (holes) so objects should drop through. The fix
8795in the last release made fixed a possible infinite loop, but also made
8796it that once an object on the pit could not drop through, no other objects
8797on the pit would drop through. The change made will attempt to drop all
8798objects through the pit, but also not run into a problem with infinite loops.
8799
8800Update pedestal and detector code to also match on the lockcode of the
8801special keys.
8802
8803Change detector function to call push_button instead of update_button.
8804The later would only change the state of buttons, which doesn't do much
8805good when you want to open a gate. push_button will cause gates and
8806other connected objects to open.
8807
8808Change move_gate so that it won't roll off things like grass or other
8809immovable objects.
8810
8811Update configure script to check for scandir function (needed by disease
8812code) - if not found, then check in -lucb.
8813
8814Disease code from Peter Mardahl added.
8815
8816add break value in while loop in generate artifact message (readable.c) so
8817we eventually break out if no match is found.
8818
8819reduce minimum supported map size in crossedit to 1x1
8820
8821Don't let characters be easily saved on unholy ground. Player can't issue
8822'save' command when on unholy ground, and we don't autosave if on unholy
8823ground.
8824
8825Improve pickup code mode 6 (pickup magic item) - call is_magical to
8826determine if an item is magical instead of relying on known_magical flag.
8827
8828If the player has a marked item in need of identifying, identify that
8829specific item first when an apply altar is used. This allows a player
8830to selective choose what to identify.
8831
8832Fix in apply code between server and client. Containers on the ground
8833now work properly. Server side simplified a bit, and updated to be a bit
8834more bandwidth efficient (use update item to open/close containers.) Client
8835updated to handle updating its container status via the update commands.
8836
8837Fix in pay_for_item in that it will not mistake kobans or other coins for
8838gold coins when making change (or converting the older coins into new
8839coins with the same arch but with a different value)
8840
8841Have player swap places with pet monster even if player no longer has peacful
8842set.
8843
8844At confirmation when player quits, inform them that quitting will delete
8845the chararacter.
8846
8847When a weapon is improved by the god, if it had no prior attactkype set,
8848give it physical attacktype in addition to what the god gives it.
8849
8850By default, make new players peaceful.
8851
8852Fix up the fire cancellation function - it seems some of the code wasn't
8853quite right (inserting in map vs setting the owner.) The fix should
8854prevent some core dumps this could have caused.
8855
8856Fix for main loop in socket.c that should prevent infinite loops when
8857a socket dies in some improper way. It should now drop the connection
8858properly and continue with processing.
8859
8860Autoconf fixes - check for canonical system, specail check for
8861alpha-dec-osf to add -std1 to cflags, add check for latex, add check
8862for BOURNE_SHELL (this is used in hte makefiles, as some os's will use
8863the users shell, but some constructs we use require bourne type shell),
8864add check for number of args gettimeofday uses, change order when
8865we create the makefiles to be proper.
8866
8867Use autoconf check above to get correct number of args for gettimeofday.
8868
8869Fix from Anthony Thyssen for the editor - should hopefully fix problem with
8870delete not deleting the correct object.
8871
8872Remove font displaymode from editor - since we are not distributing any
8873fonts anymore, doesn't make a lot of sense to support it.
8874
8875When connection is lost from player, save off the character - prevents
8876items being dropped on the floor or the players duplicating the items.
8877However, some additional logic will need to be added to prevent players
8878from saving their characters in treasure rooms.
8879
8880Improvements in save_player which should better prevent saves from
8881happening at inopportune times (like after they have mostly exited).
8882
8883Add stat_loss_on_death option (yes/no if stat is subtracted when you die.)
8884Default can be set in config.h, and can also be changed with run
8885time flags.
8886
8887Add / behind -I@x_includes@ in crossedit/Makefile.in. This should prevent
8888the includes from being reset if there are no x_includes.
8889
8890Extend draw_look to send multiple item commands - this should only happen
8891if there are a lot of items on one square. Fix should prevent crashes/memory
8892corruption in that case.
8893
8894------------------------------------------------------------------------------
8895Changes from Crossfire 0.95.0 to 0.95.1:
8896
8897Fix server crash if player ran into friendly object.
8898
8899Strip extra spaces that may be between the command and option (ie,
8900"use_skill disarm" would result in " disarm" getting passed to the appropriate
8901command function. Some functions could deal with this, others did not,
8902and it makes sense to strip them out.
8903
8904Send update to client to remove item from players inventory when it
8905disintegrates (demon ichors for example).
8906
8907Change load code so that player handling on unique maps should work better
8908(I believe there were various strange cases if the player saved on a
8909per player unique map and that map was or was not in memory, it might not
8910load the per player unique map)
8911
8912Removed player file lockin during login. Extra lock files get left
8913laying around in aborted login attempts. And in retrospect, I don't
8914think it is ever really needed.
8915
8916Some excessive/annoying debugging messages removed.
8917
8918Some general cleanup in some functions that were previous setting
8919automatic variables. If the variables are none changing, we now declare
8920them static, otherwise we don't set the value as the initialization
8921area - this prevents warnings with some compilers. Some casts added for
8922some functions to also prevent warning messages.
8923
8924Remove HAVE_SAVE_UID in config.h - no longer any code using it.
8925
8926In free_player, only call remove_ob on pl->ob if it is not already removed.
8927This fixes crashes when a player kills there login session before
8928it is completed.
8929
8930Instead of calling draw_look (which causes all data on that space being
8931sent to the client) each time the space changes, instead mark that we
8932need to send that change, and have code higher up (top processing loop)
8933send the data each tick if it needs to be send. This should result in less
8934data being sent, and is easier to process.
8935
8936Add flag_client_sent for debugging purposes - makes it much easier to
8937trace down cases where server was sending updates without actually having
8938sent the object yet. Most all of those cases are fixed with the new draw_look
8939logic mentioned above. Add dump_object_from_tag to figure help figure out
8940the objects generating messages. dumptag command is available from within
8941the game if compiled with DEBUG to use this fucntion.
8942
8943Pup land maps updated to version 1.3.
8944
8945Fixes in configure script to autodetect X11 libraries better. Fixes
8946also in Makefiles so all rules should work and all needed variables should
8947now be expanded. Add checks for a few more header files. Makefile fixes
8948also include changes so that archive is packed in proper order that it should
8949not try to rebuild pregenerated files. Master makefile now set to
8950make bzip2 archives in addition to gzip archives.
8951
8952Added watchdog code from Christian Stieber - periodically sends out UDP
8953packets so other programs can watch for them and restart the server if it
8954doesn't see them (hung or down server).
8955
8956Added ISQRT macro to spell_effect.c - seemed that the code was changed
8957a while back but that function wasn't added. It was only needed of
8958SPELL_FAILURE_EFFECTS is compiled in as an option.
8959
8960Simplify checking of MAXNAMELEN in crossedite/include/Posix.h
8961
8962Updated list of options you get when you do -help - removed old options that
8963are no longer around and added new ones.
8964
8965Dropping an active container will now result in all the items in the
8966container being dropped, and not the container itself. It could be argued
8967this should be a client issue (client send a move for each item in the
8968container). However, dropping everything in the container should be faster
8969than individually dropping (ie, you turn the container upside down), and
8970client dropping them one by one would result in that many commands of the
8971player being used.
8972
8973Change esrv_move_object to use the pick_up function instead of pick_up_object.
8974The difference here is that pick_up will look for matching containers, so
8975players manually picking stuff up in the client will have items go into
8976active containers as appropriate. However, this can also cause problems
8977with smarter clients that really want the object to go into the players
8978inventory and not a container (I don't think any will have that problem
8979currently)
8980
8981Fix in apply for holes - return 0 if we can not move the monster through
8982the hole - this prevents an infinite loop in move_hole in time.c
8983
8984Added internal buffering for sockets if the OS's buffers fills up. This
8985greatly improves reliability in the client. Size of buffering is
8986setable in config.h
8987
8988Fixed makefile dependancies - make install should now depend on the
8989actual programs it plans to install.
8990
8991Fix some bugs in the animation code - most notable is animations with
8992just 2 facings like the quetcoutal. Changes to archetypes is to
8993change the half orc to have 4 facings the quetzalcatl to have 2 facings.
8994
8995Fixed animations to always use the direction value for determing object
8996animations.
8997
8998Change examine code so that if the first thing in an object message field
8999is @match, don't display the message.
9000
9001Fix map update code that wasn't calling update_los before sending the
9002map to the client.
9003
9004Fix from Timo Kokkonen for socket code - check to see if we got an
9005interrupted system call (EINTR) on a read/write - if so, loop until it
9006clears or we get a real error. Apparantly greatly improved reliability
9007of the server.
9008
9009------------------------------------------------------------------------------
9010Changes from Crossfire 0.94.3 to 0.95.0:
9011
9012Added diagnostic message if you try to use a skill and it can't find a match
9013
9014Fix in send item command to better handle objects with a huge number of
9015items in its inventory.
9016
9017Shop listing code simplified - send all data to the client at once instead of
9018havign to store it and wait for the player to hit a keypress.
9019
9020Fix bug in ghosthit which would cause server to crash (patch for 0.94.3
9021was released for this bug)
9022
9023Some general code cleanup - fixing/removing unreachable statements, removing
9024unused variable.
9025
9026Build/configuration now done by autoconf (run ./configure). This cleans up
9027a lot of special checks throughout the program, and hopefully should be
9028more portable.
9029
9030Cleaned up/rearranaged the include/.h files. Prior, most all structures
9031where included in structs.h. Structures and support values now in unique
9032header files (ie, player structure and support enums and like in player.h,
9033object structure and support in object.h, etc.). This doesn't change the
9034working on the code, but is just easier to maintain. global.h takes care
9035of including these is the correct order.
9036
9037Many options now removed from config.h file. Options removed either relate
9038to X11 code/old server support or machine specific details which we can
9039now pick up via autoconf.
9040
9041Better speed checking in update_object_speed.
9042
9043When improving a weapon, client should now get updated (code was updating
9044the incorrect object)
9045
9046Improve apply below to be more bug free (that is to say, we preserve
9047the pointer to the next object - I think there were cases where the
9048last of an object was applied, and thus removed, but the apply function
9049did not return a code specifying something was applied, so the code would
9050then try to apply an object with an invalid pointer)
9051
9052Fix for collect.pl script to fix problem traversing directories.
9053
9054(note for 0.95.0, there were many large scale changes, so many of the
9055entries below are more of just an overview of what changed, and not a highly
9056detailed account of the changes.)
9057
9058Fix/improvement in player movers so that players trying to run in the
9059direction they move don't move incredibly fast. They will still seem to
9060move faster (I am guessing roughly player speed + mover speed now). I am
9061not sure of the original bug, but my guess is that the mover moves the
9062player to the next mover (which has a low speed). But now the player still
9063has his own action left, and moves to the next mover which has high speed,
9064so wisks the player to the next mover, which has low speed, so he
9065effectively moves 3 spaces in one tick when he should just move one.
9066
9067Changed save player method so that a directory is created for each
9068player.
9069
9070Added per player unique maps (new apartments). Maps from Christian
9071Stieber, however the implementation is a bit different - if an exit is
9072marked as unique, it will lead to a unique maps. The unique maps are
9073stored in the new player save file directories as above.
9074
9075Removed all X11 support from the server code. Change crossedit so that
9076it can read in the pixmaps as they are stored in for the client/server
9077support (so that only 1 copy needs to be kept). This method of reading them
9078in is slower than the montage method unfortunately.
9079
9080Changed socket handling. Port 13326 has been removed from active service.
9081Socket information is now part of player structure, which cleans up a lot
9082of the old code which had to do with find the player that correlates to
9083a socket and vice versa.
9084
9085Fix bug so that if invaliad variable is given to dm 'patch' command, program
9086no longer crashes.
9087
9088Fix bug so that containers that have a huge number of items don't crash
9089the server (a container needed to have more than 250 items for this to
9090happen). The real problem is containers that allow an infinite amount of
9091junk to be stored in them (Lepreds bag, but this item/map isn't part of the
9092standard distribution). Even with the fix, there still becomes some point
9093where problems will occur (around 2000 items, the amount of data that
9094needs to be sent would exceed the size of the output buffer). In any
9095case, with that many items in place, the player will see a noticable
9096performance hit when such containers are opened.
9097
9098Fix bug that caused the program to crash when attacking ghost or other
9099creatures with ONE_HIT flag set.
9100
9101Print out message to player if they have old keybindings.
9102
9103Some map fixes by Christian Stieber - eliminate ability to bypass
9104quest and typo fixed in other map.
9105
9106Fix so that perceive spell (off of rods/staves/scrolls) properly finds
9107the god of the player.
9108
9109------------------------------------------------------------------------------
9110Changes from Crossfire 0.94.2 to 0.94.3:
9111
9112Fixes to some recipes - before some had non existant ingredients.
9113As part of this, a treasurelist for ogres added.
9114
9115archsearch.pl function added to lib/adm. Useful little perl script that
9116can do object context searches (ie, immune to X and attacktype of Y)
9117
9118Old loader code removed - only lex loader supported now (no bugs reported,
9119so it seems to be OK)
9120
9121Debugging output improved in various areas to be easier to read/better
9122inform what is happening.
9123
9124Hopeful fix in place to prevent player movers causing players to have
9125-infinite in speed_left. Fix right now is to just limit speed_left
9126to -50 - I believe the real problem is that some player moves have
9127speed=0.0, and it is diving by that value.
9128
9129Fix so that if a player dimension doors onto a player mover, he no longer
9130gets stuck in an endless loop - he will now move along the movers as
9131expected.
9132
9133When a player dies in NOT_PERMADEATH mode, clear the braced flag.
9134
9135In the case of spell failure, don't cast mana storm in no magic areas
9136(instead, just kill the player)
9137
9138Only write out an updated bookarchive if data has actually changed and needs
9139to be written out.
9140
9141Don't print out new client server usage logging if nothing has changed.
9142
9143Reduced power of 'loose mana' (it appears this only happens when a spell
9144is failed really badly). It seemed to me that the area of affect and
9145damage could be many times deadlier than anything else out there.
9146
9147Hopeful bug fix for thrown objects getting very fast speed (I am unable
9148to reliably reproduce this, so am not sure.) Basically, I believe the
9149problem was that set_owner was only being set for the wrapper in the
9150thrown object, but it is the actual internal object that gets used at
9151some point in the attack sequence. As such, I believe that the knife,
9152spear, whatever was getting the exp for the kill (exp = speed in
9153weapons). To hopefully fix this, I have also added a set_owner call
9154on the real object so when it goes to grant exp, it should find a
9155valid place for it and credit the player and not the weapon.
9156
9157Changed spell parsing so 'of' is not needed in some complex
9158spells (ie, create food or marking rune). From kfitzner@nexus.v-wave.com
9159
9160Fixed bug in which you could kill multispace monsters with paralyze or
9161slow attacktypes.
9162
9163Added ncom and comc commands to client and server. These commands allow
9164client command queing/dropping (note that server will only send a comc if it
9165gets a ncom first, so old clients should still work just fine). The
9166protocol numbers increased to 1021.
9167
9168Added more objects to the show invisible list - hopefully the pupland
9169maps should now be fully playable.
9170
9171RPLAY_SOUND definitions changed to RPLAY_SND - should make for cleaner
9172compilations for those using that.
9173
9174Fixed #ifdef for NetBSD in common/time.c to use proper symbol.
9175
9176Fix so that counterspell should no longer kill monsters with magic
9177attacktype (ie, jessys and probably others)
9178
9179Added debugging in deathstrike code to hopefully be able to better track
9180down face of death problems. My guess is that it is a problem with level
9181comparisons.
9182
9183Fixed/clarified many nexted if/else statements that were ambiguous. Now
9184braces are properly in place (From Klaus Elsbernd)
9185
9186Hopeful bug for disappear objects when emptying bags. I believe the
9187problem was that invisible objects ended up showing up in the containers
9188somehow - this by itself is not a problem. However, the empty bag
9189function calls drop with the object to drop and keeps the next value -
9190however, drop would forward past the invisible object so the calling functions
9191next value is no longer accurate. Drop function now does not skip over
9192invisible objects in containers (will skip over them in player inventory) -
9193it instead removes the invisible object since I believe it is garbage
9194anyways. I am not sure if this will fix the problem, but there was
9195certainly some problem in the code here.
9196
9197Fixed bug with multipart monsters & pits. Before, they got split into
9198a few parts like a magician trick. Now they stay in one piece. At
9199current time, the logic probably isn't great, as all that is currently checked
9200for is the head of monster being on a pit - in reality, probably all the
9201monster parts need to be on a pit.
9202
9203-m9 and -mt options added (Code from Raphakl Quinet). Formulas have
9204been fixed such that all are now creatable (none missing archetypes). However,
9205the output still shows some formulas out of balance in terms of costs.
9206
9207Changed AT_GHOSTHIT meaning and added ONE_HIT flag. GHOSTHIT is now treated
9208like any other attacktype (monster will not be removed just for having
9209ghosthit). ONE_HIT flag now means the monster will disappear. This fixes
9210the acid sphere deadliness (before, they did have ghosthit as an
9211attacktype). All the objects with ghosthit have been updated. However,
9212there are probably some other undead which could now have ghosthit added
9213to their attacktypes since it won't cause them to disappear now.
9214
9215Updated the programming_guide doc. Hopefully, it is a bit easier to read
9216and a little more accurate.
9217
9218Improved polymorph. Invisible objects should no longer appear. Also improved
9219so that all objects of a type would be possible results (before, it would
9220be the first 80 weapons would be chosen from, or the first 80 monsters, etc.)
9221Now it is unlimited. Smarter initial selection should also result in
9222a few less meltdowns from it now being able to find an acceptable object.
9223Also, possible fix that could cause crashes on rare occasion (monster
9224polymorphed into something else, and when inserted into the map, something
9225on that space kills it) Also, we stop processing a space once we hit the
9226floor - I don't recall floor types ever changing anyways, but there could
9227be other problems processing subfloor items.
9228
9229------------------------------------------------------------------------------
9230Changes from Crossfire 0.94.1 to 0.94.2:
9231
9232Changed calls to send_query on server side to include the string on what
9233the query is for. This is to make clients be able to do smarter/nicer
9234things when it receives a query.
9235
9236Bug fix in check_walk_on which would cause crashes when objects are put on
9237spaces with multiple destructive forces (ie, earthwall cast on top of
9238a double pool of chaos). Once check_walk_on finds that the item has
9239been freed, it stops doing any further processing on it.
9240
9241Animation code cleaned up. Animations are now object properties, and not
9242archetype properties (and thus can be changed in maps). Also cleaned up so
9243that the is_turning flag is removed - more complex animations available via
9244the num_facings. Below is the section from the TODO file. Note that there
9245is still potential to improve animations (many 1 frame animations could take
9246advantage of the new code to have multi frame (ie, players can now have
9247images for all directions, and animations for each of those) New code is in
9248common/anim.c:
9249 Clean up animation code and make it more general purpose (instead of
9250 is_animated and is_turning flags, instead add a value that
9251 states how many animations/direction there are. For example, right
9252 now the big dragon has 8 animations and 2 facings (left & right), with
9253 4 animations/facing. Something like num_facings could be added so we
9254 know there is 2 facings. For arrows, num_facings would be 8, so we
9255 know that it shouldn't be animated (since there are only 8 images in its
9256 animation.) This would make the code a little cleaner, and allow better/
9257 more complex animations (an object that faces 8 directions could have
9258 animations for all directions, were as right now, that is not possible.)
9259
9260collect.pl changed to handle generation of animation file.
9261
9262Wipe below added to crossedit by Steven Unruh
9263
9264removed non NEW_HIT_PLAYER in attack.c (ie, old attack code removed)
9265
9266Added hitback code (looks like it was missing from the NEW_HIT_PLAYER
9267code)
9268
9269dm commands will now be accepted from the new client (provided they
9270have dm priveledges of course)
9271
9272Add AT_INTERNAL attacktype used only for internal calculations (ie,
9273does that amount of damage). Actual damage section of poison now
9274uses this.
9275
9276Fix spoiler generation - don't convert monster archetype names to
9277lowercase - images generated properly for them now. Also, fixed problem
9278with some images (dragon) being rotated when they shouldn't.
9279
9280Clear INV_LOCKED flag when stealing objects.
9281
9282Fixed couple of bugs in throw code. First, players remaining speed
9283calculation seemed incorrect. Second, you can now specify an object
9284name to throw (ie, throw ring, throw chair). Third, the client now
9285gets properly updated with the new/changed item.
9286
9287Make UNIQUE_ITEMS standard feature. Removed LOCK_ITEMS as a secondary
9288feature - running multiple servers against the same set of files is no
9289longer supported. Note for compatibility reasons of both methods, it will
9290look for unique files starting at v00 and will write new ones with the .v00
9291extensions. If you have .v01 files, these will be read in the first time
9292through (provided you also don't have a .v00), but all new files will be
9293written with the .v00 extension. Referances to ITEMS_DIR changed to
9294be UNIQUE_DIR - I think that is more descriptive. This includes
9295the environmental variable.
9296
9297Change ok_to_put_more to do more complete checking and also not to stop
9298spells because of a monster with certain immunities being on a space.
9299
9300If hit_player is called with the 'tail' of a monster, it would previously
9301just exit if the attacktype included slow or paralyze functions (must
9302hit the head with those.) Changed hit_player so we just remove
9303the slow and paralyze, and still hit with any remaining attacktypes.
9304
9305change explode_object so it only hits the monster once with the bullet/
9306meteor. Previously, it called hit_map, which then hit the player, and
9307then called hit_player again. This effectively doubled the amount of damage
9308caused by the bullet - it now does the correct amount of damage. As
9309best as I can tell, meteor/meteor swarm does properly damage the monster
9310even if the tail was hit.
9311
9312Bug fix in singing so exp should now be granted the first time singing
9313is used on a monster.
9314
9315Changed so that server can be compiled with new client/server support but
9316without old (port 13326) support. Various sections of code updated to
9317work/compile in such a setting.
9318
9319Fixed premature freeing of map->tmpanme. Now in delete_map instead.
9320
9321Added checking in free_object to see if we are called on a non removed
9322object. IF many cores is defined, will dump core here. I believe there
9323is some section of code calling free_object on a monster without calling
9324remove_object, which is causing a lot of error/warning messages when it
9325happens (very infrequently.) With this test in, it should become quite easy
9326to track down when it happens.
9327
9328Added free bsd & net bsd to those systems whose gettimeofday takes 2
9329arguments (common/time.c) -lcompat added to libraries needed for
9330FreeBsd. Include unistd.h on freebsd. Don't include malloc.h in
9331xbmtobdf.c on freebsd.
9332
9333Sample ban_file added to lib. Read in of ban_file will now
9334ignore lines that start with #. Also, animations file (used for new
9335animation code) included.
9336
9337Config file rearranged to hopefully be in better sections and easier
9338to edit. NEW_IMPROVE_WEAPON and SIMPLE_PARTY_SYSTEMS removed from options -
9339now always selected. NO_LOG, ONE_PLAYER_PR_UID, CHRFONT removed from
9340sections - these can never be valid. NO_ADD added to prevent players
9341from adding others
9342
9343Server updated to send full lines of text with query commands to client
9344so for clients that pop up a dialog box, they can print meaningful data
9345on what the request is for.
9346
9347Bug fix so that you can no longer apply multiple objects of the same
9348type with apply -a
9349
9350Give better messages when attempting to light something.
9351
9352New client/server statistic gathering added - will periodically dump
9353usage stats to the log file. Server will now longer crash if
9354client/supposed client sends bad data - will now just close the connection
9355instead.
9356
9357Server will not longer crash when player runs into a door.
9358
9359Can now longer polymorph objects into items that are invisible.
9360
9361Removed client directory from main archive. Too many people thought that
9362was the new client creating confusion, and I don't see a big need to have
9363it around (it will go away when the X11 code is yanked from the
9364server anyways0. If you still like it, the old version of it will work just
9365fine (no changes have been made to it in a very long time0
9366
9367Map changes:
9368 color_ removed from map files.
9369 library card cost decreased some.
9370 oldcity maps updated to take full advantage of XPM mode..
9371 Lake_Country/DA map changed - exp reduced, sp increased.
9372
9373------------------------------------------------------------------------------
9374Changes from Crossfire 0.94.0 to 0.94.1:
9375
9376in artifacts file - moved some settings of difficulty before Object line.
9377(difficulty after the Object line have no effect)
9378
9379In low level socket code, retry read/write again if we get a EWOULDBLOCK
9380in addition to EAGAIN errors. Some systems return EAGAIN, others EWOULDBLOCK
9381
9382Fixed possible crash in move_monsters. I believe the problem was that
9383the monster got killed by a door, and the function was not expecting
9384it, and would use the invalid object. Not sure if the code I put in will
9385really fix the problem, or just migrate it to a higher level calling
9386function (have not seen the crash myself)
9387
9388If on linux, include crypt.h in main.c
9389
9390Various minor memory leaks fixed.
9391
9392Better error message for non wiz people trying to use shutdown command.
9393Shutdown command actually added to command structures and is now usuable.
9394
9395Internal animations changed from explicit defines to use SET_ANIMATION
9396macro. Much easier to read, and better supports client side animations.
9397
9398Include sounds.h/sound calls no matter what RPLAY is set to. Only
9399rplay special code is in sounds.h. This way, client can still get sound
9400information without rplay being defined.
9401
9402removed NPC_PROG code - not used at all - only thing there was a few
9403#ifdefs setting values.
9404
9405Moved typedefs for function pointer stuff from structs.h to funcpoint.h.
9406No outside affect on code, just makes more sense internally.
9407
9408Disable default selection of DEBUG_DMALLOC on crosssite.def
9409
9410Removed old/unused charisma bonus values from common/living.c
9411
9412Minor fix so that a space is properly added between item number and name.
9413
9414Added a lex loading routine. Performance seems to be roughly the same,
9415but ease of maintenace/readability seems better to me. Modifications to
9416loader.c should not be done - instead, they should be done to loader.l
9417Loader directive flags and loader return flags added to loader.l - those
9418are now used instead of arbitrary integer values.
9419
9420Fix c_wix.c dm goto command to set the destination object/map name. Otherwise,
9421if an invalid map was entered, the enter_exit would try to print a null
9422string - some systems handle this OK, others will crash.
9423
9424Changed common/time.c to use GETTIMEOFDAY macro defined once at top
9425of file instead of having #ifdefs throughout the file.
9426
9427Fix so that items of differing values will not be merged. Also, when
9428merging objects, do not clear startequip flag.
9429
9430Fix in doc/playbook-html so all include directives are handled properly
9431with the include_html.pl script.
9432
9433More details printed about improved weapons (how many improvements done,
9434max number of improvements.) Also, skills will show how many improvements
9435the character can handle.
9436
9437Bargaining skill will be auto applied when in shops.
9438
9439Change teleporter code so the teleporter does not have to be the first
9440or second item on the space - teleporter can be any object on the space.
9441
9442-a, -u apply options added (always apply/unapply instead of toggling).
9443Internally, apply and apply_special have been changed to take one more option
9444which is this flag.
9445
9446Applied rings will not be merged - instead they will remain seperate. Fixes
9447problems with getting full bonuses, and also makes it easier to apply/unapply
9448one item.
9449
9450Increased frequency of generation for strange ring (nodrain ring). This
9451should make it appear probably roughly as often as the ring of life,
9452or maybe even more often.
9453
9454Put maximum carry limit in - beyond the limit, a character can carry no more.
9455This limit is fairly high right now, but should improve playbalance and
9456prevent characters from getting a negative weight or carrying so much
9457stuff it takes forever to move (session appears hung to them)
9458
9459Added CS_STAT_WEIGHT_LIM to newclient.h, so client can know how much
9460the player can handle (only used for GUI, so it can do a carry/limit
9461type of thing)
9462
9463Title information now used in hiscore displays.
9464
9465Show invisible spell will now make handles visible.
9466
9467New server code won't crash if player does nothing when it prompts for the
9468name. Also, include necessary dummy functions so server will compile
9469of ERIC_SERVER is not set.
9470
9471Will now search keyrings when running into special doors for matching
9472keys (players can protect keys by putting them in other containers.)
9473
9474Change jump skill so that any spaces with FLY_ON set will affect
9475the jumping player. This prevents the character from jumping over
9476player movers.
9477
9478In create_wall - if insertion if the initial wall fails (new all is destroyed),
9479don't extend the wall. Fixes the earthwall on top of pool of chaos which
9480creates strange map problems.
9481
9482Map fixes:
9483 Lake_Country/ebony/masterlev altar should now accept fragment
9484 of chaos.
9485 Put no magic areas in apartment so it should no longer be able
9486 to dimension door and get keys.
9487 /city/houses/wizz.entry should now be entered at the correct position.
9488 /city/misc/library - library cards are now identified, so it should
9489 no longer be able to buy then sell at a profit.
9490 /city/houses/wizz* maps: removed ./ from start of some map paths -
9491 causes apparant problems.
9492 Lake_Country/Butakis/blacksmith - can no longer get free dragon mails
9493 or other items - have to pay for them now.
9494 Remove pup_land/rainbow/Lv4/\nkey (\n was an embedded newline). Map
9495 doesn't look to be needed.
9496
9497Archetype changes:
9498
9499Added blocksview to gwall so you can no longer see through them.
9500
9501Fixed up castle animation in bitmap mode (212/312 images needed to be swapped)
9502
9503Increased exp for skulls from 3500 to 5000, reduced exp of deathtrees from
95041400 to 1000.
9505
9506fixed typo in gauntlets which meant title was set right.
9507
9508aggressive 1 values changed to unagressive 0 values in some archetypes
9509(no such value as agressive)
9510
9511------------------------------------------------------------------------------
9512Changes from Crossfire 0.93.7 to 0.94.0:
9513
9514Added outline of future versions in the TODO file.
9515
9516a mana storm should now hit with godpower attacktype.
9517
9518The spell create_food will now create food with 0 monetary value, and
9519be marked as starting equipment, so can not be dropped.
9520
9521Player titles with spaces should now load properly.
9522
9523Updated command times for use skill, ready skill, and stay commands so
9524when client executes them, proper amount of time is subtracted.
9525
9526drop_object now preserves the freeze inv/look window, which prevents
9527slowdowns when picking up a lot of objects/dropped.
9528
9529Added yield to water of diamond, fixed typo for dust of frost recipe.
9530If a recipe doesn't have a yield, recipe should still be properly
9531generated.
9532
9533Hiscore savefile now stores maxgrace and seperates player title from
9534player name.
9535
9536Option added to only swap out maps when MAX_OBJECTS is exceeded
9537(MAX_OBJECTS_LWM)
9538
9539Changed internal definition from SOUND_EFFECTS to RPLAY_SOUND to properly
9540reflect what it actually enables (sounds for the client are always
9541enabled)
9542
9543No longer put a 'a' for single objects.
9544
9545Changed ring generation so rings of power can be generated.
9546
9547Change can_merge so that more objects are mergable, add nrof 1 to some
9548objects.
9549
9550Improved set_owner which can fix getting into endless loops.
9551
9552Change insert_ob_in_map_simple so it doesn't call check_walk_on. fixes
9553player being slowed way down when dropping objects on slow move space.
9554
9555Animations moved out of archetype and into seperate array. This is necessary
9556for the client as it makes a unique referance number for each animations.
9557Also, in future, this would make it easier to be able to change aminations
9558in objects/maps.
9559
9560Print out level gain messages in red so they are more noticable.
9561
9562Change can_pick so that invisible objects can not be picked up.
9563
9564Change singing so you can calm a monster multiple times - you only get
9565exp once however.
9566
9567Change show invisible so it only makes monsters and players visible, and not
9568things like magic mouths and ears.
9569
9570Patch so that if peaceful is set, you will not attack other players even
9571if they have attacked you.
9572
9573Auto apply woodsman/mountaineering benefit when in the appropriate terrain.
9574
9575Fix get command so it takes from a container if appropriate.
9576
9577shutdown and kick wizard commands added.
9578
9579- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9580Client/Server changes for 0.94.0
9581
9582Updated protocol version to 1010
9583
9584Server debugging statements in ericserver can be enabled/disabled by
9585define at top.
9586
9587Client can lock/unlock items on the server.
9588
9589Client can now look at spaces now.
9590
9591Send update of item to client when it is identified.
9592
9593Send update command to client from decrease_ob_nr to update players
9594overall weight.
9595
9596Now send animation information to the client.
9597
9598Now send sound information to the client, client can send setsound
9599to server to enable/disable sounds.
9600
9601Client side image caching fully supported.
9602
9603Added updates when picking up objects/dropping objects so that players
9604weight and container weight is updated if necessary. Also, if object merges,
9605make sure we then send a delete of the original object that is now gone
9606to the client.
9607
9608Update object changed to send floor animations to the client.
9609
9610Send update when power crystal changes speed.
9611
9612Send update of player object after player is loaded.
9613
9614Change server so that only send map update and player stats once a tick -
9615should be more efficient and equally sufficient.
9616
9617Added LOCKED flag to item transmission command so client can no which items
9618are locked.
9619
9620Added item1 command which superceded item command - sends more informatin.
9621
9622Added update command to protocol, and function in server - only sends
9623portions of an object that need to be updated.
9624
9625Server now properly handles repeat fire on.
9626
9627------------------------------------------------------------------------------
9628Changes from Crossfire 0.93.6 to 0.93.7:
9629
9630set_god wiz command added.
9631
9632Changed call to 'index' to 'strchr' in commands.c - keeps with what
9633the rest of the program does.
9634
9635Pupland archetypes and maps added (v1.2 of pupland distribution).
9636
9637Changed get_random_mon to be more random when a monster of a specific level
9638is requested.
9639
9640Casting transferrance spell on another playing and having their head explode
9641will no longet get the recipient of the spell exp - instead, the caster
9642of the spell will get the exp for any kills.
9643
9644change put_a_monster function so it properly handles multi-square monsters
9645(put_a_monster is called by summon_evil_monsters, at probably others)
9646
9647Changed alchemy so you no longer get exp for failed/random mixtures
9648
9649If a container on the ground that the player is using (ie opened) is
9650somehow removed, update the players view to now be the ground and not
9651the container.
9652
9653Player titles will now be loaded properly from save files.
9654
9655Can no longer sing and make the same monster unagressive multiple times.
9656The implementation is actually borrowing the NO_STEAL flag, which means
9657you can't steal after you sing, and after a failed steal, you can't sing
9658and calm it down. Also, make sure that only the 'head' of a monster is
9659sung to.
9660
9661Fixed up CSword_116 xpm file (too many chars on one line)
9662
9663Added note/option in config.h for systems lacking O_NDELAY.
9664
9665Fixed up some of the quests in Lake Country - can no longer just run and
9666get the dragonbane or buy the armor with a lot of scales.
9667
9668New Client/Server changes:
9669
9670 changed esrv_send_face to take the client_num instead of client_id
9671 (should be slightly more efficient). This does not affect the protocol
9672 in any way - it just makes the handling on the serverside more efficient.
9673
9674 Changed item command to calculate objects total weight before sending
9675 it to the client (total weight = weight+carrying). This is needed because
9676 there are many times that the client does not know what is in the container
9677 and thus can not properly calculate the weight.
9678
9679 Change server so it sends updates for the parent
9680 items that the object is being moved from/to (ie, when removing something
9681 from a sack, send an update for the sacks weight). For the client
9682 to properly handle the player being re-updated, some special handling
9683 had to be added so the inventory list would be updated and so that
9684 we don't try and add another player object (client search routine for
9685 tags didn't look at the player)
9686
9687 Fixed server so it now properly updates the original item from which a
9688 portion of it is being dropped.
9689
9690 Fixed bug in server handling which kept the -1 return code from a
9691 blocked socket and decreased amount to send by that - reset to zero
9692 so amount to be sent remains the same.
9693
9694 askface and mapredraw commands added to Protocol by Phil.
9695
9696 Changed load player function so it calls fix_player before sending
9697 initial data to client.
9698
9699 Removed some printf/debug statements from pickup code for newcs in
9700 player.c
9701------------------------------------------------------------------------------
9702
9703Changes from Crossfire 0.93.5 to 0.93.6:
9704
9705If we fail to save a map, all objects on that map should now be properly
9706deleted from memory.
9707
9708Fix possible crash when score is being generated if player is on
9709swapped out map.
9710
9711Default output buffer for new clients is now 64k.
9712
9713Partial code in place for client side image caching.
9714
9715Alchemy changes from Peter & Brian. Main change is that multiple recipes
9716can be made at once.
9717
9718Bad grammer in messages printed out when readable object is beyond players
9719comprehension.
9720
9721ethreality recipe commented out in formulae file.
9722
9723Some playbalance issues on maps fixed by Samuli Tursas.
9724
9725Internal handling of shop menus changed - instead of a list of objects,
9726change it to an array of strings.
9727
9728Minor changes in porting.c to hopefully make that file compile properly on
9729more systems.
9730
9731doc/experience updated with some more notes from Brian.
9732
9733CAN_MERGE changed from a macro in define.h to an inline function in
9734object.c (only file it is used.). It makes it a bit clearer, and hopefully
9735a little safer. There is an option at the top of config.h for handling
9736of the INLINE function declaration.
9737
9738Possible fix so that altars should not be re-concecrated if god is
9739set in the editor.
9740
9741Undead monsters can now see in the dark.
9742
9743Fixed bug in parse_command which would cause crashes if a socket connection
9744entered a string with a ; in it.
9745
9746Increased string size in new_draw_info which prevents crashes/stack
9747corruption when really ling strings from a socket is entered.
9748
9749Changed spell level/costs between invisibility and improved invis such so that
9750the improved version is now a higher level and more sp.
9751
9752Now possible to steal from a creature more than once as long as character
9753remains unseen. Each steal attempt will become harder in any case.
9754
9755Remove some special player checking in get_nearest_player - I think it
9756caused some crashes, and wasn't necessary (in fact, clever players could use
9757it to get it such that monsters would not target them.)
9758
9759When characters stop levitating, call check_walk_on so they will fall
9760through pits or other applicable effects.
9761
9762Fixed up some archetypes which could be picked up when that should be
9763set (trapdoor, bullet, meteor). The last 2 cases can not be picked up,
9764but clever casting of alchemy could have nuetralized them. collect.pl will
9765now print warning if an object has walk_on set but does not have no_pick set.
9766
9767Added new map from Bjoern Helfesrieder to starting town (Yarin's House)
9768
9769Fix in item matching code that could cause core dumps.
9770
9771Fixed clearinfo command so that it still works even if player is using
9772scroll mode (only if player issues the clearinfo command - other uses
9773of clearinfo in function won't clear in scroll mode.)
9774
9775Improved shop listings so they are sorted by type, then sorted by name.
9776
9777Fixed bug in backspacing the to the front of the first line of an
9778extended command - it now works properly and puts you back in normal
9779command mode (this got broken in the addition of extended line input.)
9780
9781Player should still be able to save if they were the wizard. However,
9782wizard status will be stripped for save, but the fact they were a wizard
9783will not be stripped.
9784
9785Imp made even wimpier by Peter M.
9786
9787If you set of traps, open doors, push a player, or roll a boulder,
9788you now become visible.
9789
9790Change it so that when something/someone reads a scroll, only inform
9791the other people on the map (perhaps this is still overkill?)
9792
9793------------------------------------------------------------------------------
9794Changes from Crossfire 0.93.4 to 0.93.5:
9795
9796Replaced handbook make_index script with perl version. Much faster, and
9797also fixes problem with echo command doing different things on different
9798systems.
9799
9800Minor change in crossedit such that if it is not compiled with XPM
9801support, it will give an error message if run with the -xpm option.
9802
9803Changed code so that experience objects no longer change stats (reverses
9804'fix' made in 0.92.9) Fixes problem of characters getting extra
9805stat points from the experience objcts.
9806
9807Fix bug that could cause infinite recursion loop in spellpath_msg. From
9808cameron@ripper.stl.dec.com (James Cameron)
9809
9810Fix bug in complex keybindings in which all the commands in the keybinding
9811were executed that tick. Thus, if you bound a key to north;north;north;north
9812and pressed that key, you would move 4 spaces north no matter what your speed
9813was. It now works properly, and you move at proper speed (keybinding is
9814copied into buffer in player structure, and removed as we go along.) Note:
9815This buffer could also be used to hold keypresses not yet processed, but
9816that hasn't been done yet.
9817
9818Added ability to enter lines longer than the info window is wide. This
9819allows for longer keybindings or say commands. It isn't the most
9820sophisitcated thing (the extra lines show up with a 1> and 2>, etc for the
9821extra lines, and we just redraw the previous line if you backspace that
9822far. After you complete the command, it does end up redrawing the entire
9823command, which can take a few lines, which gives some confirmation on what
9824you typed in. This feature was added to both the standard server code
9825and the new client.
9826
9827Change use of tempnam to tempnam_local which we supply. Standard tempnam
9828will look at the TMPDIR environmental variable, and use that to override any
9829other value for the directory - this causes problems if different people
9830runn the program and using the temporary maps accross runs. tempnam_local
9831will not look at the TMPDIR variable, and will instead always use the value
9832we pass it. This can be changed if we were not compiled in SECURE mode by
9833changing the CROSSFIRE_TMPDIR environmental variable. Code was also changed
9834so the CROSSFIRE_TMPDIR variable will not be used if compiled in SECURE mode.
9835
9836Fix so that you can no longer move really fast or fire really fast by using
9837the mouse buttons in the game window. Using the mouse buttons in the game
9838window should now result in the same speed as using the keyboard.
9839
9840Patches from Peter Mardahl:
9841
9842 Dusts now cast as ability and not spells. This mean that they will not
9843 have magic as part of the attacktype.
9844
9845 Spells that are cast on oneself now ignore direction. Thus, healing and
9846 protection potions can not be cast on something next to the player using
9847 the object.
9848
9849 Detector object added. Similar to inventory checkers, but only
9850 periodically samples what is in the space, and doesn't look at the
9851 inventory, only objects actually on the map.
9852
9853 Creators can now cause objects they create to inherit names. They can
9854 also periodically create items.
9855
9856 Arch diffs: imps weakened, cold dragon spews forth cold, creator modified
9857 to have default speed 0.
9858
9859 New FireTemple set of maps. These have been onto the Volcano in the
9860 southeast area of the continent. The maps that were there were moved to
9861 world_e2, under the crater.
9862
9863 Gradual light/darkness code put in place. I fixed a few of the bugs
9864 that were in peters orignal version, so it works flawlessly for both
9865 server and new client.
9866
9867------------------------------------------------------------------------------
9868Changes from Crossfire 0.93.3 to 0.93.4:
9869
9870Inventory checkers can now act as doors. If no_pass is set in an
9871inventory checker, player can not move onto that space unless they meet
9872the match requirements.
9873
9874Signs that are usuable only a fixed number of times added.
9875
9876Fix for pedestals & buttons so they are only activated once when a player
9877moves onto a space (previously, they were being activated twice.)
9878
9879Fix for connected objects so that they will not be sacrificed on altars.
9880This fixes a case where you might want to put a check_inv and altar with
9881the same sacrifice on the same space. Before, the inventory checker would
9882be sacrificed on the altar, causing the linked button list for
9883inventory checker to be corrupt.
9884
9885Many maps updated to look better in xpm mode or just better in general.
9886
9887Change in crossedit so that if you set the randomitems variable for an object,
9888it only sets the value at the head of the object, and not all parts of the
9889object (it would be nice to allow non head parts to have this set, but I am
9890not sure how to get what part was clicked on in the editor, since it seems the
9891head is passed to the function.).
9892
9893xpmtopix.pl script added. Eventually, I hope this will replace the
9894C version. For now, all it is good for is to verify that the XPM images
9895are using the proper colors. Numerous XPM images were not using the proper
9896colors (a lot were using brown, which is not an official color - see
9897the xpm template for what is.)
9898
9899Cleanup of proto directive to turn __signed into signed. Also, change
9900#if __STDC__ to #ifdef __STDC__ in proto files.
9901
9902Fix so it should now compile if SECURE is defined.
9903
9904Ability to more easily added needed libraries in crosssite.def -
9905Extra_Libraries option added.
9906
9907Assume Linux has a prototype for tempnam (at least my version does.)
9908
9909Many objects added, and many XPM images updated/improved.
9910
9911Change in new CS code - don't send the version string until after we fully
9912set up the structure.
9913
9914Change so crossfire will compile if SAVE_HOMEDIR is set.
9915
9916Reverse actions of -m8 and -m9 (Believe they were doing the wrong thing
9917relative to the scripts and what the docs say.)
9918
9919Change in hiding code and detection by monsters.
9920
9921------------------------------------------------------------------------------
9922Changes from Crossfire 0.93.2 to 0.93.3:
9923
9924Added a fill below function in crossedit. This make filling in backgrounds
9925for maps much easier. Basically, it just puts whatever object you select as
9926the bottom object of the bounding box. If the bottom object on the map
9927matches the object being inserted, the object is not inserted. As a side
9928effect of some code in GetMapObjectZ, if it matches the top object, it won't
9929be inserted either. This makes things much easier to update map backgrounds
9930for XPM mode.
9931
9932Hiding made easier for players.
9933
9934Stealing is made easier for players, but harder beyond the first item.
9935
9936Many image colored and perspective corrected David Sundqvist. Also, several
9937new objects added (specialized altars, some more indoor furniture/more
9938orientations, some sliding secret doors, and new wall types.) Barn image
9939naming conventioned changed to follow what is considered proper.
9940
9941A few maps added by David (two temples in starting village, along with
9942a mercenary recruitment building.) Also, some maps fixed to look better
9943in XPM made.
9944
9945Party kill option added by Rauli Ruohonen. IT lets you see who has killed
9946what recently in your party.
9947
9948Saving throw for objects cleaned up. Previously, an objects immunities/
9949protections were not being used correctly to determine if it made its saving
9950throw (that is why icecubes could be destroyed by ice). It is now set up
9951properly.
9952
9953Gods will no longer improve weapons that have been enchanted by other gods
9954(Or I believe by yourself.)
9955
9956Fix memory overrun (1 entry) when initializing values for the images.
9957
9958Program will not recover properly when it attempts to load a temporary
9959map. This means that load_temporary_map returns the map object to use,
9960since it might change.
9961
9962When setting the owner of a monster, clear its ability to use skills
9963
9964Fix in decrease_ob_nr so it should now work on 64 bit systems.
9965
9966Mapguide updated with various suggestions made on the mailing list.
9967
9968Linux systems assumed to have at least random available (change in the config.h
9969file.)
9970
9971't' is now bound by default to 'ready_skill throw'
9972
9973missing demon types (imp, big_demon, Greater_Demon) added to the list
9974of demon races.
9975
9976xpmtopix will print a warning if it detects and XPM file using a tab character
9977in the color name - makes it easier to track possible image corruption.
9978
9979Check for power of improved weapons now in its own function. Also, we
9980now properly check weapon power when improving one (before, you could
9981improve it one level more than you could actually use.)
9982
9983When a container is applied, make sure it is a player applying it before
9984checking for new client/server information - otherwise an invalid pointer
9985is dereference.
9986
9987Complex keybindings added - thus, you can bind several commands seperated
9988with semicolons to one key.
9989
9990Fix in encounter.c so if compiled with RANDOM_ENCOUNTERS, the new
9991settings structure is used for map location.
9992
9993Added check fot out_of_map in various places that needed them - prevents
9994some more core dumps.
9995
9996skill identifications will now look on objects on ground in addition to
9997those in the inventory.
9998
9999perceive self should now tell you what god you worship.
10000
10001map reset times on maps (temporary maps accross multiple runs) will not be
10002altered if there is no map reset time.
10003
10004------------------------------------------------------------------------------
10005Changes from Crossfire 0.93.1 to 0.93.2:
10006
10007New argument parsing routine - we now parse arguments in phases. With this,
10008I have moved many of the global settings into a settings structure, and
10009allowed highscores to be displayed by class/name. The man page and -h
10010option have also been updated. Also, all the files that could
10011previously be specified via environmental variables can now be specified
10012with command line options.
10013
10014The temporary directory can now be specified via -tmpdir command line option or
10015CROSSFIRE_TMPDIR environmental variable.
10016
10017If you cast word of recall and then save before it takes effect, it will
10018no longer corrupt the character (and will in fact take effect when you
10019restart).
10020
10021Don't let players throw starting equipment. At the same time, don't mark
10022throwable items as starting equipment - instead, just give it zero
10023value.
10024
10025Fixed inscription - now properly writes scroll when passed no string instead
10026of crashing.
10027
10028Artifact monsters now possible (monsters whose abilities are changed based
10029on the artifacts file.) Top of the artifacts file has more information on
10030this. For now, I have only set up the orc, ogre, and goblin to get
10031special leaders.
10032
10033Temp maps can be reused across multiple runs. See config.h for more
10034notes.
10035
10036Bug fix in inscription: If you inscribed a scroll and already had
10037one like it in your inventory, the game would crash after they
10038merged. Also, if you failed in inscribe a scroll, the game would
10039also crash (object it was using to calculate experience had never been
10040initialized). For now, I just changed it to return -10*spell level
10041as the exp award.
10042
10043Items will now be merged with other items even if one has been inventory
10044locked. This way, if you have some torches that are locked and you pick up
10045some more, they will merge in instead of showing up seperately.
10046
10047Bug fix for saving throw on objects hit by cold. There could be cases
10048where an object being processed is no longer on the map and would cause
10049a crash.
10050
10051Change find_first_free_space to return -1 if there are no free spaces.
10052Calling function should check this and then do the 'right thing'. This
10053fixes problems with runes creating monsters on top of monsters (or
10054below the player).
10055
10056Magic map cleanup. Now have magicmap field in NewFace structure. This
10057field holds the color to use for magic map in low 4 bits, and various
10058flags in high 4 (right now, only floor bit is used, since drawing may
10059differ on bw systems with that value.) magicmap filed is now supported
10060in .arc and faces file. collect.pl modified to automaticaly put
10061magicmap into the faces file, will also copy is_floor into faces file.
10062magicmap takes a color name. This seperation allows magic map colors
10063to be set independant of foreground and background colors, and simplifies
10064the code a good deal. Also, it makes new client magic map support easier.
10065Now all the archetypes need to be updated (I have already done the armour,
10066connect and construct directories.)
10067
10068Magic map for client now implemented. Definition of protocol added to
10069Protocol file. Only limitation implementation has over direct server is
10070it only flashes the position of the player who cast the spell. This
10071seems perfectly reasonable to me (use color or other attribute to know
10072where other players are.)
10073
10074Old client (telnet front end) changed so that it no longer requires
10075libcross.a.
10076
10077save object should do a better job if it gets an object without an
10078archetype.
10079
10080buffer size for LOG increased - there were cases where this buffer
10081was not large enough and was causing crashes (sending large amounts of
10082garbage data to the socket was one way.)
10083
10084Load map will now reload the original map if the temporary map is for some
10085reason no longer around.
10086
10087Fix bug where randomitems may not have been properly initialized for now
10088objects (was inside an #ifdef for CASTING_TIME)
10089
10090strerror_local added to porting.c. Lets up give up more reasonable
10091error descriptions for certain errors.
10092
10093If an object is cursed, set its vulnerable values to its protected and
10094immune fields, adn clear those fields. Fixes 'problems' with finding
10095cursed rings which are not really cursed (pro fire/vuln cold rings.)
10096
10097If trying to switch to private colormap in XPM mode, check to see if
10098we are successful.
10099
10100Fix crossedit so that if you have a map loaded and you then try to load
10101an invalid file, it no longer crashes (now reverts back to old file)
10102
10103Archetype changes: Golden unicorn horn now has its own set of images.
10104Editable field updated for the gods archetypes (they were showing up in all
10105the menus.) living_chaos object added (need for Brian Thomas's maps.)
10106
10107Update the editor/picks map so that all archetypes are included in at least
10108one of the maps. Modified the map_info script to print out unused
10109archetype.
10110
10111New server: Only increase buffer size of socket if it would increase
10112overall size.
10113
10114fix in skill experience calculation to use magic field properly.
10115
10116Alchemy spell changed. If there is a cauldron in area of effect, only
10117do cauldron alchemy. Otherwise, do item to gold nugget conversion.
10118
10119Added a few more notes/thoughts to the mapguide/
10120
10121------------------------------------------------------------------------------
10122Changes from Crossfire 0.93.0 to 0.93.1:
10123
10124change race initialization functions to to fix cases where race is specified
10125in race file but no race is specified in the arch it points to - before it
10126would not be added to the proper race list.
10127
10128include handbook.ps in the standard distribution.
10129
10130Client server rewritten to no longer use eutl package. Other bugfixes for
10131client server: server now properly sends delete item command to client,
10132client now properly adds up a containers (and hence players) weight, pixmaps
10133are now supported.
10134
10135Snowball spells added - these are the same idea as the fireball spells. (by
10136peterm)
10137
10138Magic wall will consume several squares now.
10139
10140spells array (in spellist.h) updated - was missing a spell (cure blindness).
10141
10142splitter.pl (by peterm) added to arch/dev directory - takes a larger xpm
10143file and splits it into 24x24 chunks.
10144
10145icestorm and small snowball added to possible list of starting spells.
10146
10147Only set minimum speed of 0.01 for players. This fixes the bug introduced
10148in 0.93.0 where multisquare monsters moved too slow.
10149
10150Only print out a creature lost a spell if it is in fact a player. Only
10151applies for casting time.
10152
10153fix_me command added - basically just calls the fixme function. Can be
10154useful if you that your characters weight is for some reason incorrect.
10155
10156Fixed sprintf that was copying over static character data if you tried to
10157form a party that already matched a name. Also, fixed a possible buffer
10158overrun situation.
10159
10160More memory leaks fixed by Rupert Goldie - also fix to prevent orated monsters
10161from attack themselves.
10162
10163New xpm images for woods and some buildings by David Sundqvist. The new
10164buildings have a bit more texture and 3-d look, the new woods look a little
10165bit more in scale and mesh together better. The old images are in the
10166xpm_pref directory if you prefer those.
10167
10168More code added to free memory when server shuts down (useful for
10169trying to track down some memory leaks).
10170
10171------------------------------------------------------------------------------
10172Changes from Crossfire 0.92.9 to 0.93.0:
10173
10174Minor map changes: Some maps cleaned up to look better in XPM mode.
10175Removed no magic areas from around the demilichs in lord ramsdre mansion.
10176
10177map_expand perl script added (located in lib/adm)
10178
10179Cleaned up use of externs and declarations of many structures. Depending
10180on the linker, these would not be merged into one value, and thus not be
10181initialized/set properly (fixes 'mark pushed you bug'). This was a problem
10182at least on SGI systems, probably others.
10183
10184If on a sun and not using sun's acc, assuming Stupid Sun Headers, even
10185if on a Solaris system.
10186
10187Changed change_abil so it returns true if a value actually changed (useful
10188for printint out information when apply objects like potions.) A lot of
10189return checking of this function in apply.c is removed - that checking
10190now seems obsolete.
10191
10192Set visibility to zero at first stage initialization.
10193
10194Put a lower limit of 0.01 for player speed. This still gives an action
10195every 12 seconds if you pick up way too much junk.
10196
10197When praying at altars, have gods grant out spells only if it is a spell
10198they are attuned to.
10199
10200Cleaned up some memory leaks, courtesy of Rupert G. Goldie.
10201
10202Cleaned up the cast command code. Also, if you do something like 'cast p', it
10203will now show all spells you know that start with p, instead of casting the
10204first one it finds.
10205
10206Shift middle button in the inventory window should now mark an item.
10207
10208Fix button handling for look and message window so that only if it is clicked
10209with the right 30 pixels do we consider it a scrollbar event (before, anything
10210more than 270 from the left was considered scrollbar - works fine for
10211default sizes, but if you resize, it would cause problems.
10212
10213If on SGI systems, don't default to using rand - it should now pick up
10214lrand48 or random instead.
10215
10216Change spell casting such that if you aren't high enough level, it more
10217obviously states it (previously it said you 'lack the skill', which can lead
10218to confusion.)
10219
10220Fix so that the first recipe is now accessible when performing alchemies.
10221
10222Added many thoughts/ideas to the TODO list.
10223
10224Increase buffer size for examine command - some object could overflow the old
10225buffer.
10226
10227remove no_magic from all monsters - immunity values should be used instead.
10228am not sure
10229
10230Made changes for strcasecmp detect - was checking as defined(sun), now is
10231defined(__sun__) - this is proper and what the rest of the code uses.
10232
10233define MAXNAMLEN in crossedit/Posix.h - needed for ultrix systems.
10234
10235Made it so that boots are not always considered magical (since there are
10236now many plain boots out there.) Also, removed the always_magical function -
10237is_magical should now handle it all.
10238
10239Allow items of type BOOK to be identified, since you can now find non
10240identified readable items.
10241
10242Change loot_object so it doesn't remove experience objects - this way skills
10243don't get removed when a player dies.
10244
10245------------------------------------------------------------------------------
10246Changes from Crossfire 0.92.8 to 0.92.9:
10247
10248Make sure all skills are unapplied when changing the class.
10249
10250When generating a spell listing (cast with no options), display the
10251level of the spell (or den if it is denied.) Also, display mage spells
10252in one batch, priest spels in another group - I think this is more
10253relevant now since these are seperate exp objects and draw on different
10254power sources. Still no pause key (doing those is a real pain) - that
10255is really a client issue or we should just add a scrollbar to the text
10256window.
10257
10258Removed level 20 from artifact 'sword of Beserkgang' - was preventing
10259characters from using it.
10260
10261Put cause many wounds spell in PATH_WOUNDING. Book chance for holy word
10262increased.
10263
10264Let experience objects change stats.
10265
10266Many debugging messages added or updated to print out more useful/
10267detailed information.
10268
10269Changed usage and set_protocol function names in client/client.c. This
10270prevents name collision with libcross.
10271
10272Web site locations added to the README file.
10273
10274Load and save window positions even if split windows is not set. This way,
10275window posititions are lost if you run the game in non split mode (and I
10276don't see any reason to discard these values.) Also, -split can
10277be used in addition to -w to get split mode.
10278
10279Changed check inventory objects to recursively search through containers,
10280and cleaned up the code. Also, added notes on crossfire.doc on using it,
10281and made basic archetype to use. When using inventory checkers in
10282crossedit, have the attributes by default come up with connected and
10283lockcode fields.
10284
10285Made change to unique items: If the object is a floor and has unique items
10286set, then all objects above and including the floor get saved as unique
10287objects. Also, when merging maps and freeing old unique items, make sure we
10288remove them from the button links. Made an apartment map which characters can
10289buy permanent apartments and also store equipment in. When exiting the
10290program, save off all maps so the unique items get written out.
10291
10292Xpm fixes: Moved floor setting from map loader to update_object. This
10293makes it so that crossedit will display the map properly in XPM mode as
10294you make updates. Also, made default visiblity 0 - this makes the double
10295floor work properly. There still seems to be some bug when pasting objects
10296in the editor with respect to updates.
10297
10298Change made to goths taverns and tavern in lake country. Change is so
10299that some of the wimpier informants don't have really good stuff to take.
10300
10301Periodically write out the book archive during play, and not just when the
10302program exits.
10303
10304Bug fix so 'drop x items' should no longer crash. Also, 'drop 1 item'
10305should now only drop 1 item of 'item', and not all of 'item'.
10306
10307Bug fix so 'unlock item' should now work OK.
10308
10309When throwing objects, clear the APPLIED flag before the throw.
10310
10311Prayer granting from praying at altars changed around - you will get more
10312unusual prayers, and a Wisdom of 25 is not a yes/no cutoff - value of
10313sucess depends on wisdom.
10314
10315Archetype changes: remove no_magic flag from demon lord - I don't think
10316this should be set in any monster - instead, immune should be set properly.
10317Added damned flag to gates that are no magic (probably not necessary,
10318but I think it makes sense.) Added check_inv object. Removed some
10319duplicate skill types (same skill, different arch names.)
10320
10321Have get_pointed_target return the head of the monster if it is a multi
10322part monster.
10323
10324Change smite and finger of death spell so they have no effect if creature
10325reflects spells.
10326
10327Fix to prevent bug crashes with magic rune spell.
10328
10329Fix in spring_trap to correctly target the victim. Also,
10330fix in find_traps which prevented the gaining of experience.
10331
10332If character has bonus grace, display it with percieve self. Also, load
10333and store the last_grace value properly.
10334
10335Changes from Brians hide/attack patch: Adjustments for attacking based
10336on varying factors, monsters wake up & call for help if it, can't remain
10337hidden if you attack, changes for monster detection of hidden/dark/invisible
10338players, players no longer remain invisible if attacking, adjustment in
10339exp for stealing, stealing and hiding chances changed based on terrain
10340and other modifiers, when generating flesh items, set no_steal, give
10341chinese dragons some treasure, giants a little more gold.
10342
10343------------------------------------------------------------------------------
10344Changes from Crossfire 0.92.7 to 0.92.8:
10345
10346races file changed, a bit more flexible.
10347
10348Additional dump flag (-m8) to dump god information.
10349
10350If attacktype is holyword, creature must be in slaying field of holyword.
10351
10352Better handling for items that remove/add protections,immunities,
10353vulnerabilities. Only print changes if there is an actual change.
10354
10355holy power, blinding attacktypes added.
10356
10357Add poison to list of items that might not be identified.
10358
10359Two when windows are killed: 1) data is freed properly without causing
10360crash now. 2) If player has saved but window is still active, will
10361no longer make a save of the player. This save would be a no-item save
10362that the character had been playing.
10363
10364Bug fix to prevent crashes if clicking a button in the message window
10365and show_Buttons not enabled. Also, moved button handling in message
10366window into its own function.
10367
10368Bug fix for pet monsters that should prevent cores if cycling through many
10369maps very quickly.
10370
10371appendix for god information added to handbook (both latex and html versions.)
10372
10373gods2 patch applied from Brian Thomas. The main thrust of the patch is
10374to make gods objects/archetype, and not array entries in the source code. A
10375lot of code needed to be changed to support this difference.
10376
10377God patches so that game doesn't crash if no gods are set.
10378
10379Hopeful change for FreeBSD so it automatically pulls in the crypt
10380library.
10381
10382Can no longer cast spells which are beyond your skill level.
10383
10384More powerful spell failures added.
10385
10386Can no longer read scrolls/other readable if blind.
10387
10388Fix bug that if a weapon had slaying, it slayed all monsters, not just
10389the ones it was supposed to.
10390
10391Don't add the bows attacktype in when figuring out the attacktype of this
10392player. This pretty much always gave the character a physical attacktype
10393in addition to everything else.
10394
10395Fix 'peaceful' when using buttons so it doesn't crash the game.
10396
10397path_to_player changed to work better on diagonals.
10398
10399Spell choosing by monsters a bit more intelligent.
10400
10401No longer get experience for disarming/finding your own traps or those
10402of other players.
10403
10404Add NO_STEAL flag, with obvious meaning. If a monster notices you stealing
10405stuff, all his items are set to this, so nothing more can be stolen. Flag
10406is automatically cleared when items are dropped.
10407
10408Add run and fire messages to message (stat bar) window.
10409
10410Make USE_BUTTONS playable setable item instead of compile time item.
10411
10412Don't insert heavy (>5 kg) missile objects into player when they hit - have
10413them drop to the ground instead.
10414
10415--
10416Made more general object matching routines. item_matched_string sees if
10417an object matches a string (which can be comma seperated list of many
10418things.) find_best_object_match finds the best match in the players
10419inventory.
10420
10421item_matched_string gets used for for matching multiple items. It is
10422used in drop, get, take, lock/unlock
10423
10424find_best_object_match is used for apply, examine, mark, search-items.
10425
10426Also changed code so that certain actions are in sync with what display
10427mode is set (mostly drop.)
10428--
10429
10430If levitating, you can now remove items from containers in your inventory
10431(after all, they are levitation with you.)
10432
10433Clear is_changing flag if object is being thrown.
10434
10435Changes made to inscription code to work better.
10436
10437Changes mode to experience awarding for player skills.
10438
10439Fixes made to Peter Mardahl's dragonquest maps.
10440
10441Big Wizard, Belzebub, and Demon lord xpm versions colored.
10442
10443Minor bug fix to container in Thomas map.
10444
10445Some new archetypes/images for peterm/dragonquest maps.
10446
10447Make food creation spell more dynamic - food names/values no longer hard
10448coded in.
10449
10450Additional demons added by Peter Mardahl
10451
10452Bug fix to prevent crashes with improve armor/weapon scrolls.
10453
10454Bug fix to prevent crossedit from crashing when exiting with edit windows
10455open.
10456
10457Fix to prevent monsters from throwing certain good objects.
10458
10459Make sure praying over an altar only gets cleric spells.
10460
10461Increase saving throw array to correspond with max level.
10462
10463Monster hp/sp regeneration method changed some - more accurately tunable
10464for low regeneration values.
10465------------------------------------------------------------------------------
10466Changes from Crossfire 0.92.6 to 0.92.7:
10467
10468Monsters now tend to be more agressive about firing spells. Several
10469changes - now monsters will fire along diagonals. For multisquare monsters,
10470we check to see if any part of the monster has a good shot at the player,
10471not just the head. This changes tend to make it more likely that a monster
10472will cast a spell and hit other monsters (makes a pack of wyverns more
10473dangerous, as many will cast spells at you.) I am not sure if this is a bad
10474thing - all it means is that you can't mix fire using creatures with
10475monsters that will be damaged by fire.
10476
10477Let archetypes in the races file have spaces (for Arch Angel)
10478
10479Throwing code added - players and monsters can now throw objects. Some
10480new throwable archetypes added. You need to add throwing_skill to any
10481old players - you can run the utils/add_throw.perl <playerfile> to do this
10482
10483crossedit: If a object have editable of 0, make it so it doesn't appear in
10484any of the menus.
10485
10486Max yield added to recipes.
10487
10488Better checks for insert_ob_in_ob to make sure we really have a player
10489before calling some of the update functions.
10490
10491Weight limit for custom containers is now saved.
10492
10493If we load an object and find it has no archetype, just drop the object.
10494This shouldn't happen, but can prevent core dumps for maps with missing
10495objects or players from a different version.
10496
10497Add 5 static buffers to query_name - it is now safe to call it a few times
10498in a sprintf or the like without losing the old value.
10499
10500Added 'statistics' command. Shows useful information about the
10501character (none that can't be found in the docs.) Also changed
10502'skills' to show how much exp you need in each category for the next
10503level.
10504
10505change_abil changed so that it only prints out what values/attributes
10506have changed. Ie, if you remove a ring that gives protection from
10507fire, but have other fire resistance, it won't say you are more vulnerable
10508to file (since you are not.)
10509
10510Charisma bonus/mechanism changed (again.) Values in living.c are more
10511easily/directly translated into what it means for buy/sell cost. Curve
10512also balanced out some more. Query_cost changed so the value
10513mechanism is a bit different (unfortunately, we need to multiply the value
10514of objects by 4 to keep them roughly the same price as before.)
10515
10516Added 'mark' command. You use this to mark objects that are used for
10517other objects (ie, torches with flint & steel, weapon with improvement
10518scroll, etc.) This removes the necessity that the item you want to apply
10519be the first thing in your inventory (in fact, that is no longer supported.)
10520This should also make things easier for the client.
10521
10522Bug fix that prevents crashes on spaces which have a teleporter and sacrifice
10523altar on the same space (/Lake_Country/DA).
10524
10525Some minor changes to lighting code, some maps also updated to
10526use lighting code.
10527
10528Added halfling and half orc character to the game (From Brian Thomas)
10529
10530Changed valuation for FLESH items. Before it was value*level of creature.
10531Now it is value*sqrt(level*2). For low level, this keeps roughly the same
10532value, but for high levels, it keeps things more reasonable (drops the
10533value of zombie corpses to about half previous value)
10534
10535Bug fix for monsters that have attacktype of ghosthit along with
10536others (main fix ghasts, for Lake County, REtower/tower3, but
10537this could happen for any monster.)
10538
10539Fix for attacks doing no damage against monsters they should.
10540
10541Bug fixes to readable code - should no longer core dump (At times) when
10542books are created, should also be more robust and fix some other bugs. Also,
10543give more detailed messages on how many levels beyond your comprehension
10544a book is.
10545
10546randomitems now stored in object, not archetype. This means that treasure
10547types can be changed in the map - a new archetype doesn't need to be added.
10548However, the treasure to set must still be in the treasures file (or you
10549can use none so treasure is not generated.)
10550
10551Removed color_fg and color_bg variables from game - these have long been
10552obsoleted, but code to handle them has never been completely removed.
10553
10554Changed code so that best wc possible is +/-120 - should now prevent
10555overflows.
10556
10557------------------------------------------------------------------------------
10558Changes from Crossfire 0.92.5 to 0.92.6:
10559
10560If player deletes window and we can't save, delete player objects instead of
10561dumping them on the map.
10562
10563Make NEW_PROCESS_EVENTS standard - remove old proces code and ifdefs.
10564
10565Remove temporary object from cast_spell - pass along both spellcasting
10566and owner objects. Seems to fix some bugs and increase reliability (also
10567is a better way to deal with it.)
10568
10569Change made so that converters are also knowledge about 'money' psuedotype.
10570
10571change spellcasting altars so they also push the button. Fixes altars
10572on some old maps.
10573
10574Some minor tweaks made to the artifact file - mostly clarification of names
10575or setting values correctly.
10576
10577spellcasting skill renamed to wizardry.
10578
10579Fix made so that 'old' potions (strength, int, etc) use correct price.
10580
10581If you examine food/flesh items, you now get detailed information (food
10582value, protections, etc.)
10583
10584Code by brian thomas so that book titles will remain constant across
10585different program runs.
10586
10587Bug fix for crashes caused by multisquare monsters stepping on
10588deadly objects. Basically, fully insert the object, then start doing the
10589check_walkon's one at a time to see if the creature dies.
10590
10591Brian Thomas' valley of the sisters quest added. Additional archetypes
10592and treasures added to handle this.
10593
10594'sort_inventory' option added (player setable.) IF set, when items are
10595picked up, they will be inserted by type, then alphabetical. Very handy
10596for scrolls and rings.
10597
10598Some fixes made to the kundi maps.
10599
10600Flesh/alchemy fixes by Brian Thomas. Flesh type now inherit properties
10601from parent creature (weight, and possibly protections/vulnerabilities are
10602added).
10603
10604Change made for alchemy - you can't toss a bunch of junk in a cauldron and
10605get a good item out unless you sucessfully use alchemy.
10606
10607handbook added to the doc directory (tex/postscript.) And html version is
10608also there, along with an html version to the spoiler. Tex version of
10609spoiler also fixed so it is generated properly with new Latex.
10610
10611
10612------------------------------------------------------------------------------
10613Changes from Crossfire 0.92.4 to 0.92.5:
10614
10615Som bug fixes made dealing with cursed improvement potions.
10616
10617Always let players learn spells if they are in their starting spellbook.
10618
10619New attack methodology put in palce. To put in simply, if there is
10620only 1 attacktype, things remain the same. If there are multiple attacktypes,
10621we cycle through them one by one, and take the one that does the best
10622damage and use it. Some attacktypes no longer do damage - they are effects
10623(ie, paralyzation, slow.) In the case of of these, the effect will always
10624be applied if appropriate. Code looks to behave pretty much the same,
10625but is easier to follow. IF new code is buggy, or you don't want it,
10626there is a define at the top of attack.c you can change.
10627
10628If god blesses you, lets actually remove the depletion object from the
10629player inventory.
10630
10631Other god related fixes put in place - look to also deal with blessed
10632weapons.
10633
10634Additional dump flag added.
10635
10636fix bugs with USE_BUTTONS and the peaceful button.
10637
10638Only allow write_rune to use objects of type RUNE
10639
10640Bugfix in get_pointed_target if it can't find a target - prevents endless
10641loop
10642
10643NRSPELLPATHS set to correct value.
10644
10645Remove null terminator from gods array - not needed anymore.
10646
10647Fix savethrow array size to match maxlevel properly (was 1 short)
10648
10649remove damnation and remove curse now cleric spells.
10650
10651Fix some header code to better work on solaris 2.5
10652
10653Support for compilation with the dmalloc (debug malloc) package.
10654
10655Allow altars and related items to match objects based on type. Use hp
10656field of altar object as the type to match.
10657
10658Library patch by Brian Thomas.
10659
10660Various skill fixes by Brian Thomas.
10661
10662Alchemy patch by Brian Thomas. Here is a copy of his README:
10663+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
10664 The amount of work I put into this was substantial; other than
10665 new code -- I created new archetypes, revised archetypes, altered the
10666 treasures file and created 2 new object types and a flag.
10667
10668 It therefore may be enjoyable to install this patch (incl code)
10669 and *not* define ALCHEMY in define.h. In particular, this patch
10670 does the following things:
10671
10672 1) more varieties of potions are available in shops.
10673
10674 2) new gems and types of food.
10675
10676 3) monsters will now leave behind body parts when you kill them.
10677
10678 4) if ALCHEMY is defined players may make potions/artifacts.
10679
10680 I have included instructions for installation in INSTALL.PATCH,
10681 and a brief document for using the code (Alchemy.doc).
10682
10683 Finally, as always, feedback is appreciated.
10684
10685 b.t.
10686 thomas@astro.psu.edu
10687+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
10688
10689
10690
10691------------------------------------------------------------------------------
10692Changes from Crossfire 0.92.3 to 0.92.4:
10693
10694Various bug fixes to readable code.
10695
10696Let altars be able to cast spells. sp field determine what spell to cast.
10697
10698Fix obscure bug that an arrow can be 'killed' if a monster that has hitback
10699moves onto it while it is moving. Thus would then cause problems because
10700apply would try to remove the object after it had been killed.
10701
10702Give quetzalcoatl melee attack skill.
10703
10704Give experience for clawing attacks.
10705
10706Include literacy skill with fighter skill - this should now give all starting
10707classes literacy skill. I think it improves play balance.
10708
10709Don't mark a players starting money as being start equipment - otherwise
10710they can't drop it on identify altars and it can get merged with money
10711gained at a later date, yet still be marked as starting equipment.
10712
10713Bug fix in keybindings so that we check return of XKeysymToString to make
10714sure we don't use a null value. Some keyboards have keys with no names,
10715and on some systems, passing a null pointer as a string causes it to crash.
10716
10717------------------------------------------------------------------------------
10718Changes from Crossfire 0.92.2 to 0.92.3:
10719
10720Removed ability to use unpaid objects for sacrifices.
10721
10722Changed weapon improvement code to be based on skill levels (if skills
10723are used.)
10724
10725Code in place to generate hit points by average of fighter and overall
10726level - to enable this, change the #if 0 to #if 1 at around line 1040
10727in common/living.c
10728
10729Books hack by Brian Thomas. This mainly means that when emptry books are
10730created (or are otherwise on the map), that they will be filled with some type
10731of information. Some (like monster/spells/gods/artifacts) are generated via
10732the program itself. Information from a messages file that is stored in lib
10733can also be found. Experience can be gained by reading this information.
10734
10735Read/write patch by Brian Thomas. This mainly encompasses the fact that
10736players can now write messages in books, that you must be literate enough (as
10737determined by literacy skill level) to read various books/scrolls. Scrolls
10738are now not identified, but literacy can be used to identify them. Players
10739can still read signs even if they are not literated (needed for game balance/
10740information)
10741
10742------------------------------------------------------------------------------
10743Changes from Crossfire 0.92.1 to 0.92.2:
10744
10745Give artifact Gram weapon attacktype physical|confusion. Before, it was only
10746confusion which would never actually damage anything.
10747
10748If a player dies in a shop, remove any unpaid items from his inventory and
10749put them back in the map. Only applies in NOT_PERMADEATH mode.
10750
10751Put in better DM security - now checks for name, password, and hostname (any
10752of those can be wildcarded out) - see the lib/dm_file for some demo. To
10753supply a password for dm mode, just use dm with the password (ie, "'dm
10754<fireball>")
10755
10756Lighting code added (with various support objects, spells, etc). No maps
10757support this yet.
10758
10759Don't baptize altars if we are in the editor. Leave altars the way they
10760are so that they will be baptized the crossfire loads the map instead.
10761
10762Allow the title of and object to be set from within crossedit.
10763
10764Allow individual players to set the inventory icon, now longer a compile time
10765option.
10766
10767If we get a non critical error and do an emergency save just in case,
10768then don't remove any information/objects. This probably fixes the
10769disappearing inventory bug.
10770
10771------------------------------------------------------------------------------
10772Changes from Crossfire 0.92.0 to 0.92.1:
10773
10774Improved altar sacrifice code (actually, any object type that calls
10775check_altar) - treat a slaying field of 'money' as something special- don't
10776care what form the money is in (see docs for more details)
10777
10778Improve identify table (in conjunction with altar code above) - now takes
10779any type of money, won't take money if nothing needs to be identified,
10780will identify as many things as money is dropped for (ie, drop 200 gold, it
10781will do 10 items)
10782
10783In the map attributes in crossedit, you can select an option called
10784"ShowWeakWalls". If this is selected, weak walls will be shown in a partial
10785teardown state - makes working with some maps much easier.
10786
10787New client updated to support Power and Grace stats.
10788
10789Magic system broken into 2 forms of magic - clerical and mage (they are
10790now seperate). Power stat also added to the game - plays into mage
10791spellpoint (mana) total. Grace also added - used for cleric spell casting.
10792
10793Skill system greatly expanded - different experience types with skills
10794associated with them (only has meaning if you are using the skill code) - thus
10795you gain experience for certain categories as you use certain skills - see
10796doc/skills.doc for more info
10797
10798Multiple gods added (via config option in config.h) - basically, different
10799gods have different enemies, and the effects cleric spells have will depend
10800on this. Altars are created for different gods. See doc/Multigod.doc for
10801more information. Along with this, some new spells were added.
10802
10803 Fix a problem of some objects falling out of sight when they shouldn't.
10804
10805Send delete item to client if decrease_ob reduces the items nrof to 0.
10806
10807Weight should now be fixed up when transferring stuff to/from containers.
10808
10809config option called NO_AUTO_SKILL_SWITCH added - it means range type
10810doesn't automatically get switched to skill type when using melee weapon.
10811Main effects is that it makes it easier to switch between melee and range
10812weapons (pretty much makes it like it was prior to the skill code.)
10813
10814Sack code cleaned up - we don't need to split an object to see if it will
10815actually fit in a container - we can just say how many we want to try to
10816put in.
10817
10818Actually put wimpy command back in (all code was there, just the link to
10819call the fucntion was missing.)
10820
10821Increase max count from 9999 to 99,999. Wasn't that uncommen for high level
10822characters to have more than 10000 platinum coins.
10823
10824When invoking spells, temporarily switch the range type to range_magic -
10825otherwise, a proper check for spellpoints is not done, and it then becomes
10826possible to go negative.
10827
10828Modified crossloop so that it renames and compresses any core files created
10829while it is running - very handy for debugging (note that you could easily
10830modify it to remove the core files instead.)
10831
10832------------------------------------------------------------------------------
10833Changes from Crossfire 0.91.9 to 0.92.0:
10834
10835Make sure the weight a container is carrying can never go below 0.
10836
10837Fixed fall below code, so that objects with visibility will not fall below
10838objects that otherwise blocks view.
10839
10840Fixed colormap problems with xpm graphics on black and white displays.
10841
10842ALLOW_SKILLS is now the default in the config.h file.
10843
10844IS_SUMMON_SPELL macro fixed (= was supposed to be ==)
10845
10846Artifact foods added by Brian Thomas. These are foods that can give some
10847nice benefits (stat improvements, etc), or be much nastier poisons.
10848
10849Bug fix made to skill selection that would otherwise cause core dumps.
10850
10851Bug fix made to query_cost that would cause core dumps if the alchemy spell
10852was used.
10853
10854Fixed bug in dimension door that would cause core dumps if cast from a
10855wand.
10856
10857find_target_for_friendly_spell fixed to use the get_owner call instead of
10858referring to op->owner (get_owner should always be used.) Fixed core dumps
10859that were caused when the owner would be killed, but still have a pet
10860monster (vampires as an example.) get_owner makes checks to make sure
10861the owner still exists.
10862
10863Only set the windows colormap if on a color display.
10864
10865------------------------------------------------------------------------------
10866Changes from Crossfire 0.91.8 to 0.91.9:
10867
10868Changed some parameter names from spell to spellnum. Some compilers don't
10869like parameter names that match structure names.
10870
10871Alot of skill code added by Brian Thomas.
10872
10873Assume that Suns running solaris have strncasecmp. Also, if using
10874Xpm_Pix, assume the strcasecmp is available (the Xpm library should
10875provide it.)
10876
10877get_player_ob function now uses the CALLOC define, instead of just
10878calloc.
10879
10880When dropping items onto objects that blocks view, they now fall below the
10881object that blocks the view.
10882
10883XPM mode now works with private colormaps. It will also switch to a private
10884colormap if it runs out of color during the xpm creation (works for
10885crossedit also).
10886
10887Don't let players put starting equipment into containers.
10888
10889A bows weapon class (WC) is now used to determined hit probability for
10890arrows.
10891
10892When a player dies (in NOT_PERMADEATH mode), the character is immediately
10893saved. Thus, if you die there is no advantage to crashing the server,
10894hoping for a copy of your character from before you died.
10895
10896Set the value to 0 for arrows created with the create missile spell.
10897
10898When transferrance is cast excessively, don't hit the person receiving the
10899spell with 9999 points of physical damage (otherwise, spell can be used to
10900kill many powerful monsters.)
10901
10902Made some changes to make it compile properly under Solaris.
10903
10904Fixed bug in dropall that would cause an infinite loop if the player had
10905an open container.
10906
10907Exits can now inflict damage on players.
10908
10909Fixed middle mouse button missle attack. Now clears the fire_on flag.
10910
10911------------------------------------------------------------------------------
10912Changes from Crossfire 0.91.7 to 0.91.8:
10913
10914Messages about an objects speed no longer printed to the console.
10915
10916When players exit maps, no longer inform all the other players.
10917
10918install-same and install-font directives added to lib/Imakefile - used
10919if game is being installed to same font it was unpacked in.
10920
10921Client now supports receiving bitmaps - server does not support
10922sending them, however.
10923
10924Max experience achievable is based on max level, not a hard coded
10925value (although, at present time, max level is hardcoded to 100)
10926
10927insert_ob_in_ob now returns an object - needed for client/server code.
10928
10929check_inv function added to button.c. Trigger will be altered depending if
10930the character has a matching item (or lack of a matching item.)
10931
10932Option added to config.h to make it so that backup saves will save the player
10933back at home, instead of the present map. Code adapated from code sent
10934by John Steven Moerk (jsm@axon.ksc.nasa.gov)
10935
10936Minor bug in crossedit fixed that would cause it to exit if both
10937-p and -xpm is specified. Both can now be specified - it will effectively
10938ignore the -pix portion.
10939
10940New skills added, with corresponding code to use these skills (from Brian
10941Thomas) Use of skill code is selectable in the config.h file.
10942
10943Two new spells: summon fog and steambolt (from Brian Thomas)
10944
10945Enchant armor code added (from Brian Thomas)
10946
10947Fixed bug in crossedit that would cause it to core dump whenever a non exit
10948was selected and then the enter command run.
10949
10950Fixed bug in attack.c that was using info_all if CASTING_TIME was
10951selected.
10952
10953Made it so that decrease_ob_nr will never decrease the object number below
109540. This fixes a bug in that remove_ob would calculate a negative weight,
10955and then call sub_weight with that negative value. This ended up resulting
10956in weight being added to the player instead of subtracted.
10957
10958------------------------------------------------------------------------------
10959Changes from Crossfire 0.91.6 to 0.91.7:
10960
10961Item saving throw changed around - items are only invulernable to attack
10962types that they are protectected or immune to. For example, if an item is
10963protected from magic, and is is by AT_FIRE | AT_MAGIC, it still needs to save
10964against fire. Before, since it was protected from magic and the attack type
10965includes magic, it would not have been affected in any way.
10966
10967insert_ob_in_map_simple function added. This is used in functions that what
10968to examine all the objects on a space, yet insert new objects as it goes
10969(polymorph). This function will not merge objects, so traversing the stack
10970will work fine. Should fix removing removed object bugs that used to happen
10971for polymorph (function should be used in other functions that do a similar
10972thing)
10973
10974Damage field in objects is now 16 bits (signed). Needed because some
10975high level spells would do more damage than could be stored in signed
109768 bits.
10977
10978The 'old' client program no longer compares versions - there is no reason
10979to, since the client doesn't do anything that requires an exact version
10980match.
10981
10982Better handling of the Eutl library added - selection is now done
10983in crosssite.def.
10984
10985Large lake faces expanded - now set up like walls, where auto join works.
10986walls pick file expanded to include this image series and some other walls
10987that were not previously set.
10988
10989Pacify spell added - code from Brian Thomas
10990
10991Show invisible and X-ray spell added (code by Peter Mardahl)
10992
10993Face data is static - that is to say the the color for any face can not be
10994changed. In order to do a face with a different color, a new face needs to
10995be created (or perhaps linked to the old). This change was made because for
10996client/server communication, having a known color for each image greatly
10997simplify things (also, on monochrome or XPM displays, color information
10998didn't have any effect). Related changes:
10999
11000 1) color information is no longer stored in the archetypes file,
11001 but continues to be stored in the individual .arc files. collect.pl
11002 has been modified to store this information in a faces file.
11003
11004 2) visibility variable added. This is a face value, and it is meant
11005 to take the place of the DOUBLE_FLOOR_PATCH. System will work like
11006 this if DOUBLE_FLOOR_PATCH is enabled: the floor and the object
11007 with the highest visibility + the top object will be drawn.
11008
11009 3) color can not be changed in maps - in fact, since color is now
11010 stored in a different file, the color handling for objects has been
11011 removed. Note - when loading a map with crossedit, this information
11012 is silently ignored. Thus, when then saving the map, the color
11013 information will be lost. The maps should be updated with new faces
11014 if this color information is imporant. The lib/adm/map_info perl
11015 program now will print out warning messages for maps that are using
11016 color changes. Also, the code in loader.c can easily be changed to
11017 print out when it loads a color change (disabled because it is too
11018 verbose for most uses)
11019
11020PLAYER_COLORS config option and code support removed - with new static face
11021information above, this can not be supported in any real way.
11022
11023Shop buildings no longer have is_floor set. This was a hack for the
11024DOUBLE_FLOOR_PATCH for XPM mode. However, enabling it can make it so
11025objects disappear beneath the shops (due to the way maps save.) Having
11026objects not disappear is much more important (IMHO) than having things look
11027just a little bit nicer for XPM mode. Archetypes exist for it, but are in
11028the dev/unused/0.91/7/mood_floor directory, since no maps presently use them
11029
11030Mood floors added (code by thomas@nomad.astro.psu.edu). When activated,
11031these floors can change the mode/flags of monsters (make them aggressive,
11032make them unagressive, make them fall asleep, or charm them)
11033
11034New output mode in place - this uses a much smarter buffering method - it
11035keeps track of several messages, and how often they are flushed is setable
11036with the output-sync and output-flush commands (a help file does exist).
11037All the various draw/write functions have been cleaned up, so that there now
11038exists only 1 front end function (new_draw_info), which takes flags,
11039priority, object, and the actual string. The flags are defined in
11040newclient.h, as NDI_* (in this file because client should use the color
11041flags sometime in the future, and it makes sense to keep all the flags in
11042one place). Priority corresponds to the listen level that the player has
11043set - the lower priority, the more likely it will be printed.
11044
11045Certain runes/traps now work properly (things like create bomb and magic
11046draining would not work if the player is not on the same square as the rune)
11047
11048When a player kills a window, the players objects will be destroyed
11049and not placed on the map.
11050
11051Scrolls, rods, wands, and staves will always be at least level 1.
11052
11053Beefed up demilich's. Previously, for the experience they were worth,
11054it was much to easy to kill them. Main difference is that now their
11055speed is 0.25 compared to 0.06
11056
11057Fixed minor bugs with player movers - if the object to be moved had a
11058speed greater than 1, it was possible to avoid all affects of the mover.
11059
11060Objects that slay are fixed up. Previously, only if the race matched the
11061slaying type did it work. Now, in addition, f the race of archetype name
11062matches the slaying, the object will slay. This fixes stakes, and probably
11063a lot of other items that weren't slaying creatures properly.
11064
11065Changed some of the stat bonuses/penalties for all the classes. All the
11066'normal' races now have a net total of 0 (fireborn, wraith, and quetzalcoatl
11067are not considered normal races, so their totals are unchanged.)
11068
11069Some of the items in the artifacts file have been fixed up - fixed
11070spelling errors and errors in placement of the difficulty.
11071
11072------------------------------------------------------------------------------
11073Changes from Crossfire 0.91.5 to 0.91.6:
11074
11075When player stops attacking, make sure his speed_left is not larger than his
11076normal speed. Fixes a bug where you could attack a wall, then try to attack
11077in another direction, and move quite quickly for a short time, since weapon
11078speed would be used for that short burst of movement.
11079
11080Drain attacks become attack type physical when the character reaches the
11081mininum experience possible.
11082
11083Do not allow equipped weapons to be improved if they would make it too
11084powerful for the character to use.
11085
11086errmsg buffer sized increased to HUGE_BUF. Should fix some bugs that
11087were causes when this was overflowed in dump_object2.
11088
11089SOUND_EFFECTS (if selected) is now defined when compiling all files.
11090Previously, it was only set when compiling files in the server directory -
11091this had the effect that the player structure was different between the
11092server and common area.
11093
11094speed+2 items now increase speed properly. Values in the computation were
11095not being cast to floats, so a speed+2 ended up giving the same amount of
11096speed as a speed+1 item.
11097
11098Restoration changed around. The spell will no longer restore depleted stats
11099- this can only be done with the potion. The potion is now only generic
11100restoration - specific stat restoration potions removed. Also, perceive
11101self will now tell the player what stats are drained and by how much.
11102
11103Reduce the amount of experience you get from killing other players to
111041/10'th what it used to be. This should also discourage players from
11105killing other players.
11106
11107SAVE_PLAYER removed from configurable options - it is always on. I can't
11108see why anyone wouldn't want to be able to use this, and if you really
11109don't want to use it, removing the save directory would pretty much
11110work.
11111
11112Fixed dropall command. It wasn't dropping all items (seemed to
11113stop at first locked item.) Also, 'dropall armour' now drops
11114helmets in addition to shields and armor.
11115
11116Fixed heroism potion. It was casting the incorrect spell (detect curse).
11117Now it casts heroism.
11118
11119Fixed bug that would cause remove object to try and remove object. When
11120loading maps, an object in a container in a container would not be inserted
11121(this mostly happened with an object in a chest in an icecube.) Changed
11122code in load_objects to a recursive call, which can handle inventories any
11123number of layers deep.
11124
11125Fixed bug in drop_all that would cause core dumps.
11126
11127------------------------------------------------------------------------------
11128Changes from Crossfire 0.91.4 to 0.91.5
11129
11130Inventory icons are now updated properly. Also, the inv_name and look_name
11131arrays in the player structure have been redone - these are now arrays of
11132function pointers and use the shared string libraries to allocated and free
11133storage. This should take less space than the fixed size arrays that were
11134previously used.
11135
11136When buying equipment, weight is now subtracted properly from the player
11137for the coins that are used.
11138
11139Maps can now have a fixed reset time. This means that the map will reset
11140after a set amount of time, no matter whether it is accessed or not. Useful
11141for highly used maps that really need to be reset once in a while.
11142
11143Bug fixed in get_ob_diff. The difference array would get overflow,
11144corrupting other data. Many core dumps were probably caused by this.
11145
11146Fixed bug in legal_range routine where legal_range would only check to
11147first item of type BOW in a players inventory. This caused rotateshoottype
11148to not list the bow entry if it was not the first bow equipped.
11149
11150Cloaks are not always turned into artifacts - normal cloaks can be found now.
11151
11152Charisma bonus changed around some more. Penalties are not quite as harsh
11153for very ugly characters - with the change, a character will never pay
11154more than 10 times to buy something than to sell that same item.
11155
11156Various functions changed around and some new ones added so things will
11157work properly with the new client (still under developement.) Most notable
11158changes were to common/xutil.c, with the newclient.c and newsocket.c
11159files added.
11160
11161Unpaid items that are alchemied are now worth nothing.
11162
11163TWO_BYTES_FONT is now a standard. I can't see crossfire ever going back to
11164having less than 256 images.
11165
11166free map->tmpname when it is no longer needed (before setting it to NULL).
11167this pointer is assigned from a tempnam calls, which (on Sunos 4.1.x) uses
11168malloc to allocate space. Note - if this is not true for you system, let me
11169know, so I can put code in to handle this.
11170
11171destruction spell (from scrolls) fixed. This was actually a problem
11172in that cast_spell was not setting the owner properly.
11173
11174Magic mapping improved for bw systems. This actually makes it work like
11175it used to, with it doing stippling for object.
11176
11177Casting of director spells changed. Placement away from characters and
11178underneath characters now possible
11179
11180New potion type added - Improvement: This will raise level hit point or
11181spell point gain to the maximum value. It starts at the lowest level (ie,
11182first hit/spell points gained), and will raise one value to maximum.
11183
11184Some patches added (From Manfred Weichel, manfred.weichel@mch.sni.de) which
11185should make compiles on SVR4 work properly.
11186
11187New artifacts (in lib/artifacts file) added.
11188
11189Configurable option: cone attacks no longer propogate through monster - it
11190will only hit the first row.
11191
11192Remove curse/damnation changed so that it will not remove curses which
11193are a higher level than the spell caster.
11194
11195Polymorph code changed around. Greater chance of items being destroyed,
11196value can never be greater than twice the original value, no mininum value.
11197Also, now the item value and not clone value is used, so things like
11198scrolls, wands, rods, etc should have the max price work correctly. magic
11199is not maintained, rather, magic*4 is used as the difficulty for creating
11200the new item, with max_magic of the new item never being greater than the
11201magic of the old item. The number of objects remaining after a polymorph
11202will be less than the original (10 arrows might become 8 bolts, for example.)
11203
11204You will no longer attack players in the group you are in by running
11205into them.
11206
11207Titles now restored properly from save files (only makes a different if
11208SET_TITLE is defined
11209
11210When doing a save, check the return value of fclose when writing to tmp file
11211and the final file. If either of these writes file, use the backup file
11212instead (previous save file is renamed as a backup file.) Should prevent
11213problems when there are full filesystems of quotas in effect. The character
11214will not be saved, but at least an older save file exsists instead of the
11215character being totally gone (like before.) Patch from Laurent Wacrenier
11216<Wacren@Gin.ObsPM.Fr>
11217
11218Plural names for items that have a 'of' in them is fixed/added. This mostly
11219deal with potions (so instead of potion of dexterys, you get potions of
11220dexterity) Patch from Laurent Wacrenier <Wacren@Gin.ObsPM.Fr>
11221
11222query_cost changed around so that value for very low priced items are now
11223computed correctly. Before, the nrof of items was multiplied in very late,
11224and various divisions (for being unidentified) were done previously. For
11225low value items, this would result in a zero value. Zero values still
11226result for low priced items if you only have 1 or 2 of them, but if you
11227have 80 of them, a proper value is now generated.
11228
11229Code to control golems (and in fact many summoned creatures) now fixed.
11230Help file added about golems. This also fixes a core dump that was caused
11231when a summoned creature was around, and another scroll was used.
11232
11233Modified logger in common directory to no longer create a fatal error if you
11234get too many minor errors in and the editor is what is being used. Before,
11235occasional errors would be reported by the editor (mostly dealing with not
11236found archetypes in maps), which would eventually cause a fatal error. This
11237seemed erratic, because the editor never changes the tick, so loading one
11238map might result in the fatal error because of the error total from the
11239previous maps. Also, when using the editor, having missiong archetypes
11240probably should not be a fatal condition.
11241
11242food value can be changed in artifact file. Food is mostly used to have
11243various meanings in different objects. The artifact file has also been
11244updated about everything that is changable, and what the values mean (ie,
11245docs are built into the top of the file as comments)
11246
11247Weapons/armor no longer 'disappear' when a class that can not use such an
11248item tries to equip a group of them. That is, if a class that could not use
11249armor tried to equip 2 chain mails, one of the chain mails would disappear.
11250
11251------------------------------------------------------------------------------
11252Changes from Crossfire 0.91.3 to 0.91.4
11253
11254FLAG_NO_FIX_PLAYER is set before saving the player, and cleared after the
11255player is loaded. Before, a character will full sp and hp could be save, and
11256when reload, not be at full strength. This is because fix_player was being
11257called during the load process, before all the characters items had been
11258loaded and equipped. This, the maxsp and maxhp values were that of the
11259character with no items.
11260
11261Artifacts can now pass the various spell paths to the newly created
11262artifact. The values are or'd with the previous spell path values of the
11263object.
11264
11265The artifact file now supports objects with name NONE. If this object is
11266rolled up when trying to generate an artifact, then no artifact is
11267generated. This allows for better tuning the chances of having certain
11268artifacts, by just reducing the chance of having an artifact at all. The
11269'type' field of the Object in the artifact field is still required, but any
11270other fields for the artifact object are not used.
11271
11272Crossedit fixed so that all the images do not appeared inversed when being
11273used on a monochrome display.
11274
11275Changed common/xutil.h so that XPM mode will work on monochrome systems. In
11276fact, XPM mode should now work on all systems, previously, the load process
11277tried to create a pixmap 8 bits deep. If the X server did not support it,
11278errors would result. So while playing in XPM mode on monochrome may be
11279pointless, this allows play on systems where it may have some use.
11280
11281libproto.h and sproto.h only check that __STDC__ is defined. Previously,
11282__STDC__ had to be nonzero, and not all compilers set this. Also, in
11283global.h, if __STDC__ is not defined, return an error. Many compilers do not
11284allow _STDC__ to be redefined.
11285
11286Updated changable variable in crossedit. Now the various spell paths can
11287be set in the editor.
11288
11289SPEED_GAME now standard compile option, and not selectable. Having it as
11290an option seemed to create more problems than bugs non speed game found.
11291
11292Crossfire man page updated. xledit.man changed to crossedit.man, to
11293reflect the name of the program it represents.
11294
11295crossfire.doc updated with more information - mostly about new objects
11296added to the game.
11297
11298More help files.
11299
11300Objects with type CREATOR were added. The objects, when applied, create
11301other objects. Documentation in crossfire.doc.
11302
11303Object that cast spells (rod, scrolls, wands, and horns) now have a level
11304associated with them. This level is used to determine at what level the
11305spell should be cast, instead of using the owners level, which was typically
11306used before (allows creation of super powerful wands/rods/horns, but having
11307them be a very high level.)
11308
11309Bow, crossbow, bolt, and arrow code redone by Tero Haatanen. This cleans up
11310the code, and allows for magical arrows and bolts.
11311
11312Race can now be changed in the artifacts file.
11313
11314A spell of Banishment has been added.
11315
11316Attacktype AT_DEATH is now more potent when if against a monster that
11317the item also has slayign capability against.
11318
11319Bug fixed to prevent players from getting infinite experience for finding
11320the same trap. Also, experience changed for disarming traps.
11321
11322------------------------------------------------------------------------------
11323Changes from Crossfire 0.91.2 to 0.91.3
11324
11325Changed artifact structure so that items with a chance greater than
11326255 are now possible.
11327
11328Object now put into icecubes when hit by a cold spell, like before. This
11329probably got messed up in the saving throw re-write, where objects had to be
11330either immune or protected from cold to be put in icecubes. In fact, the
11331reverse was supposed (and now does) happen. IF an object is
11332protected/immune from cold, it is also immune from being put in an icecbub.
11333
11334Fixed up is_magical and need_identify routines to handle more items. Rods,
11335scrolls, and spellbooks are always considered magical in nature. Wands and
11336staves are magical if they still have charges. Also, fixed up so that some
11337of the Artifact items are now detected as being magical.
11338
11339If player lacks sufficient money to buy from shop, it now prints how much
11340short he is in standard english string, (ie, 2 platinum 3 gold,etc), instead
11341of gold.silver format (lacke 44.25 gold).
11342
11343Inventory drawing changed. Should be a little more efficient, and be more
11344efficient on drawing. With auto pickup modes (that pick up more than one
11345item), inventory will be drawn after all applicable items have been picked
11346up, instead of after each one.
11347
11348Item status is printed next to item image in players inventory if
11349SHOW_INV_ICON is selected in the config.h file. It would be nice if better
11350imagines were designed for the status (right now, just words are printed
11351out.)
11352
11353When connecting to the server, a one line welcome message is printed.
11354Crossclient was modified to ignore this line if it starts with 'Welcome', so
11355changing it may cause problems with crossclient.
11356
11357Potion of restorations are now handled by means of different archetypes and
11358treasure lists, instead of having special code in the program to handle
11359them.
11360
11361If a RUNE is found in an object inventory when free_object has been called,
11362remove the rune instead of dropping it to the ground. This is so that traps
11363(runes) disappear when the object they are placed on is destroyed.
11364
11365Doors are now trapped, and be detected & searched just like chest
11366traps.
11367
11368Map difficulty can now be set in the map, and not be calculated at map load
11369time. Crossedit has been modified so that 'Attributes' now contains a
11370difficulty field, and if set, this will be used when loading a map (it is
11371stored in the level field of the map). If this value is 0 (default), then
11372the old formula for calculating the difficulty will be done. The advantage
11373of this is that map creators can now set the difficulty of the map more to
11374their liking, and certainly do a better job than the program can do.
11375
11376Pickup by value density fixed. The number of items is now taken into
11377consideration (before it did not, so a lot of arrows would be picked up,
11378because the total value divided by the weight of 1 arrow was greater than
11379the pickup value.)
11380
11381Bug fixed in query_cost. Before, for F_TRUE value, unless the item was
11382worth more than 10,000 sp, F_SELL value would be calculated instead of the
11383true value.
11384
11385Merge several small files in common.c into one file called porting.c.
11386porting.c contains common functions that are called by crossfire. This
11387allows system dependent code by be in one file, instead of scattered
11388throughout the program.
11389
11390-listen_port <num> command line option added. num is the port to use for
11391connections, instead of the default (13326)
11392
11393Instances when a variable name is the same as a structure name have been
11394fixed (by changing the variable name). On some compilers, this is a
11395problem. I can not be sure that all such cases have been fixed, as I have
11396not found a way for gcc to create warnings in this situation.
11397
11398Random happenings when a spell fails due to encumbrance has been added.
11399This option is configurable in the config.h file.
11400
11401Trap code added. Chests and doors can now be trapped. 'search' and
11402'disarm' commands added. old 'search' command was changed to 'search items'
11403
11404Inventory locking added. Makes it so that items can be locked in a players
11405inventory, and will not be dropped when a 'dropall' command is issued.
11406'inv-lock' and 'inv-unlock' commands were also added.
11407
11408'gsay' command added for party mode.
11409
11410Spellbooks can now have their slaying field set to the name of the spell
11411that the spellbook is of.
11412
11413Debugging output disabled in crossedit. It produced copious amounts of data
11414that has little relevance except for the developers. It can easy be turned
11415back on by editing the crossedit/include/debug.h file.
11416
11417Artifact gems (worth lots of money) and amulets added.
11418
11419Invisible object now appear in crossedit. Fixes a problem, but now makes
11420use of the global 'editor' variable, making it likely it won't be obsolete
11421any time soon.
11422
11423Artifacts (in artifacts file) can now have nrof field that will be used to
11424generated the number of items instead of the treasure list. If the nrof in
11425the artifact is 0, then the standard treasure list nrof is used instead.
11426
11427Artifacts can now grant reflect missile and spell ability. Also, by setting
11428stand_still, the objects will not be animated.
11429
11430------------------------------------------------------------------------------
11431Changes from Crossfire 0.91.1 to 0.91.2
11432
11433Some options now standard part of game (SHOP_LISTINGS, Line of Sight). The
11434config.h (for this release) contains these options, but they are commented
11435out with the note they no longer do anything.
11436
11437Changed value pickup to pick up things based on true value, and not sell
11438value. True value is how much the item is worth without applying charisma
11439bonuses. Before, if two different characters used the same pickup mode,
11440different stuff could be picked up because of charisma differences (or even
11441if a character gained charisma, the same pickup mode may not work as it did
11442before). By using true value, pickup mode operates the same between all
11443characters,
11444
11445Items of type TREASURE can now have their experience set, and this will be
11446used for the difficulty of the generated treasure instead of the map
11447difficulty (as was done with shops). If experience is not set, then the map
11448difficulty will instead be used (or 14 in the case of shop floors).
11449
11450Cure poison actually cures it, instead of reducing the duration.
11451
11452Don't use fseek when loading in map files. Some systems do not support
11453fseek on pipes (which are used for compressed files). Instead, just
11454set the variable with the data we read, instead of seeking back and
11455re-reading it.
11456
11457Transferrance spell changed so that supercharging will have bad effects
11458(first confuses the player, then a large fireball is created (with player
11459losing all spellpoints)
11460
11461Poisoning made more vicious - it does more damage based on the level of the
11462creature that uses it (level/2 in fact). This makes it so that very tough
11463creatures that poison someone will have the poison do serious damage.
11464Also, damage caused is no longer random.
11465
11466 Chests can now contain multiple items. Code changed to handle this
11467properly. Treasure is also always dropped on the floor (Even if the chest
11468is in an objects inventory.) hp field used in chests (and in fact all
11469treasures) to determine how many objects to create (thus, a chest with 3 hp
11470will have 3 objects created).
11471
11472Crossedit now draws a rectangle around the selected area. Reversing the
11473color of the images did not work in XPM mode.
11474
11475Have client.c include "includes.h". includes.h sets up all the name defines
11476properly (ie, __sgi__, __sun__)
11477
11478SP_* functions changed (by Rupert Goldie) to take an object pointer instead
11479of a level value. This makes adjustments for spell costs (via stuff like
11480spell paths) easier to make, because now only the SP_* functions need to be
11481changed. With the object structure, checking for known paths (or perhaps
11482other things in the future) can easily be done.
11483
11484Bombs will now be dropped before exploding.
11485
11486New attack type (God Power) added. The cleric cause wound spells use this
11487attack type.
11488
11489Charm monster spell added.
11490
11491Party system re-written by Scott MacFiggen <smurf@soda.berkeley.edu>.
11492Characters will now only share experience if on the same map, and other
11493features were also added.
11494
11495Modified check_item function (used in creating weapons with the improve
11496scrolls). The objects being sacrificed do not need to be in one group (ie,
11497two groups of 4 potions of dex will now be counted as 8 potions). This only
11498applies to potions, since some can be identified and others not identified.
11499Also, cursed or damned items will not count towards sacrifice count
11500(although, they will be consumed).
11501
11502Changed way cancellation works on items. Before, if cancellation hit a
11503player and the player failed the saving throws, the items got no saving
11504throw versus cancellation (only if their absolute magic value was less than
11505RANDOM()%6 did they survive). Now each item gets a saving throw. Note that
11506if a container makes a saving throw, then the items inside do not need to
11507make saving throws and are unaffected.
11508
11509A separate function did_make_save_item was split off from
11510save_throw_object. did_make_save_item justs checks to see if the item made
11511its saving throw based on the tables (and any protections or immunities
11512grants it an automatic save, as before) save_throw_item calls this function,
11513and in addition, does the appropriate actions (burns up items, turns them
11514into icecubes, calls cancellation, etc.)
11515
11516Saving throw method changed. Before, each item got 5 chances to make a save
11517for each item it is composed of. Now, it gets one chance for material it is
11518composed of. Then, based on the number of saves it made, and the number
11519materials it is composed of, an overall made save/failed save is
11520determined. This change is to make it easier to figure out saving throw
11521values, and hopefully make adjustment easier.
11522
11523Saving throw tables updated. In general, each item is +5 compared to what
11524it was before. This should hopefully make it so that items have about the
11525same success rate they did before.
11526
11527Crossedit modified to preserve value of connected field when cut/copying and
11528pasting. Before, an object that was copied/cut would also have its
11529connected field reset to 0.
11530
11531More XPM images colored. Filenames for the river directory have been
11532re-done, to actually make it a bit clearer of what does what. The archetype
11533names were not renamed however, to keep compatibility.
11534
11535World expanded. Another row of maps was added to the southern edge. The
11536world maps were also renamed to a world_xy format, where x is a letter
11537and y is a number. This represents the x and y location of the map, making
11538it easier to figure out how maps related to each other.
11539
11540Map spaces can prevent magic user spells, cleric spells, or both. Before,
11541an anti magic square prevented all types of spell casting.
11542
11543Have monsters regenerate spell points even if they don't cast a spell.
11544Monsters have a 1:3 chance of casting spells, irregardless of any other
11545factors. Before, spellpoints would only be regenerated if it got past this
11546check. Also, some monsters (dragons, chinese dragons) have had their max
11547spellpoint and regeneration rates increased to correspond with the higher
11548cost of casting their breath weapons.
11549
11550Altars now will also match on the slaying field of the object being
11551sacrificed. This is similar to how keys and special doors work. With this
11552change, it is no longer required to make a unique item that then needs to be
11553sacrificed (ie, the dagger, the cup, and the crown for the old city
11554quests). Instead, a cup, and crown can be used, with the slaying field set
11555appropriately (unfortunately, will not work for weapons, as it will think
11556that is the monster to do extra damage against.) However, the altar code
11557always did match item name, so calling it something special like 'The
11558Dagger' and have the sacrifice look for that should also work.
11559
11560Spell encumbrance code added. More you are carrying the higher your
11561chance for failure.
11562
11563------------------------------------------------------------------------------
11564Changes from Crossfire 0.91.0 to 0.91.1:
11565
11566Fixed bug in the enchant weapon code. It was not allocing enough
11567space for the string, and thus would corrupt the heap.
11568
11569Minor fix to spells.c. IT was using strdup instead of strdup_local,
11570which caused the compile to fail on some machines.
11571
11572No longer gets errors when adding a player on a map that is not
11573loaded in a multi player game. Before, process_events would see that
11574the player has no object, and could get enough errors to cause the game
11575to quit. Now, it suppresses errors if it is only loading objects
11576for that map.
11577
11578Default map difficult for treasure that is created in shops was changed from
115799 to 5. In this way, the likelihood is higher that good items will be found
11580in dungeons, not in the shops (there are very few items with difficulty
11581above 9)
11582
11583Archetypes cleaned up. All archetypes that were not being used in a map
11584were moved to dev/unused/0.91.1. Note: There are still a few archetypes
11585that are not used in any maps, but these are part of a collection (ie, one
11586section type of a wall). This was done really because there is no reason to
11587have archetypes that are not being used to be in the official distribution.
11588It could be misleading for people looking through the arch directory (ie, 'I
11589thought I looked at all the maps, but never saw this monster'). Also, I
11590have no problem moving these archetypes back in, once some maps actually use
11591them.
11592
11593'grass' and 'sea' are no longer animated. There are a few reasons for
11594this: 1) The animations never really were that interesting, 2) being
11595animated put them on the speed list, and being that over all, they are the
11596second and third most used objects, this is a performance hit, and 3) With
11597pixmap and xpm images, re-draws are only done on squared the have changed
11598(really improves performance). However, with them being animated, they
11599often changed, so that more re-draws were needed. The old archetype and
11600image files are in dev/old (in arch distribution) if you actually want to
11601use the animated versions.
11602
11603Put a limit of 70 on damage bonus for weapons.
11604
11605Treasure lists expanded. The old treasure lists (in treasure.c) have been
11606removed, and treasure lists added to the treasures file added to take their
11607place. The treasure file has been expanded have list transitions, and
11608treasure lists in which 1 object on that list will be generated. Archetypes
11609(shop, random, and chest) updated to use the randomitems field to determine
11610what treasure list to use to generate the items. Advantages of the new
11611method: Ability to better tune treasure probabilities, re-compiling not
11612necessary in order to update treasures. the create_treasure function was
11613modified to add an extra argument - this is used to keep track of how many
11614times it has been called on this attempt to create a treasure. In this way,
11615infinite loops (with list transitions) are avoided. Generate treasure
11616replaced with a simpler function that calls create_treasure, and returns the
11617object. create_treasure takes a treasurelist instead of a integer
11618treasurelist number, like it did before. The crossfire.doc file has
11619been updated about the new treasures file capabilities.
11620
11621Chests are now created with their treasure as their inventory (this mostly
11622happened because of the treasure changes above). Advantage is that when a
11623chest burns up, its treasure may remain (or may be burned up). Before, when
11624a chest was burned up, its treasure inside was not created.
11625
11626Rolling multi-part objects should now work better (not perfect, however).
11627
11628Carrying an open bag with a mode that picks everything up will no longer cause
11629an infinite loop.
11630
11631Crossedit changed to draw selected areas as a black box. Fixes some problems
11632with display in XPM mode.
11633
11634Fixed bug that would cause game to crash when pets were summoned. Problem
11635was an infinite recursive loop, that would then cause the system to run out
11636of stack space. Solution is to decrease the speed_left of the object before
11637one of the function calls. This makes it so that at some point, one of the
11638functions will not be called.
11639
11640When a rune is cast, use the s->archname for the archetype name, and
11641not hard coded strings. Cured a bug with rune of transference. Also,
11642allowed several case statements to be merged. Really, no archetype names
11643should be used in spells.c, when casting spells. The archetype name should
11644be gotten from the spell structure.
11645
11646If a button is being updated on a map that is being saved, just return
11647from the function. Prevents errors 'object has speed but is free'
11648
11649Fixed bug that caused objects that got a speed_left of exactly 0 to
11650be frozen. This was because speed_left >0 to have the object be processed,
11651and <0 to have speed added. Now, speed is added if speed_left <=0.
11652
11653Some minor changes made to hopefully make it compile on AIX systems without
11654any modifications.
11655
11656process_active_maps now called when a map is being loaded. It should
11657hopefully work properly, since enter_exit was modified to not use any
11658static variables. Also, process_events was modified to take a map as
11659an argument, and if non null, only update objects on that map. That makes
11660process_map obsolete. process_active_maps was also changed to still process
11661even if there is only one player.
11662Crossfire should let players still perform actions when a map is being
11663saved. Problem is, handling a map that is in the process of it being
11664saved, and having a character enter it. Crossfire needs to finish
11665saving that map, then re-load it and insert the character. Large changes
11666to how player interact with loading & saving of maps would probably
11667be needed, and probably should be done.
11668
11669You no longer lose luck if you kill yourself, and the player who kills another
11670player now loses the luck (before, the player killed would lose luck).
11671
11672Now inventory display modes - unpaid, cursed, magical, nonmagical. All pretty
11673self explanatory.
11674
11675------------------------------------------------------------------------------
11676Changes from Crossfire 0.90.5 to 0.91.0:
11677
11678Some new maps added to the standard distribution (Magara and some of
11679the esben maps). Magara was added as a place to depart to by ship, the
11680esben maps were merged in as new buildings or towers on existing maps, not
11681as a new continent.
11682
11683Keyboard buffering is now selectable via 'keyboard' command. Before,
11684an attempt to remove keystrokes from the X Events queue was made, but could
11685not always remove all of them. Now, it should remove all of them, or none
11686of them, depending on the keyboard buffer setting. The value will be
11687saved with the player.
11688
11689Pickup mode value now saved and restored from the characters save files.
11690
11691Inventory and look window should only be re-drawn once when selling
11692an item.
11693
11694Calls to draw_stats in common/living.c will only be made if the object
11695type is a player (should prevent some warning messages)
11696
11697Fixed create earth wall spell so that it uses bdur as the base hit
11698points of the wall (instead of bdam). This will prevent some core dumps,
11699because otherwise, the wall can have 0 hit points.
11700
11701Program should not core dump when person quits that game and the map he
11702is on has been swapped out. (ie, person saves or quits the character,
11703but the map gets swapped out before they type 'q' to the play again
11704question)
11705
11706Word activated teleporter code added (Peter Mardahl).
11707
11708Who can become DM, based on their user id, can now be set in the dm_file
11709(assumed to be in lib.) (Tyler Van Gorder)
11710
11711Tell should now work properly (Eric Mehlhaff)
11712
11713Cloak code added (Peter Mardahl)
11714
11715Objects can not grant invisibility, make_invisible variable added to
11716archetype files.
11717
11718Added information to the crossfire.doc file (was missing several
11719attack types and materials). Added better information on what some of
11720the flags do. Noticed that will_apply 4 applied for both scrolls
11721and earthwalls, now only applies to earthwalls. To have a monster
11722use scrolls, can_use_scroll should be used instead.
11723
11724Code added to deny users or sites from connecting. This is to prevent
11725users who intentionally crash the server to connect and start up a window,
11726which they then crash the server with. Patches from Tyler Van Gorder.
11727
11728Two floors will can now be drawn when using XPM mode and this options
11729has been selected in config.h This allows for towers to sit on top of
11730grass to look proper. From Gregor Schmid <schmid@fb3-s7.math.tu-berlin.de>
11731
11732Patches that modified 'create food' spell. Better food (ie, waybread)
11733will be created at higher levels, and the caster can also specify what
11734type of food to be created. From Peter Mardahl.
11735
11736Spell paths added by Rupert G. Goldie <rgg@aaii.oz.au>. Simply put,
11737each 'spell path' contains a certain category of spells. Objects and
11738races can be attuned, repelled, or denied certain paths (objects would
11739apply the the person wearing them). Attuned allows casting of spells in
11740that path at lower cost and greater efficiency, repelled paths are cast at
11741a higher cost and lower efficiency, and denied paths can not be cast at all.
11742Thus, a wand of small fireball that is attuned to Fire would cast more
11743powerful fireballs. A character wearing a ring that is denied the path
11744of fire could not cast fire spells at all. Right now, no items will
11745be created using these features, and no characters have any of these, but
11746these might be added in the future. Look at the spell-paths file in the
11747doc directory for a little more information.
11748
11749Pickup mode 6 (pick up magical items) will not pick up known cursed items.
11750
11751 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11752Object structure and process_events changed. Now, a separate list
11753us used to keep track of active objects (objects whose speed is nonzero).
11754All objects on the active list are still on the normal list, but
11755process_objects only needs to go through the active_list for objects
11756to process, saving a lot of time. The cost is adding two
11757pointers (active_next and active_prev) to each objects. But the speed
11758gains are well worth the minor memory cost. the 'malloc command
11759was changed to display the number of objects on the active list -
11760note that there is zero memory usage for these, since these objects
11761are also on the normal object list.
11762
11763Programming note: Any time an objects speed is changed (doesn't
11764happen too often), a call to update_ob_speed(object *) must be
11765made, so that the object can be added or removed from the active
11766list, as appropriate.
11767
11768In testing, I first ran crossfire, with process events using the
11769normal object list, and printing out error messages if it found
11770objects that had speed but were not in the active_list. I cleared out
11771a couple warehouses in Navar without any errors.
11772
11773Then, I switched to using the active_list, and printing out errors if
11774it found objects on that list with zero speed. I cleared out the
11775mages tower in Navar city without any errors.
11776 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
11777
11778
11779Selling items now works properly (it only failed to work if
11780AUTO_SAVE was not set previously, and the value of the item was
11781beyond a certain amount.)
11782
11783Look window code changed so that it does not erase the unused area
11784unless necessary. Also, when a player moves, freeze_look is set.
11785This was changed because the functions that move_ob calls update the look
11786window, and the window was being updated 3 times each time the player moved.
11787
11788When poisoning ends, it no longer core dumps.
11789
11790Inventory window updated if reading an unidentified spell book and you
11791already know that spell.
11792
11793Casting rune spells now works properly.
11794
11795Spells now (once again) sorted upon loading of characters.
11796
11797------------------------------------------------------------------------------
11798Changes from Crossfire 0.90.4 to 0.90.5:
11799
11800Bug fixed with window titles getting their names changed. (Tero Haatanen)
11801
11802Container code changed around. Containers can be locked, they can be used
11803from the ground. FLAG_CONTAINER removed, since there is already a type
11804container, and bonus removed from object structure (Tero Haatanen)
11805
11806insert_ob_in_ob sorts objects, so items with more magic are before those
11807with no magic bonuses even for unidentified. It also uses the absolute
11808value of the magic, so it should be a little more difficult to know if the
11809item is cursed or not.
11810
11811Added unique-flag and UNIQUE_ITEMS define. All items which have unique flag
11812are saved to directory .../lib/unique-items. A filename is mapname + ".v" +
11813number, where number is normally 01, but if two or more server is running
11814same time it can be also greater. This feature can be used to banks and
11815inns to save permanently items. The code is one limitation: if map contains
11816unique item which can be carried away from map (e.g. an unique excalibur)
11817there must be at least one unique item on map which can't be carried away.
11818This is because unique items are loaded from original map only if unique
11819items file doesn't exit. If all unique items are carried away from map then
11820they are loaded back next time when someone enters that map. This should
11821not a problem if map makers remembers this. (Tero Haatanen)
11822
11823Editor by Jarkko Sonninen. He added toggle button into attribute window and
11824made map's reset time and timeout so that they can be configured in maps. He
11825also fixed map archetype, so that map default stating coordinate is (2,2)
11826like before. This seems break a gatehouse map, where it use default value
11827on map (changed 0 to 2), but it's easy to fix.
11828
11829Change check_walk_on (common/object.c) so it no longer calls the draw_func.
11830This eliminates a problem of seeing flashes of areas that should be blocked.
11831This is because the draw function it called would re-draw the game window
11832before the variable to re-calculate line of set was set. As I see it, this
11833function call was not needed in any case, because this is called during the
11834players movement. After the player moves, the draw function is called from
11835the process_events (now process_players1) function. This should also
11836conserver a little cpu time, and bandwidth.
11837
11838Coin code in shop.c changed. Patch from Kjetil Torgrim Homme made it so
11839that coin value can be changed in archetypes and the shop code should still
11840work properly. I made changes so that the number of coin types is set with
11841a #define, making adding new coin types easier.
11842
11843AUTOSAVE, SAVE_INTERVAL, and NO_EMERGENCY_SAVE should now work properly.
11844See include/config.h for more information on these options.
11845
11846Changed it so that updates to other maps will not be performed while
11847loading a map. This caused a bug if two players entered exits
11848at the same time. One or both of the players may end up in incorrect
11849locations, all exits in that location may be closed, etc.
11850
11851Saving throw table expanded to handle all materials and attack
11852types (Peter Mardahl)
11853
11854Fixes so that Turn Undead does not do physical damage (Peter Mardahl)
11855
11856Patch to make it impossible to prepare multiple weapons at the
11857same time (Peter Mardahl)
11858
11859Added 'sea1' archetype. This is the same as the sea archetype, but allows
11860for walk on. Its purpose is to use for backgrounds behind boats and similar
11861objects. Because it will probably be needed in so many places, I decided to
11862make an archetype, instead of editing the variables inside crossedit for the
11863object.
11864
11865Removed xbm_values array. This was used to map a face number to that face
11866location in memory. Since the bmaps file is created automatically without
11867any holes, this is not longer necessary.
11868
11869Archetype for wonder spell now in place. This will prevent core
11870dumps when the spell is cast.
11871
11872Pixmaps will now be freed upon exiting Crossfire. They will also be freed
11873after emergency saves are performed. This fixes the problem that some
11874X-Terminals would not free the memory used the the pixmaps otherwise, and
11875run out of memory. This fix pertains to both -pix and -xpm mode.
11876
11877Patch to hopefully double death problem/core dumps with NOT_PERMADEATH
11878mode.
11879
11880Changed the size of the temporary string that is used when loading
11881messages. For a few very long messages, 1024 bytes was not enought.
11882
11883Patches put in Crossedit to allow for XPM mode. From Petri Heinil.
11884
11885Cleaned up the code for look window. Now, everything agrees (ie,
11886when you click on something in the look window, it is actually
11887that object.) Likewise, invisible objects are not displayed
11888anywhere. This should also fix a bug of not being able to enter
11889some building by clicking the middle mouse button on them.
11890
11891Added help file for pickup. Explains the 8 basic pickup modes
11892plus the value-density pickup mode.
11893
11894Detect magic will detect magic on all items in a stack, not just the
11895top object.
11896
11897Spells fixes (From Peter Mardahl):
11898 1) Identify modified to identify items on the ground if inventory is
11899 identified.
11900 2) Detect magic spell finds magical runes and makes them more visible
11901 3) AT_CHAOS and AT_COUNTERSPELL reimplemented so that they are not
11902 treated as special cases by the move_cone function
11903 4) Magical walls created by spells (firewall, frostwall, ....) are
11904 fixed
11905
11906If a map is reset, that map is then removed from the list of map objects
11907(what you see when you type 'maps ). This way, the 'maps commands only
11908displays maps that are reasonably active. This change should also save a
11909little memory.
11910
11911make depend now descends into crossedit/Cnv to depend there.
11912
11913Changed some of the colors in the xutil.c file. This is so that it uses
11914the same colors as the official colors for XPM files. It would have been
11915better to make those colors part of the official XPM colors to start
11916with, but it is a bit late to do that now. The change of the xutil.c file
11917was made so that crossfire would not use quite as many entries in
11918the colormap. The change in colors should be quite minor.
11919
11920Two new pickup modes added - one picks up all money and gems, the other
11921all magical items.
11922
11923Removed a lot of dead code from the various header files. removed
11924hiscore.h from distribution (wasn't declaring anything that was not
11925being declared elsewhere.)
11926
11927
11928------------------------------------------------------------------------------
11929Changes from Crossfire 0.90.3 to 0.90.4:
11930
11931Many more XPM images now properly colored. NOTE TO COLORERS: A few minor
11932changes have been to the xpm.template file (palegreen has been replaced with
11933green3, and a more medium orange has been added.) I replaced palegreen
11934because it was very close to the 'green' color already present. And a
11935medium green was lacking. A medium orange was also lacking, so I added one
11936in.
11937
11938New pickup modes, that can be based on value density (from
11939Peter Mardahl <peterm@soda.berkeley.edu>)
11940
11941Spells now have a casting time. (From Matthew Zeher <matt@cs.odu.edu>)
11942
11943Added libproto1.h file. This will be used for function prototypes
11944are affected by certain settings (ie, SPEED_GAME). This way, people
11945should not need to run 'make proto'
11946
11947New XPM loading method. Creates montage of the xpm files,
11948so that not as many calls to XPM are needed. This has reduced loading
11949time to about 30% of what it was before. Note: This done mean it takes
11950some more memory at start up, as the montage has to be stored
11951temporarily.
11952
11953Changed charisma bonuses. At 30 charisma, it will no longer be possible to
11954buy an item, and then sell it for more than you bought it for.
11955
11956Graphic exposures turned off on the GC's that are used in the game window.
11957Should improve performance.
11958
11959When a raise stat spell ends, the proper message (ie, You look ugly, you
11960feel less intelligent, etc) will now be printed out.
11961
11962If player NOT_PERMADEATH mode, and you die, a stat will only be decreased
11963one. Before, that stat was decreased one, and the max stat was set to that
11964value. So if the player was poisoned, or a stat was lowered due to some
11965other reason, that loss would become permanent. Now, both the stat and
11966orig_stat only gets decreased by one.
11967
11968invoke.c removed, cast_spell modified to handle what invoke.c did.
11969
11970Keep old shoot type if reading a scroll, instead of it being set to none.
11971
11972Raise stats spells should be progressively more costly (From Peter Mardahl)
11973
11974Should now be able to handle broken pipes without problem (ie, telnet
11975session closing unexpectedly). Made it so that listen level 0 on a socket
11976means that draw_all_sockets will not write to that socket. Crossclient uses
11977this so that it does not get unexpected messages, and thinks that it failed.
11978
11979Added 'set font' option. This basically unsets color pixmaps or xpm mode.
11980If crossclient was run without -xpm or -pix mode, it will send this command
11981to use fonts. What this means is that set (font,pix,xpm) should set that
11982display mode. Before, the display selection it defaulted to for crossclient
11983seemed unreliable at best.
11984
11985Fixed memory allocation problem in commands.c (it was writing to more
11986bytes than it had allocated)
11987
11988Draw message window almost complete re-written. In an effort to cut
11989down on flashing of the the status bars. ( Niilo Neuvo <anipa@guru.magic.fi>)
11990
11991More bug fixes for spells (from Peter Mardahl)
11992
11993Fixed some bugs for compiling on the Alpha running OSF/1 1.3
11994
11995------------------------------------------------------------------------------
11996Changes from Crossfire 0.90.2 to 0.90.3:
11997
11998Added -xpm command line option to crossclient.
11999
12000All spells should not be handled in the switch statement in spells.c
12001
12002Let players buy zero value items from shop. This really shouldn't be a
12003problem, the only zero value items of any use might be wands with very
12004few charges. If someone wants to buy poison or cursed items, they should
12005be able to.
12006
12007Fix spelling error of command line argument 'detatch'. It is now
12008spelled properly (detach).
12009
12010Change draw_color_pix in server/xio.c. It now draws the images to an
12011intermediate pixmap, and then draws that to the screen. May or may not be
12012quicker (XSetClipOrigin only needs to be set once), but it does prevent
12013flicker. Also add two more GC's to the player struct, to make these
12014operations faster.
12015
12016Unless XPM_PIX is defined, draw_color_pix will note be compiled in the
12017code.
12018
12019Fixes to make it compile on both Solaris and NeXT machines (hopefully)
12020
12021Removed PLAYER_COLOR #ifdefs and lines they control out of login.c. Those
12022were not needed any more.
12023
12024Added 'mapinfo' command to valid input commands.
12025
12026Only have crossfire display -m as a valid command if it was compiled
12027with DUMP_SWITCHES set.
12028
12029Changed install procedure to only copy those files necessary to playing
12030into lib. Also, don't install obsolete scripts into the bin directory
12031when installing.
12032-----------------------------------------------------------------------------
12033Changes from Crossfire 0.90.1 to 0.90.2:
12034
12035Cleaned up the display from 'maps. Now things line up nicely. It
12036doesn't print the name anymore, and truncates the path at 18 characters.
12037But this doesn't make a difference for most maps, and now you can actually
12038see what variables are set to what.
12039
12040Experience requirements changed. Initial values from Peter, but I changed
12041them to be more round numbers.
12042
12043Change targets in server and crossclient from ComplexProgramTarget
12044to AllTarget, DependTarget, and NormalProgramTarget. This is because
12045ComplexProgramTarget expects man pages in those directories, which do
12046not exist.
12047
12048Moved data initialization out of treasure.h and into common/treasure.h.
12049In theory, no data initialization should be done in the .h files, it should
12050all be done in the .c files, with the .h files declaring the appropriate
12051externs. Likewise, no .c files should have extern's for other data
12052functions, they should include the appropriate .h file to get those
12053externs declared. This would fix the problem of having to go through
12054the various .c files whenever one of the data structures change, to update
12055all the externs made to it. Since the compiler will check to make sure that
12056the extern in the .h file and the actual declaration in the .c file are
12057the same, it prevents errors of mismatched declarations (ie, having
12058something like char s[40][20], which at later point gets to
12059char *s[40], but some files still think it is supposed to be s[40][20].)
12060
12061Changed doc/Imakefile so that make install.man will actually install
12062the man pages.
12063
12064Characters that dies who were poisoned should have the poisoning
12065removed.
12066
12067Changes from the Berkeley Folks:
12068What we've done that's in this server code that I know of:
12069
12070--level dependency added to many spells.
12071
12072--level dependency tunable on the fly by editing the spell_params
12073 in the 'lib' dir and using the dm command 'spellreset' spellpoints
12074 and spell level are also changeable on the fly.
12075
12076--many new spells added
12077--protection spells can now superimpose, as can gain stat spells.
12078 repeated applications of protective or stat spells yield diminishing
12079 returns.
12080
12081--runes added--an implementation of magical traps. any spell may
12082 go in a rune. Read the documentation.
12083
12084--new spell interface. invoke <spell> invokes that spell immediately. Some
12085spells can take parameters now. invoke magic rune <spell>
12086will store <spell> in a magic rune. invoke <spell> will not set the
12087range spell. cast and prepare are synonymous.
12088
12089--Certain spells cannot be set as range spells now--less than 10 of these.
12090These are spells which no one would want to use more than once in a while,
12091like magic map.
12092
12093--A hack to object.c in common dir which makes objects created by objects
12094with owners owned by the creating object's owner. (This allows players
12095to get credit for a kill with the meteor swarm spell, which creates a
12096'swarm' object, which in turn creates the meteor objects.)
12097-- End of Berkeley additions.
12098
12099New maps and archetypes added.
12100
12101Crossedit can now load maps that are compressed.
12102
12103Add Solaris 2.x compile support.
12104
12105Now prints out what the scroll name was that turned to dust.
12106
12107Minor artifact changes (ring of ice is blue, ring of fire is red)
12108
12109Horn range weapon now works properly, via using the + and - keys.
12110
12111New input method (From Jari Vanhala <jam@modeemi.cs.tut.fi>). Looks like
12112it should now be possible to define keys to do most every command. Made
12113a few minor changes to default key file to make the present set up
12114act like the previous one.
12115
12116Fixed triggers and magic mouth. These devices will now open gates
12117as would be expected. The problem was that the opening routine
12118expects to see the op->value of these to be one, in order to open the
12119gate or whatever. Changed routines to toggle value between 0 and 1.
12120Note: As I understand, trigger handles return to their original state, but
12121keep the same value. That is, you pull the trigger handle, the handle returns
12122to its original position, but gate opens. Pull handle again, handle returns
12123to same position, but gate now closes. Or at least that is how I implemented
12124the devices.
12125
12126Make some more changes to the is_magical routine. Hopefully, it will now
12127detect all rings and amulets that are magical. Also, it should not
12128detect monsters (or any living object) as magical.
12129
12130Fixed bug with Color Pixmaps (XPM). Would try to free the pl->pixmaps
12131area twice, causing core dump. Looks like the same thing should have
12132happened when using bitmaps also. In any case, only one free(pl->pixmaps)
12133is now performed.
12134
12135Bug fixed with XPM code, in which 'floors' would appear to be
12136carried around with the player. This is because the players pixmap did
12137not change, and hence, it did not update that square. Now fixed.
12138
12139Random encounter bug might now be fixed (patches from Frank)
12140
12141New FLAG method used. flags in the object structure is now an array,
12142and SET_FLAG, CLEAR_FLAG and QUERY_FLAG functions are now used. This reduced
12143a lot of code in common/loader.c
12144
12145 Fixed bug in common/object.c in expand_objects function. Looks like
12146braces were missing from for statement, so the the prev and flag fields of
12147the new objects were not being set properly.
12148
12149 Fixed bug that could cause core dump if trying to print map message when
12150no message existed. (From Tero Haatanen <Tero.Haatanen@lut.fi>)
12151
12152 Starting character will have uncursed, undamned and identified items
12153at the start of the game. (From Tero Haatanen <Tero.Haatanen@lut.fi>)
12154
12155-----------------------------------------------------------------------------
12156Changes from Crossfire 0.90.0 to 0.90.1:
12157
12158 Crossedit 0.7 was merged in with the 0.90.0 source. This once again creates
12159a common distribution.
12160
12161 I tried to retain the best features of both programs. This means that
12162the artifact code, and cursed/uncursed items (from CF 0.90.0) remain.
12163But I also used the filepaths for fonts, elimination of omaps for
12164internals use, and creation of partially processed bitmap file for
12165bitmap reading.
12166
12167 The general patch method was to keep the cf 0.90.0, and create a diff
12168file for crossedit 0.7 from crossfire 0.89.3. These patches were then
12169applied. Many had to be implemented by hand.
12170
12171 There are some exceptions. The crossedit program is almost the exact
12172same thing as in the crossedit 0.7 distribution. I made a few minor changes
12173to clean up compiling, but otherwise, no serious changes were made.
12174
12175 The archetypes (lib/arch) structure was also taken from crossedit 0.7, as
12176well as most of the archetypes themselves. I think the breakdown makes
12177things much easier to handle for changes or improvements. NOTE: it is
12178likely that directory (lib/arch) will not be in the standard distribution,
12179but will instead be a separate file (to keep the size down). The various
12180files (archetypes, bmaps, font, etc.) will be created for the distribution.
12181All new archetypes from cf 0.90.0 were merged into the structure, as well
12182as a few minor changes in the old archetypes I noticed.
12183
12184 The maps are from the crossfire 0.90.0-a-maps distribution. A few
12185simple programs (in lib/adm) were used convert them to use fontpaths
12186and to change some monster names that conflicted with character classes.
12187Note: Because in the old format, a 'food' field was used to determine the
12188map to link to, it is possible some of these fields were changed when
12189they were not supposed to be. This is because some other archetypes
12190(altars for one) also use the food field. If you notice any converted
12191by mistake, please let me know.
12192
12193 A few minor memory leaks and other patches have also been applied.
12194
12195 Other specific changes to this version:
12196'set' now gives better help message (like what can be set.)
12197XPM code added.
12198Fixed bug in 'who', which would cause a core dump if done when
12199 another playing was still creating their character.
12200 'who' also display the map path of the other players, and not
12201 the map name. Map names seldom seem to be set.
12202The crossfire.cfb and crossfire.pix files (in lib) can be compressed.
12203Fixed bug that caused core dumps when pet monsters were summoned.
12204If restoring a saved game, and the map it was saved on does not exist,
12205 start them on the standard starting level.
12206Added option in config.h, that allows full ring and amulet descriptions
12207 to be printed in inventory and look window.
12208Hopefully fixed bug which caused game to dump core when player died,
12209 if NOT_PERMADEATH was set on.
12210Add flag HAS_MAGIC, and use that for the detect magic spell. This way,
12211 artifacts that have no magic, will still be shown as magical.
12212 So will rings that change abilities, etc. Doesn't work
12213 quite perfectly, but seems to work as well as the old method.
12214Fixed bug so that if it can not find a map, it just prints that
12215 that exit is closed, instead of panicing.
12216Have it re-draw the look window when you middle click on something (ie
12217 apply) in that window. This fixes a bug with bags/sacks, of it
12218 not updating when an item is used directly from a sack.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines