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_debug()

* send_room()

* set_heart_beat()

* 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
