--- deliantra/server/ext/reseller.ext 2006/12/15 19:29:18 1.1 +++ deliantra/server/ext/reseller.ext 2006/12/20 01:29:12 1.2 @@ -12,6 +12,21 @@ royalties => 'royalty', ); +sub ob2info { + my ($item, $rval) = @_; + sprintf "[%s from %s (%d:%d%s) nrof: %d uuid: %s]", + $item->name, $item->get_ob_key_value ('ext_reseller_seller'), + $item->get_ob_key_value ('ext_reseller_orig_value'), $item->value, + (defined $rval ? ":$rval" : ""), $item->nrof, $item->uuid; +} + +sub audit_log { + my ($who, $action, $info) = @_; + warn + sprintf "RESELLER_AUDIT(%s) %s %s: %s\n", + $who->map->path, $who->name, $action, $info; +} + sub find_rec { my ($ob, $cb) = @_; @@ -73,6 +88,8 @@ $who->pay_player ($sum); $who->reply ($npc, "Here are the " . cf::cost_string_from_value ($sum) . " for your sales"); + audit_log ($who, 'collects', "$sum silver"); + $sells->{$who->name} = {}; $npc->set_ob_key_value (ext_reseller_sales => cf::to_json $sells); @@ -88,7 +105,7 @@ $who->map->at ($self->{reseller_shopmat}{npc_x}, $self->{reseller_shopmat}{npc_y}); unless (@obs) { - warn "Couldn't find shop keeper in " . $who->map . "\n"; + warn "Couldn't find shop keeper in " . $who->map->path . "\n"; return cf::override; } @@ -98,6 +115,7 @@ for my $item (find_unpaid ($who)) { if ($item->get_ob_key_value ('ext_reseller_seller') eq $who->name) { + audit_log ($who, 'removes', ob2info ($item)); $item->flag (cf::FLAG_UNPAID, 0); $item->remove; $item->insert_ob_in_ob ($who); @@ -113,18 +131,29 @@ $unpaid_items->{$item} = [$value, $item]; } + audit_log ($who, 'wants', (join ",", map { ob2info ($_->[1], $_->[0]) } values %$unpaid_items)) + if %$unpaid_items; + $self->apply_shop_mat ($who); + my @seller_noted; + for my $item (find_traded ($who)) { next if $item->flag (cf::FLAG_UNPAID); if (my $value = $unpaid_items->{$item}[0]) { + push @seller_noted, ob2info ($item, $value)."P"; $sells->{$item->get_ob_key_value ('ext_reseller_seller')}->{$item->name} += $value; + } else { + push @seller_noted, ob2info ($item)."T"; } $item->value ($item->get_ob_key_value ('ext_reseller_orig_value')); $item->set_ob_key_value (ext_reseller_seller => ''); } + audit_log ($who, 'removed', (join ",", @seller_noted)) + if @seller_noted; + $obs[0]->set_ob_key_value (ext_reseller_sales => cf::to_json $sells); cf::override; @@ -223,6 +252,8 @@ $what->flag (cf::FLAG_UNPAID, 1); $what->insert_ob_in_map_at ($who->map, $who, cf::INS_BELOW_ORIGINATOR, $who->x, $who->y); + audit_log ($who, 'sells', ob2info ($what)); + cf::override; }, ;