/** * * event trickle shadow * @author Terano * */ inherit "/std/effect_shadow"; #include <move_failures.h> int query_event() { return 1; } /* query_event() */ private int do_eat_clothes(object *obs); void event_enter( object objecty, string mess, object from ) { if (living(objecty)) { objecty->add_command("eat", player, "<indirect:object:direct-obs> {from|off} " "<direct:living:here>", (: do_eat_clothes($1) :)); } player->event_enter( objecty, mess, from ); } /* event_enter() */ private int do_eat_clothes(object *obs) { object *clothes; clothes = arg(); obs = obs & clothes; if (!sizeof(obs)) { write("Argh in space!\n"); return 0; } return sizeof(filter(obs->do_clothing_eat(), (: $1 :))); } /* do_eat_clothes() */ void init_eat_clothes_command() { object ob; foreach (ob in all_inventory(environment(player))) { if (living(ob) && ob != player) { tell_creator("pinkfish", "Init %O (%O)\n", ob, player); ob->add_command("eat", player, "<indirect:object:direct-obs> {from|off} " "<direct:living:here>", (: do_eat_clothes($1) :)); } } } /* init_eat_clothes_command() */ /** * Shadow move so that we can keep track of when we move somewhere more * interesting. */ int move(mixed dest, string msgin, string msgout) { int ret; ret = player->move(dest, msgin, msgout); if (ret == MOVE_OK) { init_eat_clothes_command(); } return ret; } /* move() */