>
> void check_fall(void)
> {
> int fall_dmg;
> struct char_data *ch, *next_ch;
> for (ch = character_list; ch; ch = next_ch) {
> next_ch = ch->next;
>
> if (ROOM_AFFECTED(IN_ROOM(ch), RAFF_ACID_RAIN))
> gen_damage(ch, GET_MAX_HIT(ch) * 10 / 100, SPELL_ACID_RAIN);
>
> if (ch && ((SECT(IN_ROOM(ch)) == SECT_FLYING)) && (!AFF_FLAGGED(ch, AFF_FLY
> !(IS_NPC(ch) && MOB_FLAGGED(ch, MOB_WINGS)) &&
> !(IS_NPC(ch) && MOB_FLAGGED(ch, MOB_NOACT)) &&
> !(GET_LEVEL(ch) > LVL_IMMORT)) {
>
> ... etc etc etc ...
>
Looks like you are also damaging mobs in this way, is that what you want
to do?
if not, use descriptor_list not character_list
Also, why not make gen_damage return a value type int and if the char is
freed return 0 like:
if (ROOM_AFFECTED(IN_ROOM(ch), RAFF_ACID_RAIN))
if (!gen_damage(ch, GET_MAX_HIT(ch) * 10 / 100, SPELL_ACID_RAIN))
return; /* Exit out, don't bother with the next step if
* char is gone!
*/
> (gdb) print ch
> $4 = (struct char_data *) 0x829bc08
Well, this is right because you are printint the address of ch, not the
value.
>
> *blink*
>
> (gdb) print ch->player.name
> $6 = 0x81ff3b8 "Puff dragon fractal"
Again, you are acting on mobs too, if you don't want to do that stop that
and use descriptor_list.
>
> *blink*
>
> (gdb) print *ch
> ... snip snip snip ...
> *blink*
This prints everything in the char structure.
Try print ch->in_room.
Rasdan
=--=--=--=--=--=--=--=--=--=--=
I have done so much,
with so little, James C. Thomas Jr.
for so long, Rasdan
That I can do anything Head Coder of Finality!
with nothing.
=--=--=--=--=--=--=--=--=--=--=
Finality is based upon CircleMUD 3.0, check us out:
finality.mudservices.com 5555
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST