
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
