Skip to content

Commit

Permalink
Fix an issue with cargo depot events getting marked as ready to claim…
Browse files Browse the repository at this point in the history
… before cargo has been delivered.
  • Loading branch information
Tkael committed Aug 4, 2024
1 parent ad47db6 commit 5643e51
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 27 deletions.
9 changes: 7 additions & 2 deletions DataDefinitions/Mission.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,14 +187,19 @@ [ JsonIgnore ]
public string originstation { get; set; }

// Mission returns to origin
[Utilities.PublicAPI]
[Utilities.PublicAPI, JsonIgnore]
public bool originreturn => tagsList.Any(t => t.ClaimAtOrigin);

// Mission delivers to a cargo depot
[Utilities.PublicAPI, JsonIgnore]
public bool cargodepot => tagsList.Any(t => t.ClaimAtCargoDepot);

[Utilities.PublicAPI]
public string faction { get; set; }

// The state of the minor faction
[ JsonIgnore ] public FactionState FactionState => GetFactionState( name );
[ JsonIgnore ]
public FactionState FactionState => GetFactionState( name );

private FactionState GetFactionState ( string missionName )
{
Expand Down
43 changes: 23 additions & 20 deletions DataDefinitions/MissionType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,25 +45,25 @@ static MissionType ()

// PRIMARY mission types (typically listed first in mission name)

public static MissionType Altruism = new MissionType( "Altruism", true, true );
public static MissionType Assassinate = new MissionType( "Assassinate", true, true );
public static MissionType Collect = new MissionType( "Collect", true, true );
public static MissionType CommunityGoal = new MissionType( "CommunityGoal", true );
public static MissionType Courier = new MissionType( "Courier", false, true );
public static MissionType Delivery = new MissionType( "Delivery", true, true );
public static MissionType Disable = new MissionType( "Disable", true, true );
public static MissionType Hack = new MissionType( "Hack", true, true );
public static MissionType LongDistanceExpedition = new MissionType( "LongDistanceExpedition", true, true );
public static MissionType Massacre = new MissionType( "Massacre", true, true );
public static MissionType Mining = new MissionType( "Mining", true, true );
public static MissionType OnFoot = new MissionType( "OnFoot", true, true );
public static MissionType Passenger = new MissionType( "Passenger", false, true );
public static MissionType Piracy = new MissionType( "Piracy", true, true );
public static MissionType Rescue = new MissionType( "Rescue", true, true ); // Horizons / surface salvage missions
public static MissionType Salvage = new MissionType( "Salvage", true, true );
public static MissionType Scan = new MissionType( "Scan", true, true ); // Surface scan
public static MissionType SightSeeing = new MissionType( "Sightseeing", true, true );
public static MissionType Smuggle = new MissionType( "Smuggle", false, true );
public static MissionType Altruism = new MissionType( "Altruism", true, false, true );
public static MissionType Assassinate = new MissionType( "Assassinate", true, false, true );
public static MissionType Collect = new MissionType( "Collect", true, true, true );
public static MissionType CommunityGoal = new MissionType( "CommunityGoal", false, false, true );
public static MissionType Courier = new MissionType( "Courier", false, false, true );
public static MissionType Delivery = new MissionType( "Delivery", false, true, true );
public static MissionType Disable = new MissionType( "Disable", true, false, true );
public static MissionType Hack = new MissionType( "Hack", true, false, true );
public static MissionType LongDistanceExpedition = new MissionType( "LongDistanceExpedition", true, false, true );
public static MissionType Massacre = new MissionType( "Massacre", true, false, true );
public static MissionType Mining = new MissionType( "Mining", true, true, true );
public static MissionType OnFoot = new MissionType( "OnFoot", true, false, true );
public static MissionType Passenger = new MissionType( "Passenger", false, false, true );
public static MissionType Piracy = new MissionType( "Piracy", true, false, true );
public static MissionType Rescue = new MissionType( "Rescue", true, true, true ); // Horizons / surface salvage missions
public static MissionType Salvage = new MissionType( "Salvage", true, true, true );
public static MissionType Scan = new MissionType( "Scan", true, false, true ); // Surface scan
public static MissionType SightSeeing = new MissionType( "Sightseeing", true, false, true );
public static MissionType Smuggle = new MissionType( "Smuggle", false, true, true );

// SECONDARY mission types

Expand Down Expand Up @@ -117,14 +117,17 @@ static MissionType ()

public bool ClaimAtOrigin { get; set; }

public bool ClaimAtCargoDepot { get; set; }

// dummy used to ensure that the static constructor has run
public MissionType () : this( "" )
{ }

private MissionType ( string edname, bool claimAtOrigin = false, bool includeInMissionRouting = false ) : base(
private MissionType ( string edname, bool claimAtOrigin = false, bool claimAtCargoDepot = false, bool includeInMissionRouting = false ) : base(
edname, edname )
{
ClaimAtOrigin = claimAtOrigin;
ClaimAtCargoDepot = claimAtCargoDepot;
IncludeInMissionRouting = includeInMissionRouting;
}
}
Expand Down
16 changes: 11 additions & 5 deletions MissionMonitor/MissionMonitor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -387,9 +387,9 @@ private void handleMissionsEvent(MissionsEvent @event)
public bool _handleMissionsEvent(MissionsEvent @event)
{
bool update = false;
foreach (Mission mission in @event.missions)
foreach (var mission in @event.missions)
{
Mission missionEntry = missions.FirstOrDefault(m => m.missionid == mission.missionid);
var missionEntry = missions.FirstOrDefault(m => m.missionid == mission.missionid);

// If the mission exists in the log, update status
if (missionEntry != null)
Expand Down Expand Up @@ -1032,12 +1032,18 @@ private void RemoveMissionWithMissionId(long missionid)

public bool UpdateRedirectStatus(Mission mission)
{
if (mission.originreturn && mission.originsystem == mission.destinationsystem
if ( mission.originreturn && mission.originsystem == mission.destinationsystem
&& mission.originstation == mission.destinationstation)
{
if (mission.tagsList.Any(t => t.ClaimAtOrigin))
// Mission is claimed at a cargo depot - do not redirect until all cargo has been delivered.
if ( mission.cargodepot &&
mission.delivered < mission.amount )
{ return false; }

// Redirect based on origin and destination info.
if ( mission.tagsList.Any( t => t.ClaimAtOrigin ) )
{
if (mission.statusDef != MissionStatus.Claim)
if ( mission.statusDef != MissionStatus.Claim )
{
mission.statusDef = MissionStatus.Claim;
return true;
Expand Down

0 comments on commit 5643e51

Please sign in to comment.