ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/maps/perl/follow.ext
Revision: 1.3
Committed: Sat Feb 4 00:33:07 2006 UTC (18 years, 3 months ago) by root
Branch: MAIN
Changes since 1.2: +15 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #! perl
2    
3     # implement a 'follow' command
4    
5     my %follow;
6    
7     cf::register_command follow => 0, sub {
8     my ($who, $args) = @_;
9    
10     my $name = $who->name;
11    
12     if ($args ne "" && $name ne $args) {
13     if (cf::player::find $args) {
14     $who->message ("following player '$args', to stop, type: 'follow");
15     $follow{$name} = $args;
16     } else {
17     $who->message ("cannot follow '$args': no such player");
18     }
19     } else {
20     $who->message ("follow mode off");
21     delete $follow{$name};
22     }
23     };
24    
25 root 1.3 sub teleport {
26     my ($pl, $map, $x, $y) = @_;
27    
28     my $portal = cf::object::new ("exit");
29    
30     $portal->set_slaying ($map->path);
31     $portal->set_hp ($x);
32     $portal->set_sp ($y);
33    
34     $portal->apply ($pl->ob, 0);
35    
36     $portal->free;
37     }
38    
39 root 1.1 sub on_clock {
40     my ($event) = @_;
41    
42     return unless %follow;
43    
44     while (my ($name, $target) = each %follow) {
45     my ($who, $other) = (cf::player::find $name, cf::player::find $target);
46     if ($who && $other) {
47 root 1.3 teleport $who, $other->ob->map, $other->ob->x, $other->ob->y
48 root 1.2 if $who->ob->map->path ne $other->ob->map->path;
49 root 1.1 } else {
50     warn "follow: $name or $target is gone, removing from follow list\n";
51     delete $follow{$name};
52     }
53     }
54     }
55    
56    
57    
58