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