From kadian@nurf.com Fri Mar 20 13:03:25 1998
Date: Fri, 20 Mar 1998 10:55:16 -0500 (EST)
From: Will <kadian@nurf.com>
To: men@algonet.se, kermit@oz.net, darkoth@rep.mudservices.com
Subject: Otype Code by Kadian

I sent this to the three of you because you either have an outdated
version or don't know what it it or just don't have it :)

Will


This function lists a type of weapon or item to the screen so
you don't need to go to a file and check it and you can check items
seperately... for example: otype weapon axe :would show all axes in all
the areas ...this way you could see which weapon types don't have enough
or have too many or you could check out items you never heard
of...anyhow...I think it's great....

otype <type> <wear/weapon>

e.g. otype light

     otype weapon axe

     otype armor hands





to add in the code quite simple...add in what you need in

interp.c and interp.h and help.are





then add the below into act_wiz.c (you may need to make saome minor
changes

if you do not have olc installed)





/* This code was written by Kadian of Distant Thunder if you have any
problems

with this code feel free to e-mail at kadian@nurf.com ...no need to give

any credit...it's a tiny snippet :) */





void do_otype(CHAR_DATA *ch, char *argument)

{

    int type;

    int type2;

    int vnum=1;

    char buf[MAX_STRING_LENGTH];

    char buffer[12 * MAX_STRING_LENGTH];

    char arg1[MAX_INPUT_LENGTH];

    char arg2[MAX_INPUT_LENGTH];

    char *item;      

    OBJ_INDEX_DATA *obj;

    bool found;





    item = one_argument(argument, arg1);

    one_argument ( item , arg2);





    found = FALSE;

    buffer [0] = '\0';





    if (arg1[0] == '\0')     

        {

        send_to_char("Type 'Help Otype' for usage\n\r",ch);

        return;

        }





    type2 = 0;





    if ((!str_cmp(arg1,"armor") || !str_cmp(arg1,"weapon"))

        && arg2[0] == NULL)

        {        

        send_to_char("Type 'Help Otype' for proper usage.\n\r",ch);

        return;

        }

    else if (!str_cmp(arg1,"armor"))

        {

        type = flag_value(type_flags,arg1);

        if ((type2 = flag_value(wear_flags,arg2)) == NO_FLAG)

          {

                send_to_char("No such armor type.\n\r",ch);

                return;      

          }

        }

    else if (!str_cmp(arg1,"weapon"))

        {

        type = flag_value(type_flags,arg1);

        if ((type2 = flag_value(weapon_class,arg2)) == NO_FLAG)

          {

                send_to_char("No such weapon type.\n\r",ch);

                return;

          }            

        }

    else

        {

            if((type = flag_value(type_flags,arg1)) == NO_FLAG)

                {

                send_to_char("Unknown Type.\n\r", ch);

                return;

                }

        }        





    for(;vnum <= top_vnum_obj; vnum++)

        {

        if((obj=get_obj_index(vnum)) != NULL)

            {

            if((obj->item_type == type && type2 == 0

                && str_cmp(arg1,"weapon") && str_cmp(arg1,"armor"))

            || (obj->item_type == type && obj->value[0] == type2

                && str_cmp(arg1,"armor"))

            || (obj->item_type == type && IS_SET(obj->wear_flags,type2)

                && str_cmp(arg1,"weapon")))    

                {

                    sprintf(buf, "%35s - %5d - Area [%d]\n\r", obj

->short_descr, vnum, obj->area->vnum);   

                    found = TRUE;

                    strcat(buffer,buf);

                }

            }

        }

    if (!found)

        send_to_char("No objects of that type exist\n\r",ch);

    else            

        if (ch->lines)

            page_to_char(buffer,ch);

        else

            send_to_char(buffer,ch);

}