wileymud-1.187b/
wileymud-1.187b/attic/
wileymud-1.187b/attic/bin/
wileymud-1.187b/attic/lib/
wileymud-1.187b/attic/lib/adm/
wileymud-1.187b/attic/lib/man/
wileymud-1.187b/attic/lib/new-wld/
wileymud-1.187b/attic/lib/new-wld/default/
wileymud-1.187b/attic/lib/old/
wileymud-1.187b/attic/lib/wld/
wileymud-1.187b/attic/public_html/
wileymud-1.187b/attic/public_html/gfx/
wileymud-1.187b/attic/src/bin/
wileymud-1.187b/attic/src/etc/
wileymud-1.187b/attic/src/libauth-4.0-p5/
wileymud-1.187b/attic/src/sedna/
wileymud-1.187b/backups/
wileymud-1.187b/bin/
wileymud-1.187b/docs/
wileymud-1.187b/etc/
wileymud-1.187b/lib/
wileymud-1.187b/lib/adm/
wileymud-1.187b/lib/boards/
wileymud-1.187b/lib/log/
wileymud-1.187b/lib/man/
wileymud-1.187b/lib/ply/
wileymud-1.187b/lib/ply/a/
wileymud-1.187b/lib/ply/b/
wileymud-1.187b/lib/ply/c/
wileymud-1.187b/lib/ply/d/
wileymud-1.187b/lib/ply/g/
wileymud-1.187b/lib/ply/k/
wileymud-1.187b/lib/ply/m/
wileymud-1.187b/lib/ply/s/
wileymud-1.187b/lib/ply/t/
wileymud-1.187b/public_html/gfx/
wileymud-1.187b/src/bin/
wileymud-1.187b/src/convert/attic/
wileymud-1.187b/src/convert/obj/
wileymud-1.187b/src/convert/perl/
wileymud-1.187b/src/convert/perl/MudConvert/
wileymud-1.187b/src/convert/perl/MudConvert/DUMP/
wileymud-1.187b/src/convert/perl/MudConvert/Report/
wileymud-1.187b/src/convert/perl/MudConvert/WileyMUD/
wileymud-1.187b/src/convert/perl/output/
wileymud-1.187b/src/convert/perl/output/DUMP/
wileymud-1.187b/src/convert/perl/output/Report/
wileymud-1.187b/src/convert/perl/output/WileyMUD/
wileymud-1.187b/src/etc/
wileymud-1.187b/src/etc/init.d/
wileymud-1.187b/src/etc/rc.d/
wileymud-1.187b/src/etc/rc.d/init.d/
wileymud-1.187b/src/lib/
wileymud-1.187b/src/lib/adm/
wileymud-1.187b/src/lib/boards/
wileymud-1.187b/src/lib/log/
wileymud-1.187b/src/lib/man/
wileymud-1.187b/src/lib/ply/
wileymud-1.187b/src/lib/ply/a/
wileymud-1.187b/src/lib/ply/b/
wileymud-1.187b/src/lib/ply/c/
wileymud-1.187b/src/lib/ply/d/
wileymud-1.187b/src/lib/ply/e/
wileymud-1.187b/src/lib/ply/f/
wileymud-1.187b/src/lib/ply/g/
wileymud-1.187b/src/lib/ply/h/
wileymud-1.187b/src/lib/ply/i/
wileymud-1.187b/src/lib/ply/j/
wileymud-1.187b/src/lib/ply/k/
wileymud-1.187b/src/lib/ply/l/
wileymud-1.187b/src/lib/ply/m/
wileymud-1.187b/src/lib/ply/n/
wileymud-1.187b/src/lib/ply/o/
wileymud-1.187b/src/lib/ply/p/
wileymud-1.187b/src/lib/ply/q/
wileymud-1.187b/src/lib/ply/r/
wileymud-1.187b/src/lib/ply/s/
wileymud-1.187b/src/lib/ply/t/
wileymud-1.187b/src/lib/ply/u/
wileymud-1.187b/src/lib/ply/v/
wileymud-1.187b/src/lib/ply/w/
wileymud-1.187b/src/lib/ply/x/
wileymud-1.187b/src/lib/ply/y/
wileymud-1.187b/src/lib/ply/z/
wileymud-1.187b/src/obj/
wileymud-1.187b/src/utils/
wileymud-1.187b/src/utils/mobmaker/
#include <stdio.h>
#include <string.h>

