--- cf.schmorp.de/maps/perl/follow.ext 2006/07/11 15:37:31 1.18 +++ cf.schmorp.de/maps/perl/follow.ext 2006/09/08 17:33:55 1.24 @@ -15,9 +15,9 @@ my $portal = cf::object::new "exit"; - $portal->set_slaying ($map); - $portal->set_hp ($x); - $portal->set_sp ($y); + $portal->slaying ($map); + $portal->stats->hp ($x); + $portal->stats->sp ($y); $portal->apply ($pl->ob); @@ -27,8 +27,6 @@ my %follow; my $timer = Event->timer (interval => 0.2, parked => 1, cb => sub { - warn "follow\n";#d# - while (my ($name, $v) = each %follow) { my ($target, $his, $mine) = @$v; my ($who, $other) = (cf::player::find $name, cf::player::find $target); @@ -43,7 +41,7 @@ my $map; - if ($map = cf::map::map $mine->[0] + if ($map = cf::map::find $mine->[0] and !grep $_->flag (cf::FLAG_UNIQUE) && $_->flag (cf::FLAG_IS_FLOOR), $map->at ($mine->[1], $mine->[2])) { teleport $who, @$mine; @@ -92,22 +90,21 @@ } }; -sub on_player_death { - my ($ob) = @_; +cf::attach_to_players + on_death => sub { + my ($pl) = @_; - my $name = $ob->name; + my $name = $pl->ob->name; - delete $follow{$name}; + delete $follow{$name}; - while (my ($k, $v) = each %follow) { - if ($v->[0] eq $name) { - delete $follow{$k}; + while (my ($k, $v) = each %follow) { + if ($v->[0] eq $name) { + delete $follow{$k}; + } } - } - - 0 -} - + }, +;