TinyMAZE/
TinyMAZE/config/
TinyMAZE/doc/
TinyMAZE/run/msgs/
TinyMAZE/src/
TinyMAZE/src/db/
TinyMAZE/src/ident/
TinyMAZE/src/io/
TinyMAZE/src/prog/
TinyMAZE/src/softcode/
TinyMAZE/src/util/
#include <stdio.h>
#include <string.h>
#include "db.h"
#include "externs.h"

void notify(OBJ *player, char *msg)
{
  raw_notify(player, msg, 1);

  if(player->flags & PUPPET && player->owner != player &&
    player->owner->location != player->location)
  {
    raw_notify(player->owner,
      tprintf("%s|+W|> %s", name(player), msg), 1);
  }
}

void notify_in(OBJ *room, OBJ *exception, char *msg)
{
  OBJ *o;

  for(o = room->contents;o;o = o->next_con)
     if(o != exception)
       notify(o, msg);
}

void notify_in2(OBJ *room, OBJ *exception1, OBJ *exception2, char *msg)
{
  OBJ *o;

  for(o = room->contents;o;o = o->next_con)
    if(o != exception1 && o != exception2)
      notify(o, msg);
}

void notify_all(char *arg, OBJ *exception)
{
  DDATA *d;
  OBJ *list[100];
  int i, ctr = 0;

  for(d = descriptor_list;d;d = d->next)
  {
    if(!check_state(d, STATE_CONNECTED) || d->player == exception)
      continue;
    for(i = 0;i < ctr;++i)
      if(list[i] == d->player)
        break;
    if(i == ctr)
    {
      notify(d->player, arg);
      list[ctr++] = d->player;
    }
  }
}

/* Just like notify_all() but doesn't send to people who are NO_WALLS. */
void notify_except_flag(char *arg, OBJ *exception, unsigned long flag)
{
  DDATA *d;
  OBJ *list[100];
  int i, ctr = 0;

  for(d = descriptor_list;d;d = d->next)
  {
    if(!check_state(d, STATE_CONNECTED) || d->player == exception ||
       d->player->flags & flag)
      continue;
    for(i = 0;i < ctr;++i)
      if(list[i] == d->player)
        break;
    if(i == ctr)
    {
      notify(d->player, arg);
      list[ctr++] = d->player;
    }
  }
}

/* Just like notify_all() but doesn't check if the descriptor is connected */
/* Also doesn't support color */
/* Made for the db loading routine */
void notify_all2(char *arg, OBJ *exception)
{
  DDATA *d;

  for(d = descriptor_list;d;d = d->next)
  {
/* Check for d->player here because on reboot d->player is NULL until */
/* reference_db() is called...but we still want to send the */
/* descriptor messages while the MAZE is rebooting */
    if(d->player && d->player == exception)
      continue;
    queue_string(d, arg, 1);
  }
}