ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/Deliantra.pm
(Generate patch)

Comparing deliantra/Deliantra/Deliantra.pm (file contents):
Revision 1.56 by root, Thu Mar 23 07:33:16 2006 UTC vs.
Revision 1.58 by root, Thu Mar 23 20:15:08 2006 UTC

36our %FIELD_MULTILINE = ( 36our %FIELD_MULTILINE = (
37 msg => "endmsg", 37 msg => "endmsg",
38 lore => "endlore", 38 lore => "endlore",
39 maplore => "endmaplore", 39 maplore => "endmaplore",
40); 40);
41
42# movement bit type, PITA
43our %FIELD_MOVEMENT = map +($_ => undef),
44 qw(move_type move_block move_allow move_on move_off move_slow);
41 45
42# same as in server save routine, to (hopefully) be compatible 46# same as in server save routine, to (hopefully) be compatible
43# to the other editors. 47# to the other editors.
44our @FIELD_ORDER_MAP = (qw( 48our @FIELD_ORDER_MAP = (qw(
45 name swap_time reset_timeout fixed_resettime difficulty region 49 name swap_time reset_timeout fixed_resettime difficulty region
49 outdoor temp pressure humid windspeed winddir sky nosmooth 53 outdoor temp pressure humid windspeed winddir sky nosmooth
50 tile_path_1 tile_path_2 tile_path_3 tile_path_4 54 tile_path_1 tile_path_2 tile_path_3 tile_path_4
51)); 55));
52 56
53our @FIELD_ORDER = (qw( 57our @FIELD_ORDER = (qw(
58 elevation
59
54 name name_pl custom_name title race 60 name name_pl custom_name title race
55 slaying skill msg lore other_arch face 61 slaying skill msg lore other_arch face
56 #todo-events 62 #todo-events
57 animation is_animated 63 animation is_animated
58 Str Dex Con Wis Pow Cha Int 64 Str Dex Con Wis Pow Cha Int
102sub MOVE_FLY_LOW (){ 0x02 } 108sub MOVE_FLY_LOW (){ 0x02 }
103sub MOVE_FLY_HIGH (){ 0x04 } 109sub MOVE_FLY_HIGH (){ 0x04 }
104sub MOVE_FLYING (){ 0x06 } 110sub MOVE_FLYING (){ 0x06 }
105sub MOVE_SWIM (){ 0x08 } 111sub MOVE_SWIM (){ 0x08 }
106sub MOVE_BOAT (){ 0x10 } 112sub MOVE_BOAT (){ 0x10 }
113sub MOVE_KNOWN (){ 0x1f } # all of above
107sub MOVE_ALL (){ 0xff } 114sub MOVE_ALLBIT (){ 0x10000 }
115sub MOVE_ALL (){ 0x1001f } # very special value, more PITA
108 116
109sub load_ref($) { 117sub load_ref($) {
110 my ($path) = @_; 118 my ($path) = @_;
111 119
112 open my $fh, "<", $path 120 open my $fh, "<", $path
135 delete $ob->{$_} for qw( 143 delete $ob->{$_} for qw(
136 can_knockback can_parry can_impale can_cut can_dam_armour 144 can_knockback can_parry can_impale can_cut can_dam_armour
137 can_apply pass_thru can_pass_thru 145 can_apply pass_thru can_pass_thru
138 ); 146 );
139 147
140 for my $attr (qw(move_type move_block move_allow move_on move_off move_slow)) { 148 for my $attr (keys %FIELD_MOVEMENT) {
141 next unless exists $ob->{$attr}; 149 next unless exists $ob->{$attr};
150
151 $ob->{$attr} = MOVE_ALL if $ob->{$attr} == 255; #d# compatibility
152
142 next if $ob->{$attr} =~ /^\d+$/; 153 next if $ob->{$attr} =~ /^\d+$/;
143 154
144 my $flags = 0; 155 my $flags = 0;
145 156
146 # assume list 157 # assume list
228 if (exists $arch->{$k} and $arch->{$k} eq $v) { 239 if (exists $arch->{$k} and $arch->{$k} eq $v) {
229 next if $k eq "_name"; 240 next if $k eq "_name";
230 delete $ob->{$k}; 241 delete $ob->{$k};
231 } 242 }
232 } 243 }
244 }
245
246 # a speciality for the editor
247 if (exists $ob->{attack_movement}) {
248 my $am = delete $ob->{attack_movement};
249 $ob->{attack_movement_bits_0_3} = $am & 15;
250 $ob->{attack_movement_bits_4_7} = $am & 240;
233 } 251 }
234 252
235 $ob 253 $ob
236} 254}
237 255
309 } 327 }
310 $prev = $arc; 328 $prev = $arc;
311 $more = undef; 329 $more = undef;
312 } elsif (/^arch (\S+)$/i) { 330 } elsif (/^arch (\S+)$/i) {
313 my $name = $1; 331 my $name = $1;
314 my $arc = normalize_object $parse_block->(_name => $name); 332 my $arc = normalize_arch $parse_block->(_name => $name);
315 333
316 if ($more) { 334 if ($more) {
317 $more->{more} = $arc; 335 $more->{more} = $arc;
318 } else { 336 } else {
319 push @{ $arc{arch} }, $arc; 337 push @{ $arc{arch} }, $arc;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines