introduce negative influence
Sometimes missions actually tell us how much negative influence a faction got through secondary influences. We now count this, and present is as negative influence via minuses. Summaries have been updated to reflect this change.
This commit is contained in:
@@ -9,7 +9,7 @@ namespace EDPlayerJournal.BGS;
|
||||
/// faction to another. Both sometimes gain influence.
|
||||
/// </summary>
|
||||
public class InfluenceSupport : Transaction {
|
||||
public string Influence { get; set; } = "";
|
||||
public MissionInfluence? Influence { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Relevant mission completed entry
|
||||
@@ -46,7 +46,7 @@ public class InfluenceSupport : Transaction {
|
||||
|
||||
builder.AppendFormat("Influence gained from \"{0}\": \"{1}\"",
|
||||
missionname,
|
||||
string.IsNullOrEmpty(Influence) ? "NONE" : Influence
|
||||
Influence == null ? "NONE" : Influence.TrendAdjustedInfluence
|
||||
);
|
||||
|
||||
return builder.ToString();
|
||||
|
||||
@@ -38,7 +38,14 @@ public class MissionCompleted : Transaction {
|
||||
return "";
|
||||
}
|
||||
|
||||
return (CompletedEntry.Mission.GetInfluenceForFaction(Faction, SystemAddress) ?? "");
|
||||
return string.Join("",
|
||||
CompletedEntry
|
||||
.Mission
|
||||
.GetInfluenceForFaction(Faction, SystemAddress)
|
||||
.Select(x => x.Influence)
|
||||
.ToArray()
|
||||
)
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,8 +77,10 @@ public class MissionCompleted : Transaction {
|
||||
var influence = CompletedEntry.Mission.GetInfluenceForFaction(Faction, SystemAddress);
|
||||
|
||||
builder.AppendFormat("{0}", MissionName);
|
||||
if (influence != "") {
|
||||
builder.AppendFormat(", Influence: {0}", influence);
|
||||
if (influence != null && influence.Length > 0) {
|
||||
builder.AppendFormat(", Influence: {0}",
|
||||
influence.Select(x => x.InfluenceAmount).Sum()
|
||||
);
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
|
||||
@@ -298,20 +298,20 @@ internal class MissionCompletedParser : ITransactionParserPart {
|
||||
if (context.CurrentSystemAddress == null) {
|
||||
continue;
|
||||
}
|
||||
other.Value.Add(context.CurrentSystemAddress.Value, "");
|
||||
other.Value.Add(context.CurrentSystemAddress.Value, new MissionInfluence());
|
||||
// Mission gave no influence to the target faction, so we assume
|
||||
// the target faction was in the same system.
|
||||
} else if (string.Compare(source_faction_name, faction, true) == 0) {
|
||||
// This happens if the source faction is not getting any influence
|
||||
// This could be if the source faction is in a conflict, and thus does
|
||||
// not gain any influence at all.
|
||||
other.Value.Add(accepted_location.SystemAddress, "");
|
||||
other.Value.Add(accepted_location.SystemAddress, new MissionInfluence());
|
||||
|
||||
// Just check if the target/source faction are the same, in which case
|
||||
// we also have to make an additional entry
|
||||
if (string.Compare(source_faction_name, target_faction_name, true) == 0 &&
|
||||
context.CurrentSystemAddress != null) {
|
||||
other.Value.Add(context.CurrentSystemAddress.Value, "");
|
||||
other.Value.Add(context.CurrentSystemAddress.Value, new MissionInfluence());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user