Contents
Downloads
Mailing Lists
What's New
SlashMUD Logo SourceForge.net Logo

News


$Header: /cvsroot/slashmud/slashmudx/NEWS,v 1.40 2005/12/04 05:13:07 koryn Exp $

Previous changes, most recent first:


* Bug: 'unlock east' (or west) doesn't work for Agents from "easternroom". 
Unlocking should always work for Agents - or maybe there should be a 'ghost
east' command for Agents?  That sounds more appealing :)
	=> these commands work fine.

* Bug fix: if a new player connection was aborted, the server would attempt to
create a statue for the player.  This caused asserts to trigger, because the
player didn't have a race yet. (Neil)
	=> player_create_statue() checks to see that the player has completed the
name/password/race selection process before creating a statue.

* Bug fix: 'remove' with no arguments caused a crash.

* [ 85339  198470 2089247] Build 1751.

-------------------------------------------------------------------------------

* Remove slashmudx.pid file on termination.

* Ensure all plugins register events and remove smapi_want_event() and
supporting code. (Done for plugins, still need to remove server code..Neil
3/21/05)

* Implemented first cut at Agent's 'ghost' command.  Needs to be tested.

* Bug fix: 'slashmudx.debug --crash-report' was failing if a plugin tried to
access the world time (testcpluginthing did).

* Bug fix: an assert could fire in base_install_plugin() when loading a plugin
twice; now it ignores the second loading and logs the event.

* Bug fix: inventory command for Agents now lists the object IDs in yellow.
(Koryn)

* Bug fix: default server exit messages weren't used in player_enter_room() and
player_exit_room():

	Father Augustine Janitor Path (null) to the east.

* Bug fix: torch plugin would incorrectly assert if it encountered the line
'torch-lit false' when already unlit or 'torch-lit true' when already lit.

* Bug: shape command doesn't work. (Koryn)
	=> works fine:
		Ok> shape colonel
		[ECHO] shape colonel
		Command: shape
		Object name: colonel
		Object ordinal: 1
		Subject name: (null)
		Subject ordinal: 0
		Orc colonel is in excellent shape.

* Added implementation to the class.c file.

* [ 85327  198423 2088911] Build 1744.

-------------------------------------------------------------------------------

* Modified libkoryn's kg_directory_iterator module to support a directory
filter.  Added a CVS directory filter to the utility_procedures module, and
modified invocations of kg_iterate_directory so that CVS directories are
filtered out.  This means the server should be able to run from a direct
checkout of the 'auxiliary' CVS module.

* Installed slashmudx binaries to /usr/local/bin and checked that they work
correctly from there when the current working directory contains the world files
etc. (Koryn)

* More unused variable compiler warning fixes.

* Modified build infrastructure.  Assuming the server's configure.ac file is in
a directory called 'slashmudx':
	- server binaries are no longer copied to the 'slashmudx/bin' directory.
	- plugin binaries are copied to 'slashmudx/plugins/bin' instead of
'slashmudx/bin/plugins'.  A useful configuration is to have
'slashmudx/plugins/bin' be a symbolic link to the 'auxiliary/plugins' directory.

The recommended way to build and run the server is:

	$ cd slashmudx
	$ ./configure
	$ make
	$ sudo make install

which will make the server and plugins, then install the server binaries in
/usr/local/bin.  If 'plugins/bin' is a symbolic link as described above, the
server can now be run directly from the 'auxiliary' directory:

	$ slashmudx.debug

or

	$ gdb /usr/local/bin/slashmudx.debug

* [ 85081  196696 2080367] Build 1710.

-------------------------------------------------------------------------------

* THIRD PREVIEW RELEASE.

* Tagged CVS as PREVIEW_3_0.

	- slashmudx-preview-3.dmg (9.1MB)
		MD5 (slashmudx-preview-3.dmg) = 79aedf61de48bfd56b35b21fe1c350a4
	- slashmudx-preview-3-lite.dmg (3.8MB)
		MD5 (slashmudx-preview-3-lite.dmg) = dc02fbb560871b6742adc5134aa43051

* Bug fix: examining a player who had clan state for an absent clan caused a
crash.

* Bug fix: quitting telnet session resulted in a failed assertion:

