#include <lib.h> #include <rooms.h> inherit LIB_ITEM; inherit LIB_PRESS; int check_environs(); int vanish_count = 50; int presses = 3; static void create() { item::create(); AddSave( ({ "presses", "vanish_count" }) ); SetKeyName("omni"); SetId(({"omni","Omni","device"})); SetShort("an omni"); SetLong("This is a small, round metal device, copper in color, "+ "and similar in appearance to a pocket watch. There is a blinking red light "+ "next to the tiny metal button at its top."); SetMass(10); SetDollarCost(300); AddItem("button", "A button on the omni."); AddItem(({"light","red light"}) , "A blinking red light."); } void init() { ::init(); check_environs(); } mixed CanPress(object who, string target) { if(!present(this_object()->GetKeyName(),who ) && target == "button"){ return "You do not have the Omni!"; } if(this_object()->GetId() == target){ return "You cannot push that."; } return 1; } mixed eventPress(object who, string where) { object *rooms = objects( (: inherits(LIB_ROOM, $1) :) ); object target; int success = 0; if(!presses){ write("Click."); return 1; } rooms = filter(rooms, (: member_array(base_name($1), ({ ROOM_START, ROOM_FURNACE, ROOM_VOID, ROOM_POD, ROOM_DEATH, ROOM_WIZ, ROOM_ARCH, ROOM_NETWORK, ROOM_ROUTER, LIB_FURNACE, ROOM_FREEZER }) ) == -1 && strsrch(base_name($1),"/realms/") && !inherits(LIB_FURNACE,$1) && !($1->GetVirtual() && !grepp(base_name($1),",")) && last_string_element(base_name($1),"/") != "death" :) ); say(who->GetName()+" turns "+dbz_colors("multicolored")+" and disappears!"); write("You feel momentarily disoriented and find yourself elsewhere!"); while(!success){ target = rooms[random(sizeof(rooms)-1)]; success = who->eventMove(target); } presses--; who->eventDescribeEnvironment(); tell_room(target, "With a multicolored flash, "+who->GetName()+ " appears!",who); return 1; } void heart_beat(){ object *holders = filter(containers(this_object()), (: interactive($1) :) ); if(sizeof(holders)) vanish_count--; if(vanish_count < 0){ tell_object(environment(),"The omni glows brightly and disappears!"); this_object()->eventDestruct(); } if(vanish_count == 5){ tell_object(environment(),"The omni begins to glow a dull red."); this_object()->SetLong("This is a small, round metal device, copper in color, "+ "and similar in appearance to a pocket watch. There is a blinking red light "+ "next to the tiny metal button at its top. It is glowing a dull red."); this_object()->SetShort("an omni (glowing)"); } } int check_environs(){ if( interactive(environment()) ){ set_heart_beat(10); } return 1; }