… | |
… | |
174 | |
174 | |
175 | $str .= "arch " . (delete $a{_name}) . "\n"; |
175 | $str .= "arch " . (delete $a{_name}) . "\n"; |
176 | |
176 | |
177 | my $inv = delete $a{inventory}; |
177 | my $inv = delete $a{inventory}; |
178 | |
178 | |
179 | # put inventory last |
179 | my @kv; |
|
|
180 | |
|
|
181 | for (@Crossfire::FIELD_ORDER) { |
|
|
182 | push @kv, [$_, delete $a{$_}] |
|
|
183 | if exists $a{$_}; |
|
|
184 | } |
|
|
185 | |
180 | for my $k (sort keys %a) { |
186 | for (sort keys %a) { |
181 | next if $k =~ /^_/; # ignore our _-keys |
187 | next if /^_/; # ignore our _-keys |
|
|
188 | push @kv, [$_, delete $a{$_}]; |
|
|
189 | } |
|
|
190 | |
|
|
191 | for (@kv) { |
|
|
192 | my ($k, $v) = @$_; |
182 | |
193 | |
183 | if (my $end = $Crossfire::FIELD_MULTILINE{$k}) { |
194 | if (my $end = $Crossfire::FIELD_MULTILINE{$k}) { |
184 | $a{$k} =~ s/\n$//; |
195 | $v =~ s/\n$//; |
185 | $str .= "$k\n$a{$k}\n$end\n"; |
196 | $str .= "$k\n$v\n$end\n"; |
186 | } else { |
197 | } else { |
187 | $str .= "$k $a{$k}\n"; |
198 | $str .= "$k $v\n"; |
188 | } |
199 | } |
189 | } |
200 | } |
190 | |
201 | |
191 | if ($inv) { |
202 | if ($inv) { |
192 | $append->($_) for @$inv; |
203 | $append->($_) for @$inv; |