ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/maps/perl/minesweeper.ext
(Generate patch)

Comparing deliantra/maps/perl/minesweeper.ext (file contents):
Revision 1.4 by elmex, Fri Mar 24 23:29:18 2006 UTC vs.
Revision 1.9 by root, Mon Aug 21 05:22:52 2006 UTC

6 6
7sub result { 7sub result {
8 my ($ob, $status) = @_; 8 my ($ob, $status) = @_;
9 9
10 if (my $teleport = $ob->{options}{"teleport_$status"}) { 10 if (my $teleport = $ob->{options}{"teleport_$status"}) {
11 my ($x, $y) = split /,/, $teleport; 11 my ($x, $y, $damned) = split /,/, $teleport;
12 my $pl = cf::player::find $ob->{player};
12 13
13 (cf::player::find $ob->{player})->ob->transfer ($x, $y); 14 $pl->ob->transfer ($x, $y);
15 $pl->set_savebed ($pl->ob->map->path, $x, $y)
16 if $ob->{options}{"set_savebed_$status"};
14 } 17 }
15} 18}
16 19
17sub apply { 20sub apply {
18 my ($who) = @_; 21 my ($who) = @_;
25 my ($x, $y) = ($who->x - $meta->x, $who->y - $meta->y); 28 my ($x, $y) = ($who->x - $meta->x, $who->y - $meta->y);
26 29
27 $who->{visible} = 1; 30 $who->{visible} = 1;
28 31
29 if ($who->{bomb}) { 32 if ($who->{bomb}) {
30 result $meta, "failure"; 33 result $meta, "failure"
34 if $meta->{todo};
31 } else { 35 } else {
32 $meta->{todo}--; 36 $meta->{todo}--;
33 # if zero, finished 37 # if <= 0, finished
34 38
35 my @neigh; 39 my @neigh;
36 40
37 for my $y ($y - 1 .. $y + 1) { 41 for my $y ($y - 1 .. $y + 1) {
38 next if $y < 0 || $y > $#{$map->[0]}; 42 next if $y < 0 || $y > $#{$map->[0]};
58 62
59 1 63 1
60} 64}
61 65
62sub on_time { 66sub on_time {
63 my ($event) = @_; 67 my ($event, $who) = @_;
64
65 my $who = $event->{who};
66 68
67 if (my $queue = $who->{queue}) { 69 if (my $queue = $who->{queue}) {
68 my $count = 4; 70 my $count = 4;
69 71
70 while (@$queue) { 72 while (@$queue) {
82 $count-- 84 $count--
83 or last; 85 or last;
84 } 86 }
85 } else { 87 } else {
86 # generate minesweeper field 88 # generate minesweeper field
87 my %arg = split /(?:\s+|=)/, $event->{options}; 89 my %arg = split /(?:\s+|=)/, $event->options;
88 90
89 $who->{options} = \%arg; 91 $who->{options} = \%arg;
90 $who->{queue} = []; 92 $who->{queue} = [];
91 93
92 my $map = $who->{map} = []; 94 my $map = $who->{map} = [];
117 redo if $map->[$x][$y]{bomb}; 119 redo if $map->[$x][$y]{bomb};
118 120
119 $map->[$x][$y]{bomb} = 1; 121 $map->[$x][$y]{bomb} = 1;
120 } 122 }
121 } 123 }
122 0
123} 124}
124 125
125sub on_apply { 126sub on_apply {
126 my ($event) = @_; 127 my ($event, $ob, $who) = @_;
127 128
128 my $who = $event->{who}; 129 $ob->{meta}{player} = $who->name;
129 my $activator = $event->{activator}; 130 push @{$ob->{meta}{queue}}, $ob;
130 131
131 $who->{meta}{player} = $activator->name;
132 push @{$who->{meta}{queue}}, $who;
133 0 132 1
134} 133}
135 134
136 135

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines