--- deliantra/server/ext/magic_mapping.ext 2009/11/04 17:24:00 1.1 +++ deliantra/server/ext/magic_mapping.ext 2009/11/04 18:17:57 1.2 @@ -18,22 +18,21 @@ my $bird = cf::object::new "magic_mapper"; my $pl = $caster->contr; my $dist = 0; - $caster->speed_left (-1000); + $caster->speed_left (-1); $pl->fire_on (0); $pl->run_on (0); + + my $duration = $who->casting_level ($spell) * 150 / 100; $pl->ns->async (sub { - while (++$dist < 100) { + while (++$dist < $duration && $bird->valid) { my $phi = 2 * $dist ** .5; my $dx = (sin $phi) * $phi * 2; my $dy = (cos $phi) * $phi * 2; - warn "a\n";#d# - warn $bird->insert_ob_in_map_at ($map, $caster, cf::INS_ON_TOP, $x + $dx, $y + $dy); - warn "b\n";#d# - last unless $bird->valid; - warn "c\n";#d# + $bird->insert_ob_in_map_at ($map, $caster, cf::INS_ON_TOP, $x + $dx, $y + $dy) + or last; $pl->set_viewpoint ($bird); - $caster->speed_left (-1000); + $caster->speed_left (-1); cf::wait_for_tick; }