… | |
… | |
6 | platina => 50, |
6 | platina => 50, |
7 | royalty => 5000, |
7 | royalty => 5000, |
8 | ); |
8 | ); |
9 | |
9 | |
10 | my %aliases = ( |
10 | my %aliases = ( |
11 | platinum => 'platina', |
11 | platinum => 'platina', |
12 | royalties => 'royalty' |
12 | royalties => 'royalty', |
13 | ); |
13 | ); |
14 | |
14 | |
15 | sub find_rec { |
15 | sub find_rec { |
16 | my ($ob, $cb) = @_; |
16 | my ($ob, $cb) = @_; |
17 | |
17 | |
18 | my @unpaid; |
18 | my @unpaid; |
19 | for my $i ($ob->inv) { |
19 | for my $i ($ob->inv) { |
20 | push @unpaid, $i if $cb->($i); |
20 | push @unpaid, $i if $cb->($i); |
|
|
21 | |
21 | push @unpaid, find_unpaid ($i, $cb) |
22 | push @unpaid, find_unpaid ($i, $cb) |
22 | if $i->inv; |
23 | if $i->inv; |
23 | } |
24 | } |
24 | return @unpaid; |
25 | return @unpaid; |
25 | } |
26 | } |
… | |
… | |
90 | warn "Couldn't find shop keeper in " . $who->map . "\n"; |
91 | warn "Couldn't find shop keeper in " . $who->map . "\n"; |
91 | return cf::override; |
92 | return cf::override; |
92 | } |
93 | } |
93 | |
94 | |
94 | my $sells = cf::from_json $obs[0]->get_ob_key_value ('ext_reseller_sales'); |
95 | my $sells = cf::from_json $obs[0]->get_ob_key_value ('ext_reseller_sales'); |
|
|
96 | |
|
|
97 | my $unpaid_items = {}; |
95 | |
98 | |
96 | for my $item (find_unpaid ($who)) { |
99 | for my $item (find_unpaid ($who)) { |
97 | if ($item->get_ob_key_value ('ext_reseller_seller') eq $who->name) { |
100 | if ($item->get_ob_key_value ('ext_reseller_seller') eq $who->name) { |
98 | $item->flag (cf::FLAG_UNPAID, 0); |
101 | $item->flag (cf::FLAG_UNPAID, 0); |
99 | $item->remove; |
102 | $item->remove; |
… | |
… | |
105 | |
108 | |
106 | warn "Object " . $item->name . " bought by " . $who->name . " on map " |
109 | warn "Object " . $item->name . " bought by " . $who->name . " on map " |
107 | . $who->map->path . " for $value silver has no seller set\n" |
110 | . $who->map->path . " for $value silver has no seller set\n" |
108 | if $item->get_ob_key_value ('ext_reseller_seller') eq ''; |
111 | if $item->get_ob_key_value ('ext_reseller_seller') eq ''; |
109 | |
112 | |
110 | $sells->{$item->get_ob_key_value ('ext_reseller_seller')}->{$item->name} += $value; |
113 | $unpaid_items->{$item->uuid} = $value; |
111 | } |
114 | } |
112 | |
115 | |
113 | $self->apply_shop_mat ($who); |
116 | $self->apply_shop_mat ($who); |
114 | |
117 | |
115 | for my $item (find_traded ($who)) { |
118 | for my $item (find_traded ($who)) { |
116 | next if $item->flag (cf::FLAG_UNPAID); |
119 | next if $item->flag (cf::FLAG_UNPAID); |
|
|
120 | if (my $value = $unpaid_items->{$item->uuid}) { |
|
|
121 | $sells->{$item->get_ob_key_value ('ext_reseller_seller')}->{$item->name} += $value; |
|
|
122 | } |
|
|
123 | |
117 | $item->value ($item->get_ob_key_value ('ext_reseller_orig_value')); |
124 | $item->value ($item->get_ob_key_value ('ext_reseller_orig_value')); |
118 | $item->set_ob_key_value (ext_reseller_seller => ''); |
125 | $item->set_ob_key_value (ext_reseller_seller => ''); |
119 | } |
126 | } |
120 | |
127 | |
121 | $obs[0]->set_ob_key_value (ext_reseller_sales => cf::to_json $sells); |
128 | $obs[0]->set_ob_key_value (ext_reseller_sales => cf::to_json $sells); |