src/spirit.c:80: failed assertion `spirit->mMagicNumber == kSpiritMagicNumber'

Program received signal SIGABRT, Aborted.
0x900429ac in kill ()
(gdb) Quit
(gdb) bt  
#0  0x900429ac in kill ()
#1  0x9009eb1c in abort ()
#2  0x0010f414 in __eprintf ()
#3  0x00098e34 in verify_spirit (spirit=0x11a4720) at src/spirit.c:80
#4  0x0009a154 in spirit_get_flag (spirit=0x11a4720, flag=2) at src/spirit.c:630
#5  0x000437a4 in living_send (self=0x1826200, line=0xbffff3a0 "Junkyard dog
looks tired.") at src/living_object.c:4392
#6  0x0004eda8 in living_catch_action (base=0x1826200, sender=0x1828600,
message=0xbffff3a0 "Junkyard dog looks tired.") at src/living_overrides.c:1047
#7  0x000ab20c in virtual_catch_action (self=0x1826200, sender=0x1828600,
message=0xbffff3a0 "Junkyard dog looks tired.") at src/virtuals.c:576
#8  0x0008c9ac in room_catch_action (base=0x11aa8e0, sender=0x1828600,
message=0xbffff3a0 "Junkyard dog looks tired.") at src/room_overrides.c:1214
#9  0x000ab20c in virtual_catch_action (self=0x11aa8e0, sender=0x1828600,
message=0xbffff3a0 "Junkyard dog looks tired.") at src/virtuals.c:576
#10 0x00071810 in smapi_catch_action (receiver=0x11aa8e0, sender=0x1828600,
message=0xbffff3a0 "Junkyard dog looks tired.") at src/plugin_api.c:355
#11 0x01650d0c in pi_activate (event_ref=18425760, virus_data=0x11abef0) at
virusattachment.c:338
#12 0x01650634 in plugin_main (instance_data=0x11abef0, event_code=89,
event_ref=18425760) at virusattachment.c:107
#13 0x00070a28 in plugin_call_main_routine (plugin=0x1198210,
instance_data=0x11abef0, event_code=89, plugin_event=0x11927a0) at
src/plugin.c:473
#14 0x000162c8 in base_send_attachment_event (host=0x1828600, living=0x0,
event_code=89) at src/base_object.c:1021
#15 0x000394b0 in living_attachments_update (self=0x1828600) at
src/living_object.c:598
#16 0x00054928 in living_compulsory_update (self=0x1828600) at
src/living_virtuals.c:622
#17 0x0004c9f4 in living_update (base=0x1828600) at src/living_overrides.c:168
#18 0x000586c0 in monster_update (base=0x1828600) at src/monster_overrides.c:145
#19 0x000a9f90 in virtual_update (self=0x1828600) at src/virtuals.c:198
#20 0x0002d7e8 in update_event_execute (self=0x11abba0, host=0x1828600) at
src/event.c:332
#21 0x0002dc48 in event_execute (event=0x11abba0, host=0x1828600) at
src/event.c:446
#22 0x00015410 in base_process_events (self=0x1828600, tick=3548) at
src/base_object.c:693
#23 0x00092bd4 in process_events (base=0x1828600, tick=3548) at src/server.c:216
#24 0x000f76cc in kg_sorted_set_iterate (sorted_set=0x6062b0, iterator=0x92af8
, context=0xddc) at kg_sorted_set.c:340
#25 0x00093ad0 in server_update () at src/server.c:586
#26 0x00095588 in server_event_loop () at src/server.c:1394
#27 0x0004c580 in main (argc=1, argv=0xbffffcdc) at src/main.c:120

* Changed '#if DEBUG_VERSION' to '#ifndef NDEBUG' in the server.

* Check for platform using sysctl() if available instead of using autoconf
CANONICAL_HOST, so the platform reported is the runtime platform not the
configure-time platform.

* Modified libkoryn to use automake and libtool.

* Moved src/slashmud_config.h to src/config.h.

* Updated to autoconf 2.59.

* Removed compatibility_layer.h include from files that didn't require it.

* Moved all POSIX and C Standard Library headers to "slashmud_includes.h", where
they are included only if the corresponding autoconf HAVE_FOOBAR_H conditional
is true.

* Fixed many warning messages about unused variables.

* [ 85053  196603 2079509] Build 1700.

-------------------------------------------------------------------------------

* Bug fix: incorrectly attempting to remove an attachment from an object's
contents when disposed (attachment live in a separate list, not the contents).
(Neil)

* [ 85281  196515 2084503] Build 1674.

-------------------------------------------------------------------------------

* Bug fix: Plugin update routines weren't being called for rooms. (Neil)

* [ 85248  196425 2083561] Build 1672.

-------------------------------------------------------------------------------

* Bug fix: smapi_remove_money_with_change() hadn't been tested.

* [ 85248  196419 2083517] Build 1670.

-------------------------------------------------------------------------------

* Bug fix: living_object.c's remove_money_small() routine wasn't removing coins
whose number went to 0 from the living's purse, causing an infinite loop
attempting to remove money.

* Bug fix: living_object.c's money routines had an off-by-one error ('<' instead
of '<=').

* Bug fix: remove_money_small() needed to iterate over the currency
denominations in descending order, but didn't (causing strange results when
removing money).

* Changed variables shared between threads in networking module to 'volatile'.

* Keyrings now display "Your keyring is empty." when they are empty (instead of
"Your keyring contains the following keys:" with nothing following).

* Added plugin API money routine that automatically provides change:
smapi_remove_money_with_change().

* Fixed a bunch of compiler warnings.

* Implemented food_parse_line() and drink_parse_line().

* thing_parse_line() now recognises 'cost' as a synonym for 'value'.

* [ 85249  196422 2083517] Build 1667.

-------------------------------------------------------------------------------

* Bug fix: tell messages weren't being passed to plugin monsters and
attachments. (Neil)

* [ 85068  195919 2078792] Build 1651.

-------------------------------------------------------------------------------

* Bug fix: shop contained a double-free.  It was disposing of the name of the
associated Room. (Koryn)

* Bug fix: Agent 'create' command couldn't create items after changes to the
standard library module. (Koryn)

* Bug fix: Agent 'create' command didn't correctly add items to the invoker.
(Koryn)

* Bug fix: 'could not drop item' message hadn't been finished. (Koryn)

* Bug fix: [kThingFlagGettable] For items created and just laying in a room it
does not appear that the flag kThingFlagGettable is being set.  In any case I
can not pick them up and neither can the janitor. (Neil)
	- newly created items didn't have their Thing attributes correctly
initialised.
	- base_be_picked_up() was incorrectly using base_instance_of() rather than
virtual_instance_of(), and living_can_carry() instead of virtual_can_carry().

* Modified plugin Makefile.am files so the plugins aren't installed by the 'make
install' target.

* Added missing Makefile.in files for plugins.

* [ 85043  195846 2078118] Build 1640.

-------------------------------------------------------------------------------

* Bug fix [room plugin updates]: It appears that room object plugins are not
being sent "update" events.  From the code below room_update() expected plugins
to get updates but base_update() did not implement it. (Neil)

* Bug fix: Wanderer plugin failed the server self-test. (Koryn)

* Bug fix: SleepSkill plugin failed the server self-test.  It initialised
instance data in pi_initialise() instead of pi_create_instance_data(). (Koryn)

* Bug fix: Mentor plugin failed the server self-test.  It failed to initialise
its instance data. (Koryn)

* Bug fix: QuestMaster plugin failed the server self-test.  It attempted to
dispose invalid data.  (Koryn)

* Bug fix: Mentor plugin failed the server self-test when adding an initial
efficacy to the skill taught by the Mentor. (Koryn)

* Bug fix: QuestMaster in ObjectLibrary/neil_quests attempted to load the plugin
'debug_attachment' instead of 'debugattachment'. (Koryn)

* Bug fix: Mentor plugin didn't handle the case where initial values were found
for a non-existent skill. (Koryn)

* Bug fix: Gate plugin didn't correctly parse lines - test for non-NULL string
used || instead of &&. (Koryn)

* Bug fix: double-free in the QuestMaster plugin; checked other plugins for the
same problem, fixed BulletinBoard. (Koryn)

* Bug fix: Mentor plugin didn't save last item in skill list. (Koryn)

* Bug fix: say/tell/shout commands don't work. (Neil)
	- added commands missing from the parser: say, tell, shout, lock, unlock,
time. (Koryn)

* Updated all plugins to use automake.

* Rename C++ source files to end with ".cc" instead of ".cp".  Appears to be
required for automake recognition.

* Changed 'pi_parse_line()' to 'mentor_parse_line()' in the Mentor plugin to
ease debugging (can now set breakpoints!).

* Modified say, tell, and shout feedback messages for consistency.

* Merged 'category one' and 'category two' commands.

* [ 84972  195735 2076765] Build 1629.

-------------------------------------------------------------------------------

* Implemented global talk list (gTalkList) for talkative monsters.  Non-comment
lines in the "Settings/talklist.txt" file are used by talkative monsters as
non-expiring comments.

* Minor fixes to remove compiler warnings.

* [ 84844  195303 2072484] Build 1588.

-------------------------------------------------------------------------------

* Bug fix: living_language_catch_message() wasn't included in the living base
virtuals structure.

* Bug fix: uBaseObjectCache was defined in base_object.h instead of
base_object.c

* [ 84752  195047 2069821] Build 1576.

-------------------------------------------------------------------------------

* Bug fix: standard_library_load_typed_object() had an error in the way it
handled drinks.

* Bug fix: food and drink didn't call the thing_parse_line() routine.

* Cleaned up standard library object loading code.

* [ 84749  195033 2069618] Build 1570.

-------------------------------------------------------------------------------

* Bug fix: time_manager_update() caused an assert when the season rolled over if
the calendar had no seasons.

	Program received signal SIGABRT, Aborted.
	0x900429ac in kill ()
	(gdb) bt
	#0  0x900429ac in kill ()
	#1  0x9009eb1c in abort ()
	#2  0x000c6578 in kg_abort () at kg_debugging.c:26
	#3  0x000c6650 in kg_assert_code (b=0, message=0x10dd2c "",
filename=0x127964 "kg_dynamic_list.c", linenumber=351) at kg_debugging.c:66
	#4  0x000c9860 in kg_dynamic_list_get_indexed_item (list=0x405a70, index=1)
at kg_dynamic_list.c:351
	#5  0x000d5b54 in kg_list_retrieve (list=0x405a60, index=1) at kg_list.c:658
	#6  0x000a3974 in time_manager_update () at src/time_manager.c:998
	#7  0x0008ccf8 in server_update () at src/server.c:579
	#8  0x0008e7a8 in server_event_loop () at src/server.c:1385
	#9  0x00055b0c in main (argc=1, argv=0xbffffc18) at src/main.c:120

* [ 84730  194999 2069607] Build 1561.

-------------------------------------------------------------------------------

* Bug fix: light counts now work sufficiently well to pass the self-tests.

* Bug fix: array version of a linked list had problems with the add_last()
routine (Neil).

* currency_get_money_string() was unimplemented (Neil).

* Added selftest for currencies.

* [ 84728  194994 2069547] Build 1558.

-------------------------------------------------------------------------------

* Bug fix: light count was being verified before rooms were fully constructed.

src/room_overrides.c          , 1601, ERROR   : (room_verify_light_count)
incorrect light count in 'nbarenasouth': mLightCount = 0, sum of contained
objects = 1
src/room_overrides.c:1603: failed assertion `sum == self->base_data.mLightCount'

