ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/Jeweler.pm
(Generate patch)

Comparing deliantra/server/ext/Jeweler.pm (file contents):
Revision 1.26 by elmex, Sun Jul 13 20:15:51 2008 UTC vs.
Revision 1.27 by elmex, Sun Jul 20 17:01:29 2008 UTC

586 @grepar = ('gems', undef, undef, $key); 586 @grepar = ('gems', undef, undef, $key);
587 } 587 }
588 588
589 if ($do_remove) { 589 if ($do_remove) {
590 my $rem = $costs->{$key}; 590 my $rem = $costs->{$key};
591 $self->do_grep (sub {
591 $self->do_grep (sub { if ($rem) { $rem = Jeweler::Util::remove ($_[0], $rem); } 1 }, @grepar); 592 if ($rem) { $rem = Jeweler::Util::remove ($_[0], $rem); }
593 1
594 }, @grepar);
592 if ($rem > 0) { 595 if ($rem > 0) {
593 warn "JEWELER BUG: removed ingredients $rem > 0 after removing!"; 596 warn "JEWELER BUG: removed ingredients ($key) $rem > 0 after removing!";
594 } 597 }
598
595 } else { 599 } else {
596 my $nr; 600 my $nr;
597 $self->do_grep (sub { $nr += ($_[0]->nrof || 1); 0 }, @grepar); 601 $self->do_grep (sub { $nr += ($_[0]->nrof || 1); 0 }, @grepar);
598 $costs->{$key} -= $nr; 602 $costs->{$key} -= $nr;
599 } 603 }
1100=over 4 1104=over 4
1101 1105
1102=item remove ($object[, $nrof]) 1106=item remove ($object[, $nrof])
1103 1107
1104Removes the C<$object>. If C<$nrof> is given, remove only C<$nrof> objects. 1108Removes the C<$object>. If C<$nrof> is given, remove only C<$nrof> objects.
1105The returnvalue is the number of 'single' objects that couldn't be removed. 1109The return value is the number of 'single' objects that couldn't be removed.
1106 1110
1107=cut 1111=cut
1108 1112
1109sub remove { 1113sub remove {
1110 my ($obj, $nrof) = @_; 1114 my ($obj, $nrof) = @_;
1115
1116 my $c = $obj->nrof || 1;
1117 my $r = $c > $nrof ? 0 : $nrof - $c;
1118 $obj->decrease (defined ($nrof) ? $nrof : ($obj->nrof || 1));
1111 1119
1112 my $cnt; 1120 $r
1113
1114 if (defined $nrof) {
1115 # TODO: Check tihis line:
1116 return 0 if ($nrof * 1) == 0; #XXX: ???
1117 $cnt = int (($obj->nrof || 1) - (1 * $nrof));
1118
1119 if ($cnt > 0) {
1120 $obj->nrof ($cnt);
1121 return 0;
1122 }
1123 }
1124
1125 remove ($_) for $obj->inv;
1126 $obj->destroy;
1127 return $cnt;
1128} 1121}
1129 1122
1130sub check_for_match { 1123sub check_for_match {
1131 my ($thing, @matchar) = @_; 1124 my ($thing, @matchar) = @_;
1132 1125

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines