diff --git a/EDPlayerJournal/BGS/CombatZone.cs b/EDPlayerJournal/BGS/CombatZone.cs
index c46f522..e6bb31a 100644
--- a/EDPlayerJournal/BGS/CombatZone.cs
+++ b/EDPlayerJournal/BGS/CombatZone.cs
@@ -3,9 +3,52 @@ using System.Linq;
namespace EDPlayerJournal.BGS;
public class CombatZone : Transaction {
- public string Type { get; set; } = "";
- public string Grade { get; set; } = "";
- public int Amount { get; set; } = 0;
+ ///
+ /// Type, either on foot or ship
+ ///
+ public string Type { get; set; } = "Ship";
+
+ ///
+ /// Difficulty type, low, medium or high.
+ ///
+ public string Grade { get; set; } = "Low";
+
+ ///
+ /// How many?
+ ///
+ public int Amount { get; set; } = 1;
+
+ ///
+ /// Whether spec ops were won.
+ ///
+ public bool? SpecOps { get; set; }
+
+ ///
+ /// Whether captain was won
+ ///
+ public bool? Captain { get; set; }
+
+ ///
+ /// Whether correspondent objective was won
+ ///
+ public bool? Correspondent { get; set; }
+
+ ///
+ /// Whether cap ship objective was won
+ ///
+ public bool? CapitalShip { get; set; }
+
+ ///
+ /// How many optional objectives were completed?
+ ///
+ public int OptionalObjectivesCompleted {
+ get {
+ return new List() { SpecOps, Captain, Correspondent, CapitalShip }
+ .Where(x => x != null && x == true)
+ .Count()
+ ;
+ }
+ }
public override int CompareTo(Transaction? obj) {
if (obj == null || obj.GetType() != typeof(CombatZone)) {
diff --git a/EDPlayerJournal/BGS/TransactionParser.cs b/EDPlayerJournal/BGS/TransactionParser.cs
index 24665ab..32c4bba 100644
--- a/EDPlayerJournal/BGS/TransactionParser.cs
+++ b/EDPlayerJournal/BGS/TransactionParser.cs
@@ -106,6 +106,11 @@ internal class TransactionParserContext {
Faction = LastRecordedAwardingFaction,
Grade = grade,
Type = cztype,
+ // Sad truth is, if HaveSeenXXX is false, we just don't know for certain
+ CapitalShip = HaveSeenCapShip ? true : null,
+ SpecOps = HaveSeenSpecOps ? true : null,
+ Correspondent = HaveSeenCorrespondent ? true : null,
+ Captain = HaveSeenCaptain ? true : null,
Amount = 1,
};
zone.Entries.Add(e);