/* ************************************************************************
* file: act.obj3.c - Exoo addition
************************************************************************* */
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "spells.h"
extern struct room_data *world;
extern struct descriptor_data *descriptor_list;
extern struct room_data *world;
static int wplist[]={
65536,
2,
2,
4,
4,
8,
16,
32,
64,
128,
256,
512,
1024,
2048,
4096,
4096,
8192,
16384,
32768,
131072,
262144,
524288,
1048576,
0
};
static char *wpname[]={
"light",
"finger",
"finger",
"neck",
"neck",
"body",
"head",
"legs",
"feet",
"hands",
"arms",
"shield",
"about",
"waist",
"wrist",
"wrist",
"wield",
"hold",
"radio",
"face",
"ears",
"huh",
"ankle",
0
};
void do_dress(struct char_data *ch, char *argument, int cmd)
{
struct obj_data *obj, *nextobj, *bestobj;
int i, j, k, best, key, val;
char arg1[MAX_STRING_LENGTH];
char arg2[MAX_STRING_LENGTH];
char buffer[MAX_STRING_LENGTH];
argument_interpreter(argument, arg1, arg2);
if (*arg1) {
if(strcmp(arg1,"str")==0)
key = 1;
else if(strcmp(arg1,"dex")==0)
key = 2;
else if(strcmp(arg1,"int")==0)
key = 3;
else if(strcmp(arg1,"wis")==0)
key = 4;
else if(strcmp(arg1,"con")==0)
key = 5;
else if(strcmp(arg1,"ac")==0)
key = 17;
else if(strcmp(arg1,"hit")==0)
key = 18;
else if(strcmp(arg1,"dam")==0)
key = 19;
else if(strcmp(arg1,"mr")==0)
key = 25;
else
key = 17;
}
/*
for(i=0;i<MAX_WEAR;++i)
if(ch->equipment[i])
obj_to_char(unequip_char(ch,i),ch);
*/
for(i=0;i<MAX_WEAR;i++){
if(ch->equipment[i]) continue;
best = 0; bestobj = NULL;
for(obj = ch->carrying ; obj ; obj=nextobj){
nextobj = obj->next_content;
if(CAN_SEE_OBJ(ch,obj)){
if(CAN_WEAR(obj,wplist[i])){
for(j=0;j<MAX_OBJ_AFFECT;j++){
if(obj->affected[j].location == key){
val = obj->affected[j].modifier;
if((key==17) && (GET_ITEM_TYPE(obj)==ITEM_ARMOR))
val += obj->obj_flags.value[0];
if(val > best){
best = val;
bestobj = obj;
}
break;
}
}
}
}
}
if(bestobj){
obj_from_char(bestobj);
equip_char(ch, bestobj, i);
sprintf(buffer,"You wear (%s) the $o for %d.",wpname[i],best);
act(buffer,TRUE,ch,bestobj,0,TO_CHAR);
}
}
send_to_char("Hmm, better check it out...\n\r", ch);
}