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) {