Brian,
Heres a working version of the code you posted a while back.
Fixes the problem with the 'for' loop never actually changing.
Fixes the problem that if there is no dir_option[5] your mud would crash as
the code never checked that dir_option[5] was not NULL before trying to
access world[ch->in_room].cir_option[5]->to_room
Fixes problem that the CASEs were upside down, and none had break
statements
Adds making the player actually look at each room as they drop, or else
they wouldnt get a feeling of dropping, theyd only get a message to know
they even moved
Still a problem if you are in the AIR and there is no down exit you will
stop in mid air. With judicious building, itll work i guess, that being
a down door from any 'in the air' room
void fall_char(struct char_data *ch) {
int rooms_fallen, down_room, dam;
if (IS_NPC(ch))
return;
rooms_fallen = 1; /* Falling in the same room is considered 1 room */
if (world[ch->in_room].dir_option[5]) {
down_room = world[ch->in_room].dir_option[5]->to_room;
for (; down_room; down_room=world[ch->in_room].dir_option[5]->to_room) {
rooms_fallen++;
send_to_char("You fall!\r\n", ch);
char_from_room(ch);
char_to_room(ch, down_room);
look_at_room(ch, 0);
if (!(world[ch->in_room].dir_option[5]))
break;
}
}
switch(rooms_fallen) {
case 1:
dam = GET_MAX_HIT(ch) * .9;
break;
case 2:
dam = GET_MAX_HIT(ch) * .66;
break;
case 3:
dam = GET_MAX_HIT(ch) * .3;
break;
case 4:
dam = GET_MAX_HIT(ch) * .2;
break;
default:
dam = GET_MAX_HIT(ch); /* ouch */
break;
}
GET_HIT(ch) = dam;
send_to_char("You hit the ground with a loud THUD!\r\n", ch);
act("$n falls onto the ground with a THUD!", FALSE, ch, 0, 0, TO_ROOM);
};
*******************************************************************
* Ron Hensley ron@dmv.com *
* Systems Administrator http://www.dmv.com/~ron *
* PGP Key at WWW Page *
* DelMarVa OnLine 749-7898 Ext. 403 *
*******************************************************************
+-----------------------------------------------------------+
| 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