I am having a little trouble adding new eq positions to my mud.
Here is some background: Circle 3.0 bpl11, with the auto-eq
patch from the ftp site. Here are the relevant sections of
code:
Structs.h:
#define WEAR_WIELD 16
#define WEAR_HOLD 17
#define WEAR_EAR_L 18 /* New EQ positions--Aleks */
#define WEAR_EAR_R 19 /* New EQ positions--Aleks */
#define WEAR_FACE 20 /* New EQ positions--Aleks */
#define NUM_WEARS 21 /* This must be the # of eq positions!! */
#define ITEM_WEAR_WIELD (1 << 13) /* Can be wielded */
#define ITEM_WEAR_HOLD (1 << 14) /* Can be held */
#define ITEM_THROW (1 << 15) /* PLACE HOLDER */
#define ITEM_LIGHT_SOURCE (1 << 16) /* PLACE HOLDER */
#define ITEM_WEAR_EAR (1 << 17) /* New EQ positions--Aleks */
#define ITEM_WEAR_FACE (1 << 18) /* New EQ positions--Aleks */
(The Place Holders are there because I have a pre-existing world, and I didnt want
to change the wear bitvectors on all the face and ear items)
Constants.c:
"<worn around wrist> ",
"<wielded> ",
"<held> ",
"<worn on ear> ", /* New EQ positions--Aleks */
"<worn on ear> ", /* New EQ positions--Aleks */
"<worn on face> " /* New EQ positions--Aleks */
};
"Worn around left wrist",
"Wielded",
"Held",
"Worn on left ear", /* New EQ positions--Aleks */
"Worn on right ear", /* New EQ positions--Aleks */
"Worn on face", /* New EQ positions--Aleks */
"\n"
};
"WRIST",
"WIELD",
"HOLD",
"EAR", /* New EQ positions--Aleks */
"FACE", /* New EQ positions--Aleks */
"\n"
};
Act.item.c:
{"$n grabs $p.",
"You grab $p."},
{"$n clips $p on $s left ear.", /* New EQ positions--Aleks */
"You clip $p on your left ear."},
{"$n clips $p on $s right ear.", /* New EQ positions--Aleks */
"You clip $p on your right ear."},
{"$n puts $p on $s face.", /* New EQ positions--Aleks */
"You put $p on your face."}
};
int wear_bitvectors[] = {
ITEM_WEAR_TAKE, ITEM_WEAR_FINGER, ITEM_WEAR_FINGER, ITEM_WEAR_NECK,
ITEM_WEAR_NECK, ITEM_WEAR_BODY, ITEM_WEAR_HEAD, ITEM_WEAR_LEGS,
ITEM_WEAR_FEET, ITEM_WEAR_HANDS, ITEM_WEAR_ARMS, ITEM_WEAR_SHIELD,
ITEM_WEAR_ABOUT, ITEM_WEAR_WAIST, ITEM_WEAR_WRIST, ITEM_WEAR_WRIST,
ITEM_WEAR_WIELD, ITEM_WEAR_TAKE, ITEM_WEAR_EAR, ITEM_WEAR_EAR, ITEM_WEAR_FACE};
"You're already wielding a weapon.\r\n",
"You're already holding something.\r\n",
/* New EQ positions--Aleks */
"You're already wearing something on your ear.\r\n",
"You're already wearing something on your face.\r\n"
};
/* for neck, finger, and wrist, try pos 2 if pos 1 is already full */
/* Added ear--New EQ positions--Aleks */
if ((where == WEAR_FINGER_R) || (where == WEAR_EAR_L) || (where == WEAR_NECK_1) || (where
== WEAR_WRIST_R))
"wrist",
"!RESERVED!",
"!RESERVED!",
"!RESERVED!",
"ear", /* New EQ positions--Aleks */
"!RESERVED!", /* New EQ positions--Aleks */
"face", /* New EQ positions--Aleks */
"\n"
};
if (CAN_WEAR(obj, ITEM_WEAR_WRIST)) where = WEAR_WRIST_R;
/* New EQ positions--Aleks */
if (CAN_WEAR(obj, ITEM_WEAR_EAR)) where = WEAR_EAR_L;
if (CAN_WEAR(obj, ITEM_WEAR_FACE)) where = WEAR_FACE;
} else {
objsave.c:
break;
case WEAR_HOLD:
if (!CAN_WEAR(obj,ITEM_WEAR_HOLD) &&
!(IS_WARRIOR(ch) &&
CAN_WEAR(obj,ITEM_WEAR_WIELD) && GET_OBJ_TYPE(obj) == ITEM_WEAPON))
locate = 0;
break;
/* New EQ positions--Aleks */
case WEAR_EAR_L:
case WEAR_EAR_R:
if (!CAN_WEAR(obj,ITEM_WEAR_EAR))
locate = 0;
break;
case WEAR_FACE:
if (!CAN_WEAR(obj, ITEM_WEAR_FACE))
locate = 0;
break;
default:
I hope you can make sense of my cutting and pasting..if not, I will edit
it and resned it with appropriate cut marks...
Here is the problem:
You can wear two earrings and one mask without a problem.
When you try to wear a third earring, it tells you you are already
wearing something on yoru face.
When you try to wear another mask, it seg faults.
Does anyone know where I am going wrong?
Thanks
Aleks
ribak@token.net
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST