I'd say coding problem - see below
> It seems it is just showing the extra description for the rose, not the long
> description. Thats why I asked.
> If it displays the extra description, which it appears to be, it will
> not show the glowing effect.. Change the keyword for the extra description
> and see if it works for ya.
>
This all occurs due to the implementation of 'look at <object>'. Currently
the code first does a generic_find(), then searches through the eq, inventory
and room of the caller to find a matching extra description. If an extra desc
is matched, it's shown. However, if an object _was_ found in the first call
to generic_find(), it's the appropriate effect (glow, hum, etc) that's shown.
This means, that if an object (obj1) has the same keywords as the extra
description of something in the room/on the character, obj1's effects will
be sent after the extra description.
the result is:
obj1 name: white rose - extra desc: rose bits: glow
obj2 name: moonstone - extra desc: white moonstone bits: none
'l rose' -> obj1 found, extra desc for obj1 shown, then effects for obj1
'l moonstone' -> obj2 found, extra desc for obj2 shown
'l white' -> obj1 found, extra desc for obj2 shown, then effects for obj1
This is buggy behaviour - change the following to show only effects
belonging to a particular object (sorry about the formatting):
in act.informative.c:void look_at_target
/* Does the argument match an extra desc in the char's equipment? */
for (j = 0; j < NUM_WEARS && !found; j++)
if (GET_EQ(ch, j) && CAN_SEE_OBJ(ch, GET_EQ(ch, j)))
if ((desc = find_exdesc(arg, GET_EQ(ch, j)->ex_description)) != NULL && ++i == fnum) {
send_to_char(desc, ch);
+ found_obj = GET_EQ(ch,j);
found = TRUE;
}
/* Does the argument match an extra desc in the char's inventory? */
for (obj = ch->carrying; obj && !found; obj = obj->next_content) {
if (CAN_SEE_OBJ(ch, obj))
if ((desc = find_exdesc(arg, obj->ex_description)) != NULL && ++i == fnum) {
send_to_char(desc, ch);
+ found_obj = obj;
found = TRUE;
}
}
/* Does the argument match an extra desc of an object in the room? */
for (obj = world[ch->in_room].contents; obj && !found; obj = obj->next_content)
if (CAN_SEE_OBJ(ch, obj))
if ((desc = find_exdesc(arg, obj->ex_description)) != NULL && ++i == fnum) {
send_to_char(desc, ch);
+ found_obj = obj;
found = TRUE;
}
That should do the trick. Usual disclaimer applies - use at own risk, etc.
Welcor
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST