diff --git a/EDPlayerJournal/BGS/CombatZone.cs b/EDPlayerJournal/BGS/CombatZone.cs index 4f6d8ed..18bb10e 100644 --- a/EDPlayerJournal/BGS/CombatZone.cs +++ b/EDPlayerJournal/BGS/CombatZone.cs @@ -92,6 +92,13 @@ public class CombatZone : Transaction { get { return string.Compare(Type, CombatZones.AXCombatZone) == 0; } } + /// + /// Returns true if it is a power combat zone + /// + public bool IsPower { + get { return string.Compare(Type, CombatZones.PowerCombatZone) == 0; } + } + public override int CompareTo(Transaction? obj) { if (obj == null || obj.GetType() != typeof(CombatZone)) { return -1; diff --git a/EDPlayerJournal/BGS/TransactionParserContext.cs b/EDPlayerJournal/BGS/TransactionParserContext.cs index 22b3e51..49c8cb4 100644 --- a/EDPlayerJournal/BGS/TransactionParserContext.cs +++ b/EDPlayerJournal/BGS/TransactionParserContext.cs @@ -128,16 +128,29 @@ internal class TransactionParserContext { Settlement = null; } + private bool HadCombatZone() { + if (CurrentInstanceType != null && + Instances.IsInstance(CurrentInstanceType, Instances.PowerWarzoneMedium)) { + return true; + } + + if (HighestCombatBond == null && + LastRecordedAwardingFaction == null && + HaveSeenAXWarzoneNPC == false && + CurrentInstanceType == null) { + return false; + } + + return true; + } + public void DiscernCombatZone(TransactionList transactions, Entry e) { string? grade = CombatZones.DifficultyLow; string cztype; ulong highest = HighestCombatBond ?? 0; string? faction = LastRecordedAwardingFaction; - if (HighestCombatBond == null && - LastRecordedAwardingFaction == null && - HaveSeenAXWarzoneNPC == false && - CurrentInstanceType == null) { + if (!HadCombatZone()) { return; } @@ -157,7 +170,8 @@ internal class TransactionParserContext { return; } if (LastRecordedAwardingFaction == null && - Instances.IsHumanWarzone(CurrentInstanceType)) { + (Instances.IsHumanWarzone(CurrentInstanceType) || + Instances.IsPowerWarzone(CurrentInstanceType))) { transactions.AddIncomplete(new CombatZone(), "Could not discern for whom you fought for, " + "as it seems you haven't killed anyone in the ship combat zone.", @@ -187,6 +201,9 @@ internal class TransactionParserContext { } else if (Instances.IsInstance(CurrentInstanceType, Instances.WarzoneThargoidVeryHigh)) { cztype = CombatZones.AXCombatZone; grade = CombatZones.DifficultyVeryHigh; + } else if (Instances.IsInstance(CurrentInstanceType, Instances.PowerWarzoneMedium)) { + cztype = CombatZones.PowerCombatZone; + grade = CombatZones.DifficultyMedium; } else { transactions.AddIncomplete(new CombatZone(), "Unknown conflict zone difficulty", diff --git a/EDPlayerJournal/CombatZones.cs b/EDPlayerJournal/CombatZones.cs index 3c59477..4888f41 100644 --- a/EDPlayerJournal/CombatZones.cs +++ b/EDPlayerJournal/CombatZones.cs @@ -14,6 +14,11 @@ public class CombatZones { /// public static readonly string ShipCombatZone = "Ship"; + /// + /// Power combat zones, new in Ascendancy update. + /// + public static readonly string PowerCombatZone = "Power"; + /// /// AX combat zone /// diff --git a/EDPlayerJournal/Instances.cs b/EDPlayerJournal/Instances.cs index c9068d0..1587425 100644 --- a/EDPlayerJournal/Instances.cs +++ b/EDPlayerJournal/Instances.cs @@ -18,6 +18,11 @@ public class Instances { /// public static readonly string WarzoneHigh = "$Warzone_PointRace_High"; + /// + /// Medium power play conflict zone, new in PP 2.0 Ascendancy update + /// + public static readonly string PowerWarzoneMedium = "$Warzone_Powerplay_Med"; + /// /// Low Thargoid combat zone /// @@ -52,8 +57,17 @@ public class Instances { ; } + public static bool IsPowerWarzone(string type) { + return + IsInstance(type, PowerWarzoneMedium) + ; + } + public static bool IsWarzone(string type) { - return IsHumanWarzone(type) || IsThargoidWarzone(type); + return IsHumanWarzone(type) || + IsThargoidWarzone(type) || + IsPowerWarzone(type) + ; } public static bool IsInstance(string type, string instance) {