asgard/
asgard/.settings/
asgard/area/
asgard/data/clans/
asgard/data/clans/history/
asgard/data/rosters/
asgard/src/notice/
/*
 * Originally written by LordRom (omar@physio.mcgill.ca)
 * Revised by  Kyoung (uyunk00@mcl.ucsb.edu)
 */

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "merc.h"
#include "recycle.h"
#include "tables.h"
#include "lookup.h"

void do_olevel(CHAR_DATA *ch, char *argument)
{
	char buf[MAX_INPUT_LENGTH];
	char level[MAX_INPUT_LENGTH];
	char name[MAX_INPUT_LENGTH];
	BUFFER *buffer;
	OBJ_DATA *obj;
	OBJ_DATA *in_obj;
	bool found;
	int number = 0, max_found;

	found = FALSE;
	number = 0;
	max_found = 100;

	buffer = new_buf();

	argument = one_argument(argument, level);
	if (level[0] == '\0')
	{
		send_to_char("Syntax: olevel <level>\n\r", ch);
		send_to_char("        olevel <level> <name>\n\r", ch);
		return;
	}

	argument = one_argument(argument, name);
	for (obj = object_list; obj != NULL; obj = obj->next)
	{
		if (obj->level != atoi(level))
			continue;

		if (name[0] != '\0' && !is_name(name, obj->name))

			continue;

		found = TRUE;
		number++;

		for (in_obj = obj; in_obj->in_obj != NULL; in_obj = in_obj->in_obj)
			;

		if (in_obj->carried_by != NULL && can_see(ch, in_obj->carried_by)
				&& in_obj->carried_by->in_room != NULL)
			sprintf(buf, "%3d) %s is carried by %s [Room %d]\n\r", number,
					obj->short_descr, PERS(in_obj->carried_by, ch),
					in_obj->carried_by->in_room->vnum);
		else if (in_obj->in_room != NULL && can_see_room(ch, in_obj->in_room))
			sprintf(buf, "%3d) %s is in %s [Room %d]\n\r", number,
					obj->short_descr, in_obj->in_room->name,
					in_obj->in_room->vnum);
		else
			sprintf(buf, "%3d) %s is somewhere\n\r", number, obj->short_descr);

		buf[0] = UPPER(buf[0]);
		add_buf(buffer, buf);

		if (number >= max_found)
			break;
	}

	if (!found)
		send_to_char("Nothing like that in heaven or earth.\n\r", ch);
	else
		page_to_char(buf_string(buffer), ch);

	free_buf(buffer);
}

void do_mlevel(CHAR_DATA *ch, char *argument)
{
	char buf[MAX_INPUT_LENGTH];
	BUFFER *buffer;
	CHAR_DATA *victim;
	bool found;
	int count = 0;

	if (argument[0] == '\0')
	{

		send_to_char("Syntax: mlevel <level>\n\r", ch);

		return;
	}

	found = FALSE;
	buffer = new_buf();
	for (victim = char_list; victim != NULL; victim = victim->next)
	{
		if (victim->in_room != NULL && atoi(argument) == victim->level)
		{
			found = TRUE;
			count++;
			sprintf(buf, "%3d) [%5d] %-28s [%5d] %s\n\r", count,
					IS_NPC(victim) ? victim->pIndexData->vnum : 0,
					IS_NPC(victim) ? victim->short_descr : victim->name,
					victim->in_room->vnum, victim->in_room->name);
			add_buf(buffer, buf);
		}
	}

	if (!found)
		act("You didn't find any mob of level $T.", ch, NULL, argument, TO_CHAR );
	else
		page_to_char(buf_string(buffer), ch);

	free_buf(buffer);

	return;
}