#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "spells.h"
#include "trap.h"

/* extern variables */

extern struct obj_data *object_list;
extern struct char_data *character_list;

int RecGetObjRoom(struct obj_data *obj) 
{
  if (obj->in_room != NOWHERE) {
    return(obj->in_room);
  }
  if (obj->carried_by) {
    return(obj->carried_by->in_room);
  }
  if (obj->equipped_by) {
    return(obj->equipped_by->in_room);
  }
  if (obj->in_obj) {
    return(RecGetObjRoom(obj->in_obj));
  }
}

void MakeNoise(int room, char *local_snd, char *distant_snd)
{
  int door;
  struct char_data *ch;
  struct room_data *rp, *orp;
  rp = real_roomp(room);
  
  if (rp) 
  {
    for (ch = rp->people; ch; ch = ch->next_in_room) 
    {
      if (!IS_NPC(ch) &&
	  !IS_SET(ch->specials.act,PLR_DEAF) &&
	  (GET_POS(ch) != POSITION_SLEEPING)) 
         send_to_char(local_snd, ch);
    }

    for (door = 0; door <= 5; door++) 
    {
      if (rp->dir_option[door] && (orp = real_roomp(rp->dir_option[door]->to_room)) ) 
      {
	for (ch = orp->people; ch; ch = ch->next_in_room) 
	{
	  if (!IS_NPC(ch) && 
	     (!IS_SET(ch->specials.act, PLR_DEAF) && 
	     (GET_POS(ch)!=POSITION_SLEEPING))) 
	  {
   	     send_to_char(distant_snd, ch);
	  }
	}
      }
    }
  }
}

MakeSound(int pulse)
{
  int room;
  char buffer[128];
  struct obj_data *obj;
  struct char_data *ch;

  for (obj = object_list; obj; obj = obj->next) 
  {
    if (ITEM_TYPE(obj) == ITEM_AUDIO) 
    {
      if (((obj->obj_flags.value[0]) && 
         (pulse % obj->obj_flags.value[0])==0) ||
	 (!number(0,5))) 
      {
	if (obj->carried_by) 
	{
	  room = obj->carried_by->in_room;
	}
        else 
        if (obj->equipped_by) {
	  room = obj->equipped_by->in_room;
	} else if (obj->in_room != NOWHERE) {
	  room = obj->in_room;
	} else {
	  room = RecGetObjRoom(obj);
	} /*
	 *  broadcast to room
	 */
	
	if (obj->action_description) {	  
	  MakeNoise(room, obj->action_description, obj->action_description);
	}
      }
    }
  }

/*
 * rooms
 */

  for(ch = character_list;ch;ch=ch->next)
  {
    if((IS_PC(ch)) && 
       (number(0,8) == 0 ) && 
       (IS_NOT_SET(ch->specials.act,PLR_DEAF)) &&
       (GET_POS(ch) > POSITION_SLEEPING)
      )
    {
      if(real_roomp(ch->in_room)->sound != 0)
      {
	if(number(0,1)==1)
          send_to_char(real_roomp(ch->in_room)->sound, ch);
        else
        if(real_roomp(ch->in_room)->distant_sound != 0)
	  send_to_char(real_roomp(ch->in_room)->distant_sound,ch);
      }
    }
  }
      
/*
 *   mobiles
 */

  for (ch = character_list; ch; ch = ch->next) 
  {
    if (IS_NPC(ch) && (ch->player.sounds) && (number(0,7)==0)) 
    {
      if (ch->specials.default_pos > POSITION_SLEEPING) 
      {
	if (GET_POS(ch) > POSITION_SLEEPING) 
	{
	  MakeNoise(ch->in_room, ch->player.sounds, ch->player.distant_snds);
	}
	else
	if (GET_POS(ch) == POSITION_SLEEPING) 
	{
	  sprintf(buffer, "%s snores loudly.\n\r", ch->player.short_descr);
	  MakeNoise(ch->in_room, buffer, "You hear a loud snore nearby.\n\r");
	}
      }
      else
      if (GET_POS(ch) == ch->specials.default_pos) 
      {
	MakeNoise(ch->in_room, ch->player.sounds, ch->player.distant_snds);
      }
    }
  }
}