--- cf.schmorp.de/server/utils/cfutil.in 2007/04/18 07:59:03 1.27 +++ cf.schmorp.de/server/utils/cfutil.in 2007/04/21 11:55:36 1.30 @@ -70,7 +70,7 @@ sub inst_maps($) { my (undef, $path) = @_; - print "installing '$path' to '$DATADIR/maps'\n"; + print "\nInstalling '$path' to '$DATADIR/maps'\n\n"; if (!-f "$path/regions") { warn "'$path' does not look like a maps directory ('regions' file is missing).\n"; @@ -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; @@ -374,7 +378,9 @@ sub inst_arch($) { my (undef, $path) = @_; - print "Installing '$path' to '$DATADIR'\n", + print "\n", + "Installing '$path' to '$DATADIR'\n", + "\n", "This can take a long time if you run this\n", "for the first time or do not use --cache.\n", "\n", @@ -414,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 { @@ -434,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]; } {