* Bug fix: light count for livings didn't take into account any light-providing
body parts:
	- finish_loading() adds the number of full-health light-providing body parts
to the light count;
	- when a full-health light-providing body part is injured, the light count
is decremented;
	- when an injured light-providing body part recovers, the light count is
incremented.

* Bug fix: light count for livings wasn't being added to the room they were
loaded into.

* Bug fix: potion self-test had a bug in the quaff test that only showed up in
the memdebug version.

* Bug fix: potions didn't call thing_finish_loading() from
potion_finish_loading().

* Bug fix: loading objects from the Object Library didn't check for duplicate
names (object names must be unique within a 'kind' of object, e.g. weapons,
armours, potions).

* Bug fix: portals were being added to the Object Library in their
new_portal_instance() routine (bad).  They're now added in the finish_loading()
routine.

* Bug fix: stopping the foobar_do_command() from a plugin was incomplete (Neil
Tiffin).

* Bug fix: infinite loop in player_teleport_{in|out}_room() (Neil Tiffin).

* Added 'stats' Agent command to view some in-game statistics (currently the
BasePtr contained weight caching stats).

* Temporarily disabled the verify_light_count() methods.

* [ 84474  194298 2062375] Build 1527.

-------------------------------------------------------------------------------

* Added light counter to the room object.

* Added room_has_light().

* Removed virtual_has_light() from base virtual methods and replaced with
virtual_get_light_count().

* Added base_get_current_room(), which returns the current room containing the
object (which is not necessarily the environment).

