Here is my proposal for the change in the monitor:

First I suggest adding an ansi include (it probably shouldnt be
the one in /open but that is the most available standard one) to
the player.c for ease of use latter.  

Also, I suggest adding the variable guild_object along with the security
measures shown here.  It could be applied in other places such as
hit_player or attack where it checks for a guild object and other
possible future uses, thus limiting which objects are allowed to use it
while not making player.c code unaccessable to other guilds and objects.

In heart beat I took out all of the monitor code and just put in that line.
I beleive the code should be all handled in monitor which it is.

And lastly I feel the monitor function should be rewritten as I've written
it here.

This current set up should allow certain guilds the oppertunity to
override the monitor in certain circumstances, not making it as wide
spread as something like pro_object but also not as limiting
as a code addition for a single guild.  It also simplifies
the output of the current monitor which as it stands is completely
written out four times with in the code.  As always any suggestions
are welcome.

Oh, and I suggest adding in a query for head_armor.
  -wocket


#include "/open/ansi.h"
#define MONITORS ({ "guild1","guild2" })

static object guild_object;
set_guild_object(object ob){ guild_object = ob; }
query_guild_object(){ return guild_object(); }

heart_beat(){
  if(attacker_ob && mon) monitor();
}

monitor(str){
  if(!str){
    if(guild_object && member_array(guild_name,MONITORS) != -1){
      if(guild_object->guild_monitor())
        return 1;
    }
    msg = "";
    if(mon == 2)
      msg += RED;
    msg += "<<<<   ";
    msg += HP "+hit_point+"/"+max_hp+" SP "+spell_points+"/"+max_spell;
    msg += " I "+intoxicated *100/(level+3)+"%";
    msg += " F "+stuffed*100/(level*8)+"%";
    msg += " S "+soaked*100/(level*8)+"%";
    msg += " T "+infuse*100/(INFUSE_LIMIT)+"%";
    if(attacker_ob)
      msg += " AHP "+attacker_ob->query_hp()*10/attacker_ob->query_mhp()+"/10";
    msg += "   >>>>\n"+NORM;
    tell_object(this_object,msg);
    return 1;
  } 
  if(str == "off){
    write("Monitor off.\n");
    mon = 0;
    return 1;
  }
  if(str == "on"){
    write("Monitof on.\n");   
    mon = 1;
    return 1;
  }
  if(str == "ansi"){
    write("Monitor on (ANSI).\n");
    mon = 2;
    return 1;
  }
}

  