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.61 by root, Mon Mar 27 17:38:18 2006 UTC vs.
Revision 1.62 by root, Tue Mar 28 14:44:52 2006 UTC

102 102
103 body_range body_arm body_torso body_head body_neck body_skill 103 body_range body_arm body_torso body_head body_neck body_skill
104 body_finger body_shoulder body_foot body_hand body_wrist body_waist 104 body_finger body_shoulder body_foot body_hand body_wrist body_waist
105)); 105));
106 106
107our %EVENT_TYPE = (
108 apply => 1,
109 attack => 2,
110 death => 3,
111 drop => 4,
112 pickup => 5,
113 say => 6,
114 stop => 7,
115 time => 8,
116 throw => 9,
117 trigger => 10,
118 close => 11,
119 timer => 12,
120);
121
107sub MOVE_WALK (){ 0x01 } 122sub MOVE_WALK (){ 0x01 }
108sub MOVE_FLY_LOW (){ 0x02 } 123sub MOVE_FLY_LOW (){ 0x02 }
109sub MOVE_FLY_HIGH (){ 0x04 } 124sub MOVE_FLY_HIGH (){ 0x04 }
110sub MOVE_FLYING (){ 0x06 } 125sub MOVE_FLYING (){ 0x06 }
111sub MOVE_SWIM (){ 0x08 } 126sub MOVE_SWIM (){ 0x08 }
135 close $fh; 150 close $fh;
136 rename "$path~", $path 151 rename "$path~", $path
137 or die "$path: $!"; 152 or die "$path: $!";
138} 153}
139 154
155# object as in "Object xxx", i.e. archetypes
140sub normalize_object($) { 156sub normalize_object($) {
141 my ($ob) = @_; 157 my ($ob) = @_;
142 158
159 # nuke outdated or never supported fields
143 delete $ob->{$_} for qw( 160 delete $ob->{$_} for qw(
144 can_knockback can_parry can_impale can_cut can_dam_armour 161 can_knockback can_parry can_impale can_cut can_dam_armour
145 can_apply pass_thru can_pass_thru 162 can_apply pass_thru can_pass_thru
146 ); 163 );
147 164
165 # convert movement strings to bitsets
148 for my $attr (keys %FIELD_MOVEMENT) { 166 for my $attr (keys %FIELD_MOVEMENT) {
149 next unless exists $ob->{$attr}; 167 next unless exists $ob->{$attr};
150 168
151 $ob->{$attr} = MOVE_ALL if $ob->{$attr} == 255; #d# compatibility 169 $ob->{$attr} = MOVE_ALL if $ob->{$attr} == 255; #d# compatibility
152 170
174 } 192 }
175 193
176 $ob->{$attr} = $flags; 194 $ob->{$attr} = $flags;
177 } 195 }
178 196
197 # convert outdated movement flags to new movement sets
179 if (defined (my $v = delete $ob->{no_pass})) { 198 if (defined (my $v = delete $ob->{no_pass})) {
180 $ob->{move_block} = $v ? MOVE_ALL : 0; 199 $ob->{move_block} = $v ? MOVE_ALL : 0;
181 } 200 }
182 if (defined (my $v = delete $ob->{slow_move})) { 201 if (defined (my $v = delete $ob->{slow_move})) {
183 $ob->{move_slow} |= MOVE_WALK; 202 $ob->{move_slow} |= MOVE_WALK;
202 if (defined (my $v = delete $ob->{flying})) { 221 if (defined (my $v = delete $ob->{flying})) {
203 $ob->{move_type} = $v ? $ob->{move_type} | MOVE_FLY_LOW 222 $ob->{move_type} = $v ? $ob->{move_type} | MOVE_FLY_LOW
204 : $ob->{move_type} & ~MOVE_FLY_LOW; 223 : $ob->{move_type} & ~MOVE_FLY_LOW;
205 } 224 }
206 225
226 # convert idiotic event_xxx things into objects
227 while (my ($event, $subtype) = each %EVENT_TYPE) {
228 if (exists $ob->{"event_${event}_plugin"}) {
229 push @{$ob->{inventory}}, {
230 _name => "event_$event",
231 title => delete $ob->{"event_${event}_plugin"},
232 slaying => delete $ob->{"event_${event}"},
233 name => delete $ob->{"event_${event}_options"},
234 };
235 }
236 }
237
207 $ob 238 $ob
208} 239}
209 240
241# arch as in "arch xxx", ie.. objects
210sub normalize_arch($) { 242sub normalize_arch($) {
211 my ($ob) = @_; 243 my ($ob) = @_;
212 244
213 normalize_object $ob; 245 normalize_object $ob;
214 246
356sub editor_archs { 388sub editor_archs {
357 my %paths; 389 my %paths;
358 390
359 for (keys %ARCH) { 391 for (keys %ARCH) {
360 my $arch = $ARCH{$_}; 392 my $arch = $ARCH{$_};
361 push @{$paths{$arch->{editor_folder}}}, \$arch; 393 push @{$paths{$arch->{editor_folder}}}, $arch;
362 } 394 }
363 395
364 \%paths 396 \%paths
365} 397}
366 398

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines