Fix double counting bounties (#21399)

This commit is contained in:
Nemanja
2023-11-04 09:19:23 -04:00
committed by GitHub
parent 7a2a3ce9a7
commit 4a730c5910
2 changed files with 19 additions and 5 deletions

View File

@@ -89,18 +89,24 @@ public sealed partial class CargoSystem
if (!_container.TryGetContainingContainer(uid, out var container) || container.ID != LabelSystem.ContainerName)
return;
if (_station.GetOwningStation(uid) is not { } station)
if (_station.GetOwningStation(uid) is not { } station || !TryComp<StationCargoBountyDatabaseComponent>(station, out var database))
return;
if (!TryGetBountyFromId(station, component.Id, out var bounty))
if (database.CheckedBounties.Contains(component.Id))
return;
if (!_protoMan.TryIndex<CargoBountyPrototype>(bounty.Value.Bounty, out var bountyProtoype) ||!IsBountyComplete(container.Owner, bountyProtoype))
if (!TryGetBountyFromId(station, component.Id, out var bounty, database))
return;
if (!_protoMan.TryIndex<CargoBountyPrototype>(bounty.Value.Bounty, out var bountyPrototype) ||
!IsBountyComplete(container.Owner, bountyPrototype))
return;
database.CheckedBounties.Add(component.Id);
args.Handled = true;
component.Calculating = true;
args.Price = bountyProtoype.Reward - _pricing.GetPrice(container.Owner);
args.Price = bountyPrototype.Reward - _pricing.GetPrice(container.Owner);
component.Calculating = false;
}
@@ -329,6 +335,7 @@ public sealed partial class CargoSystem
var query = EntityQueryEnumerator<StationCargoBountyDatabaseComponent>();
while (query.MoveNext(out var uid, out var bountyDatabase))
{
bountyDatabase.CheckedBounties.Clear();
var bounties = new ValueList<CargoBountyData>(bountyDatabase.Bounties);
foreach (var bounty in bounties)
{