* Added virtual_get_light_count(), which returns 1/0 (according as the object
provides light itself) plus the sum of the _light_count() calls on all contained
objects.  Base case is a leaf object which returns 1 (provides light) or 0
(doesn't).

* Added room_sunrise() and room_sunset() methods which are called by the time
manager as appropriate and increment/decrement the room's light count.

* Added virtual verify_light_count() method.

* Audited uses of kg_strtobool() to avoid NULL string arguments.

* Split weight into intrinsic weight and contained weight fields.

* Modified 'Torch' plugin to use smapi_increment_light() and
smapi_decrement_count().

* Added a test for the 'get' command to the --selftest option.

* Added support for resources (coal, iron, wood, silver, gold, gems, jewels) to
rooms.

* [ 84415  194185 2062087] Build 1480.

-------------------------------------------------------------------------------

* Bug fix: 'get' command dereferenced a null pointer when used with the name of
a non-existent item. (skips)

* [ 83894  192856 2049552] Build 1452.

-------------------------------------------------------------------------------

* Bug fix: race isn't shown in the score display.
	- fixed display so that the first line is displayed correctly.

* Bug fix: living_get_short_description() was returning early.

* Bug fix: strings in general (and title templates in particular) weren't being
correctly parsed in the preferences module.

* Bug fix: alive-time isn't shown in the score display.
	- revised age code for living objects and ensured it was correct in the
score display.

* More work on the title module.

* [ 83894  192854 2049560] Build 1448.

-------------------------------------------------------------------------------

* SECOND PREVIEW RELEASE.

* Tagged CVS as PREVIEW_2_0.

	- slashmudx-preview-2.dmg.gz (10.5MB, MD5 =
f55ffe82b19c07fb47431896d60e2f65)
	- slashmudx-preview-2-lite.dmg.gz (3.1MB, MD5 =
48b6044985542a3f50bae54b00d2fa8f)

* Bug fix: logging in using a player with an empty password caused an assert to
fire.

* Cosmetic adjustments to the death screen.

* Adjustments to status lines displayed during combat.

* Changed virtual function hashes to use do_checksum() in the utility_procedures
module instead of calling kg_adler32() directly.  This will enable kg_adler32()
to be swapped for a less compute intensive checksum (e.g. XOR) at a single
location.

* Added a simple XOR based checksum to be used in the build version of the
server.

* Tested adding -pipe option to gcc arguments:

	$ ccache -C && make clean && time make

		real    4m55.907s
		user    2m22.720s
		sys     0m45.790s
	
without -pipe:
	$ ccache -C && make clean && time make

		real    5m39.622s
		user    2m7.110s
		sys     0m42.070s

* Started on support for titles in the score and short description displays.

* Added memory debugging to kg_array and kg_int array modules.

* Added feedback to the gender and race-selection phases for new characters.

* [ 83752  192498 2046213] Build 1426.

-------------------------------------------------------------------------------

* Bug fix: FreeBSD doesn't appear to have truncf().  Replaced with trunc().

* Bug fix: hpstyle and setgender commands caused a crash when called with no
arguments (skips):
	- fixed hpstyle to display options when called with no argument.
	- removed setgender.  It really should be an option for when a player first
logs in.

* Bug fix: alive-time is sometimes duplicated in the score display:
* Bug fix: creature targeting isn't shown in the score display:
	- the alive-time buffer was wrongly being displayed twice.

* Bug fix: start_room might not be successfully located when a player dies.

* Bug fix: zones weren't correctly handling flags, including "light true".

* Added gender selection phase to creating a new player.

* Cosmetic fixes to examining other creatures.

* [ 83624  192042 2042020] Build 1406.

-------------------------------------------------------------------------------

* Bug fix: entries in the general log that contained unnecessary blank lines
(skips).

* Bug fix: by default, the server started with logging disabled (skips).

* Bug fix: disabled talk list.

* Bug fix: when a player died, an assert fired if the race had no restart room.

* [ 83604  191922 2041184] Build 1395.

-------------------------------------------------------------------------------

* Bug fix: the move command was displayed as 'unknown command' when echoed back
to players.

* Bug fix: the note_ptrs() routines weren't noting memory from the time_manager
module.

* Bug fix: base_examination() was still treating the attachments list as an
iterator list.

* Bug fix: group combat selftest wasn't working correctly with a multiplier
greater than 1.

* The build version of the server no longer echoes commands back to players.

* There's now a 'movement' command that toggles the movement feedback string on
& off.

* Turned 'nasty' mode for memory debugging subsystem off by default since there
are still valid allocations that need to be tracked down.

* Added an undocumented '--nasty' command-line option that turns on the nasty
mode for the memory debugging subsystem.

* [ 83552  191797 2040187] Build 1387.

-------------------------------------------------------------------------------

* Bug fix: attachments weren't setting their environment to NULL before
detaching.

* Bug fix: attachment list was being disposed twice when a base_object removed
all attachments in finished() routine.

* Bug fix: the group combat selftest failed to notify monsters when their target
had been killed and disposed of.

* Bug fix: the single combat selftest now has a 30 second timeout for each bout.
 If the timer expires, the bout is declared a draw.

* Bug fix: the group combat selftest now has a 120 second timeout.  If the timer
expires without a death, all remaining monsters are joint winners.

* Bug fix: the memory debugging routine that cleared the referenced flag didn't
update the header checksum.

* Bug fix: LivingObjects were being added to the updateable list (e.g. sneezer)
when an attachment wanted to be registered for updates.  The
[un]register_for_updates() routines are now virtual, with the LivingPtr
implementation of these routines doing nothing.  The
[un]register_for_plugin_updates() routines are also virtual, with the LivingPtr
implementation of these routines adding plugin_update events to the event queue
but not adding the object to the updateable list.

* Renamed 'virus' to 'virusattachment' in the ObjectLibrary/standard_attachments
file.

* Added 'luck' stat.

* Added a --crash-report command-line option that logs CVS headers, plugin
information, and version numbers ready for emailing.

* Added standard_library_display_accesses() routine to standard_library module.

* Added an attachment-loading test to the selftest module.

* The combat selftests now ensure all monsters are in a visible state.

* Cleaned up logging module to use LogPtrs instead of a mix of FILE*s and
LogPtrs.

* Added --loglevel command-line option to set the logging level.

* Selftest comparison (with single combat test off) in default configuration:

memdebug:
real    16m4.169s
user    7m31.810s
sys     2m2.950s

debug:
real    11m24.300s
user    5m21.000s
sys     2m1.970s

build:
real    1m27.738s
user    0m20.380s
sys     0m4.140s

* [ 83453  191559 2037496] Build 1372.

-------------------------------------------------------------------------------

* Bug fix: rooms and zones weren't setting their height, which was causing
problems when characters with non-zero height attempted to move around a room
with zero height (skips@sourceforge.net).

* Bug fix: standard_object_processor.c contained "begin-attachment " instead of
"begin-attachment" (skips@sourceforge.net).

* Bug fix: rooms weren't responding to the same number of flags that zones were.

* Fixed ammunition line-parsing warning with blank lines
(skips@sourceforge.net).

* [ 82881  189863 2020713] Build 1305.

-------------------------------------------------------------------------------

* Bug fix: mBodyHitChanceSum wasn't being set for new players
(living_finish_loading() wasn't being called).

* The networking module now displays a message when it begins to listen for
connections.

* [  82714  189493 2017211] Build 1294.

-------------------------------------------------------------------------------

* Fixed inconsistency between zone and ammunition logging of unknown lines.

* Server now exits if it could not bind() or listen() on the network socket.

* [  82706  189445 2016889] Build 1291.

-------------------------------------------------------------------------------

* Updated kg_logging so that LogPtr objects automatically rollover and create
gzipped backups when they hit a limiting size.

* Converted slashmud logging module to use kg_logging instead of reimplementing
features.

* [  82694  189413 2016585] Build 1288.

-------------------------------------------------------------------------------

* Added caching of most recent time string conversion and CalendarState creation
to time_manager module.  Appears to provide 10-20% improvement.

	if seconds == last_seconds && hash == last_hash && string == last_string
		return last_string

* Implemented self-test for potions that checks opening, sipping, tasting and
quaffing.

* Implemented potion sip loading (was missing for some reason).

* Added new plugin event: kPluginQueryInfo.  The desired response is a ListPtr
containing strings allocated by smapi_get_string() describing the name, version,
build (memdebug, debug or build), authors and other human-readable information
about the plugin.

* [  82743  189372 2017074] Build 1277.

-------------------------------------------------------------------------------

* Rewrote alignment checking code used when a kill is made.

* Fixed incorrect preferences on startup:

	unrecognised preference 'current-clock'
	unrecognised preference 'no-hitpoints-means-dead'
	unrecognised preference 'default-wimpy'
	unrecognised preference 'default-recover-item-chance'
	unrecognised preference 'player-timeout-seconds'
	unrecognised preference 'attack-missed-message'
	unrecognised preference 'attack-absorbed-message'
	unrecognised preference 'attack-damaged-message'
	unrecognised preference 'attack-injured-message'
	unrecognised preference 'attack-killed-message'
	unrecognised preference 'reference-counted-strings'
	unrecognised preference 'soft-memory-limit'
	unrecognised preference 'hard-memory-limit'
	unrecognised preference 'save-file-buffer'

* Finished initial port of time_manager module.

* Modified time_manager module to read calendar file: "Settings/calendar.conf".

* Added configurable format strings to time_manager module.

* Added calendar self-test to the --selftest command-line option.

* [  82197  188064 2002544] Build 1240.

-------------------------------------------------------------------------------

* Bug fix: keys, portals and potions weren't returned by
standard_library_load_named_object().

* Bug fix: the keyword 'worn' without a true/false value caused a crash when
loading some armours.

* Bug fix: the plugin_event_set_textline() caused a memory leak.

* Bug fix: rooms weren't disposing of their mPluginData.

* Bug fix: Mentor wasn't correctly dealing to mentor-currency strings.

* Bug fix: plugin_dispose() was setting the magic number to zero before the
plugin was finished sending events.

* Bug fix: zone_parse_line() was storing an automatic variable in the long
description set.

* Bug fix: if a room had a 'zone non_existent_zone' line in the area file then
it ended up with no zone.

* Bug fix: there was no zone called 'default' in the Zones directory.

* Bug fix: room_finished() was disposing the room's Zone.

* Bug fix: cut and paste bug in Janitor.

* Bug fix: spouter wasn't dealing with strings correctly.

* Bug fix: reading in the preferences was using an uninitialized buffer.

* Bug fix: portals and potions weren't correctly initializing their data (using
sizeof(FooInstance) instead of sizeof(FooHeader)).

* Bug fix: preferences manager wasn't correctly dealing with preference file
lines.

* Bug fix: Cell plugin was using StandardTextPtrs it hadn't allocated.

* Bug fix: ammoboxes were inconsistently treated as 'ammo-box' and 'ammobox':
standardised on 'ammobox'.

* Bug fix: Janitor was calling smapi_wear() and smapi_wield() with incorrect
parameters.

* Bug fix: rooms weren't retaining flags set with room_set_flag().

* Fixed linker flag to stop unreferenced symbols being stripped (used to be
-all-load, now -all_load).

* Fixed permission problems with log files.

* Portals now correctly install an update event.

* Added --selftest flag and rudimentary self-test code that loads all ammoboxes,
armours, drinks, foods, keys, monsters, portals, potions, rooms and weapons.

* Changed plugin loading so that slashmudx.memdebug only loads *.memdebug.so
plugins, slashmudx.debug only loads *.debug.so plugins and slashmudx only loads
*.so plugins.

* Modified plugin Makefiles to have a memdebug target.

* Modified plugins to use KG_XALLOCATE() instead of kg_xallocate_ptr() so the
memdebug target is correct.

* Tidied up room_finished() -- lots of duplicate code because it wasn't calling
base_finished().

* Tightened up memory verification system - pointers are verified when they are
noted.

* Monsters now install a default name (equal to their standard name) in
finish_loading().

* Removed unnecessary monster_check_target() routine.

* Removed logging from base_get_flag() and base_has_light(), as they were too
verbose.

* Finished single combat and group combat self tests.

* Miscellaneous fixes for Linux compatibility.

* [  81192  185296 1974281] Build 1205.

-------------------------------------------------------------------------------

* Implemented the --background flag that puts the server into daemon mode.

* Implemented the --port flag that sets the listening port.

* Finished implementing portals.

* [  79952  182054 1942967] Build 1077.

-------------------------------------------------------------------------------

* Added lockfile to world directory to prevent two copies interfering with each
other.

* Implemented world directory command-line option.

* Removed extraneous -O2 from CFLAGS in configure script.

* [  79312  180511 1925973] Build 1046.

-------------------------------------------------------------------------------

* Canonical host is now displayed in the login message.

* Added common command-line arguments.

* Improved autotools configuration.

* [  79231  180272 1923506] Build 1035.

-------------------------------------------------------------------------------

* Added note_ptr routine for portals.

* Converted build process to use GNU autotools.

* [  78788  178634 1911514] Build 1008.

-------------------------------------------------------------------------------

* Added note_ptr routines for attachments and potions.

* Finished porting potion objects.

* [  78788  178634 1911512] Build 1007.

-------------------------------------------------------------------------------

* Bug fix: object ids should be coloured yellow in the room view for Agents.

* Bug fix: corpses had a memory leak (the mCreatureName field was assigned twice
when the corpse was initialized).

* Added routines to note all memory allocations in monster_object,
player_object, corpse_object, door_object and purse_object.

* Locate memory allocations after a player has logged in: all allocations are
now accounted for.

* [  78254  177478 1899716] Build 1001.

-------------------------------------------------------------------------------

* Added routines to note all memory allocations in living_object.

* [  77981  176993 1894068] Build 998.

-------------------------------------------------------------------------------

* Adding support for memory debugging routines.  1452 allocations left to
locate.

* Added hash table note_ptr iterator as a method; base_mud_manager_note_ptrs
calls it automatically.

* Track down networking allocations (new connection queue, established
connection queue, spirits).

* Tracked down ammunition allocations.

* Tracked down armourtype allocations.

* Tracked down clan allocations.

* Tracked down currency allocations.

* Tracked down mood allocations.

* Tracked down plugin allocations.

* Tracked down social allocations.

* Tracked down weapontype allocations.

* Tracked down zone allocations.

* 4 allocations remain: 3 are plugin string allocations, 1 is waiting for an
accept() to complete at src/networking.c: 174.

* Added "-std=c99 -pedantic" to libkoryn Mac OS X makefile.

* [  77275  175924 1879713] Build 993.

-------------------------------------------------------------------------------

* Bug fix: load_standard_objects logfile was going to the wrong folder.

* Removed command_virtuals module (was never used).

* Added support for memory debugging routines.  5627 allocations left to locate.

* [  76324  174290 1860144] Build 979.

-------------------------------------------------------------------------------

* Bug fix: base_install_plugin() didn't check to see if the Plugin Manager
returned a NULL plugin.

* Bug fix: in base_install_plugin(), the plugin instance data wasn't being
extracted before the plugin event was disposed.

* Bug fix: plugin events asserted when a non-null string was stored in the
textline, token or remainder.

* Plugin names are now compared in a case-insensitive way.

* [  75644  173211 1843446] Build 944.

-------------------------------------------------------------------------------

* Fixed a couple of uninitialized variable warnings.

* [  75587  173064 1841879] Build 934.

-------------------------------------------------------------------------------

* Bug fix: commands weren't passed to unwielded and unworn inventory items.

* [  75586  173059 1841840] Build 933.

-------------------------------------------------------------------------------

* Bug fix: attachments didn't send the kPluginCreateInstanceData event.

* Implemented plugin loading for attachments, monsters, rooms, things and
weapons.

* [  75599  173105 1842371] Build 929.

-------------------------------------------------------------------------------

* Bug fix: quit command causes an EXC_BAD_ACCESS signal - the spirit should not
be disposed until after the player has been saved.
	- player saving has been moved to occur before the spirit is detached.

* Bug fix: numerous Living and Agent commands didn't check to see if the
remainder argument was non-null before using it.

* Bug fix: items stored in a player file using 'begin-armour' instead of
'include-armour' do not load correctly.
	- one of the loading routines was checking for 'include-armour' instead of
'begin-armour', after the line had already been checked for 'begin-armour'.
	- standard_library_instantiate_object() wasn't correctly responding to both
'begin-foobar' and 'include-foobar'.

* Bug fix: loading a stat effect caused a crash.
	- stat effects no longer verify before loading.

* Bug fix: items are not reloaded when saving and then logging in.
	- items that did not have an Object Library 'name' were not saved.
	- the initial Object Library name was not preserved with the object.

* Implemented stat effects.

* [  75462  172919 1839773] Build 926.

-------------------------------------------------------------------------------

* Bug fix: living_load_within_standard_text() didn't check for a NULL strtok()
result.

* Bug fix: purses did not display, because purse_add_to_contents() was
unimplemented.

* Bug fix: recover-chance was being saved as 0, because
thing_append_properties_to_save_text() was saving the RecoverChance effect
rather than the recover chance itself.

* Bug fix: Agent and living 'clan' commands caused an EXC_BAD_ACCESS signal.

* Added -std=c99 and -pedantic to compilation flags.  Fixed errors reported by
-pedantic.

* Skills are now correctly saved.

* Purse contents are now correctly saved.

* [  75298  172596 1836099] Build 900.

-------------------------------------------------------------------------------

* Bug fix: denominations were not being correctly loaded in currency_init().

* Bug fix: denominations were being overly zealous and insisting that the alias
field be set: they now tolerate a NULL alias and return the mName if a
non-existent alias is asked for.

* Bug fix: player files containing blank lines caused an EXC_BAD_ACCESS signal,
whether used or not.

* Bug fix: 'purse' command caused an EXC_BAD_ACCESS signal if invoked by an
Agent without an explicit target.

* Bug fix: body-parts were being saved with their maximum structure and current
structure instead of just the current structure.

* Skills are now saved.

* Denominations can now be retrieved using
currency_manager_get_denomination_by_name().

* [  75271  172457 1834920] Build 880.

-------------------------------------------------------------------------------

* Bug fix: ensured wimpy value was treated as an int rather than an unsigned
int.

* Bug fix: player file saving routine was using an uninitialised variable value.

* 'score' command now displays total points as well as points available to
spend.

* Implemented coins objects.  Untested.

* Implemented saving for skill states.  Untested.

* [  75165  172237 1832725] Build 874.

-------------------------------------------------------------------------------

* Bug fix: living_set_natural_stat() creatures belonging to a race that had no
maximum limit on a particular stat had that stat set to 0.

* Bug fix: weapons and armours now save their damage and protection values.

* Improved date display in saved Player/Agent files and in the connection
message.

* [  75007  171851 1827595] Build 853.

-------------------------------------------------------------------------------

* Bug fix: rooms with no short description caused a crash when attempting to
sending the short description line.

* Bug fix: all rooms were being updated every tick, not just rooms that have an
event.  Added an 'active room set' to the room manager that tracks which rooms
need to have their event processing routine called.

* Bug fix: teleporting to a non-existent room caused a crash, because the room
loading routine was not returning NULL.

* Added support for weight in grams.  The 'weight' keyword specifies a weight in
500 gram units, while the 'weight-grams' keyword specifies a weight in grams.

* Audited use of kg_set_items().  Found a couple of bugs and many
inefficiencies.

* [  74915  171540 1824462] Build 837.

-------------------------------------------------------------------------------

* Fixed bug in server related to handling plugins that register events.

* Ensured all plugins are sufficiently correct to handle the kPluginInitialise
and kPluginRegisterEvents event codes without crashing.

* [  74782  171129 1820478] Build 827.

-------------------------------------------------------------------------------

* Updated Plugin Makefiles to include -DNDEBUG.

* Fixed AdvancementStone and BandageBox pi_initialise() routines.

* Miscellaneous other fixes to plugins.

* Cleaned up plugin server code so that the instance data is stored in the
plugin's BasePtr, not in the PluginPtr.  This allows the Plugin to act as a
template for all instances with regard to events accepted.

* [  74757  171042 1819806] Build 821.

-------------------------------------------------------------------------------

* FIRST PREVIEW RELEASE.

* Tagged CVS as PREVIEW_1_0

* Build 807. MD5 (SlashmudX_preview_1.dmg.gz) = 38b994c79c5e8f7ef0d8aaa15cc5f083

* Work on plugin support:
	- activated hooks in the server.
	- simplified the mud_manager plugin code to have a single plugin manager.
	- updated all plugins with correct prototype for plugin_main() and made
changes to ensure they compile.

* [  74749  170972 1818036] Build 816.

-------------------------------------------------------------------------------

* Bug fix: 'shutdown' command crashes if no time is given.
	- added code to set default shutdown time if none is given.

* Bug fix: Agent display of damage and protection values was out of date.

* Implemented Armageddon object and shutdown code.

* Implemented server_catch_tell() and friends.

* [  74564  170593 1813823] Build 807.

-------------------------------------------------------------------------------

* Bug fix: death message is not being displayed.
	- it is when the Agent 'zap' command is used to kill a monster.
	- created living_report_death() message that now does this.

* Bug fix: the shape command with the descriptive HP style didn't reset the
colour to ANSI_NORMAL.

* The "Extras/connect_message" file, if it exists, is sent to the player upon
login (except for those lines that begin with '#' or '%').

* Disable weapon breakage.

* Rewrote the combat system to make it a little simpler.

* Removed the test_object_hierarchy module since it has now served its purpose.

* Cleaned up living_attack_natural_weapon() to take a BodyPartTemplatePtr for
the natural weapon part rather than an index.

* Implement line-break-point in spirit.c.

* Files: Makefile.* TODO STATUS src

* [  74478  170345 1810536] Build 798.

-------------------------------------------------------------------------------

* Bug fix: removing a second updateable from the updateable manager fails to
work.
	- hash key in the updateable manager hash table was the mStandardName, so
objects with the same mStandardName could not be distinguished.  Changed the
updateable manager to use the ptr value as a hash key, and changed the
base_hash() routine to use object ID as the default hash scheme.

* Bug fix: examining a Thing resulted in an inappropriate "You must have certain
alignment to use this ..." message.
	- the level requirements were checked against INT_MIN and INT_MAX instead of
0 and UINT_MAX.

* Bug fix: examine command does not work (as 'examine' or 'exa').
	- doesn't appear to be checking the alias field.
	- base_match_alias was broken.
	- seems to be a problem with corpses (don't respond to 'bones', 'remains' or
'corpse').
	- base_get_nth_contained_item() was incorrectly using base_foo() routines
instead of virtual_foo() routines.

* Added code to turn 'examine room' into an alias for 'look'.

* Server uptime is now displayed.

* [  74963  171539 1825395] Build 770.

-------------------------------------------------------------------------------

* Bug fix: corpses were causing an assert in the event queue processing loop
when they disappeared.
	- added an object disposal list to the server so that objects aren't
destroyed in the event queue processing loop.

* Bug fix: cannot login again once a player has quit.
	- players weren't being removed from the table of active players.

* Thing breakage has been disabled for now.

* [  74815  171259 1822017]

-------------------------------------------------------------------------------

* Bug fix: advance_beyond_object() had the strstr() call parameters round the
wrong way.

* Bug fix: 'wield all' command ended up being a 'wear all' command.

* Bug fix: weapons incorrectly modified the kThingFlagWorn flag instead of
kThingFlagWielded, meaning they did not correctly auto-equip.

* Bug fix: damage messages were always returning the message for the least
amount of damage.

* Bug fix: there was a bug in the callback routine for cleaning out references
to a dead living in the mud_manager module.

* Bug fix: mud_manager_verify_object() was unimplemented.

* Bug fix: new player races weren't displaying because none were player races.

* Bug fix: weapons don't provide a damage message when used to attack.
	- fixed living_report_weapon_damage() routines.

* Bug fix: loaded armours don't offer any protection.
	- the maximum excess was being set incorrectly in thing_finish_loading().

* Bug fix: damage messages now use the part template's description rather than
the name.

* [  74151  168083 1789178]

-------------------------------------------------------------------------------

* When loading, distinguish between begin-object and include-object. 
"include-object" is for references to items in the standard library, possible
with overriding lines in the area file.  "begin-object" is for items that have
been saved completely in the area file and do not need to load from the standard
library.

* monster_finish_loading() now logs a NOTICE message instead of assert'ing when
a monster has no race.

* living_set_natural_stat() only checks racial stat maximums if the monster has
a race (it may not while it is loading).

* Bug fix: object loading was advancing past the 'end-object' line twice instead
of once, causing every second object to be missed.

* Bug fix: 'eq', 'equip' and 'equipment' commands were missing from
category_two_commands.txt.

* Added Agent 'test' commands.

* Bug fix: agent_parse_category_one_command() was not called because the player
overrides overwrote the agent overrides.

* Bug fix: monsters weren't having their standard events installed.

* Bug fix: when attacking, the weapontype name was being used instead of the
body part name and so the race couldn't find the correct body part template.

* Bug fix: Agents had their update events installed with an offset rather than
an absolute server tick.

* living_finish_loading now correctly initializes the healthy and injured body
part sets.

* Bug fix: Damage message sets were attempting to retrieve messages from empty
sets instead of returning NULL.

* Living body parts are now either healthy (100%) or injured (otherwise). 
Unusable body parts have negative structure points.

* [  74094  167869 1787198]

-------------------------------------------------------------------------------

* Minor changes relating to object loading.

* Simplified the object loading "load_within_standard_text()" and "parse_line()"
routines.

* Cosmetic changes to the output of the score command.

* [  74008  167620 1784718]

-------------------------------------------------------------------------------

* Move command seems to (approximately) work.

* Bug fix: begin_display() was not displaying the '---+' after the title.

* Bug fix: damage_message_set.c wasn't using kg_set correctly.

* Tested: inventory command - changed parser to recognise 'inventory' (without
object id).

* Many changes to command parsing in the slashlex module and the slashmudx
source.  Mainly to rationalize the parsing and ensure commands work.

* Refactored 'quit' command code.

* [  73735  166631 1776973]

-------------------------------------------------------------------------------

* Added gperf generated files for category one and two Agent commands.

* Saving players now correctly creates the player's file.

* Bug fix: events were not firing correctly - they were stored largest first in
the binary heap.

* [  73735  166631 1776973]

-------------------------------------------------------------------------------

* Implemented move commands.

* Fixed problems with sending lines to the client.

* Refactored spirit.c sending routines.

* Fixed bugs that prevented operation up to displaying the start room.

* [  73369  164731 1765406]

-------------------------------------------------------------------------------

* Added generation tag to clans and clan_state so that when clans are purged,
players who were offline get removed too.

* Eliminated kAnsiForeYellow etc in favour of ANSI_FORE_YELLOW.

* Changed all direct access to living_data.mLevel to go through accessor in
preparation for future changes.

* Added gperf routines for standard library parsing.

* Consolidated the attack status and damage code constants (now called
kDamageCodeFoobar).

* Renamed smapi_set_level() to smapi_set_all_stats().

* Added dynamic loading code to plugin.c.

* Added dynamic loading support flags to Makefile.linux.

* [  73038  163735 1757999]

-------------------------------------------------------------------------------

* Bug fix: player_manager_iterate(), living_manager_iterate() needed to return
real PlayerPtrs instead of hash table records.

* Bug fix: loading inclusions didn't work.

* Added more logging code.  foobar_load_within_standard_text() now logs each
line in the standard_text object.

* Working on successfully loading players (virtual_load_inclusion() in
particular).

* Audited parse_line() procedures for correct parsing of attributes that use the
remainder of the line (name, short, long etc.).

* Removed virtual_process_events() and virtual_get_next_event().

* Added base_process_events() and base_get_next_event().

* Added signal handlers that display game and server resource statistics.

* Bug fix: player_parse_line() wasn't calling living_parse_line() if the line
consisted of more than a single token.

* [  73322  163446 1761701]

-------------------------------------------------------------------------------

* Added: plugin_event_private.h

* Started work on the Plugin API.

* Finished first implementation of the Plugin API.

* Audited uses of kg_list_items() and kg_dispose_ptr() in plugins.

* Ensured my email address was consistently given as 'koryn@clear.net.nz'

* [  72372  161363 1735241]

-------------------------------------------------------------------------------

* [  70406  158316 1701732] Started work on the Plugin API.

-------------------------------------------------------------------------------

* Changed clan loading to a 2-stage process, since they can refer to other clans
via the feud and ally features.

* Finished clan_state module.

* [  70791  159158 1711077] Finished porting SMClan.

-------------------------------------------------------------------------------

* Cleaned up kg_random module.

* removed:	buffer_sizes.c

* moved: 	slashlex.y to parser.y
			slashlex.tab.c to scanner.tab.c
			slashlex.l to scanner.l
			slashlex.c to scanner.c
			current_areas.[ch] to areas.[ch]

* Changes to allow the server to compile on Linux.

* Added Makefile.linux.

* Added:	learnable_skill.[ch]

* Finished porting SMClan up to DoRoster().

* [  70276  157867 1696458] Finished porting SMClan up to DoPromote().

-------------------------------------------------------------------------------

* Changed KG_ASSERT to assert() where possible.

* Added associations between sockets and Spirits.

* Fixed start-up problems.

* Bug fix: wrong structure size for PlayerManager checksum in
mud_manager.c/initialise_mud_managers().

* Bug fix: race_parse_line() was using wrong buffer for tokenizing.

* Bug fix: race_init() was using wrong buffer for tokenizing.

* Bug fix: body_part_template.c was verifying the body part while it was being
constructed.

* Added replace_string() to string_manager for replacing a string, disposing of
any current string.

* KG_ASSERT_PTR now only checks to see that the pointer is valid.  Introduced a
new assertion, KG_ASSERT_REAL_PTR, that checks to see that the given pointer is
valid dynamically allocated memory.

* Body parts now use their part name if no explicit description is given.

* Changed preferences format to be

name = "value"

* Cleaned up mud_managers.c so that managers which read their objects once at
startup (clans, classes, races etc) use a common format for the hash table
records.

* Bug fix: player_manager wasn't reading both Players and Agents directories.

* Bug fix: player_manager now correctly parses player/agent files.

* Bug fix: kg_set had an off-by-one bug when checking set item indices (they're
zero-based internally but one-based externally).

* Bug fix: clan state wasn't allowed to have a NULL clan; it can now exist as an
"orphaned" clan state.

* Added clan state parsing routine.

* Added skill state parsing routine.

* Added correct base_data.mType values to objects derived from BaseObject.

* Renamed bison files to "parser.*" and flex files to "scanner.*" to make their
names less confusing.

* Added MudObjectHashPtr memory pool for mud_manager module.

* Ensured that managers with names as unique keys use common mud_object()
routines.

* Ensured that managers that only store live objects (living manager, player
manager, updateable manager) use appropriate non-mud_object() routines.

* Simplified kg_random interface.

* [  69719  156363 1680522] .

-------------------------------------------------------------------------------

* Added gender accessor to Plugin API.

* [  68273  152886 1659148] Finished porting SMWeapon.

-------------------------------------------------------------------------------

* Added enumerated type for living state constants to Plugin API.

* [  68273  152886 1659148] Finished SMWeapon up to GetDamageMessages().

-------------------------------------------------------------------------------

* [  68209  152778 1657639] Finished SMWeapon up to WeaponSpecialAttack().

-------------------------------------------------------------------------------

* Moved stat tags, size tags and gender tags to enums.

* Added Plugin API for saving via ListPtr.

* Cleaned up thing_object effects and requirements.

* [  66656  148743 1613026] Finished SMArmour.

-------------------------------------------------------------------------------

* Finished SMRace.

* Added Plugin API calls to deal with invisibility.

* Moved wear, wield, remove, unwield and break messages from ArmourPtr and
WeaponPtr to ThingPtr.

* [  66456  148537 1609084] Finished SMArmour up to FinishLoading().

-------------------------------------------------------------------------------

* Files:
	- moved body_part_type.[ch] to body_part_template.[ch]

* Finished SMBody (body.c and body_part_state.c).

* [  66121  147734 1600214] Finished body_part_template.

-------------------------------------------------------------------------------

* Added doxygen.config file for auto-generating documentation using doxygen.

* Finished SMLivingCommands.

* [  64326  143136 1552577] Finished SMAgentCommands.

-------------------------------------------------------------------------------

* Files to add:

	./.indent.pro
	./category_one_commands.txt
	./category_two_commands.txt

* Finished porting SMLivingState.

* Cleaned up slashlex further.

* Finished porting SMCommand.

* Moved command_parse_table.[ch] to command_table.[ch].  Suspect it is
completely unnecessary (used for parsing before slashlex).

* Improved slashlex parser.  It no longer allocates memory for SlashlexObjects
({name, ordinal} combinations), using static storage while parsing and storage
in the SlashlexCommand structure when done.

* created .indent.pro file containing indent options:

	indent -l400 -bad -bap -bl -bli0 -bls -cbi0 -cli2 -cs -di1 -fc1 -i4 -npcs
-nsob -psl -ts4 -ut

This requires indent-2.2.9 since the version that comes with Mac OS X is old.

* Use gperf to generate lookup functions for category one commands (those with
no in-game effect):

	1) Ensure category_one_commands.txt is up-to-date.
	2) Run gperf:
	
