Пример #1
0
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));
  }
}
Пример #2
0
static int ObjNoise(struct obj_data *obj,struct char_data *ch, int pulse)
{
  int room;

  if (!obj->action_description) return(0);
  if (!ITEM_TYPE(obj,ITEM_AUDIO)) return(0);
  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);
    MakeNoise(room, obj->action_description, obj->action_description);
    return(1);
  }
  return(0);
}
Пример #3
0
MakeSound(int pulse)
{
  int room;
  char buffer[128];
  struct obj_data *obj;
  struct char_data *ch;

/*
 *  objects
 */
  
  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);
	}
      }
    }
  }

/*
 *   mobiles
 */

  for (ch = character_list; ch; ch = ch->next) {
    if (IS_NPC(ch) && (ch->player.sounds) && (number(0,5)==0)) {
      if (ch->specials.default_pos > POSITION_SLEEPING) {
	if (GET_POS(ch) > POSITION_SLEEPING) {
	  /*
	   *  Make the sound;
	   */
	  MakeNoise(ch->in_room, ch->player.sounds, ch->player.distant_snds);
	} else if (GET_POS(ch) == POSITION_SLEEPING) {
	  /*
	   * snore 
	   */	 
	  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) {
	/*
	 * Make the sound
	 */       
	MakeNoise(ch->in_room, ch->player.sounds, ch->player.distant_snds);
      }
    }
  }
}