--- deliantra/server/ext/follow.ext 2010/05/02 14:31:49 1.16 +++ deliantra/server/ext/follow.ext 2010/05/02 14:54:06 1.17 @@ -29,16 +29,19 @@ @$his = ($map, $x, $y); } - my $map; + if (my $map = cf::map::find $mine->[0]) { + $map->load; - if ($map = cf::map::find $mine->[0] - and $map =~ /^\// # short-gap fix - and !grep +($_->flag (cf::FLAG_UNIQUE) || $_->type == cf::SHOP_FLOOR) && $_->flag (cf::FLAG_IS_FLOOR), - $map->at ($mine->[1], $mine->[2])) { - $who->ob->goto (@$mine); - } else { - delete $follow{$name}; - $who->ob->message ("You can't follow $target anymore!"); + if ($map =~ /^\// # short-gap fix + and !grep +($_->flag (cf::FLAG_UNIQUE) || $_->type == cf::SHOP_FLOOR) && $_->flag (cf::FLAG_IS_FLOOR), + $map->at ($mine->[1], $mine->[2]) + ) { + $who->ob->goto (@$mine) + unless $who->ob->blocked ($map, $mine->[1], $mine->[2]) + } else { + delete $follow{$name}; + $who->ob->message ("You can't follow $target anymore!"); + } } } else { delete $follow{$name};