gperf --language=ANSI-C --readonly-tables
--hash-fn-name=hash_category_one_command
--lookup-fn-name=is_category_one_command --random --enum --compare-strlen
--debug category_one_commands.txt 1> category_one_commands.c 2>
category_one_commands.log

	3) [Optional] run indent on the "category_one_commands.c" file.
	4) Copy contents of "category_one_commands.c" to "living_virtuals.c".

* Use gperf to generate lookup functions for category two commands (those that
use the slashlex parser):

	1) Ensure category_two_commands.txt is up-to-date.
	2) Run gperf:
	
gperf -D --language=ANSI-C --readonly-tables
--hash-fn-name=hash_category_two_command
--lookup-fn-name=is_category_two_command --random --enum --compare-strlen
--debug category_two_commands.txt 1> category_two_commands.c 2>
category_two_commands.log

	3) [Optional] run indent on the "category_two_commands.c" file.
	4) Copy contents of "category_two_commands.c" to "living_virtuals.c".

* [  62079  136683 1484646] Finished SMLivingCommands up to 'remove' command.

-------------------------------------------------------------------------------

* [  60655  131677 1441856] Added macros for assertions that automatically fill
in __FILE__, __func__, __LINE__.

-------------------------------------------------------------------------------

* [  60902  133014 1458023] Removed unnecessary files, converted more groups of
constants to enumerated types.

