#include <kernel/user.h> #include <kernel/kernel.h> #include <phantasmal/log.h> #include <phantasmal/lpc_names.h> static int suspended, shutdown; void upgraded(varargs int clone); static void create(varargs int clone) { if(clone) { error("Can't clone TelnetD!"); } upgraded(); } void upgraded(varargs int clone) { if(!SYSTEM()) return; /* The default user object isn't a System program any more, so any Common or System things that it'll need compiled should be compiled for it here. Ditto for PHANTASMAL_USER. */ if(!find_object(US_SCROLL_TEXT)) compile_object(US_SCROLL_TEXT); if(!find_object(SYSTEM_USER_OBJ)) compile_object(SYSTEM_USER_OBJ); if(!find_object(DEFAULT_USER_OBJ)) compile_object(DEFAULT_USER_OBJ); } void suspend_input(int shutdownp) { if(!SYSTEM() && !KERNEL()) return; if(suspended) LOGD->write_syslog("Suspended again without release!", LOG_ERR); suspended = 1; if(shutdownp) shutdown = 1; } void release_input(void) { if(!SYSTEM() && !KERNEL()) return; if(!suspended) LOGD->write_syslog("Released without suspend!", LOG_ERR); suspended = 0; } object select(string str) { object game_driver; if(!SYSTEM() && !KERNEL()) return nil; game_driver = CONFIGD->get_game_driver(); if(game_driver) return game_driver->new_user_connection(str); return clone_object(DEFAULT_USER_OBJ); } int query_timeout(object connection) { if(!SYSTEM() && !KERNEL()) error("Invalid call to query_timeout!"); if(suspended || shutdown) return -1; return DEFAULT_TIMEOUT; } string query_banner(object connection) { object game_driver; if(!SYSTEM() && !KERNEL()) return nil; game_driver = CONFIGD->get_game_driver(); if(!game_driver) { if(shutdown) return "MUD is shutting down... Try again later.\n"; if(suspended) return "MUD is suspended. Try again in a minute or two.\n"; return "Phantasmal (no gamedriver)\n\nLogin: "; } if(shutdown) return game_driver->get_shutdown_message(connection); if(suspended) return game_driver->get_suspended_message(connection); return game_driver->get_welcome_message(connection); }