$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. -------------------------------------------------------------------------------
