--- deliantra/server/ext/jeweler.ext 2007/01/31 14:11:02 1.3 +++ deliantra/server/ext/jeweler.ext 2007/01/31 15:53:17 1.4 @@ -40,7 +40,15 @@ sub merge { my ($chdl, $sk, $pl, $do_analyze) = @_; - my $ingred = $chdl->extract_jeweler_ingredients; + my $ingred = eval { $chdl->extract_jeweler_ingredients }; + if ($@ =~ /cursed/) { + $pl->reply ("There are cursed items in the workbench, take them out before you do anything."). + return + } elsif ($@) { + warn "error in jeweler ingredient extraction: $@"; + return; + } + my @ring = $ingred->get_ring; my @rings = map { Jeweler::Object->new (object => $_) } @ring; @@ -113,7 +121,14 @@ $pl->message ("You can make: " . (join ', ', keys %{Jeweler::getcfg ('conversions') || {}})); } elsif ($msg =~ m/^\s*make\s+(\S+)\s*$/i) { - my $ingred = $chdl->extract_jeweler_ingredients; + my $ingred = eval { $chdl->extract_jeweler_ingredients }; + if ($@ =~ /cursed/) { + $pl->message ("There are cursed items in the workbench, take them out before you do anything."). + return + } elsif ($@) { + warn "error in jeweler ingredient extraction: $@"; + return; + } unless ($Jeweler::CFG->{conversions}->{lc $1}) { $pl->message ("You don't know how to make '$1', is does such a thing even exist?"); @@ -129,7 +144,15 @@ merge ($chdl, $sk, $pl, 0); } else { - my $ingred = $chdl->extract_jeweler_ingredients; + my $ingred = eval { $chdl->extract_jeweler_ingredients }; + if ($@ =~ /cursed/) { + $pl->message ("There are cursed items in the workbench, take them out before you do anything."). + return + } elsif ($@) { + warn "error in jeweler ingredient extraction: $@"; + return; + } + my $plan = $ingred->get_plan; if ($plan) {