16 Commits

13 changed files with 88 additions and 47 deletions

View File

@@ -36,10 +36,6 @@ public class MissionFailed : Transaction {
return -1; return -1;
} }
public int Amount {
get { return Entries.Count + 1; }
}
public override string ToString() { public override string ToString() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
@@ -47,8 +43,7 @@ public class MissionFailed : Transaction {
return ""; return "";
} }
builder.AppendFormat("{0}x Mission failed: \"{1}\"", builder.AppendFormat(" Mission failed: \"{0}\"",
Amount,
Mission?.FriendlyName Mission?.FriendlyName
); );

View File

@@ -631,6 +631,14 @@ internal class MissionFailedParser : TransactionParserPart {
return; return;
} }
if (string.IsNullOrEmpty(mission.Faction)) {
transactions.AddIncomplete(new MissionFailed(),
"Could not determine for what faction you failed a mission. This happens if the " +
"mission acceptance is not within the given time frame.",
entry
);
}
transactions.Add(new MissionFailed(entry) { transactions.Add(new MissionFailed(entry) {
Faction = mission?.Faction, Faction = mission?.Faction,
Mission = mission, Mission = mission,

View File

@@ -5,13 +5,23 @@ public class EnglishMissionNames {
{"Chain_FindThePirateLord_name", "Assassination (Pirate Lord) (Chain)"}, {"Chain_FindThePirateLord_name", "Assassination (Pirate Lord) (Chain)"},
{"Chain_RegainFooting_name", "Regain Footing (Chain)"}, {"Chain_RegainFooting_name", "Regain Footing (Chain)"},
{"Chain_SalvageJustice_name", "Assassination (Legal) (Chain)"}, {"Chain_SalvageJustice_name", "Assassination (Legal) (Chain)"},
{"Mission_Altruism_Bust_name", "Donate (Bust)" },
{"Mission_Altruism_CivilUnrest_name", "Donate (Civil Unrest)" },
{"Mission_Altruism_name", "Donate"}, {"Mission_Altruism_name", "Donate"},
{"Mission_Altruism_Outbreak_name", "Donate (Outbreak)" },
{"Mission_AltruismCredits_Bust_name", "Donate Credits (Bust)"}, {"Mission_AltruismCredits_Bust_name", "Donate Credits (Bust)"},
{"Mission_AltruismCredits_CivilUnrest_name", "Donate Credits (Civil Unrest)" },
{"Mission_AltruismCredits_Famine_name", "Donate Credits (Famine)"}, {"Mission_AltruismCredits_Famine_name", "Donate Credits (Famine)"},
{"Mission_AltruismCredits_name", "Donate Credits"}, {"Mission_AltruismCredits_name", "Donate Credits"},
{"Mission_AltruismCredits_Outbreak_name", "Donate Credits (Outbreak)" },
{"Mission_Assassinate_Illegal_BLOPS_name", "Assassination (Illegal)"}, {"Mission_Assassinate_Illegal_BLOPS_name", "Assassination (Illegal)"},
{"Mission_Assassinate_Legal_Corporate_name", "Corporate Assassination (Legal)"}, {"Mission_Assassinate_Legal_Bust_name", "Assassination (Bust, Legal)" },
{"MISSION_assassinate_legal_CivilUnrest_name", "Assassination (Civil Unrest, Legal)" },
{"Mission_Assassinate_Legal_Communism_name", "Assassination (Communism, Legal)" },
{"Mission_Assassinate_Legal_Corporate_name", "Assassination (Corporate, Legal)"},
{"Mission_Assassinate_Legal_War_name", "Assassination (War, Legal)" },
{"Mission_Assassinate_name", "Assassination"}, {"Mission_Assassinate_name", "Assassination"},
{"Mission_Assassinate_Planetary_Expansion_name", "Assassination (Planetary Scan, Expansion)" },
{"Mission_Assassinate_Planetary_name", "Assassination (Planetary Scan)"}, {"Mission_Assassinate_Planetary_name", "Assassination (Planetary Scan)"},
{"Mission_Collect_Bust_name", "Provide (Bust)"}, {"Mission_Collect_Bust_name", "Provide (Bust)"},
{"Mission_Collect_CivilLiberty_name", "Provide (Civil Liberty)"}, {"Mission_Collect_CivilLiberty_name", "Provide (Civil Liberty)"},
@@ -19,8 +29,10 @@ public class EnglishMissionNames {
{"Mission_Collect_Famine_name", "Provide (Famine)"}, {"Mission_Collect_Famine_name", "Provide (Famine)"},
{"Mission_Collect_Industrial_name", "Provide (Industrial)"}, {"Mission_Collect_Industrial_name", "Provide (Industrial)"},
{"Mission_Collect_name", "Provide"}, {"Mission_Collect_name", "Provide"},
{"Mission_Collect_Outbreak_name", "Provide (Outbreak)" },
{"Mission_Collect_RankEmp_name", "Provide (Imperial Navy)"}, {"Mission_Collect_RankEmp_name", "Provide (Imperial Navy)"},
{"Mission_Collect_Retreat_name", "Provide (Retreat)"}, {"Mission_Collect_Retreat_name", "Provide (Retreat)"},
{"Mission_Courier_CivilUnrest_name", "Courier (Divil Unrest)" },
{"Mission_Courier_Democracy_name", "Courier (Democracy)"}, {"Mission_Courier_Democracy_name", "Courier (Democracy)"},
{"Mission_Courier_Elections_name", "Courier (Elections)"}, {"Mission_Courier_Elections_name", "Courier (Elections)"},
{"Mission_Courier_Expansion_name", "Courier (Expansion)"}, {"Mission_Courier_Expansion_name", "Courier (Expansion)"},
@@ -28,8 +40,10 @@ public class EnglishMissionNames {
{"Mission_Courier_Lockdown_name", "Courier (Lockdown)"}, {"Mission_Courier_Lockdown_name", "Courier (Lockdown)"},
{"Mission_Courier_name", "Courier"}, {"Mission_Courier_name", "Courier"},
{"Mission_Courier_RankEmp_name", "Courier (Imperial Navy)"}, {"Mission_Courier_RankEmp_name", "Courier (Imperial Navy)"},
{"Mission_Courier_War_name", "Courier (War)" },
{"Mission_Delivery_Agriculture_name", "Delivery (Agriculture)"}, {"Mission_Delivery_Agriculture_name", "Delivery (Agriculture)"},
{"Mission_Delivery_Boom_name", "Delivery (Boom)"}, {"Mission_Delivery_Boom_name", "Delivery (Boom)"},
{"Mission_Delivery_CivilUnrest_name", "Delivery (Civil Unrest)"},
{"Mission_Delivery_Democracy_name", "Delivery (Democracy)"}, {"Mission_Delivery_Democracy_name", "Delivery (Democracy)"},
{"Mission_Delivery_Investment_name", "Delivery (Investment)"}, {"Mission_Delivery_Investment_name", "Delivery (Investment)"},
{"Mission_Delivery_name", "Delivery"}, {"Mission_Delivery_name", "Delivery"},
@@ -49,6 +63,7 @@ public class EnglishMissionNames {
{"Mission_Massacre_RankEmp_name", "Massacre (Imperial Navy)"}, {"Mission_Massacre_RankEmp_name", "Massacre (Imperial Navy)"},
{"Mission_MassacreWing_Legal_Bust_name", "Massacre (Wing) (Bust)"}, {"Mission_MassacreWing_Legal_Bust_name", "Massacre (Wing) (Bust)"},
{"Mission_MassacreWing_name", "Massacre (Wing)"}, {"Mission_MassacreWing_name", "Massacre (Wing)"},
{"Mission_Mining_name", "Mining" },
{"Mission_OnFoot_Assassination_MB_name", "On Foot Assassination"}, {"Mission_OnFoot_Assassination_MB_name", "On Foot Assassination"},
{"Mission_OnFoot_AssassinationIllegal_MB_name", "On Foot Assassination (Illegal)"}, {"Mission_OnFoot_AssassinationIllegal_MB_name", "On Foot Assassination (Illegal)"},
{"Mission_OnFoot_AssassinationIllegal_NCD_MB_name", "On Foot Assassination (Illegal)" }, {"Mission_OnFoot_AssassinationIllegal_NCD_MB_name", "On Foot Assassination (Illegal)" },
@@ -70,13 +85,16 @@ public class EnglishMissionNames {
{"Mission_OnFoot_Sabotage_Production_Covert_MB_name", "On Foot Sabotage Production (Covert)"}, {"Mission_OnFoot_Sabotage_Production_Covert_MB_name", "On Foot Sabotage Production (Covert)"},
{"Mission_OnFoot_Salvage_MB_name", "On Foot Salvage"}, {"Mission_OnFoot_Salvage_MB_name", "On Foot Salvage"},
{"Mission_OnFoot_SalvageIllegal_MB_name", "On Foot Salvage (Illegal)"}, {"Mission_OnFoot_SalvageIllegal_MB_name", "On Foot Salvage (Illegal)"},
{"Mission_PassengerBulk_AIDWORKER_ARRIVING", "Aid Workers Seeking Transport"}, {"Mission_OnFoot_Smuggle_Contact_MB_name", "On Foot Smuggling" },
{"Mission_PassengerBulk_AIDWORKER_ARRIVING", "Seeking Transport (Aid Workers)"},
{"Mission_PassengerBulk_name", "Seeking Transport" },
{"Mission_PassengerVIP", "Passenger (VIP)"}, {"Mission_PassengerVIP", "Passenger (VIP)"},
{"Mission_PassengerVIP_Criminal_BOOM_name", "Passenger Criminal (VIP) (Boom)"}, {"Mission_PassengerVIP_Criminal_BOOM_name", "Passenger Criminal (VIP) (Boom)"},
{"Mission_PassengerVIP_name", "Passenger (VIP)"}, {"Mission_PassengerVIP_name", "Passenger (VIP)"},
{"Mission_PassengerVIP_Scientist_FAMINE_name", "Passenger Scientist (VIP) (Famine)"}, {"Mission_PassengerVIP_Scientist_FAMINE_name", "Passenger Scientist (VIP) (Famine)"},
{"Mission_PassengerVIP_Tourist_BOOM_name", "Passenger Tourist (VIP) (Boom)"}, {"Mission_PassengerVIP_Tourist_BOOM_name", "Passenger Tourist (VIP) (Boom)"},
{"Mission_Rescue_Planet_name", "Planet Rescue"}, {"Mission_Rescue_Planet_name", "Planet Rescue"},
{"Mission_Rescue_Planet_Expansion_name", "Planet Rescue (Expansion)" },
{"MISSION_Salvage_CivilUnrest_name", "Salvage (Civil Unrest)"}, {"MISSION_Salvage_CivilUnrest_name", "Salvage (Civil Unrest)"},
{"MISSION_Salvage_Expansion_name", "Salvage (Expansion)"}, {"MISSION_Salvage_Expansion_name", "Salvage (Expansion)"},
{"MISSION_Salvage_Illegal_name", "Salvage (Illegal)"}, {"MISSION_Salvage_Illegal_name", "Salvage (Illegal)"},
@@ -87,6 +105,7 @@ public class EnglishMissionNames {
{"MISSION_Scan_name", "Scan"}, {"MISSION_Scan_name", "Scan"},
{"Mission_Sightseeing_Criminal_FAMINE_name", "Sightseeing (Criminal) (Famine)"}, {"Mission_Sightseeing_Criminal_FAMINE_name", "Sightseeing (Criminal) (Famine)"},
{"Mission_Sightseeing_name", "Sightseeing"}, {"Mission_Sightseeing_name", "Sightseeing"},
{"Mission_Smuggle_Anarchy_name", "Smuggling (Anarchy)" },
{"Mission_TW_Massacre_Basilisk_Plural_name", "Kill Basilisk" }, {"Mission_TW_Massacre_Basilisk_Plural_name", "Kill Basilisk" },
{"Mission_TW_Massacre_Basilisk_Singular_name", "Kill Basilisk" }, {"Mission_TW_Massacre_Basilisk_Singular_name", "Kill Basilisk" },
{"Mission_TW_Massacre_Cyclops_Plural_name", "Kill Cyclops" }, {"Mission_TW_Massacre_Cyclops_Plural_name", "Kill Cyclops" },

View File

@@ -255,6 +255,18 @@ public class Mission : IComparable<Mission> {
/// </summary> /// </summary>
public List<MissionFactionEffects> FactionEffects { get; set; } = new List<MissionFactionEffects>(); public List<MissionFactionEffects> FactionEffects { get; set; } = new List<MissionFactionEffects>();
/// <summary>
/// Returns true if the name is an on foot mission.
/// </summary>
public bool IsOnFoot {
get {
if (string.IsNullOrEmpty(Name)) {
return false;
}
return Name.Contains("OnFoot");
}
}
public bool IsPassengerMission { public bool IsPassengerMission {
get { get {

View File

@@ -14,14 +14,24 @@ public class Thargoid {
public static string ThargoidFaction = Factions.Thargoid; public static string ThargoidFaction = Factions.Thargoid;
public static Dictionary<ulong, ThargoidVessel> VesselPayout { get; } = new() { public static Dictionary<ulong, ThargoidVessel> VesselPayout { get; } = new() {
// Up to date values ever since 14.02
{ 65000, ThargoidVessel.Scout },
{ 75000, ThargoidVessel.Scout },
{ 6500000, ThargoidVessel.Cyclops },
{ 20000000, ThargoidVessel.Basilisk },
{ 25000000, ThargoidVessel.Orthrus },
{ 34000000, ThargoidVessel.Medusa },
{ 50000000, ThargoidVessel.Hydra },
// These are the old values pre Update 14.02
{ 80000, ThargoidVessel.Scout }, { 80000, ThargoidVessel.Scout },
{ 8000000, ThargoidVessel.Cyclops }, { 8000000, ThargoidVessel.Cyclops },
{ 24000000, ThargoidVessel.Basilisk }, { 24000000, ThargoidVessel.Basilisk },
// In Update 14.1 the payout for Orthrus has been rebalanced. // In Update 14.1 the payout for Orthrus has been rebalanced.
{ 30000000, ThargoidVessel.Orthrus }, { 30000000, ThargoidVessel.Orthrus },
{ 40000000, ThargoidVessel.Medusa }, { 40000000, ThargoidVessel.Medusa },
// This used to be the old payout value for Orthrus // This used to be the old payout value for Orthrus, it now conflicts
{ 50000000, ThargoidVessel.Orthrus }, // with Post Update 14.02 Hydra values
//{ 50000000, ThargoidVessel.Orthrus },
{ 60000000, ThargoidVessel.Hydra }, { 60000000, ThargoidVessel.Hydra },
}; };

View File

@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net7.0-windows</TargetFramework> <TargetFramework>net7.0-windows</TargetFramework>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<Version>0.2.5</Version> <Version>0.2.6</Version>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo> <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF> <UseWPF>true</UseWPF>

View File

@@ -8,28 +8,24 @@ namespace EliteBGS.LogGenerator;
public class FailedMissionFormat : LogFormatter { public class FailedMissionFormat : LogFormatter {
public string GenerateLog(Objective objective) { public string GenerateLog(Objective objective) {
var missions = objective.EnabledOfType<MissionFailed>(); var missions = objective.EnabledOfType<MissionFailed>();
StringBuilder builder = new StringBuilder();
if (missions.Count <= 0) { if (missions.Count <= 0) {
return ""; return "";
} }
foreach (var failed in missions) { StringBuilder builder = new StringBuilder();
MissionFailedEntry f = failed.Failed;
string name;
if (!string.IsNullOrEmpty(f.Mission.FriendlyName)) { var grouping = missions
name = f.Mission.FriendlyName; .GroupBy(x => x.Mission.IsOnFoot)
} else if (!string.IsNullOrEmpty(f.Mission.LocalisedName)) { ;
name = f.Mission.LocalisedName;
} else {
name = f.Mission.Name;
}
if (!string.IsNullOrEmpty(failed.Faction)) { foreach (var group in grouping) {
builder.AppendFormat("Failed mission \"{0}\" targeting {1}\n", name, failed.Faction); int amount = group.Count();
if (group.Key) {
builder.AppendFormat("Failed {0} On Foot Mission(s)\n", amount);
} else { } else {
builder.AppendFormat("Failed mission \"{0}\"\n", name); builder.AppendFormat("Failed {0} Ship Mission(s)\n", amount);
} }
} }

View File

@@ -17,7 +17,8 @@ public class NonaDiscordLog : DiscordLogGenerator {
suffix = "st"; suffix = "st";
} else if (today.Day == 2 || today.Day == 22) { } else if (today.Day == 2 || today.Day == 22) {
suffix = "nd"; suffix = "nd";
} else if (today.Day == 23) { // Shakaka wins the price for finding this "bug"!
} else if (today.Day == 3 || today.Day == 23) {
suffix = "rd"; suffix = "rd";
} else { } else {
suffix = "th"; suffix = "th";

View File

@@ -1,11 +1,11 @@
# EliteBGS # EDBGS
This tool is meant to help people contributing to the BGS effort to create BGS reports. This tool is meant to help people contributing to the BGS effort to create BGS reports.
The tool allows you to configure BGS objectives, and will then parse your player journal The tool allows you to configure BGS objectives, and will then parse your player journal
for tasks you completed relating to that BGS objective. Once the JSON player journal has for tasks you completed relating to that BGS objective. Once the JSON player journal has
been parsed, you may then generate a BGS report you can copy/paste into Discord. been parsed, you may then generate a BGS report you can copy/paste into Discord.
Source code is available [here](https://git.aror.org/florian/edbgs). Source code is available at [https://codeberg.org/nola/edbgs](https://codeberg.org/nola/edbgs).
Binary downloads can be found here: [https://bgs.n0la.org/](https://bgs.n0la.org/). Binary downloads can be found here: [https://bgs.n0la.org/](https://bgs.n0la.org/).
@@ -24,6 +24,8 @@ transactions. Currently the tool recognises the following transactions:
* Selling of micro resources (Odyssey only) * Selling of micro resources (Odyssey only)
* Selling of organic data (Odyssey only) * Selling of organic data (Odyssey only)
* Vouchers, including bounty vouchers, combat bonds, and settlement vouchers (aka intel packages) * Vouchers, including bounty vouchers, combat bonds, and settlement vouchers (aka intel packages)
* Thargoid kills
* Contributions to Thargoid war effort
Vouchers help the faction that is listed for them. If said faction is not present in the Vouchers help the faction that is listed for them. If said faction is not present in the
current system, then there is no BGS impact. So the tool looks for all system factions, and current system, then there is no BGS impact. So the tool looks for all system factions, and
@@ -221,13 +223,11 @@ It would be helpful if you included the JSON player journal. This player journal
## Build Dependencies ## Build Dependencies
Handling of Elite Dangerous player journals have been moved to a separate project called `EDJournal`. The project also requires:
Its source can be found [here](https://git.aror.org/florian/edjournal). This project simply depends
on the binary DLL that `EDJournal` builds.
The project also requires `Ookii.Dialogs.WPF` controls, which contains the auto complete text box. * `Ookii.Dialogs.WPF`
* `Newtonsoft.Json`
And of course, `Newtonsoft.Json` as the JSON parser. * `Extended.Wpf.Toolkit`
## About ## About

View File

@@ -1,6 +1,13 @@
# EliteBGS changelog # EliteBGS changelog
## 0.2.5 on ??.12.2022 ## 0.2.6 on 04.02.2023
* Update Post 14.02 Thargoid bounties
* Just summarise failed missions by on-foot and ship, instead of a detailed view
* Add some more English mission names
* Move code hosting to [CodeBerg](https://codeberg.org/)
## 0.2.5 on 20.12.2022
* Repaired mission fails. * Repaired mission fails.
* Added support for Missions entry. * Added support for Missions entry.

View File

@@ -18,12 +18,6 @@ Open the file explorer, and go to the path `%AppData%`. Once there, delete the
folder called `EliteBGS` to delete the tool's configuration and cache. If it folder called `EliteBGS` to delete the tool's configuration and cache. If it
still doesn't work, contact me directly. still doesn't work, contact me directly.
### I pressed 'Download Data' and it is hanging now and won't respond. Help?
Go and delete the `EliteBGS` folder as described above to undo that action.
Also please upgrade to version 0.1.3, where this feature was removed for
exactly this reason.
### Why is it unable to find my player journal? ### Why is it unable to find my player journal?
Usually your player journal lives in the Saved Games folder in your home Usually your player journal lives in the Saved Games folder in your home
@@ -91,4 +85,3 @@ Sometimes, due to a bug, the bounty vouchers in the journal have no faction info
associated with them. Here the tool simply cannot associate the vouchers to a faction associated with them. Here the tool simply cannot associate the vouchers to a faction
or station. If you are sure they aided in BGS, simply add them by editing the Discord or station. If you are sure they aided in BGS, simply add them by editing the Discord
report. report.

View File

@@ -20,9 +20,9 @@ command line:
winget install Microsoft.DotNet.DesktopRuntime.7 winget install Microsoft.DotNet.DesktopRuntime.7
``` ```
You can download the **latest** version **0.2.4** here: You can download the **latest** version **0.2.5** here:
* [https://bgs.n0la.org/elitebgs-0.2.4.zip](https://bgs.n0la.org/elitebgs-0.2.4.zip) * [https://bgs.n0la.org/elitebgs-0.2.5.zip](https://bgs.n0la.org/elitebgs-0.2.5.zip)
## Old Versions ## Old Versions
@@ -72,7 +72,7 @@ The tool itself is Open Source, licenced unter the GPLv3.
The source code can be found here: The source code can be found here:
* [https://git.aror.org/florian/EDBGS](https://git.aror.org/florian/EDBGS) * [https://codeberg.org/nola/edbgs](https://codeberg.org/nola/edbgs)
## Contact ## Contact

View File

@@ -7,5 +7,5 @@ See [https://bgs.n0la.org/](https://bgs.n0la.org) for further details.
## Requirements ## Requirements
This repository depends on dotnet desktop SDK 7, as well as Newtonsoft.JSON and Ookii This repository depends on dotnet desktop SDK 7, as well as Newtonsoft.JSON, Extended
Dialogs. WPF toolkit, and Ookii Dialogs.