lars@myab.se (Lars Pensj|) (08/25/90)
Archive-name: lpmud/v2.2 Original-posting-by: lars@myab.se (Lars Pensj|) Original-subject: LPmud 2.2 Archive-site: alcazar.cd.chalmers.se [129.16.48.100] Archive-directory: /pub Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti) LPmud 2.2 is now available by anonymous ftp from alcazar.cd.chalmers.se (129.16.48.100) in pub. These are the changes to 2.2 from 2.1: 1. Arrays: allocate(), sizeof(), wizlist An array of size n can be allocated with 'allocate(n)'. You can't declare arrays. The function sizeof() returns the size of an array. The array pointer can be stored in variables, and sent as arguments (as any type). They can then be used by indexing: 'vec=allocate(3); vec[0] = 8; ...' You don't deallocate arrays explicitly, they are deallocated when the last reference is removed. An array element can have a value of any type, even pointer to array (thus enabling multidimensional arrays). 2. query_ip_number() can now take an optional object as argument. It can then be used to find out if an object is interactive. Link dead players are not interactive. 3. ctime() takes the value from time() and returns a nice string with the local time and date. 4. disable_commands() Opposite to enable_commands(). 5. The monster.talk.c has been replaced with monster.c, which has the chat and talk functions replaced with arrays. The old monster.talk.c remains for compatibility. If you have problems with the game being too big, change monster.talk.c so that the old chat feature is disabled, and thus forcing wizards to use the new method with arrays. The new monster.c is not compatible with the old monster.talk.c. 6. predicate functions for all types: int(), objectp(), stringp() and pointerp(). 7. Bug fixed in malloc.c as well as much better speed. The statistics given by the command 'malloc' is now correct. 8. users() returns a vector of all interactive objects. The command 'who' and 'people' use that. 9. cat() returns success status and takes more optional arguments (start, end). been defined by using lot of good ideas from both Fizban and Anders Ripa. A problem is that wizards always want to make the "perfect" tool. Such a tool usually uses more than 50 Kbytes of memory, and if it is autoloaded, you won't need many wizards until 1 Mbyte has been "wasted". This new tool will hopefully satisfy wizards. It is also an attempt to standardize, so that players that have wizards on more than one mud have it more easy. 11. add_action() takes 2 arguments, and checks that the object defining the command is present. 12. New syntax: ob->fun(args), which is equivalent to 'call_other(ob, "fun", args)'. 13. Fixed a bug in '::'. The bug was when the inheritance depth was bigger than 2, and one of the above bottom objects used '::'. 14. 'sell all' fixed in the shop. 15. String handling has been optimized, using a flag 'constant' in the value nodes. There are now two types of 'struct value', the new one being used by arrays and global variables in objects which don't need the pointer to next struct value, and thus reducing memeory need. 20. 'ls' is now builtin and much faster. 21. The call of combine_free_list() frequency is dependant on the length. It is important that it is called now and then. Normally, this is done from the church. 22. Aggregate initializations of arrays: ({ 1, 2, "apa", ob, 2 }) Will construct an array of length 5, initialized. 23. file_name() gives the file name of an object. 24. extract() extracts strings out of strings. 25. tell_room() can now also take an object file name as argument. 26. command() has second optional argument, the object to execute the command. This object must be living. This new feature makes it possible to force any wizard to do anything, but abusements are of course illegal. The good things with this are big. It is now possible to have objects that defines abbreviations for you as example. It is also possible to construct a "team" object, that enables players to join with a leader into a team, and follow him automatically (not implemented yet). 27. A "graceful" shutdown when the game runs out of memory. The players will be given 4 minutes of warning by a monester called Armageddon (obj/shut.c). This is called automatically from malloc.c. 28. Swapping is "almost" bug free now :-) We use it with Genesis. With regards, Lars lars@myab.se -- Lars Pensj| lars@myab.se