/
area/city/
area/crypts/
area/guilds/
area/psuedowild/
area/religion/
data/documents/MPDocs/
data/html/
data/mobprogs/
data/quest/
data/world/
data/world/_utilities/
data/world/images/
design/html/
notes/
player/
#include <sys/types.h>
#include <stdio.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
#include "act_pully.h"


const struct pullyaction_type pullyaction_table[] =
{
    {"no action"},
    {"open door"},
    {"close door"},
    {"create item"},
    {"create mobile"},
    
    {NULL},
};

const struct pully_stat_type pully_stat_table[] =
{
    {"no requirement",      -1},
    {"Strength",            STAT_STR},
    {"Wisdom",              STAT_WIS},
    {"Intelligence",        STAT_INT},
    {"Constitution",        STAT_CON},
    {"Dexterity",           STAT_DEX},
    {"Level",               -1},
    {"Class",               -1},
    {NULL, -2},
};

/*
 * pully_lookup()
 *
 * Takes the name, and returns table value of pully
 */
int pully_lookup(const char *name)
{
    int i;
    
    for (i = 0; i < MAX_PULLY; i++)
    {
        if (pullyaction_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (pullyaction_table[i].name[0]) && !str_prefix (name, pullyaction_table[i].name))
            return i;
    }
    return -1;
}

/*
 * pully_stat_lookup()
 *
 * Takes name, returns table value of the action
 */
int pully_stat_lookup(const char *name)
{
    int i;
    
    for (i = 0; i < MAX_PULLY; i++)
    {
        if (pully_stat_table[i].name == NULL)
            break;
        if (LOWER (name[0]) == LOWER (pully_stat_table[i].name[0]) && !str_prefix (name, pully_stat_table[i].name))
            return i;
    }
    return -1;
}

/*
 * pully_name_lookup()
 *
 * Wrapper, i had some cool stuff in here, removed it ;(
 */
char * pully_name_lookup(int value)
{
    return pullyaction_table[value].name;
    
}

/*
 * cmd_pull()
 *
 * Ye pull command. Phrases the object's values and produces the
 * results.
 */
void cmd_pull(CHAR_DATA * ch, char *argument)
{
    char buf[MSL];
    char arg[MSL];
    OBJ_DATA * obj;
    OBJ_INDEX_DATA *pObjIndex;
    OBJ_DATA *create;
    
    argument = one_argument (argument, arg);
    
    if (arg[0] == '\0')
    {
        stc("Pull on what item?\n", ch);
        return;
    }
    
    /* Boredom command ;) */
    if (!str_prefix (arg, "self"))
    {
        stc("You pull on yourself for a little while. You fail to reach enlightment.\n", ch);
        return;
    }
    
    obj = get_obj_here (ch, arg);
    
    if (obj == NULL)
    {
        sprintf(buf, "You do not see any '%s' here to pull!\n", arg);
        stc(buf, ch);
        return;
    }
    
    if (obj->item_type != ITEM_PULLY)
    {
        sprintf(buf, "You search around %s looking for something to pull, but cannot find anything.\n",
            obj->short_descr);
        stc(buf, ch);
        return;
    }
    /* Ok its a pully, lets pull the thing! */
    sprintf(buf, "You pull on %s.\n", obj->short_descr);
    stc(buf, ch);
    
    switch(obj->value[2])
    {   default:
        case 0: /* No action */
            break;
        case 1:
            /* Ok we open a door, requires a room, and a direction 
            if ((location = find_location (ch, obj->value[3])) == NULL)
            {
                log_string("cmd_pull: obj: (): Invalid room!\n");
                return;
            }
        */
            break;
            
        case 3:
            /* Create an item. Wheeww. Not too hard really. Creates it at location */
            if ((pObjIndex = get_obj_index (obj->value[4])) == NULL)
            {
                log_string("cmd_pull: obj: (): Invalid obj vnum!\n");
                return;
            }
            
            create = create_object (pObjIndex, pObjIndex->level);
            obj_to_room (create, ch->in_room);
            act ("$p drops to the floor!", NULL, create, NULL, TO_ROOM);
            sprintf(buf, "%s drops to the floor!\n", create->short_descr);
            stc(buf, ch);
            break;
    }
    
    
}

/*
    {"no action"},
    {"open door"},
    {"close door"},
    {"create item"},
    {"create mobile"},

 V0 = Statistic to use
 V1 = Minimum requirement
 V2 = Action (open, close, create)
 V3 = Vnum of room to do this in
 V4 = Direction/Item vnum/Mob vnum
*/