--- deliantra/Deliantra/Deliantra.pm 2006/03/27 17:23:35 1.60 +++ deliantra/Deliantra/Deliantra.pm 2006/03/27 17:38:18 1.61 @@ -433,20 +433,18 @@ if ($type > 0) { $root = $Crossfire::Data::ATTR{$type}; } else { - $root = $Crossfire::Data::TYPE{Misc}; + my %a = (%$arch, %$obj); - type: - for (@Crossfire::Data::ATTR0) { - my $req = $_->{required} - or die "internal error: ATTR0 without 'required'"; - - keys %$req; - while (my ($k, $v) = each %$req) { - next type - unless $obj->{$k} == $v || $arch->{$k} == $v; - } - - $root = $_; + if ($a{is_floor} && !$a{alive}) { + $root = $Crossfire::Data::TYPE{Floor}; + } elsif (!$a{is_floor} && $a{alive} && !$a{tear_down}) { + $root = $Crossfire::Data::TYPE{"Monster & NPC"}; + } elsif (!$a{is_floor} && !$a{alive} && $a{move_block}) { + $root = $Crossfire::Data::TYPE{Wall}; + } elsif (!$a{is_floor} && $a{alive} && $a{tear_down}) { + $root = $Crossfire::Data::TYPE{"Weak Wall"}; + } else { + $root = $Crossfire::Data::TYPE{Misc}; } }