diff --git a/.gitignore b/.gitignore index 9491a2f..95f89f3 100644 --- a/.gitignore +++ b/.gitignore @@ -360,4 +360,5 @@ MigrationBackup/ .ionide/ # Fody - auto-generated XML schema -FodyWeavers.xsd \ No newline at end of file +FodyWeavers.xsd +/site diff --git a/EliteBGS.csproj b/EliteBGS.csproj index 7259dc4..cda6eae 100644 --- a/EliteBGS.csproj +++ b/EliteBGS.csproj @@ -171,22 +171,33 @@ ResXFileCodeGenerator Resources.Designer.cs + + + SettingsSingleFileGenerator Settings.Designer.cs - - PreserveNewest - + - + + Always - + + + Always + + + Always + + + PreserveNewest + @@ -197,19 +208,15 @@ - + Always - - Always - + - - Always - + @@ -227,5 +234,6 @@ + \ No newline at end of file diff --git a/CHANGELOG.md b/docs/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to docs/CHANGELOG.md diff --git a/docs/description.md b/docs/description.md new file mode 100644 index 0000000..f264101 --- /dev/null +++ b/docs/description.md @@ -0,0 +1,242 @@ +# EliteBGS + +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 +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. + +Source code is available [here](https://git.aror.org/florian/elitebgs). + +Binary downloads can be found here: [https://bgs.n0la.org/](https://bgs.n0la.org/). + +## How To + +![Main Window Objectives](main-objectives.png) + +Use the main tab to add objectives to the program. To do this, insert the system name, +faction, and, optionally, a station. Then press "Add Objective". Objectives can be deleted +by selecting them and pressing the "DEL" key. Manually added objectives like this are +enabled by default. You can always enable, and disable an objective by checking the box +next to its name. Disabled objectives are not included in the BGS discord log generation. + +Once you have your objectives have been configured, you can press "Parse Journal", which +will check your Elite Dangerous player journal for completed missions. Currently the tool +recognises the following completed tasks: + +* Buying of cargo from stations (new in Update 10) +* Completed missions +* Failed missions +* Murders +* Search and Rescue contributions +* Selling cartography data +* Selling of cargo to stations +* Selling of micro resources (Odyssey only) +* Selling of organic data (Odyssey only) +* Vouchers, including bounty vouchers, combat bonds, and settlement vouchers (aka intel packages) + +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 +makes sure that your vouchers actually have a BGS impact, otherwise it won't list them. + +Selling cargo attempts to discern the profit and/or loss, which is helpful to gauge BGS +impact. But the player journal does not tell the amount of profit in the sell message. +So the tool looks for a buy a message related to the same commodity, and calculates loss +and/or profit from that. If the buy of the commodity is not within the time and date range, +or some other shenanigans happen that the tool does not yet support, the profit/loss could +be wrong. You can use the "Adjust Trade Profit" button to manually adjust the trade profit, +or you could simply edit the discord log manually. + +Please note that cartography data, and micro resources only help the controlling faction +of a station. The tool is clever enough to exclude these if the station you turn them in at, is not +controlled by the faction you specified in the objective. + +Some missions may show up having zero influence for the given faction. This happens if you do +missions for a faction which is currently in an election state. You do not gain influence for +the faction so the influence reads as zero. But you contribute towards the election, so the +missions are selected anyway. + +There is no entry in the journal if you win a combat zone. So you have to add those manually. Select +an objective for which you wish to log a combat zone. The faction in the objective, must be the +faction you fought for in the combat zone. Then click "Add Combat Zone Win". Select type, +either "On Foot" for Odyssey, or "Ship" for regular ones. Then select the grade (low, medium or +high), and how many you won. Then press "Accept". Select "Cancel" to abort. You can of course remove +the combat zone entries by selecting them, and pressing "DEL". + +If you deliberately fail a mission (to log negative INF towards a faction), the tool cannot detect +it, if the day you accepted the mission is outside of the given date range. It needs the journal +entry where you accept the mission to connect the mission to a faction, system and station. The tool +will warn you if this happens, with a message in the error log in the fourth tab. + +When committing murder, the journal entry contains the faction information of the faction that gave +you the bounty. And not the faction of the victim. The tool will look for an event in which you +scanned your victim, and gleem the victim's faction from that. If you did not scan your victim, then +sadly the tool cannot connect the victim's faction to the victim. + +![Main Window with entries](main-entries.png) + +The window will then list all the journal entries it has found, and group them by objectives. You +can select which objectives you wish to report, by using the checkmarks. + +You can exclude a specific entry within an objective by deselecting the checkbox next to them. +This way said entry will not appear in the final log. You can also remove individual entries +(if you think the tool detected something you thought was wrong), by selecting the entry, +and pressing the "DEL" key. + +Once you are satisfied with the result, move to "Discord Report" tab, select a template, and click +"Generate Report". + +![Generated Report](main-report.png) + +Before you copy/paste it into the discord of your squadron, you should check the log. You can of +course edit it, if something is wrong or the tool itself missed something. + +## Known Issues and Bugs + +### Settlement Vouchers + +Settlement vouchers (aka Intel Packages) help every faction aligned with the given superpower. +So if you turn in an Imperial intel package on an imperial station, all factions aligned with +the Empire will gain a bit of INF boost. The tool currently cannot handle that. All intel packages +are displayed instead. + +### Bugged bounty vouchers + +Sometimes bounty vouchers are not properly recognised. This is a bug in the player journal, where +the faction information is not properly written out in the journal: + +``` +{ + "timestamp":"2021-10-07T14:57:50Z", "event":"RedeemVoucher", + "Type":"bounty", "Amount":20750, + "Factions":[ { "Faction":"", "Amount":500 }, { "Faction":"", "Amount":20250 }] +} +``` + +Since the tool does not know for which faction these bounties were redeemed for, it cannot assign +it to an objective. + +### Combat Zones + +The player journal currently does not make an entry when you win or lose a combat zone. This is a +an ommission from FDev: + +* [https://issues.frontierstore.net/issue-detail/43509](https://issues.frontierstore.net/issue-detail/43509) + +Please upvote the issue to get it fixed. Until then, you have to add combat zone wins manually. + +### On-Foot NPC givers + +Up until update 13 missions accepted from NPCs in Odyssey concourses do not get a player journal entry. +This has been fixed in update 13. Any on foot missions from NPCs accepted before update 13, do not have +an entry in the player journal. + +### Failed vs. Abandoned Missions + +The tool also currently cannot differentiate between missions you have abandoned in the transaction +tab before it was completed, and those that you have failed - either delibaretly or by time-out. So +it will find and add them all, and you simply can remove those that you have abandoned manually. + +### Influence given to empty/non-existent faction + +Sometimes the log will state that it gave positive or negative influence to a faction, but the +faction name is empty: + +``` + "FactionEffects": [ + { + "Faction": "", + "Effects": [ + { + "Effect": "$MISSIONUTIL_Interaction_Summary_EP_down;", + "Effect_Localised": "The economic status of $#MinorFaction; has declined in the $#System; system.", + "Trend": "DownBad" + } + ], + "Influence": [ + { + "SystemAddress": 251012319587, + "Trend": "DownBad", + "Influence": "+" + } + ], + "ReputationTrend": "DownBad", + "Reputation": "+" + } +] +``` +This happens for example if you do a scan/heist mission from a surface POI, but no one owns said +surface POI. Randomly generated surface POIs sometimes have no owner, and said non-existant owner +then gets the negative influence. + +### Mission Completed but no one gains influence + +Sometimes missions are completed but no one gains any influence: + +``` +{ + "timestamp": "2022-02-25T21:30:45Z", + "event": "MissionCompleted", + "Faction": "Social LHS 6103 Confederation", + "Name": "Mission_Courier_Elections_name", + "MissionID": 850025233, + "TargetFaction": "Delphin Blue Federal PLC", + "DestinationSystem": "Delphin", + "DestinationStation": "Aristotle Orbital", + "Reward": 122300, + "FactionEffects": [ + { + "Faction": "Social LHS 6103 Confederation", + "Effects": [ + { + "Effect": "$MISSIONUTIL_Interaction_Summary_EP_up;", + "Effect_Localised": "The economic status of $#MinorFaction; has improved in the $#System; system.", + "Trend": "UpGood" + } + ], + "Influence": [], + "ReputationTrend": "UpGood", + "Reputation": "+" + }, + { + "Faction": "Delphin Blue Federal PLC", + "Effects": [], + "Influence": [], + "ReputationTrend": "UpGood", + "Reputation": "+" + } + ] +} +``` + +Here the is known that at the time of completion the Confederation was in an Election and could not +have gained any influence regardless. It is unclear whether this also holds true for Delphin Blue +Federal PLC. So to be save, the tool assumes that if no influence was gained for the source faction, +it still has to make an entry for the source system. The same applies for the target faction: if no +influence is gained for the target faction, still add an entry for the target faction in the missions +target system. + +Since it is not possible to differentiate between missions that give no influence no matter what, and +no influence gained because of an election, we have to assume it *gave* influence and let the user +decide whether it was because of an election, or not. + +Future tool versions should probably take faction states into account in such matters. + +## Nothing's Perfect + +The tool itself is still a work in progress, and it might miss something. If you think the tool +missed a task you have done, please contact `Hekateh` on the Elite Dangerous community discord. +It would be helpful if you included the JSON player journal. This player journal can be found here: + +``` +%userprofile%\saved Games\Frontier Developments\Elite Dangerous\ +``` + +## Build Dependencies + +Handling of Elite Dangerous player journals have been moved to a separate project called `EDJournal`. +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. + +And of course, `Newtonsoft.Json` as the JSON parser. \ No newline at end of file diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 0000000..a442713 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,94 @@ +## FAQ + +Most frequently asked questions: + +### Windows complains that it does not wish to run the application, what gives? + +The tool contains no viruses, but it is not seen as "trustworthy". You can however +right-click EliteBGS.exe and "Unblock" the application. + +### Does this work for console players? + +Sorry, no. Console players don't have a player journal per se, and the tool does +not support Frontier Commander API. + +### Why won't the tool start anymore? + +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 +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? + +Usually your player journal lives in the Saved Games folder in your home +directory. If, for some reason, this doesn't match up, you can point the +tool towards your player journal in the third tab. + +### Why do some of the objective not show up in the final discord log? + +Only objectives with the little checkbox enabled show up there. Those +that the tool generates by itself are not enabled per default. + +### Can I delete an objective or an entry? + +Click on an objective or entry and press the Delete key. + +### I deleted something I didn't want to. What now? + +Just press "Parse Journal" again, and the tool will generate all +the entries again. + +### What are micro resources? + +Odyssey cargo that you sell at the bartender. Just like normal cargo, +they aid the controlling faction of the station where you sold them. + +### Why are missions accepted in a concourse or in a settlement from an NPC missing? + +Because up until Update 13, they did not show up in player journal. This should +now be fixed. + +### Some mission names are weird. What gives? + +That's because the tool uses the game generated mission name, if it doesn't +have a clean and nice mission name on file for the certain mission type. The +fourth tab "Event Log" should have an entry about it, so please post those +names into this channel. + +### Some missions say they have 0 influence? + +That happens for missions that aid an Election. The faction in question does +not gain influence during an election, as influence is locked during conflicts. +But since you are contributing towards the election win of that faction, +the tool picks them anyway. + +### Why are some failed missions not showing up? + +The time span you specify must include the day where you accepted the mission, +as well as the day where you failed the mission. Otherwise the tool cannot handle +that failed mission. + +### The tool complains about missing factions for an NPC I murdered. + +The player journal only tells the faction that issued the bounty upon murder, and +not the faction of the NPC killed. The tool has to fetch that from you scanning the +hip. If you didn't fully scan the ship before murdering it, the tool won't know +the faction of the NPC. + +### Why does cartography data, and sold cargo show up for the wrong faction, but for the right station/system? + +Because they only aid the controlling faction of the station. + +### Why are some of my bounty vouchers missing? + +Sometimes, due to a bug, the bounty vouchers in the journal have no faction information +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 +report. + diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..39a43ca --- /dev/null +++ b/docs/index.md @@ -0,0 +1,69 @@ +# EliteBGS + +EliteBGS is a Windows desktop application, that helps you sum up your BGS related actions. +It then creates a report from your actions, so you can post it your Squadron's discord. + +## Origins + +The tool originated from the [Nova Navy](https://inara.cz/elite/squadron/5058/), which required +BGS contributions to be posted to the Navy's discord, in a very specific format. Writing those +logs manually was a lot of work, so CMDR Hekateh created a tool to automate this process. + +## Overview + +EliteBGS reads through your player journal for BGS relevant activity, and sorts them into +"categories". These are based upon the star system, station and the faction for which the +action was taken. So for example if you contributed bounty vouchers for Nova Paresa in +Paresa, but also did some missions for Nova Paresa in Adachit, those actions will be +split into two categories. + +You can then select which of the two actions goes into the final log. + +### What it detects: + +* Buying of cargo from stations (BGS relevant since Update 10) +* Completed missions +* Failed missions +* Murders +* Search and Rescue contributions +* Selling cartography data +* Selling of cargo to stations +* Selling of micro resources (Odyssey only) +* Selling of organic data (Odyssey only) +* Vouchers, including bounty vouchers, combat bonds, and settlement vouchers (aka intel packages) + +### What it does not detect: + +* Combat zone wins, and its objectives +* Megaship scenarios +* On foot missions accepted by NPCs in stations (pre Update 13) +* Murders of NPCs you haven't fully scanned + +## Open Source + +The tool itself is Open Source, licenced unter the GPLv3. + +The source code can be found here: + +* [https://git.aror.org/florian/EliteBGS](https://git.aror.org/florian/EliteBGS) + +It requires a separate library, called EDJournal, which is also open source: + +* [https://git.aror.org/florian/edjournal](https://git.aror.org/florian/edjournal) + +## Downloads + +The latest version of EliteBGS **0.1.5** is available for download here: + +* [https://bgs.n0la.org/elitebgs-0.1.5.zip](https://bgs.n0la.org/elitebgs-0.1.5.zip) + +Older versions are available in the archive: + +* [https://bgs.n0la.org/archive/](https://bgs.n0la.org/archive/) + +## Contact + +I can be reached over discord: `nola#2457` + +Or by joining either the [Salus Invicta](https://discord.com/invite/FeEtjqBRkg) or the +[Nova Navy](https://discord.gg/WEJeFQw) discord. \ No newline at end of file diff --git a/docs/main-entries.png b/docs/main-entries.png new file mode 100644 index 0000000..4fdb5ea Binary files /dev/null and b/docs/main-entries.png differ diff --git a/docs/main-objectives.png b/docs/main-objectives.png new file mode 100644 index 0000000..0ec009e Binary files /dev/null and b/docs/main-objectives.png differ diff --git a/docs/main-report.png b/docs/main-report.png new file mode 100644 index 0000000..d1a494b Binary files /dev/null and b/docs/main-report.png differ diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..15dba1b --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,14 @@ +site_name: EliteBGS + +markdown_extensions: + - pymdownx.snippets: + check_paths: true + +theme: + name: lumen + +nav: + - Overview: 'index.md' + - "Detailed Description": 'description.md' + - FAQ: 'faq.md' + - Changelog: 'CHANGELOG.md'