This file contains the changes between the CD.01 and CD.02 gamedriver versions.


removed uid and euid.
added set_auth and query_auth.
# uid functionality is handled by a general, protected variable that is
  accessed through the set_auth and query_auth functions. Calls to set_auth
  are validated and modified by an apply to 'valid_set_auth' in the master 
  object.

valid_exec() is called with objects involved in exec.

removed cat
removed write.
removed tell_object.
# All player interaction is done through write_socket()

added set_screen_width and query_screen_width.
# Breaks lines automatically.

removed wizlist.

efun destruct() takes no arguments and destructs this_object().
efun debug("destruct", ob) destructs ob.

removed efuns interactive() and sort_array().

remove_interactive called in master.
# Is called every time a link is lost.

added efun commands() obsoletes get_localcmd().

You can no longer make local calls to undefined functions.

Socastic resets.
# The time to reset is no longer constant.

notify_fail returns 0.

super_snoop
# If you need this, read the code to find out how to use it.

create() not called in master of clones.

create() is the first function called in an object.

call_other(0, ...) is valid.

simul_efun_reload() called in master when simul_efun is updated.

Object variables will now be saved by efun save_object() and
restored with restore_object().
# 0 returned if the object no longer exists.

Added support for floats.

exec(0, ob) will kill the link to ob.

added efun object_clones().

virtual inheritance.

added #pragma no_inherit and #pragma no_clone. 

added true varargs.
# func(a, b, ...) where ... = mixed *argv.


implemented call_otherv(ob, func, argarr) 
argarr is treated as as many arguments as containing elements.

added the possibility to name an inherit.
inherit "foo" name;
Used as name::func(), name::var, name1::name2::var etc

previous_object takes an optional argument specifying how
far back to look.
# Note that the argument is a negative number.

call_other to array or mapping added.
arr->func(), mapping->func()
Values in mappings are used. Return values in array/mapping

default values to arguments of functions added.
# void fun(int a, int b = 3) { ....... }

Faster heart_beat
# Float in the config file.

New applies to the master object:
interpret.c:                ret = apply_master_ob("valid_set_this_player", 2);
interpret.c:                ret = apply_master_ob("valid_set_auth", 3);
interpret.c:                ret = apply_master_ob("valid_query_ip", 3);
interpret.c:                ret = apply_master_ob("valid_query_host_name", 1);
interpret.c:                ret = apply_master_ob("valid_users", 1);
interpret.c:                ret = apply_master_ob("valid_debug", num_arg + 1);
lex.c:                      ret = apply_master_ob("valid_compile_path", 3);
simulate.c:                 ret = apply_master_ob("valid_load", 2);
simulate.c:                 ret = apply_master_ob("valid_inherit", 2);
# May object A inherit object b?
simulate.c:                 ret = apply_master_ob("valid_resident", 1);
# Determines if #pragma RESIDENT is ok.
simulate.c:                 apply_master_ob("loaded_object", 2);
# Called when an object has been loaded, before create()
# Needed to give objects default uid/euid.
simulate.c:                 apply_master_ob("cloned_object", 2);
# Called when an object has been cloned, before create()
# Needed to give objects default uid/euid.
simulate.c:                 apply_master_ob("destructed_object", 1);
# Called just before object is to be destructed.
simulate.c:                 ret = apply_master_ob("valid_input_to", 2);
# May the object do an input_to?
simulate.c:                 ret = apply_master_ob("valid_commands", 2);
# May the object call the commands() efun?
simulate.c:                 v = apply_master_ob("modify_path", 2);
# All path parameters except compiletime paths are handled in this call.
swap.c:                     apply_master_ob("gamedriver_message",1);
# Passes messages from the gamedriver to the mud.