--- deliantra/server/utils/cfutil.in 2007/04/18 09:38:58 1.29 +++ deliantra/server/utils/cfutil.in 2007/04/21 11:55:36 1.30 @@ -86,6 +86,7 @@ { our %ANIMINFO; our %FACEINFO; + our @ARC; our %ARC; our $TRS; our $NFILE; @@ -257,7 +258,10 @@ my $arc = read_arch "$dir/$file"; for my $o (values %$arc) { - $ARC{$o->{_name}} = $o; + push @ARC, $o; + for (my $m = $o; $m; $m = $m->{more}) { + $ARC{$m->{_name}} = $m; + } $o->{editor_folder} = $dir; @@ -416,7 +420,9 @@ $loop = $s; } else { delete $o->{inherit}; - %$o = ( %$s, %$o ); + my %s = %$s; + delete @s{qw(_name more name name_pl)}; + %$o = ( %s, %$o ); ++$progress; } } else { @@ -436,7 +442,7 @@ open my $fh, ">:utf8", "$DATADIR/archetypes~" or die "$DATADIR/archetypes~: $!"; - print $fh Crossfire::archlist_to_string [sort { $a->{_name} cmp $b->{_name} } values %ARC]; + print $fh Crossfire::archlist_to_string [sort { $a->{_name} cmp $b->{_name} } @ARC]; } {