Bug in do_drag( )
< Newer Topic
:: Older Topic >
Pages:<< prev 1 next >>
#1 Oct 8, 2017 2:40 am
Conjurer
GroupMembers
Posts413
JoinedMar 7, 2005
Another oddity that has apparently gone long unnoticed, probably since it doesn't happen that often in practice.
In particular, check out clans.c, function do_drag( ), you'll find this section:
It probably doesn't make much sense to only check if the victim can pass thru a closed exit, rather than checking the victim AND the ch doing the dragging, since at the end of do_drag( ), both will be moved there.
Fortunately the fix is easy:
That should fix it up.
In particular, check out clans.c, function do_drag( ), you'll find this section:
nogo = FALSE; if( ( pexit = get_exit( ch->in_room, exit_dir ) ) == NULL ) nogo = TRUE; else if( IS_SET( pexit->exit_info, EX_CLOSED ) && ( !IS_AFFECTED( victim, AFF_PASS_DOOR ) || IS_SET( pexit->exit_info, EX_NOPASSDOOR ) ) ) nogo = TRUE; if( nogo ) { send_to_char( "There's no exit in that direction.\r\n", ch ); return; }
It probably doesn't make much sense to only check if the victim can pass thru a closed exit, rather than checking the victim AND the ch doing the dragging, since at the end of do_drag( ), both will be moved there.
Fortunately the fix is easy:
nogo = FALSE;
if ((pexit = get_exit(ch->in_room, exit_dir)) == NULL )
nogo = TRUE;
else
if ( IS_SET(pexit->exit_info, EX_CLOSED)
&& ( !( IS_AFFECTED(ch, AFF_PASS_DOOR) && IS_AFFECTED( victim, AFF_PASS_DOOR ) )
|| IS_SET(pexit->exit_info, EX_NOPASSDOOR)) )
nogo = TRUE;
if ( nogo )
{
send_to_char( "There's no exit in that direction.\r\n", ch );
return;
}
That should fix it up.
Pages:<< prev 1 next >>