merentha_fluffos_v2/
merentha_fluffos_v2/bin/
merentha_fluffos_v2/fluffos-2.9-ds2.03/
merentha_fluffos_v2/fluffos-2.9-ds2.03/ChangeLog.old/
merentha_fluffos_v2/fluffos-2.9-ds2.03/Win32/
merentha_fluffos_v2/fluffos-2.9-ds2.03/compat/
merentha_fluffos_v2/fluffos-2.9-ds2.03/compat/simuls/
merentha_fluffos_v2/fluffos-2.9-ds2.03/include/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/clone/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/command/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/data/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/etc/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/include/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/inherit/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/inherit/master/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/log/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/compiler/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/efuns/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/single/tests/operators/
merentha_fluffos_v2/fluffos-2.9-ds2.03/testsuite/u/
merentha_fluffos_v2/fluffos-2.9-ds2.03/tmp/
merentha_fluffos_v2/fluffos-2.9-ds2.03/windows/
merentha_fluffos_v2/lib/cfg/
merentha_fluffos_v2/lib/cfg/races/
merentha_fluffos_v2/lib/cmds/abilities/
merentha_fluffos_v2/lib/cmds/actions/
merentha_fluffos_v2/lib/cmds/spells/
merentha_fluffos_v2/lib/daemon/include/
merentha_fluffos_v2/lib/daemon/services/
merentha_fluffos_v2/lib/doc/
merentha_fluffos_v2/lib/doc/building/
merentha_fluffos_v2/lib/doc/help/classes/
merentha_fluffos_v2/lib/doc/help/general/
merentha_fluffos_v2/lib/doc/help/races/
merentha_fluffos_v2/lib/doc/help/skills/
merentha_fluffos_v2/lib/doc/help/stats/
merentha_fluffos_v2/lib/doc/man/efuns/
merentha_fluffos_v2/lib/doc/man/lfuns/
merentha_fluffos_v2/lib/doc/news/
merentha_fluffos_v2/lib/doc/old/
merentha_fluffos_v2/lib/doc/old/concepts/
merentha_fluffos_v2/lib/doc/old/lpc/constructs/
merentha_fluffos_v2/lib/doc/old/lpc/types/
merentha_fluffos_v2/lib/domains/ROOMS/
merentha_fluffos_v2/lib/domains/obj/armour/
merentha_fluffos_v2/lib/domains/obj/monsters/
merentha_fluffos_v2/lib/domains/obj/other/
merentha_fluffos_v2/lib/domains/obj/weapons/
merentha_fluffos_v2/lib/realms/petrarch/
merentha_fluffos_v2/lib/save/daemons/
merentha_fluffos_v2/lib/save/rid/
merentha_fluffos_v2/lib/save/users/a/
merentha_fluffos_v2/lib/save/users/p/
merentha_fluffos_v2/lib/save/users/t/
merentha_fluffos_v2/lib/std/login/
merentha_fluffos_v2/lib/std/obj/
merentha_fluffos_v2/win32/
// Petrarch
// Merentha Lib 1.0
// monster.c

#include <std.h>
#include "monster.h"

inherit LIVING;

void create() {
  ::create();
  enable_commands();
  add_action("commandHook", "", 1);
}

void init() {
  ::init();
}

int force_me(string str) {
  return command(str);
}

void receive_message(string msgclass, string message) {
  catch_tell(message);
}

varargs int commandHook(string arg) {
    object cobj;
    mapping nicks, als;
    string *args, *paths;
    string cmd_path, verb;
    int i,j,k;

    paths=({"/cmds/actions/", "/cmds/player/", "/cmds/abilities/", "/cmds/spells/"});
    if(verb=query_verb()) cmd_path=verb;
    else {
        cmd_path = arg;
        arg=0;
    }
    i=sizeof(paths);
    while(i--)
        if(file_exists(paths[i]+cmd_path+".c"))
            cobj = load_object(paths[i]+cmd_path);
    if (cobj) return (int)cobj->command(arg);
        if (verb=="'") return "/cmds/actions/say"->command(arg);
        if (verb==":") return "/cmds/actions/emote"->command(arg);
        if (cobj=environment(this_object()))
          if (member_array(verb, cobj->query_exits())!=-1) {
            command("go "+verb);
            return 1;
          }
    if(CHAT_D->send_message(this_object()->query_cap_name(),verb,arg)) return 1;
    if(SOCIAL_D->get_message(verb+(arg?" "+arg:""))) return 1;
    return 0;
}

int move_player(mixed dest) {
    object env=environment(this_object());
    string *exits=({}), dir=".", odir=" an unknown direction.";
    int i;

    if(!move(dest)) {
      if(env) {
        i=sizeof(exits=env->query_exits());
        while (i--)
         if (env->query_exit(exits[i])==file_name(find_object(dest))) {
           dir=" "+exits[i]+".";
           switch(exits[i]) {
            case "north": odir=" the south."; break;
            case "south": odir=" the north."; break;
            case "east": odir=" the west."; break;
            case "west": odir=" the east."; break;
            case "northwest": odir=" the southeast."; break;
            case "northeast": odir=" the southwest."; break;
            case "southwest": odir=" the northeast."; break;
            case "southeast": odir=" the northwest."; break;
            case "up": odir=" below."; break;
            case "down": odir=" above."; break;
            case "enter": odir=" the entrance."; break;
            default: odir=" the "+exits[i]; break;
           }
         }
        message("move",this_object()->query_cap_name()+" leaves"+dir,env);
      }
      env=environment(this_object());
      message("move", this_object()->query_cap_name()+" enters from"+odir,env, this_object());
      return 1;
    }
    return 0;
}

void says(string str) { force_me("say "+str); }
void emotes(string str) { force_me("emote "+str); }

varargs void catch_tell(mixed args) {} ;

int is_monster() { return 1; }