… | |
… | |
4 | |
4 | |
5 | =cut |
5 | =cut |
6 | |
6 | |
7 | package Crossfire; |
7 | package Crossfire; |
8 | |
8 | |
9 | our $VERSION = '0.1'; |
9 | our $VERSION = '0.9'; |
10 | |
10 | |
11 | use strict; |
11 | use strict; |
12 | |
12 | |
13 | use base 'Exporter'; |
13 | use base 'Exporter'; |
14 | |
14 | |
… | |
… | |
199 | if (defined (my $v = delete $ob->{slow_move})) { |
199 | if (defined (my $v = delete $ob->{slow_move})) { |
200 | $ob->{move_slow} |= MOVE_WALK; |
200 | $ob->{move_slow} |= MOVE_WALK; |
201 | $ob->{move_slow_penalty} = $v; |
201 | $ob->{move_slow_penalty} = $v; |
202 | } |
202 | } |
203 | if (defined (my $v = delete $ob->{walk_on})) { |
203 | if (defined (my $v = delete $ob->{walk_on})) { |
|
|
204 | $ob->{move_on} = MOVE_ALL unless exists $ob->{move_on}; |
204 | $ob->{move_on} = $v ? $ob->{move_on} | MOVE_WALK |
205 | $ob->{move_on} = $v ? $ob->{move_on} | MOVE_WALK |
205 | : $ob->{move_on} & ~MOVE_WALK; |
206 | : $ob->{move_on} & ~MOVE_WALK; |
206 | } |
207 | } |
207 | if (defined (my $v = delete $ob->{walk_off})) { |
208 | if (defined (my $v = delete $ob->{walk_off})) { |
|
|
209 | $ob->{move_off} = MOVE_ALL unless exists $ob->{move_off}; |
208 | $ob->{move_off} = $v ? $ob->{move_off} | MOVE_WALK |
210 | $ob->{move_off} = $v ? $ob->{move_off} | MOVE_WALK |
209 | : $ob->{move_off} & ~MOVE_WALK; |
211 | : $ob->{move_off} & ~MOVE_WALK; |
210 | } |
212 | } |
211 | if (defined (my $v = delete $ob->{fly_on})) { |
213 | if (defined (my $v = delete $ob->{fly_on})) { |
|
|
214 | $ob->{move_on} = MOVE_ALL unless exists $ob->{move_on}; |
212 | $ob->{move_on} = $v ? $ob->{move_on} | MOVE_FLY_LOW |
215 | $ob->{move_on} = $v ? $ob->{move_on} | MOVE_FLY_LOW |
213 | : $ob->{move_on} & ~MOVE_FLY_LOW; |
216 | : $ob->{move_on} & ~MOVE_FLY_LOW; |
214 | } |
217 | } |
215 | if (defined (my $v = delete $ob->{fly_off})) { |
218 | if (defined (my $v = delete $ob->{fly_off})) { |
|
|
219 | $ob->{move_off} = MOVE_ALL unless exists $ob->{move_off}; |
216 | $ob->{move_off} = $v ? $ob->{move_off} | MOVE_FLY_LOW |
220 | $ob->{move_off} = $v ? $ob->{move_off} | MOVE_FLY_LOW |
217 | : $ob->{move_off} & ~MOVE_FLY_LOW; |
221 | : $ob->{move_off} & ~MOVE_FLY_LOW; |
218 | } |
222 | } |
219 | if (defined (my $v = delete $ob->{flying})) { |
223 | if (defined (my $v = delete $ob->{flying})) { |
|
|
224 | $ob->{move_type} = MOVE_ALL unless exists $ob->{move_type}; |
220 | $ob->{move_type} = $v ? $ob->{move_type} | MOVE_FLY_LOW |
225 | $ob->{move_type} = $v ? $ob->{move_type} | MOVE_FLY_LOW |
221 | : $ob->{move_type} & ~MOVE_FLY_LOW; |
226 | : $ob->{move_type} & ~MOVE_FLY_LOW; |
222 | } |
227 | } |
223 | |
228 | |
224 | # convert idiotic event_xxx things into objects |
229 | # convert idiotic event_xxx things into objects |
… | |
… | |
307 | my ($more, $prev); |
312 | my ($more, $prev); |
308 | |
313 | |
309 | open my $fh, "<:raw:perlio:utf8", $path |
314 | open my $fh, "<:raw:perlio:utf8", $path |
310 | or Carp::croak "$path: $!"; |
315 | or Carp::croak "$path: $!"; |
311 | |
316 | |
312 | binmode $fh; |
317 | # binmode $fh; |
313 | |
318 | |
314 | my $parse_block; $parse_block = sub { |
319 | my $parse_block; $parse_block = sub { |
315 | my %arc = @_; |
320 | my %arc = @_; |
316 | |
321 | |
317 | while (<$fh>) { |
322 | while (<$fh>) { |