#include <kernel/kernel.h> #include <phantasmal/map.h> #include <phantasmal/lpc_names.h> inherit MOBILE; /* user associated with this mobile */ object user; static void create(varargs int clone) { ::create(clone); } /* overridden functions from mobile.c */ string get_type(void) { return "user"; } object get_user(void) { return user; } void set_user(object new_user) { if (!SYSTEM() && !COMMON() && !GAME()) { error("Only authorized objects can change the user!"); } user = new_user; } void notify_moved(object obj) { if (user) { user->notify_moved(obj); } ::notify_moved(obj); } /* * Hook function overrides */ void hook_say(object body, string message) { if (user) { user->send_phrase(body->get_brief()); user->message(" says: " + message + "\r\n"); } } void hook_emote(object body, string message) { if(user) { user->send_phrase(body->get_brief()); user->message(" " + message + "\r\n"); } } /* Args -- body, target, verb */ void hook_social(object body, object target, string verb) { string ret; if(user) { ret = SOULD->get_social_string(user, body, target, verb); if(!ret) { user->message("Error getting social string!\r\n"); } else { user->message(ret + "\r\n"); } } } void hook_whisper(object body, string message) { if (user) { user->send_phrase(body->get_brief()); user->message(" whispers to you: " + message + "\r\n"); } } void hook_whisper_other(object body, object target) { if (user) { user->send_phrase(body->get_brief()); user->message(" whispers something to "); user->send_phrase(target->get_brief()); user->message("\r\n"); } } void hook_leave(object body, int dir) { if (user) { if (dir == DIR_TELEPORT) { user->send_phrase(body->get_brief()); user->message(" disappears into thin air.\r\n"); } else { user->send_phrase(body->get_brief()) ; user->message(" leaves going "); user->send_phrase(EXITD->get_name_for_dir(dir)); user->message("\r\n"); } } } void hook_enter(object body, int dir) { if (user) { if (dir == DIR_TELEPORT) { user->send_phrase(body->get_brief()); user->message(" appears from thin air.\r\n"); } else { user->send_phrase(body->get_brief()) ; user->message(" enters from the "); user->send_phrase(EXITD->get_name_for_dir(dir)); user->message("\r\n"); } } } void from_dtd_unq(mixed* unq) { /* Set the body, location and number fields */ unq = mobile_from_dtd_unq(unq); /* User mobiles don't actually (yet) have any additional data. So we can just return. */ }