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 <stdlib.h>
/* #include <unistd.h> */
#include <sys/types.h>
#include <string.h>

#include "global.h"
#include "bug.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "spells.h"
#include "trap.h"
#include "utils.h"
#define _SOUND_C
#include "sound.h"

int RecGetObjRoom(struct obj_data *obj)
{
    if (DEBUG > 2)
	log_info("called %s with %s", __PRETTY_FUNCTION__, SAFE_ONAME(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));
    }
    return -1;						       /* This is an invalid room index... hope real_roomp()
							        * works */
}

void MakeNoise(int room, char *local_snd, char *distant_snd)
{
    int                                     door = -1;
    struct char_data                       *ch = NULL;
    struct room_data                       *rp = NULL;
    struct room_data                       *orp = NULL;

    if (DEBUG > 2)
	log_info("called %s with %d, %s, %s", __PRETTY_FUNCTION__, room, VNULL(local_snd),
		 VNULL(distant_snd));

    rp = real_roomp(room);

    if (rp) {
	for (ch = rp->people; ch; ch = ch->next_in_room) {
	    if (!IS_NPC(ch) && local_snd &&
		!IS_SET(ch->specials.act, PLR_DEAF) && (GET_POS(ch) != POSITION_SLEEPING))
		cprintf(ch, "%s", local_snd);
	}

	for (door = 0; door < MAX_NUM_EXITS; 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) && distant_snd && (!IS_SET(ch->specials.act, PLR_DEAF)
						       && (GET_POS(ch) != POSITION_SLEEPING))) {
			cprintf(ch, "%s", distant_snd);
		    }
		}
	    }
	}
    }
}

void MakeSound(int current_pulse)
{
    int                                     room = -1;	       /* default is bad value */
    struct obj_data                        *obj = NULL;
    struct char_data                       *ch = NULL;
    char                                    buffer[MAX_INPUT_LENGTH] = "\0\0\0\0\0\0\0";

    if (DEBUG > 2)
	log_info("called %s with %d", __PRETTY_FUNCTION__, current_pulse);

    for (obj = object_list; obj; obj = obj->next) {
	if (ITEM_TYPE(obj) == ITEM_AUDIO) {
	    if (((obj->obj_flags.value[0]) &&
		 (current_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) {
		if (number(0, 1) == 1)
		    cprintf(ch, "%s", real_roomp(ch->in_room)->sound);
		else if (real_roomp(ch->in_room)->distant_sound)
		    cprintf(ch, "%s", real_roomp(ch->in_room)->distant_sound);
	    }
	}
    }

/* 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) {
		    static char                             Snore[] =
			"You hear a loud snore nearby.\r\n";

		    sprintf(buffer, "%s snores loudly.\r\n", ch->player.short_descr);
		    MakeNoise(ch->in_room, buffer, Snore);
		}
	    } else if (GET_POS(ch) == ch->specials.default_pos) {
		MakeNoise(ch->in_room, ch->player.sounds, ch->player.distant_snds);
	    }
	}
    }
}