nakedmud_changelog.txt 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. VERSION 3.8 (Apr 05/09)
  2. * new module, 'doc', for reading Python documentation in game, and generating
  3. html versions of module documentation
  4. * new module, 'display', containing utilities for displaying tabular data
  5. and meters
  6. * admin disconnect command, takes a socket ID. Use connections to view sockets
  7. * trigger types can now be added from outside the scripts module
  8. * fixed a bug in pathfinding, causing incorrect directions to be given
  9. * mudsys.add_xxx_method now accepts properties, as well as methods
  10. * Python StorageList() can now take a Python list of StorageSets as argument
  11. * Improved IAC handling
  12. * Changed the way object equipping and unequipping is handled to accomodate
  13. for hooks
  14. * Added copy() and store() methods to Python characters and objects
  15. * Added read() methods to the obj and character modules
  16. * Added ability to check if character can edit a zone, from Python
  17. * Fixed infinite loop caused when malformed storage sets are read from disk
  18. * ch.send rewritten. Now takes optional newline=True|False, and can have
  19. embedded dynamic descriptions
  20. VERSION 3.7.9 (Mar 02/09)
  21. * The location of zone directories changed from lib/world/ to lib/world/zones/. You will need to manually move your zone files to the new location.
  22. * Added new user group, wizard, to encompass general wiz-ly commands that
  23. should Have shared access by admins and builders.
  24. * restructured the group priviledges for some admin and build commands. Be
  25. sure to give all of your admins/builders the 'wizard' user group
  26. * User groups can now be edited through 'pcedit'
  27. * Fixed problem with display 'sticking' before a prompt
  28. * Added support for guest characters
  29. * Account menu and login sequence drastically changed!
  30. * Added support for instanced rooms and zones
  31. * Added support for persistent (state saved across reboot & crash) to rooms
  32. and their contents (chars, objs). A stand-alone module will be released for
  33. tracking persist rooms and contents
  34. * Added new module for logging communication histories (tell, chat)
  35. * Exposed aliases to Python
  36. * All uids now poll from a common pool
  37. * Rooms can now have room-specific checks added to commands without having to
  38. override the entire command
  39. * reading/writing via storage sets is now buffered instead of being done
  40. directly
  41. * char_vars module renamed dyn_vars, and added to rooms and objects as well
  42. * exposed the text editor to Python
  43. * fixed nasty bug with objects sometimes being added to game twice, and
  44. corrupting the object list when they are extracted
  45. * added support for (string) pearson hashing, with 8, 16, and 32 bit hashes
  46. * exposed helpfiles to Python
  47. * Fixed the nasty green color leak issues
  48. * Received IAC events now broadcast via the receive_iac hook (sock, sequence)
  49. * disabled MCCP on this basis:
  50. http://www.mudconnect.com/discuss/discuss.cgi?mode=MSG&area=coders&message=24304#24304
  51. MCCP will be re-added as a stand-alone module, working via the iac hook
  52. * characters, rooms, and objects now track their 'birth' -- the time at which
  53. their 'new' function was called.
  54. * Fixed olc so the OLC extenders will properly work with Python
  55. * Fixed various issues with trying to use OLC commands on entities with
  56. nonexistent zones
  57. * generic_find and parse can now search for things by UID, as well as keywords
  58. * The ch.cansee function can be extended through Python
  59. * Character, room, and object bitvectors can now be extended and accessed via
  60. Python
  61. * Fixed issue with /e in the script editor adding \r to the end of lines
  62. (which makes Python choke)
  63. * Added new trigger types for looking, closing, and entering the game
  64. VERSION 3.7 (Dec 06/08)
  65. * Python can now access World (e.g., for adding protos, dialogs, quests,
  66. etc...). See scripts/pymudsys.c for relevant functions
  67. * medit, redit, and oedit now have 'extenders'. Extra menu options can be
  68. registered, so the OLC interfaces can be extended without editing the module
  69. directly
  70. * Python now has access to do_olc, and OLC extenders
  71. * Python can now add new item types
  72. * Changed how obj/room/mob prototypes are turned into OLC-editable things
  73. * multi-word arguments to the commmand parser can now be specified
  74. with " and " or ' and '
  75. * Replaced all instances of vsprintf with vsnprintf
  76. VERSION 3.6 (May 31/08)
  77. * Deleted the old help module and wrote a new one, help2.
  78. * When the mud reads in Python commands, attempts to set their documentation
  79. string as the helpfile for the command, if no helpfile for that command
  80. already exists.
  81. * Outbound text and prompt are now flushed separately and have their own unique
  82. process and finalize hooks incase they need to be handled separately.
  83. * Added a 'flush' hook to the beginning of flush_output
  84. * Goto and transfer are now builder commands, not admin commands
  85. * removed the instantiate command; use rcopy
  86. * Fixed bug with cmdcopyto
  87. * Fixed message bug with emote and gemote when no emote text is entered
  88. * Fixed a problem with OLC menus sometimes printing twice
  89. * start_update was broken last patch and would not requeue events; fixed
  90. VERSION 3.5 (Oct 15/07)
  91. * Revamped add_cmd. It no longer takes position or pc/npc constraints
  92. * New function, add_cmd_check, that adds a function that runs pre-command. If
  93. it fails, the command doesn't run. Useful for modules to modify command
  94. conditions after the fact. Like, for instance, combat modules preventing
  95. movement while combat is taking place.
  96. * Output and prompts are now sent after the current event cycle resolves,
  97. instead of before.
  98. * Events added with a delay of 0 now queue to the back of the event list,
  99. instead of being pushed on to the front of it. This is for events that
  100. trigger other events that need to be resolved in the same event cycle.
  101. Normal events (with a delay > 0) will be resolved on the next event cycle,
  102. as usual.
  103. * Characters now save after the init_player hooks are run
  104. * Fixed a problem with special exits not displaying the proper exit messages
  105. * Enter hooks are now properly run when someone enters a portal
  106. * pyobj.load_obj now properly sends worn items to the inventory if no body
  107. location arguments are supplied
  108. VERSION 3.4 (Sep 22/07)
  109. * Made sure NM compiles with Python 2.5
  110. * Python module for finding the shortest path between two rooms now exists
  111. * Python module for doing repeatable/nonrepeatable routines (i.e. path
  112. following) now exists
  113. * There is now a 'script' room reset type. Runs a script on the initiator
  114. (room, loaded mob, object, etc) as 'me'. Intended to set up behaviors for a
  115. unique instantion of a mob/obj like pathing.
  116. * renamed the char_vars module to dyn_vars. It now applies to objects and rooms
  117. * added a initialize hook before we enter the gameloop
  118. * the commands command now displays room-specific commands
  119. * Made generic_find() search equipment before inventory
  120. * Python rooms are now hashable
  121. * Characters can no longer call act() in Python unless they have a room (i.e.,
  122. no actions if a character's prototype is still initializing the character)
  123. * Fixed bug with lists not properly handling element removals
  124. * Fixed a bug where a char/obj/room would potentially not properly dereference
  125. after its prototype script had being run over it
  126. * Fixed problem with nested calls to hookRun overwriting eachothers' argument
  127. list
  128. * Fixed a buffer overflows in storage.c parse_line, parse_string, and
  129. write_string_data
  130. * Removed night descs. Their functionality can be reproduced with embedded
  131. Python scripts.
  132. * Fixed memory leak with Python events not properly decrementing ref counts on
  133. owners for interrupted events
  134. * Fixed a bug where the python char generation wasn't calling char_to_game,
  135. allowing new characters to interact with stuff, but not having stuff be able
  136. to interact with them
  137. * If the mud is locked down to players, no new players can be created
  138. The mud no longer hangs if a person hits enter and nothing else on the first
  139. connection prompt
  140. VERSION 3.3 (Dec 25/06)
  141. * If a Python module has errors when initialized, the MUD halts booting and
  142. prints a traceback to standard out.
  143. * Gave Python access to the input handler and prompt
  144. * The main prompt is now contained in pymudsys.c and can be overwritten with
  145. the Python command, mudsys.show_prompt = new_prompt_here. Demo contained in
  146. the doc folder
  147. * Rewrote login and account generation in Python
  148. * Rewrote character generation in Python
  149. * Moved color and universal newline code into Python
  150. * added getAuxiliary() to Python rooms and objects
  151. * Gave Python access to char, obj, room, etc... without them having to
  152. actually be in game (i.e. for char gen). Still need to be extracted after
  153. being used.
  154. * Replaced some send_to_char oopsies with ch.send in the python code
  155. * Deprecated the Python event.start_update; recursively call
  156. event.start_event now
  157. * Fixed some bugs with ch or vict being NULL in message()
  158. * cmd_delay now accepts floating point delay values
  159. * Fixed bugs where Py_None returned without increasing its reference count
  160. * Fixed bug with completed Python events not decrementing data reference count
  161. Bug still exists for interrupted events.
  162. * Optional SCons build system introduced
  163. VERSION 3.2.1 (Jul 09/06)
  164. * Fixed bug with NPCs becoming unable to speak
  165. * Mysty mysteriously stopped loading. She now loads again
  166. * Fixed bug with lockdown not working
  167. * Fixed a memory leak in Python char.list_chars() and char.list_sockets()
  168. * Fixed bug with atoi() not being imported in cmd_admin.py
  169. * Gave Python access to a character's notepad
  170. * Fixed various spelling mistakes
  171. VERSION 3.2 (Jul 01/06)
  172. * Python now has access to parse_args()
  173. * Python now has access to hooks. Hooks rewritten to accomodate for this
  174. * Most of the cmd_xxx functions were rewritten in Python (lib/pymodules)
  175. * Almost all remaining commands shuffled around into modules
  176. * Python modules can now have an __unload__ method that is called whenever
  177. they are reloaded with the pyload command. Useful for removing commands or
  178. hooks
  179. * Room resets now apply recursively to prototypes
  180. * Added builder commands: rcopy, dig, fill
  181. * Modified the "commands" command to accept a group list
  182. * Fixed python aux data crash bug introduced in 3.1
  183. * Fixed bug not allowing exits to link between zones
  184. VERSION 3.1 (Dec 04/05)
  185. * Let dynamic descriptions be embedded with a Python-like, markup
  186. language-like style. For example:
  187. You're in a [if ch.race=="fairy"]HUGE[elif ch.race=="giant"]tiny[/if] cave.
  188. * Prototypes and triggers now re-use code objects when they are run multiple
  189. times, instead of recompiling from source every time
  190. * Similarly, characters, objects, and room now reuse their Python
  191. representations instead of remaking one every time it is needed
  192. * Redid the way hooks work, to make them more flexible.
  193. * Added new hooks for account and character creation
  194. * Changed functionality of next_space_in to to check for newlines, carriage
  195. returns, and tabs
  196. * Made bodies reset when races are changed in Python scripts
  197. * Characters' equipment can now be accessed in Python
  198. * Changed parse_keywords and parse_strings to return a list of strings rather
  199. than an array of strings
  200. * Rooms now auto-reload after being edited in OLC
  201. * Prototypes now print errors if their parents cannot be found when run
  202. * Exit descriptions can now have embedded python scripts
  203. * Added new hook types for after looking at rooms, exits, objects, and chars
  204. * Python now has access to functions in the time module
  205. * Made some small changes to the functionality of Sets
  206. * Added warning message to OLC for people making closable exits w/o keywords
  207. * Carriage returns are now stripped from triggers when they are edited
  208. * Parse now handles multiple words surrounded by " and " as a single word
  209. * Redid try_equip to work with more than just worn items
  210. * Added set methods for the Integer, Double, and Long structs. Also added a
  211. new struct, Boolean.
  212. * Fixed bug with Python event module method list not being terminated properly
  213. * Fixed bug with PyChar_act editing PyStrings when it shouldn't
  214. * Fixed crash bug with PyChar_geton
  215. * Fixed many memory leaks caused by improper handling of Python objects
  216. * Fixed some buffer formatting problems
  217. * Fixed problem with dynamic descs crashing the mud
  218. * Fixed problem with OLC not liking " in descriptions. This problem still
  219. exists in short and room descriptions, but not paragraph descriptions.
  220. * Fixed bug with mud crashing if players do not have a room but use a command
  221. * Fixed bug with exits not being able to be set as closable
  222. * Fixed a bug with the "enter" command not working properly
  223. * Fixed alignment problems in worn item type OLC menus
  224. * Fixed bug with embedded scripts not expanding for char or obj descs
  225. * Fixed a bug with redit not generating night descriptions properly
  226. * Fixed bug with python load_obj not being able to equip characters.
  227. * Fixed bug with oedit, medit, and redit not handling spaces in extra code
  228. * properly
  229. VERSION 3.0 (Oct 07/05)
  230. * things in the game database (rooms, objects, mobs, triggers) now have string
  231. keys instead of vnums. Each key has two parts: a name and a locale (zone
  232. key). So, for instance, Mysty which was vnum 100 in v2.7 is now
  233. mysty@examples
  234. * rooms, objects, and mobiles now support inheritance.
  235. * mob, obj, and room prototypes are now stored as python scripts.
  236. * scripts now run in a special restricted environment to prevent scripters
  237. from running malicious code. Modules written in python are still run in the
  238. normal Python environment.
  239. * rooms must now be rreload-ed before changes made in OLC are updated.
  240. * replaced load/delete_account/player with get/unreference_account/player to
  241. prevent multiple copies of the same account/player from being loaded into
  242. memory.
  243. * created general framework for setting up hooks.
  244. * commands no longer have a subcmd integer value associated with them.
  245. * dialogs have been removed from the codebase, and will be re-released as an
  246. optional module (forthcoming)
  247. * new function, parse_args, added to parse command input into appropriate
  248. values.
  249. * rooms can now have their own commands
  250. * exits now have python representations
  251. * rewrote OLC (yet again... hopefully the last time!)
  252. * added new OLC commands (mpedit, opedit, rpedit) for editing the python code
  253. for prototypes directly
  254. * room reset rules are no longer stored on rooms themselves. They now have
  255. their own entries in the world database.
  256. * replaced all occurences of strdup(var ? var : "") with strdupsafe(var)
  257. * many bug fixes and other minor changes
  258. VERSION 2.7 (July 31/05)
  259. * changed the way the world is saved to disk
  260. * added lazy loading for the game world
  261. * removed some unused types defined in mud.h
  262. * added wrappers for int, double, and long so they can be passed around as
  263. pointers
  264. * added lazy loading; massive changes to how zones are stored on disk
  265. * added python wrapper for generic_find()
  266. * Fixed bug with setting an object type that does not exist (thanks Venzor)
  267. * Fixed bug with transfer crashing when target did not exist (thanks Venzor)
  268. * Modified scrun so scripts can be run from a person's notepad (thanks Venzor)
  269. * Changed the scriptGetNotepad function to return the entire buffer, and not
  270. just the string
  271. * Terrain saving fixed AGAIN... apparently, I didn't add the changes last
  272. version. This time, terrain values save as strings, not ints. Easier
  273. reading in the zone files. Yay readability.
  274. * Fixed bug with deleteRoom crashing us whenever the room contained objs or
  275. mobs
  276. * New function: build_who() ... returns a buffer of the who list, rather
  277. than the who list just being accessable through a command.
  278. * Fixed bug with admins not being able to edit all zones
  279. * Extraction of objs/mobs is now a two-stage process: first, all of the stuff
  280. is done to prepare them for extraction (e.g. remove all pointers in game to
  281. them, remove them from rooms/containers). Then, at the end of the pulse,
  282. they are removed from game and deleted. This is to help prevent against
  283. problems with referencing bad memory when trying to use something in a
  284. function after it has been extracted in the same function.
  285. * Added new admin command, force
  286. * expanded generic_find() so it can return lists of characters if all.xxx is
  287. used
  288. * Added script editor option for supressing auto-indent (easier pasting of
  289. code)
  290. VERSION 2.6 (July 06/05)
  291. * Fixed HUGE memory leak with zones saving. Storage sets weren't closing!!
  292. * Fixed bug with room terrains saving as ints but loading as strings (they
  293. save/load as ints. Ideally, I would have liked to do it as strings, but
  294. then I'd have to write a conversion patch. Maybe next version)
  295. * Helpfiles can now be viewed from olc
  296. * resized the column width for help listings and command listings
  297. * Added a new method to pychars which allows strings to be paged rather than
  298. sent, for easy reading of long text
  299. * set_val now works on offline characters
  300. * Added new scripter command, scstat to pull up script info for a vnum
  301. * Fixed bug with count_occurences not working properly.
  302. * Aliases be embedded in other aliases. Aliases can be multi-command
  303. * Fixed bug with set not working on one's self
  304. * Special exits can now have their "opposite" direction set in OLC When
  305. closing/opening or locking/unlocking an exit, the opposite exit on the other
  306. side will also do the same.
  307. * Made special exits check before normal commands
  308. VERSION 2.5 (June 18/05)
  309. * New manual for scripts and extending the mud in Python
  310. * Gave python access to storage sets, auxiliary data, event handler,
  311. action handler, and way more variables + functions
  312. * Fixed bug with gcc not building dependencies properly on some OSes
  313. * Fixed bug with wearable items not being, well, wearable!! oops...
  314. * A bunch of random utility functions, and minor changes
  315. VERSION 2.4 (June 4/05)
  316. * Redid big chunks of the Makefile so output is easier to read.
  317. * New make command added: make backup. Backs up lib, src, and doc directories
  318. * redid some of the message() command. There are no longer TO_NOTCHAR and
  319. TO_NOTVICT flags (they are redundant)
  320. * Fixed a couple minor bugs in OLC that could potentially get you stuck at
  321. a menu screen with no way to exit
  322. * Gave python access to more aspects of rooms, characters, objects...
  323. * Python packages can now be imported, in addition to modules
  324. * Fixed a buffer overflow bug when loading python modules
  325. * Fixed a problem with text displaying on the same line as a prompt
  326. * Fixed problem with who displaying the wrong group status for people
  327. VERSION 2.3 (May 27/05)
  328. * Removed levels, added "user groups" for command priviledges
  329. * Fixed bug with purge trying to extract null objects or characters
  330. * Fixed bug with unequipping objects more than once that are on more than
  331. one bodypart
  332. * Python objects are now extendable from outside modules
  333. * Commands can be written in python
  334. * Modules written in python can now be loaded into NakedMud
  335. VERSION 2.2 (May 12/05)
  336. * Accounts have been added to the MUD.
  337. * Minor fixes to input handling and flushing of output when we don't have a
  338. prompt to display after the flushing.
  339. * ./autorun.py can now be used to start up the autorun file
  340. * Added an MOTD command
  341. * Added read/store_bool to storage.h
  342. * new admin command, lockdown, that can bar players of certain levels from
  343. entering the game.
  344. * sets now auto-expand themselves like hashtables
  345. VERSION 2.1.1 (May 08/05)
  346. * Fixed two major bugs: property_tables will no longer give a key a negative
  347. bucket number. Copyover now works. Socket data wasn't being zeroed before
  348. it was being used, causing us to crash on some platforms. Thanks go out to
  349. Rhaelar for pointing out and helping me find both of these bugs
  350. VERSION 2.1 (Apr 24/05)
  351. * scripts can now attach/detach other scripts from rooms, objs, and mobs
  352. * hashtables no longer need a size specified when they are made; they will
  353. also automatically expand themselves as needed
  354. * major bugs with olc2 fixed; when editing a new object or mobile, the item
  355. will actually be created now
  356. * minor bug with "fill" fixed. When filling an exit that doesn't link back to
  357. the room you are filling from, the mud will no longer crash
  358. * oedit and medit can now be used to edit mobs and objects in your room or
  359. in your inventory, respectively
  360. * new script type: runnable. New command: scrun
  361. * bitvector edit added to olc2
  362. VERSION 2.0 (Apr 15/05)
  363. * changed the way file dependencies are created during make (calculating
  364. dependencies is an automatic process now)
  365. * The code had a *huge* number of changes. The more prominent changes listed:
  366. * Completely redid OLC. There is now a new module called OLC2
  367. * Made some modules _neccessary_ to NakedMud (e.g. scripts, olc, and other
  368. core modules)
  369. * Stacked input handlers for sockets, instead of socket states
  370. * A new, more robust, more easily extendable text editor
  371. * hashIn will now correctly return TRUE if there is a key with a value pair
  372. of null
  373. * Fixed the "copyover" bug that was introduced by the last version's directory
  374. structure.
  375. * Fixed the min/max position problem with socials. These parameters now work.
  376. * Changed the hashtable to be case-insensitive
  377. VERSION 1.5 (Jan 29/05)
  378. * Created a new unordered storage type, SET
  379. * helpfile system completed
  380. * Added a linecount to the end of the text editor.
  381. * Added a new 'write' command that allows players to enter a basic text
  382. editor so they can compose messages. Used with editing helpfiles, and later
  383. for mail and board messages.
  384. * Re-did races.c so new ones can be added by modules
  385. * Added auxiliary data to zones
  386. * moved try_buildwalk() from cmd_builder.c to movement.c
  387. * renamed admin.c to cmd_admin.c and builder.c to cmd_builder.c
  388. * Added a "transfer" so wizzies can move players around.
  389. * Added a "stop" command to interrupt player actions
  390. * Looking at an exit now displays the objects/characters in the room as well
  391. * Killed a bunch of the terrain data that seemed out of place for NakedMud
  392. * Changed roomGetExitNames to return pointers to the exit names instead of
  393. strdups of them, so users don't have to worry about garbage collection.
  394. * Immortals can now go invisible
  395. * added a new type of event -> updates. They will automatically add themselves
  396. back into the event queue after they fire
  397. * Made vnums show for mob/objects in lists when builders and above see them.
  398. Still needs to be done for mobiles on furniture, and the furniture itself
  399. * Made characters save after creation
  400. * Mobile gender can now be changed in OLC
  401. * Problem with gender names fixed (male/female/neutral names were mixed up)
  402. * removed the "exit" parameter from scripts
  403. * removed the "comment" parameter from all of the store_xxx functions in
  404. the storage utility.
  405. VERSION 1.4 (Jan 18/05)
  406. Too many changes to list. Some of the major ones include:
  407. * NakedMUD should now be set up to compile under most linux systems rather
  408. than Mac OSX - us OSX'ers are probably the minority.
  409. * Makefiles were completely redone. Compiling modules is much easier now.
  410. Many thanks go out to Tyche for pointing me in the direction of a paper
  411. that allowed me to redo the makefiles nicely.
  412. * You can now pull an element out of a list, even if you are iterating over
  413. the element.
  414. * Aliases were extracted out of character.c and added as a new module
  415. * char_vars were extracted out of character.c and added as a new module.
  416. char_vars can now be numerical values AND strings.
  417. * scripts were updated to reflect changes to char_vars
  418. * socials were added, plus an OLC for them (socedit).
  419. * some work was done to generic_find() and its related functions
  420. * various bug-fixes here and there.
  421. VERSION 1.0 (Dec 26/04)
  422. * First public release of NakedMud