-------------------------------------------------------------------------------

* [  61408  134390 1470840] Finished SMZone.

-------------------------------------------------------------------------------

* [  61159  137242 1487993] Finished SMCurrency.

-------------------------------------------------------------------------------

* Working on agent_command_manager & command_manager

* Refactor initialisation tasks into:
	- one-shot/hard: those performed once only at process startup (e.g. virtual
tables).
	- repetitive/soft: performed on startup and restart.
	
* Refactor shutdown tasks into:
	- one-shot/hard: those performed once only at process exit.
	- repetitive/soft: performed on shutdown and restart.
	
The model is:

	PROCESS STARTUP - hard_init() - { soft_init() -RESTART/SHUTDOWN- soft_exit()
}+ - hard_exit() - PROCESS EXIT

* Move get_type routines from foobar_overrides.c to foobar_object.c.

* base_finished() completed.

* Working on base_virtuals.c: up to base_update().
	- need plugin_event.[ch] with PluginEventPtr, new_plugin_event(),
dispose_plugin_event(), with free list.
	- need attachment_send_event routine, possibly static in base_virtuals.c.

* Finished SMBase.p.

* [   44706   93583 1033377] Finished SMLiving.p:LivingObject.Initialise().

* Tested replace_single_token().

* [   48092  102887 1131784] Finished up to
SMLiving.p:LivingObject.AppendToSaveText().

