--- deliantra/Deliantra/Deliantra.pm 2006/03/16 01:13:02 1.45 +++ deliantra/Deliantra/Deliantra.pm 2006/03/16 01:34:01 1.46 @@ -307,14 +307,17 @@ =cut sub arch_attr($) { - my ($arch) = @_; + my ($obj) = @_; require Crossfire::Data; my $root; + + my $arch = $ARCH{ $obj->{_name} }; + my $type = $obj->{type} || $arch->{type}; - if ($arch->{type} > 0) { - $root = $Crossfire::Data::ATTR{$arch->{type}+0}; + if ($type > 0) { + $root = $Crossfire::Data::ATTR{$type}; } else { $root = $Crossfire::Data::TYPE{Misc}; @@ -326,7 +329,7 @@ keys %$req; while (my ($k, $v) = each %$req) { next type - unless $arch->{$k} == $v; + unless $obj->{$k} eq $v || $arch->{$k} eq $v; } $root = $_;