As everyone has been very nice to post they're code, i thought i might post this snippet, it's very simple, im really just posting the idea. but if you get any use out of it, that would be great. It will allow you to create weapons which will be worn like armour but they're damage will be added to the overall damage, i have it set on my mud that only players over level 80 can use them. The usual disclaimer applies, im not responsible for this code first open structs.h ******************** where the following is #define ITEM_FOOD 19 /* Item is food */ #define ITEM_MONEY 20 /* Item is money (gold) */ #define ITEM_PEN 21 /* Item is a pen */ #define ITEM_BOAT 22 /* Item is a boat */ #define ITEM_FOUNTAIN 23 /* Item is a fountain */ add #define ITEM_WEAPONUPG 24 now open act.item.c ******************* where you find this (in do_wear) if (dotmode == FIND_ALL) { for (obj = ch->carrying; obj; obj = next_obj) { next_obj = obj->next_content; if (CAN_SEE_OBJ(ch, obj) && (GET_LEVEL(ch) >= GET_OBJ_LEVEL(obj)) && (where = find_eq_pos(ch, obj, 0)) >= 0) { items_worn++; add if (GET_OBJ_TYPE(obj) == ITEM_WEAPONUPG && GET_LEVEL(ch) < 80) { send_to_char("Sorry you must be level 80 to use a Weapon Upgrade!\r\n", ch); return; } and further down while (obj) { next_obj = get_obj_in_list_vis(ch, arg1, obj->next_content); if ((where = find_eq_pos(ch, obj, 0)) >= 0) { add in if (GET_OBJ_TYPE(obj) == ITEM_WEAPONUPG && GET_LEVEL(ch) < 80) { send_to_char("Sorry you must be level 80 to use a Weapon Upgrade!\r\n", ch); return; } and further down again if (!(obj = get_obj_in_list_vis(ch, arg1, ch->carrying))) { sprintf(buf, "You don't seem to have %s %s.\r\n", AN(arg1), arg1); send_to_char(buf, ch); } else if (GET_LEVEL(ch) < GET_OBJ_LEVEL(obj)) send_to_char("You are not experienced enough to use that.\r\n", ch); else { if ((where = find_eq_pos(ch, obj, arg2)) >= 0) { add if (GET_OBJ_TYPE(obj) == ITEM_WEAPONUPG && GET_LEVEL(ch) < 80) { send_to_char("Sorry you must be level 80 to use a Weapon Upgrade! \r\n", ch); return; } now open constants.c ******************** down in ITEM_x add this at the end "WEAPON UPGRADE", now open fight.c **************** at the start of void hit(struct char_data * ch, struct char_data * victim, int type) { add struct obj_data *wielded2 = GET_EQ(ch, WEAR_WRIST_L); struct obj_data *wielded3 = GET_EQ(ch, WEAR_WRIST_R); struct obj_data *wielded4 = GET_EQ(ch, WEAR_FINGER_L); struct obj_data *wielded5 = GET_EQ(ch, WEAR_FINGER_R); (the positions can be changed as you like, or more entered) then after /* Maybe holding arrow? */ if (wielded && GET_OBJ_TYPE(wielded) == ITEM_WEAPON) { /* Add weapon-based damage if a weapon is being wielded */ dam += dice(GET_OBJ_VAL(wielded, 1), GET_OBJ_VAL(wielded, 2)); } add if (wielded2 && GET_OBJ_TYPE(wielded2) == ITEM_WEAPONUPG) { dam += dice(GET_OBJ_VAL(wielded2, 1), GET_OBJ_VAL(wielded2, 2)); } if (wielded3 && GET_OBJ_TYPE(wielded3) == ITEM_WEAPONUPG) { dam += dice(GET_OBJ_VAL(wielded3, 1), GET_OBJ_VAL(wielded3, 2)); } if (wielded4 && GET_OBJ_TYPE(wielded4) == ITEM_WEAPONUPG) { dam += dice(GET_OBJ_VAL(wielded4, 1), GET_OBJ_VAL(wielded4, 2)); } if (wielded5 && GET_OBJ_TYPE(wielded5) == ITEM_WEAPONUPG) { dam += dice(GET_OBJ_VAL(wielded5, 1), GET_OBJ_VAL(wielded5, 2)); } now open spells.c ***************** where this is in ASPELL(spell_identify) case ITEM_WEAPON: add case ITEM_WEAPONUPG: just underneath it ********IF YOU HAVE OLC********** open olc.h/oasis.h ****************** where there is a define for NUM_ITEM_TYPES add one to the number thats there open oedit.c ************ where the 4 variables are set for an object depending on what it is, put case ITEM_WEAPONUPG: under all the "case ITEM_WEAPON:" you find in the file That should be it, if you do use my code, i'd like to know my e-mail is m_gally@hotmail.com (Subliminal)