* [   48111  103232 1134914] Finished up to
SMLiving.p:LivingObject.Examination().

* [   50798  109971 1205195] Finished up to SMLiving.p:LivingObject.HasMoney().

* [   52195  113953 1245376] Finished up to SMLiving.p:LivingObject.DoRifle().

* [   52870  115703 1262967] Finished SMLiving.p.

* [   53805  117856 1286126] Finished up to
MonsterObject.AppendPropertiesToSaveText().

* [   55000  120867 1318717] Finished up to RoomObject.AppendToSaveText().

* [   55187  121312 1323595] Finished up to RoomObject.AddToContents().

* [   57033  126636 1380255] Finished SMRoom.p.

* [   57601  128191 1396494] Finished up to PlayerObject.ParseLine().

* Replaced all fprintf(stdout, "foobar()"); calls with SLASHLOG_DEBUG calls.

* [   57935  129057 1402488] Finished SMPlayer.

* [   58419  130439 1416881] Finished SMThing.

* [   58477  130556 1418162] Finished up to FollowEventObject.Execute().

* Added auto-incrementing build numbers.

* Finished SMEvent.

* Finished SMBase.

* [   58813  131332 1426183] 1.0 build 28: Finished up to
AgentObject.AppendPropertiesToSaveText().

* [   59230  132407 1437120] Finished SMAgent.

* [   59230  132407 1437120] Finished SMSpirit.

* [   59841  134225 1454417] 1.0 build 82: Finished up to
LivingManager.RemoveLiving().

* [   59946  134446 1456738] Finished SMLivingManager.

* [   59946  134446 1456738] Finished up to PlayerManager.GetLocalPlayer().

* [   60221  135110 1464790] Finished SMPlayerManager.

* Added signal handler for SIGPIPE.

* Added spellpoints for rooms.  These regenerate according to the number of
occupants.

* Added initiative stat: each tick - grab all living events that are scheduled
to run
	- sort them in initiative order.
	- execute them.

* Finished working on mud managers.

* Finished SMCorpse up to CorpseObject_Update().

* [  61159  137242 1487993] Finished SMCorpse.

-------------------------------------------------------------------------------


Check the CSS on this page. This page was last built on Mac OS X with BBEdit on Thursday, December 8, 2005. Check the HTML on this page.

Powered By Darwin