--- deliantra/server/ext/Jeweler.pm 2007/10/12 19:13:26 1.21 +++ deliantra/server/ext/Jeweler.pm 2008/04/10 15:35:16 1.25 @@ -26,13 +26,12 @@ sub read_config { my ($filename) = @_; - unless (-e $filename) { - warn "$filename doesn't exists! no config for jeweler skill loaded!\n"; + if (my $meta = $cf::RESOURCE{$filename}) { + $CFG = cf::decode_json $meta->{data}; + } else { + warn "$filename doesn't exist! no config for jeweler skill loaded!\n"; $CFG = {}; - return } - - $CFG = YAML::LoadFile $filename; } sub getcfg { @@ -167,11 +166,13 @@ my ($sk, $chdl, $pl, $input_level) = @_; my $hadunid = 0; + my $found = 0; for ($chdl->grep_by_type (cf::RING, cf::AMULET)) { if (!$_->flag (cf::FLAG_IDENTIFIED) && $_->need_identify) { $hadunid = 1; next; } + $found = 1; my $r = Jeweler::Object->new (object => $_); my $msg = $r->analyze ($sk, $pl, $input_level); $pl->message ($r->to_string . ": " . $msg); @@ -179,9 +180,10 @@ $r->wiz_analyze ($pl); } } - if ($hadunid) { - $pl->message ("You couldn't identify the other rings and not analyze them!"); - } + $pl->message ("You couldn't identify the other rings and not analyze them!") + if $hadunid; + $pl->message ("You couldn't find anything in the bench to analyse!") + unless $found; } # this function converts metals/minerals into a raw ring (of adornment) @@ -205,7 +207,7 @@ } unless ($xp_gain > 0) { - warn "WARNING: xp gain isn't > 0 in convesion '$outarch'\n"; + warn "WARNING: xp gain isn't > 0 in conversion '$outarch'\n"; return; } @@ -223,17 +225,17 @@ my $outarchval = cf::arch::find ($outarch)->value; - my $nrof = int ($archvalsum / (($outarchval || 1000) * $outarchvalfact)); + my $nrof = int $archvalsum / (($outarchval || 1000) * $outarchvalfact); if ($nrof) { - # XXX: yes, i know what i'm doing here, i don't set nrof, but it didn't work somehow (pls. chek sometimes) - for (1..$nrof) { + # XXX: yes, I know what I'm doing here, I don't set nrof, but it didn't work somehow (pls. check sometimes) + for (1 .. $nrof) { $chdl->put (my $ob = cf::object::new $outarch); $ob->set_animation (cf::rndm $ob->num_animations) if ($ob->type == cf::RING); $ob->flag (cf::FLAG_IDENTIFIED, 1); } - my $xp_sum = ($xp_gain * $nrof); + my $xp_sum = $xp_gain * $nrof; if ($xp_sum) { $pl->ob->message ("You got $xp_sum xp by making $nrof ${outarch}s"); @@ -719,8 +721,12 @@ my $lvl = $self->power_to_level (\$desc); my $scosts = $self->calc_value_from_cost ($costs); - $pl->message ("costs: " . (join (', ', map { "$_: " . sprintf "%.2f", $costs->{$_} } keys %$costs)) . " (".($scosts / 5000)." royalties)"); - $pl->message ("level: " . $desc); + $pl->message ("costs: " + . (join ', ', map { "$_: " . sprintf "%.2f", $costs->{$_} } keys %$costs) + . " (" + . ($scosts / "royalty"->cf::arch::find->value) + . " royalties)"); + $pl->message ("level: $desc"); } else { $pl->message ("level: impossible to make, due to impossible resistancy configuration"); }