/* scryer object */
inherit "inherit/timer";
object old_room, master, eye_controller;
void reset(status arg) {
if(arg) return;
set_living_name("wizard eye");
enable_commands();
}
status query_npc() { return 1; }
status id(string str) {
return str == "spell"
|| str == "wizard eye";
}
void eye(object who) {
if(!who) {
destruct(this_object());
return;
}
master = who;
}
void time_out() {
if(master) {
tell_object(master,"The wizard eye dispels.\n");
}
if(eye_controller) destruct(eye_controller);
::time_out();
}
void dispel_magic() { time_out(); }
void new_room(string str) {
object ob;
if(!str) return;
if(!(master || eye_controller)) {
time_out();
return;
}
if(!old_room) move_object(this_object(), environment());
command(str, this_object());
if(!old_room || environment(old_room) != environment()
|| str == "l" || str == "look") {
write(
"#################################################################\n"+
"Wizard Eye->\n");
environment()->long(0);
this_player()->show_inventory(environment());
write("\n"+
"#################################################################\n");
old_room = environment();
return;
}
if(sscanf(str,"look at %s",str)) {
if(!environment()->look_at(str)) {
if(ob = present(str, environment())) {
write(
"#################################################################\n"+
"Wizard Eye->\n");
ob->long(0);
write(
"\n#################################################################\n");
}
else {
write(
"#################################################################\n"+
"Wizard Eye->There is no "+ str +" here.\n\n"+
"#################################################################\n");
}
}
return;
}
write("###Wizard Eye->You refocus the eye.\n\n###\n");
}
void catch_tell(string str) {
if(!(master || eye_controller)) {
time_out();
return;
}
if(environment(master) != environment()) {
tell_object(master,
"#################################################################\n"+
"Wizard Eye->\n"+ str +"\n"+
"#################################################################\n");
}
}
status cast_spell(object caster,object target,object prev,int level) {
object ob;
string who;
if((ob = present("eye", caster))) {
if(ob->query_wizard_eye()) {
ob = (object)ob->query_wizard_eye();
write("You extend the time of your wizard eye spell.\n");
ob->adj_time(level * 60);
destruct(this_object());
return 1;
}
else {
destruct(ob);
}
}
eye_controller = clone_object("skills/obj/eye");
eye_controller->set_wizard_eye(this_object());
move_object(eye_controller, caster);
master = caster;
adj_time(level * 60);
write("Your 'minds eye' focuses upon this area. You can move it\n"+
"with 'eye <direction>'.\n");
say(caster->query_name() +" continues to concentrate.\n");
return 1;
}
/* Native Mode Move */
#include <move.h>