
sefuns (simulated efuns)
************************

sefuns sind Funktionen, die aehnlich wie echte efuns im Driver allen
Objekten (ausser dem Masterobjekt) zur Verfuegung stehen ohne dass die
explizit geerbt werden muessen. Sie sind allerdings in LPC
implementiert und damit langsamer als efuns.

Es ist moeglich, sefuns mit demselben Namen wie efuns zu erstellen,
diese wird dann anstelle der efun gerufen. Will man ausnahmsweise aber
die efun mit dem Namen rufen, so kann dies mit der Syntax
"efun::function()" erreichen.

Verzeichnis der dokumentierten sefuns im Morgengrauen:

* CountUp()

* _notify_fail()

* break_string()

* broken_count_bits()

* cindent()

* debug_info()

* deep_present()

* dtime()

* dump_netdead()

* enable_commands()

* file_time()

* find_living()

* find_livings()

* find_netdead()

* find_player()

* getuuid()

* log_file()

* lowerchar()

* lowerstring()

* m_copy_delete()

* match_living()

* md5()

* mkdirp()

* notify_fail()

* object_info()

* old_explode()

* process_call()

* process_string()

* query_editing()

* query_idle()

* query_input_pending()

* query_ip_name()

* query_ip_number()

* query_limits()

* query_mud_port()

* query_next_reset()

* query_once_interactive()

* query_shadowing()

* query_snoop()

* query_wiz_grp()

* query_wiz_level()

* read_data()

* replace_personal()

* restore_object()

* save_object()

* send_room()

* set_heart_beat()

* set_light()

* set_living_name()

* set_object_heart_beat()

* sha1()

* shadow()

* shout()

* time2string()

* update_actions()

* upperstring()

* uptime()

* wizlist()

* wizlist_info()

* write_data()

* Verzeichnis der obsoleten und entfernten simulated efuns
