These are in the check handin plugin. Didn't notice before.
Code:
sub mq_process_items {
my $hashref = shift;
my $npc = plugin::val('$npc');
my $trade = undef;
if($npc->EntityVariableExists("_mq_trade")) {
$trade = decode_eqemu_item_hash($npc->GetEntityVariable("_mq_trade"));
} else {
$trade = {};
}
foreach my $k (keys(%{$hashref})) {
next if($k == 0);
if(defined $trade->{$k}) {
$trade->{$k} = $trade->{$k} + $hashref->{$k};
} else {
$trade->{$k} = $hashref->{$k};
}
}
my $str = encode_eqemu_item_hash($trade);
$npc->SetEntityVariable("_mq_trade", $str);
}
sub check_mq_handin {
my %required = @_;
my $npc = plugin::val('$npc');
my $trade = undef;
if($npc->EntityVariableExists("_mq_trade")) {
$trade = decode_eqemu_item_hash($npc->GetEntityVariable("_mq_trade"));
} else {
return 0;
}
foreach my $req (keys %required) {
if((!defined $trade->{$req}) || ($trade->{$req} < $required{$req})) {
return 0;
}
}
foreach my $req (keys %required) {
if ($required{$req} < $trade->{$req}) {
$trade->{$req} -= $required{$req};
} else {
delete $trade->{$req};
}
}
$npc->SetEntityVariable("_mq_trade", encode_eqemu_item_hash($trade));
return 1;
}
sub clear_mq_handin {
my $npc = plugin::val('$npc');
$npc->SetEntityVariable("_mq_trade", "");
}