Fractal Softworks Forum

Starsector => Mods => Topic started by: Nick XR on January 10, 2017, 10:50:29 PM

Title: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: Nick XR on January 10, 2017, 10:50:29 PM
Combat Analytics & Detailed Combat Results v4.4
-=Download=- (https://bitbucket.org/NickWWest/starsectorcombatanalytics/downloads/CombatAnalytics.4.4.zip)

Ever wonder how many ships you've killed?  Or how a new ship load-out you've created is performing in combat?  Or how useless a cautious officer is in an Onslaught?
No more guessing, now you can know for sure!

Features:



In Game Images:
(https://i.imgur.com/5GyrqKj.png)

Analytics!!
(http://i.imgur.com/zXl0tm5.png)
To enabled saving detailed data for external analysis, set 'SaveDetailedCombatData' to true, then look for your data after combats in: /saves/common/combatanalytics/

-=Download=- (https://bitbucket.org/NickWWest/starsectorcombatanalytics/downloads/CombatAnalytics.4.4.zip)

How to use:

 1. Download & install this mod
 2. Make sure this mod is enabled
 3. Fight at least one battle (simulation doesn't count)
 4. View the generated intel event using the 'e' key OR
 5. Press the 'L' key (configurable in mod's settings.json) when in the campaign UI


Mod compatibility:

Known Issues/Limitations:


Using this mod in other mods:
This mod is covered by the MIT license, you can do what ever you want with this, no need to ask.  Just be nice and mention that this mod exists and where you got it from :)


Change Log:
Spoiler
v4.4
 Try again to get MIRVs to calculate damage correctly without breaking anything else

v4.3
 Fully compatible with prior version
 MIRV warheads should now calculate their damage properly (Thanks MesoTroniK)
 Defend against NULL in a place it shouldn't be possible but apparently is.

v4.2
 New save data format to enable new functionality
  • This won't break anything.
  • But your old combat data will be automatically deleted.
  • Your save game is fine.
No longer displaying kills based on killing blows, we now display Solo Kills (> 80% of hull damage) and Assists (> 20% hull dmg)
 DP destroyed based on pro-rated armor/hull damage
 Much more accurate damage calculations.  Not perfect, but much better.
 More accurate tracking of what ships were killed.
 Fighters are now treated as a singular weapon system, since that is often the most useful way of thinking about them
 Ships details "kill" grid removed, replaced with sprites:
  • now render sprites for ships that were solo-killed
  • render ship sprites that were kill-assisted (along with a damage overlay)
New enemy fleet status summary area
 Player ships are shown as Disabled/Destroyed/Retreated in ship list
 Added % hull remaining after combat, color coded
 Can now aggregate data based on history and generate a "Merged combat result"

v4.1
 Proper fighter kill count for TOTAL rows
 Denser data format for detailed combat data (to try and avoid 1MB limit)
 No longer using "ship list" functionality, now using rendered sprite images in list
 If SaveDetailedCombatData is set to true, save detailed results when main menu missions are played (saved on completion)
 Images scaled slightly by hull class
 Use 7 zip command line to build archive to hopefully work around archive slash issues

v4.0
 Added new intel window for post combat detailed results (press 'e')
 Weapons can now properly compute how many fighters they've killed (rewrote aggregation)
 Various bug fixes around things done in mods that aren't done in Vanilla (big thanks stormbringer951)
 If SaveDetailedCombatData is on, files will be written after each battle in the folder /saves/common/combatanalytics/

3.3
 Defend against key not being specified in JSON

3.2
 Handle possible exception (should only happen on some mods)
 Sort results by damage dealt desc

3.1
 Updated to starsector .9a
 
3.0
 Updated to Starsector .8.1a
 Fighters are tracked as weapon systems

2.0
 Data is persisted as strings so disabling the mod wont break saves
 Better exception trapping in case something unexpected happens

1.0 - Released
[close]

Forum: http://fractalsoftworks.com/forum/index.php?topic=11551.0
Source: https://bitbucket.org/NickWWest/starsectorcombatanalytics
License: MIT License (Do what ever you want, creators not liable)
Title: Re: [0.7.2a] Combat Analytics (2017-01-10)
Post by: Midnight Kitsune on January 10, 2017, 10:58:41 PM
One issue I think I can already see is that the K key is used by Common Radar to turn the radar on and off
Title: Re: [0.7.2a] Combat Analytics (2017-01-10)
Post by: Nick XR on January 10, 2017, 11:06:54 PM
OhSnap.gif


There will probably be a few other issues I'll solve at the same time before issuing a new version. 

Thanks!
Title: Re: [0.7.2a] Combat Analytics (2017-01-10)
Post by: nomadic_leader on January 22, 2017, 05:42:06 AM
Nice. Really like the mods experimenting with new features.

Any possibility of adding a running and per battle tally of friendly/enemy crew kills/losses?
Title: Re: [0.7.2a] Combat Analytics (2017-01-10)
Post by: JohnDoe on January 22, 2017, 07:39:26 AM
I really want something like raid dps meter
Title: Re: [0.7.2a] Combat Analytics (2017-01-10)
Post by: Nick XR on January 22, 2017, 09:26:34 PM
What sort of functionality does raid dps meter have that you would want?

for SS v.8  I'll see about having optional totals that display during combat.
Title: Re: [0.7.2a] Combat Analytics v.1 (2017-01-10)
Post by: stormbringer951 on February 09, 2017, 09:25:02 AM
There's a crash to desktop bug whenever you exit the combat analytics menu, which after some testing enabling/disabling mods from my modlist seems to be caused by an interaction with Nexerelin.

The stack trace from the Starsector log:

Code
123629 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.campaign.CampaignState.dialogDismissed(Unknown Source)
at com.fs.starfarer.ui.M.dismiss(Unknown Source)
at com.fs.starfarer.ui.newui.o0oO.dismiss(Unknown Source)
at com.fs.starfarer.ui.newui.T.dismiss(Unknown Source)
at com.fs.starfarer.ui.M.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.newui.T.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.ui.O0o0.dispatchEventsToChildren(Unknown Source)
at com.fs.starfarer.ui.O0o0.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.processInput(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Minimal set of mods to replicate the crash:
Title: Re: [0.7.2a] Combat Analytics v.1 (2017-01-10)
Post by: Nick XR on February 09, 2017, 09:57:43 AM
Thanks, I'll check it out today.
Title: Re: [0.7.2a] Combat Analytics v.1 (2017-01-10)
Post by: Nick XR on February 09, 2017, 10:36:52 PM
There's a crash to desktop bug whenever you exit the combat analytics menu, which after some testing enabling/disabling mods from my modlist seems to be caused by an interaction with Nexerelin.

The stack trace from the Starsector log:

Code
123629 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.campaign.CampaignState.dialogDismissed(Unknown Source)
at com.fs.starfarer.ui.M.dismiss(Unknown Source)
at com.fs.starfarer.ui.newui.o0oO.dismiss(Unknown Source)
at com.fs.starfarer.ui.newui.T.dismiss(Unknown Source)
at com.fs.starfarer.ui.M.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.newui.T.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.ui.O0o0.dispatchEventsToChildren(Unknown Source)
at com.fs.starfarer.ui.O0o0.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.processInput(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Minimal set of mods to replicate the crash:
  • Combat Analytics .1
  • LazyLib 2.1
  • Nexerelin 0.7.6d

Got it fixed, new DL link is up.  Thanks for the easy repro steps with the mod list.

Root problem was, the dialogue init was looking for a sector entity token that doesn't exist in non vanilla games (Jangala system)
Title: Re: [0.7.2a] Combat Analytics v.1 (2017-01-10)
Post by: stormbringer951 on February 10, 2017, 02:21:43 AM
There's a crash to desktop bug whenever you exit the combat analytics menu, which after some testing enabling/disabling mods from my modlist seems to be caused by an interaction with Nexerelin.

The stack trace from the Starsector log:

Code
123629 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
at com.fs.starfarer.campaign.CampaignState.dialogDismissed(Unknown Source)
at com.fs.starfarer.ui.M.dismiss(Unknown Source)
at com.fs.starfarer.ui.newui.o0oO.dismiss(Unknown Source)
at com.fs.starfarer.ui.newui.T.dismiss(Unknown Source)
at com.fs.starfarer.ui.M.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.newui.T.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.ui.O0o0.dispatchEventsToChildren(Unknown Source)
at com.fs.starfarer.ui.O0o0.processInputImpl(Unknown Source)
at com.fs.starfarer.ui.O00OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.processInput(Unknown Source)
at com.fs.starfarer.campaign.CampaignState.processInput(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Minimal set of mods to replicate the crash:
  • Combat Analytics .1
  • LazyLib 2.1
  • Nexerelin 0.7.6d

Got it fixed, new DL link is up.  Thanks for the easy repro steps with the mod list.

Root problem was, the dialogue init was looking for a sector entity token that doesn't exist in non vanilla games (Jangala system)

No problem. Thanks for the blazing fast turnaround time on the hotfix :)
Title: Re: [0.7.2a] Combat Analytics v.1.1 (2017-02-09)
Post by: Weltall on February 10, 2017, 06:58:32 PM
A cautious officer in an onslaught  :o I definitely do not need a mod to know ow useless they will be! 100%  ::)

Holy.. I remember talks about a mod like this, but I never thought I would see it. Thanks a lot Nick XR. How many times I would feel someone in team is doing nothing but flying around. This is great =)
Title: Re: [0.7.2a] Combat Analytics v.1.1 (2017-02-09)
Post by: Pegart on February 13, 2017, 06:45:32 AM
Quote
Disabling mod will render your save broken (but it can be fixed with a text editor)

What needs to be edited in the save file when turning the mod off to fix it?
Title: Re: [0.7.2a] Combat Analytics v.1.1 (2017-02-09)
Post by: Nick XR on February 13, 2017, 09:44:20 AM
I'm not sure off the top of my head, I'll let you know inside the day.  The core issues is CombatAnalytics classes are serialized with the persisted data.  The gist is to fix your save, you just need to safely remove all the elements where CombatAnalytics is referenced.

There shouldn't be any issues with leaving the mod enabled to keep it from breaking your save (if you are having issues, please let me know). 

In the next release disabling the mod won't break your saves, but I'm waiting for SS.8 to release it.
Title: Re: [0.7.2a] Combat Analytics v.1.1 (2017-02-09)
Post by: Pegart on February 13, 2017, 10:42:36 AM
OK, sure will if I'll have any problems. Was just postponing using it because I didn't want to risk breaking my game and potentially not being able to revert back but if you say it's pretty simple if it needs to be done I'll use it.
Title: Re: [0.7.2a] Combat Analytics v.1.1 (2017-02-09)
Post by: stormbringer951 on April 03, 2018, 02:55:27 PM
Any chance this mod will see an update for 0.8.1?
Title: Re: [0.8.1a] Combat Analytics v.3 (2018-06-29)
Post by: Nick XR on June 29, 2018, 08:35:15 PM
Updated to .3

- Now supports Starsector 8.1a
- Fighters are now tracked as weapon systems
Title: Re: [0.8.1a] Combat Analytics v.3 (2018-06-29)
Post by: atreg on June 29, 2018, 09:52:19 PM
Got a fatal null error involving this mod after my third fleet encounter.
Spoiler
1039936 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
   at data.scripts.combatanalytics.data.WeaponDamage.compareTo(WeaponDamage.java:110)
   at data.scripts.combatanalytics.data.WeaponDamage.compareTo(WeaponDamage.java:9)
   at java.util.Arrays.mergeSort(Unknown Source)
   at java.util.Arrays.mergeSort(Unknown Source)
   at java.util.Arrays.legacyMergeSort(Unknown Source)
   at java.util.Arrays.sort(Unknown Source)
   at data.scripts.combatanalytics.data.CombatResult.buildShipCombatResults(CombatResult.java:132)
   at data.scripts.combatanalytics.data.CombatResult.<init>(CombatResult.java:70)
   at data.scripts.combatanalytics.CombatAnalyticsManager.completeCombat(CombatAnalyticsManager.java:29)
   at data.scripts.combatanalytics.CombatAnalyticsModPlugin$1.reportPlayerEngagement(CombatAnalyticsModPlugin.java:43)
   at com.fs.starfarer.campaign.CampaignEngine.reportPlayerEngagement(Unknown Source)
   at com.fs.starfarer.api.impl.campaign.FleetEncounterContext.processEngagementResul ts(FleetEncounterContext.java:235)
   at com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.backFromEng agement(FleetInteractionDialogPluginImpl.java:426)
   at exerelin.campaign.battle.NexFleetInteractionDialogPluginImpl.backFromEngagement(NexFleetInteractionDialogPluginImpl.java:65)
   at com.fs.starfarer.campaign.CampaignState.prepare(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
[close]
Title: Re: [0.8.1a] Combat Analytics v.3 (2018-06-29)
Post by: Nick XR on June 29, 2018, 11:30:59 PM
Got a fatal null error involving this mod after my third fleet encounter.
Spoiler
1039936 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
   at data.scripts.combatanalytics.data.WeaponDamage.compareTo(WeaponDamage.java:110)
   at data.scripts.combatanalytics.data.WeaponDamage.compareTo(WeaponDamage.java:9)
   at java.util.Arrays.mergeSort(Unknown Source)
   at java.util.Arrays.mergeSort(Unknown Source)
   at java.util.Arrays.legacyMergeSort(Unknown Source)
   at java.util.Arrays.sort(Unknown Source)
   at data.scripts.combatanalytics.data.CombatResult.buildShipCombatResults(CombatResult.java:132)
   at data.scripts.combatanalytics.data.CombatResult.<init>(CombatResult.java:70)
   at data.scripts.combatanalytics.CombatAnalyticsManager.completeCombat(CombatAnalyticsManager.java:29)
   at data.scripts.combatanalytics.CombatAnalyticsModPlugin$1.reportPlayerEngagement(CombatAnalyticsModPlugin.java:43)
   at com.fs.starfarer.campaign.CampaignEngine.reportPlayerEngagement(Unknown Source)
   at com.fs.starfarer.api.impl.campaign.FleetEncounterContext.processEngagementResul ts(FleetEncounterContext.java:235)
   at com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.backFromEng agement(FleetInteractionDialogPluginImpl.java:426)
   at exerelin.campaign.battle.NexFleetInteractionDialogPluginImpl.backFromEngagement(NexFleetInteractionDialogPluginImpl.java:65)
   at com.fs.starfarer.campaign.CampaignState.prepare(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
[close]



Sorry about that, I'll check it out. 
Title: Re: [0.8.1a] Combat Analytics v.3 (2018-06-29)
Post by: Nick XR on June 29, 2018, 11:48:32 PM
@atreg Try the latest version that's posted.  Looks like a Ship had a name of NULL which isn't very nice, but perhaps possible with mods.  Let me know if that works/doesn't work.

Thanks!
Title: Re: [0.8.1a] Combat Analytics v.3 (2018-06-29)
Post by: atreg on June 30, 2018, 04:23:12 AM
I went through a bunch of fights and didn't crash, so it seems like whatever you did worked.
The only other thing I noticed is that Tritach Corporation is spelled as "Torporation," but otherwise thanks for the quick fix.
Title: Re: [0.8.1a] Combat Analytics v.3 (2018-06-29)
Post by: Nick XR on June 30, 2018, 08:54:38 AM
I went through a bunch of fights and didn't crash, so it seems like whatever you did worked.
The only other thing I noticed is that Tritach Corporation is spelled as "Torporation," but otherwise thanks for the quick fix.

Ah good catch.  Was using index 0 to uppercase a letter instead of index i, so it was always getting the first character.  Fixed.
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Nick XR on November 18, 2018, 04:46:40 PM
3.1 Release
* Updated for .9a
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Thaago on November 18, 2018, 06:36:38 PM
Thanks for updating! This is always a fun mod. Any way to expand functionality to damage done by type and/or with reductions? Or is it just not supported by the API at present?
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Nick XR on November 18, 2018, 11:46:05 PM
Thanks for updating! This is always a fun mod. Any way to expand functionality to damage done by type and/or with reductions? Or is it just not supported by the API at present?

I have plans to add a bit more detail and better presentation, but not to that level.  It's quite difficult to tell how much damage was done to armor/hull, even with shields it's sort-of hard with damage types and efficiency. Unfortunately there's no damage-event that can be subscribed to so a lot of stuff is inferred.  I had thought about going down that route of trying to figure out damage at a greater detail, but then I realized what's there more or less seems to meet the needs of determining what ships and weapons are actually doing anything in combat, and being off by 25% or even more probably wouldn't change any actual conclusions. 

Thanks for using the mod!
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Thaago on November 19, 2018, 12:31:40 AM
Thats kind of what I thought, there's some complex interactions happening there. Thanks for making the mod!
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Gaudium on November 19, 2018, 11:30:39 PM
Hello i am getting this:
33327 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33344 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33512 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33533 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33553 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33621 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33641 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33846 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33868 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33949 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
33970 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34141 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34177 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34260 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34476 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34709 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34728 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
34988 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35008 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35035 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35064 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35268 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35288 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35324 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35340 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35601 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
35616 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Error processing damage detection
java.lang.NullPointerException
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleProjectile(EveryFrameDamageDetector.java:272)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.handleFrame(EveryFrameDamageDetector.java:138)
   at data.scripts.combatanalytics.EveryFrameDamageDetector.detectDamage(EveryFrameDamageDetector.java:34)
   at data.scripts.plugins.DamageDetectionEveryFrameCombatPlugin.advance(DamageDetectionEveryFrameCombatPlugin.java:20)
   at com.fs.starfarer.title.C.o0oO$Oo.o00000(Unknown Source)
   at com.fs.starfarer.combat.A.B.o00000(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
   at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
   at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Gaudium on November 19, 2018, 11:38:45 PM
And then this:
901504 [Thread-4] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.NullPointerException
java.lang.NullPointerException
   at com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflater.inflate(DefaultFleetInflater.java:258)
   at com.fs.starfarer.campaign.fleet.CampaignFleet.inflateIfNeeded(Unknown Source)
   at com.fs.starfarer.ui.impl.StandardTooltipV2.createFleetTooltip(Unknown Source)
   at com.fs.starfarer.campaign.ooOO.o00000(Unknown Source)
   at com.fs.starfarer.campaign.CampaignEngine.advance(Unknown Source)
   at com.fs.starfarer.campaign.CampaignState.advance(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

Not sure if this is from the same mod since last night everything was working fine but i updated a few mods this morning since they were patched.
Title: Re: [0.9a] Combat Analytics v3.1 (2018-11-18)
Post by: Nick XR on November 20, 2018, 12:14:07 AM
Thanks for the stacks.  I'll get it sorted out.
Title: Re: [0.9a] Combat Analytics v3.2 (2018-11-20)
Post by: Nick XR on November 20, 2018, 09:21:56 AM
Version 3.2 uploaded.

Fix for exception (I think).  I wasn't able to repro it locally so I think it's mod related.  The issue was around assuming that if a firing ship was a fighter that it must also have a fighter wing it belongs to.

Also sorted the ships in the dialogue list by total damage dealt, descending.
Title: Re: [0.9a] Combat Analytics v3.2 (2018-11-20)
Post by: ChrisKvn on February 03, 2019, 12:54:43 PM
I get the following backtrace when starting a new game with this mod, this is after remapping WASD to ESDF keyboard layouts, maybe it does not like that:


412843 [Thread-5] INFO  com.fs.starfarer.api.impl.campaign.intel.AnalyzeEntityMissionIntel  - Created AnalyzeEntityMissionIntel: Domain-era Probe, faction: pirates
412844 [Thread-5] INFO  com.fs.starfarer.api.impl.campaign.intel.SurveyPlanetMissionIntel  - Created SurveyPlanetMissionIntel: Alpha New Biscay II, faction: independent
412845 [Thread-5] INFO  com.fs.starfarer.api.impl.campaign.intel.SystemBountyIntel  - Starting bounty at market [Jangala], 1650 credits per frigate
412854 [Thread-9] INFO  sound.O  - Cleaning up music with id [miscallenous_main_menu.ogg]
412906 [Thread-5] ERROR com.fs.starfarer.combat.CombatMain  - java.lang.RuntimeException: org.json.JSONException: JSONObject["CombatAnalyzeKey"] not found.
java.lang.RuntimeException: org.json.JSONException: JSONObject["CombatAnalyzeKey"] not found.
        at com.fs.starfarer.settings.StarfarerSettings.class(Unknown Source)
        at com.fs.starfarer.settings.StarfarerSettings$1.getString(Unknown Source)
        at data.scripts.combatanalytics.CombatAnalyticsModPlugin.onGameLoad(CombatAnalyticsModPlugin.java:41)
        at com.fs.starfarer.campaign.save.CampaignGameManager.super(Unknown Source)
        at com.fs.starfarer.title.TitleScreenState.dialogDismissed(Unknown Source)
        at com.fs.starfarer.title.TitleScreenState.dialogDismissed(Unknown Source)
        at com.fs.starfarer.ui.N.dismiss(Unknown Source)
        at com.fs.starfarer.ui.newui.float.dismiss(Unknown Source)
        at com.fs.starfarer.ui.newui.Objectsuper.advanceImpl(Unknown Source)
        at com.fs.starfarer.ui.Q.advance(Unknown Source)
        at com.fs.starfarer.ui.v.advanceImpl(Unknown Source)
        at com.fs.starfarer.ui.Q.advance(Unknown Source)
        at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
        at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
        at com.fs.state.AppDriver.begin(Unknown Source)
        at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
        at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: org.json.JSONException: JSONObject["CombatAnalyzeKey"] not found.
        at org.json.JSONObject.get(JSONObject.java:406)
        at org.json.JSONObject.getString(JSONObject.java:577)
        ... 18 more
413016 [Thread-11] INFO  sound.O  - Creating streaming player for music with id [miscallenous_main_menu.ogg]
413016 [Thread-11] INFO  sound.OooO  - Playing music with id [miscallenous_main_menu.ogg]

Title: Re: [0.9a] Combat Analytics v3.2 (2018-11-20)
Post by: Nick XR on February 03, 2019, 07:02:02 PM
Yeah, it looks like there isn't a key assigned to the combat analytics.  I'll try your repro steps, thanks!
Title: Re: [0.9a] Combat Analytics v3.2 (2018-11-20)
Post by: xor0 on February 04, 2019, 09:23:13 AM
ERROR com.fs.starfarer.combat.CombatMain  - java.lang.RuntimeException: org.json.JSONException: JSONObject["CombatAnalyzeKey"] not found.

I got the same error when using peazip to unzip. For some reason it can't access a couple of files. Just grabbing the files from windows works fine.
Title: Re: [0.9a] Combat Analytics v3.2 (2018-11-20)
Post by: Nick XR on February 09, 2019, 02:55:57 PM
Is Peazip safe to use?  It claims to be open source, but it's git repo is for its website not the product, it's presence on SourceForge is limited to things to download, and it's OSDN repo is empty (https://osdn.net/projects/peazip/scm/svn/).  It's as though it's trying really hard to look like opensource, without being opensource.

I'm not saying it's a scam, but I will say if I was to run a scam pretending to be open source it would look a LOT like this.

I use a build script that uses the powershell command 'Compress-Archive' (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive?view=powershell-6)

New 3.3 Build is up, adds error handling when the configuration can't be located (which might be a clue that there's a bigger problem, but at least if it's only config it'll still load)
Title: Re: [0.9a] Combat Analytics v3.3 (2018-11-20)
Post by: seewen on April 28, 2019, 05:53:04 AM
Excellet mod. It helped me learn the game.
Title: Re: [0.9a] Combat Analytics v3.3 (2018-11-20)
Post by: Nick XR on May 10, 2019, 11:49:59 PM
Excellet mod. It helped me learn the game.

Great to hear!

Mod is verified to work without issue on 9.1a
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: stormbringer951 on May 22, 2019, 09:22:24 AM
Some bugs to report / features to request:

1. From code-diving, when Combat Analytics tries to load invalid data, the exception aborts loading the entire dataset and pressing [L] only tells you no battles have been fought. Corrupted data is not communicated to the player in gameplay, only in the starsector.log which is very verbose and most players don't read.

It should notify the player (perhaps via Global.getSector().getCampaignUI().addMessage()?) that there may be a a problem parsing corrupted combat records when the exception is thrown / when opening the interaction dialogue.

2. Damage records can be created by the EveryFrame plugin which is not accepted by SerialisationManager, which will cause an exception to be thrown at data read time. Namely, it does not check for empty string weaponNames at creation time, but does at read time.

Repro steps:

- download the Karlsson Heirloom mod from the #mod_updates channel in the Discord server.
- addship kh_commitment frigate using console commands.
- fight a battle. When it uses its ramming shipsystem and hits another ship, it create a damage record where weaponName is an empty string.
- press [L], it should say that there is no battle data, because it has just tried to load the invalid Damage records. Checking the message in the stacktrace confirms that weaponName is empty.

3. Modular ships create a ship entry for each module. These are ugly because each module only have ship IDs and not names, and some modules are hidden and not meant to be player-visible (e.g. the undershield module on Arsenal Expansion's Flourish frigate). Some mod ships have modules that have a significant proportion of the overall ship's firepower or contribute a significant amount of armour/hull, so these entries should be merged into a single entry (simplest solution is using ship.getParentStation() to check if it is a module and get the parent ShipAPI and then the id; being able to have tabulated comparative data for each module inside the parent ship's entry might be cool, but complexity...).

Easiest repro steps:

- download a mod where modules can have weapons or take damage. I used a Karlsson Heirloom mod ship, the Rationale, but other ships from other mods such as the Cathedral Hubship from Ship Weapon Pack should also repro this nicely.
- fight battle
- battle report has separate entries for each module

4. There is a display error when there are ships with a hyphen in the name (e.g. Seeker's "High-tide" ship). Due to how Combat Analytics cleans up ship's full designations, it truncates the name in the Ship record to "High".

Repro steps:

- download the Seeker modpack from #mod_updates from Starsector Discord #mod_updates
- fight battle with High-tide deployed
- the ship class in the combat analytics Ship record will be truncated to "High"

5. Please update your Bitbucket with the latest version :)

EDIT:

6. Killing blow stats counter should ideally discriminate between ships and fighters, and probably exclude modules.
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: stormbringer951 on May 23, 2019, 05:38:36 PM
4b. Looking at full designations from several mods, there are some other tricky designations from mods (i.e. "Elder Orb class Custom Mod-Destroyer") but matching substring " class" or "-class" instead of '-' should catch all the cases I checked.

7. Fighters from ships with drone launcher systems are not recorded as weapons. Despite now being mostly retired from vanilla, drone launchers are still used in a surprising number of mods - DME, LoA, JP/PACK/ASP, Seeker, SCY, SWP, Underworld, and some of these drones have weapons it would be nice to track.

The code should check firingShip.isDrone(), and resolve the owning ship with with firingShip = firingShip.getDroneSource().

I assume the exception caused by chaining the call to firingShip.getWing.getSourceShip() is the bug fixed in 3.2 (which is still needed for some mod fighters I think, like Tyrador's drones).

8. Rarely, enemy ships can appear in the player's ship list because it is not tracked prior to being destroyed, and is registered with the owner value of 100 (destroyed). The code to detect a ship's owner should use getOriginalOwner() instead of getOwner(), which is designed to get the owner of a ship before it was destroyed.

In the interaction dialog plugin, it should probably also test if (scr.ship.owner == 0) or rather if (scr.ship.owner != 1), to clean up combat data from old saves.

9. Do you take pull requests? I've already tested most of this stuff on a local copy, and I'd make a patch to save you the bother if you push a later version of the code to the Bitbucket repo.
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Nick XR on May 23, 2019, 06:26:25 PM
@stormbringer951  That's a great list! I appreciate the time you've spent on it. 

A patch file would be best as I'm not too familiar with bitbucket's PR system.  If you could PM me the patch file that would be great.

Thanks!

*Edit*
Also the general approach of the mod was one of mild paranoia in that I didn't want any malfunctions of my mod to go crashing anyone's game (especially right after a combat!)  And I haven't played with any faction ships since I played way too much Nexerlin in 7.2 and burnt out for a year or so. But one thing I've learned the hard way is a lot of mods/factions manage to set stuff to NULL and empty string that doesn't happen in Vanilla...
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Se7ventySix on May 24, 2019, 08:53:51 AM
Thanks for this great mod!!

I love being able to try new weapons on ships and see how well they perform!

Just curious though, how do I go about using an analytics tool with Combat Analytics?  I downloaded Tableau Public but can't find the files I need to load?

Also, I would be interested to know if it's possible to purge all the data and start fresh?
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Nick XR on May 24, 2019, 09:20:15 AM
Thanks for this great mod!!

I love being able to try new weapons on ships and see how well they perform!
Great!
Just curious though, how do I go about using an analytics tool with Combat Analytics?  I downloaded Tableau Public but can't find the files I need to load?
You'll have to enable detailed logging first, it will cause the save file size to balloon up to be huge. Once you fight a combat, save, then edit your save file and track down the entry for the raw data.  You'll then have to copy out the data into separate files manually.  This workflow sucks, but it's the best that can be done as I can't write the data to other files (since you wouldn't want any old random mod writing data all over your drive).  I think the readme in the mod folder describes how to do this? (can't check now)

Also, I would be interested to know if it's possible to purge all the data and start fresh?
Good idea! Working on that now for a new release!
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: stormbringer951 on May 24, 2019, 09:30:00 AM
A patch file would be best as I'm not too familiar with bitbucket's PR system.  If you could PM me the patch file that would be great.

Sent. The in-dev features I peeked at while testing the patch look fantastic, by the way :)

You'll have to enable detailed logging first, it will cause the save file size to balloon up to be huge. Once you fight a combat, save, then edit your save file and track down the entry for the raw data.  You'll then have to copy out the data into separate files manually.  This workflow sucks, but it's the best that can be done as I can't write the data to other files

There is an API function (http://fractalsoftworks.com/starfarer.api/com/fs/starfarer/api/SettingsAPI.html#writeTextFileToCommon(java.lang.String,%20java.lang.String)) to write files now,

Code: java
void writeTextFileToCommon(java.lang.String filename,  java.lang.String data) throws java.io.IOException

From patch notes:

The size limit stated in patch notes conflicts with the API docs, but whatever the limitations it seems like a command to dumping the data tables from a save using that (whether saveDetailedData or not) in the interaction dialog would be quite useful.
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Nick XR on May 24, 2019, 10:06:46 AM
There is an API function (http://fractalsoftworks.com/starfarer.api/com/fs/starfarer/api/SettingsAPI.html#writeTextFileToCommon(java.lang.String,%20java.lang.String)) to write files now,

Code: java
void writeTextFileToCommon(java.lang.String filename,  java.lang.String data) throws java.io.IOException

From patch notes:
  • Load/save text data from the <installdir>/saves/common/ folder
  • Limited to 1MB per file, 50MB total files per session

The size limit stated in patch notes conflicts with the API docs, but whatever the limitations it seems like a command to dumping the data tables from a save using that (whether saveDetailedData or not) in the interaction dialog would be quite useful.

Oh my...

I'll probably stick to TSV files unless anyone has strong opinions otherwise.
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Se7ventySix on May 24, 2019, 10:28:03 AM
Thanks for the quick replies!!
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Nick XR on May 24, 2019, 04:14:50 PM
Validating the 4.0 version now, here is a preview of the new intel report  (Thanks to Sundog's Starship Legends (http://fractalsoftworks.com/forum/index.php?topic=15321.0) for making me realize we have tables now)

(https://i.imgur.com/8HuJJNh.png)


*edit*
4.0 is live
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: TimeDiver on May 24, 2019, 04:44:01 PM
Validating the 4.0 version now, here is a preview of the new intel report  (Thanks to Sundog's Starship Legends (http://fractalsoftworks.com/forum/index.php?topic=15321.0) for making me realize we have tables now)
Will v4.0 be backwards-compatible with saves made with v3.3, or require a new start?

Either way, I'm starting a new campaign once 0.91 RC9 shows up (bug reports are still coming in, after all).
Title: Re: [0.9.1a] Combat Analytics v3.3 (2018-11-20)
Post by: Nick XR on May 24, 2019, 05:04:18 PM
Will v4.0 be backwards-compatible with saves made with v3.3, or require a new start?

Either way, I'm starting a new campaign once 0.91 RC9 shows up (bug reports are still coming in, after all).
Yes!  It's backwards compatible.  It uses an internal save format that is disassociated from the code itself (which is why the mod can also be disabled without breaking anything)
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Se7ventySix on May 24, 2019, 08:34:47 PM
AWESOME!! Downloading now!! Can't Wait!!  ;D
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Se7ventySix on May 24, 2019, 09:55:29 PM
Found a small bug.  Not sure how it's matching HullClass with HullImage but..

Spoiler
(https://i.imgur.com/lFa1sEy.png)
[close]

The Wolf [P][D] is the correct ship, it's just using the wrong graphic.  I do have a Paragon in my fleet if that helps the troubleshooting.

Let me know if u need any other info!

Thanks for the GREAT mod!!

Edit:
Interestingly enough, that is the only occurrence.  I have another wolf in my fleet that was deployed as well and it showed up fine.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on May 24, 2019, 10:04:44 PM
Found a small bug.  Not sure how it's matching HullClass with HullImage but..

Spoiler
(https://i.imgur.com/lFa1sEy.png)
[close]

The Wolf [P][D] is the correct ship, it's just using the wrong graphic.  I do have a Paragon in my fleet if that helps the troubleshooting.

Let me know if u need any other info!

Thanks for the GREAT mod!!

Edit:
Interestingly enough, that is the only occurrence.  I have another wolf in my fleet that was deployed as well and it showed up fine.

If you still have the save, or you see it again, would you PM me the save?

Thanks!

Also let me know if you try the raw data analytics :)

*edit*

Actually I think I see how it can happen. I'll fix it up.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Se7ventySix on May 24, 2019, 10:14:24 PM
If you still have the save, or you see it again, would you PM me the save?

Sure thing, I may have saved over the original save once or twice but i'll see which one is the closest.  I tend to use save copy a lot so I may have a good one.  I'll send it as soon as I get done with this combat session.

Also, I just noticed that the wolf in question was destroyed in combat so that may have something to do with it.

Also let me know if you try the raw data analytics :)

I've been playing around with it a little bit.  I'm new to Tableau so it's a learning curve but it's going to be sweet to have all that data available for working on builds!!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Se7ventySix on May 24, 2019, 10:15:41 PM
Just saw your edit!  Do u still need the save file?

Edit:
I sent it anyway just in case!  ;D
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on May 24, 2019, 10:45:49 PM
New build is up.  There was an issue with guessing which FleetMemberAPI to use when one couldn't be located (for reasons).  We now simply don't render the image if we can't figure out what it should be. (If anyone has any idea how to get a ships sprite image from hull type or something like that, let me know!)
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on May 24, 2019, 10:46:11 PM
Just saw your edit!  Do u still need the save file?

Edit:
I sent it anyway just in case!  ;D

Got it, thanks!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Se7ventySix on May 26, 2019, 11:54:29 AM
Not sure what's up but new version of Combat Analytics saved the files in \saves\common\combatanalytics the first 2 times I saved after the mod update but hasn't since.

I've tried re-downloading and re-installing the mod, disable / enable the mod and renaming the folder but not sure why it won't save anymore?

After re-installing the mod I did make sure to set \CombatAnalytics\data\config\settings.json > "SaveDetailedCombatData":true

Its not a big deal because it's still saving the raw data to the save file, it's just not writing the files to the save folder anymore.

Here's the list of files that it wrote after my first 2 saves before it quit working.
Spoiler
(https://i.imgur.com/7bUDIfR.png)
[close]
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on May 26, 2019, 02:49:19 PM
Not sure what's up but new version of Combat Analytics saved the files in \saves\common\combatanalytics the first 2 times I saved after the mod update but hasn't since.

I've tried re-downloading and re-installing the mod, disable / enable the mod and renaming the folder but not sure why it won't save anymore?

After re-installing the mod I did make sure to set \CombatAnalytics\data\config\settings.json > "SaveDetailedCombatData":true

Its not a big deal because it's still saving the raw data to the save file, it's just not writing the files to the save folder anymore.

Here's the list of files that it wrote after my first 2 saves before it quit working.
Spoiler
(https://i.imgur.com/7bUDIfR.png)
[close]

It should write those after each combat.  There's a write limit of 50MB imposed by the game, but I don't think that's what you're bumping into here.
The raw data shouldn't be in the save file anymore (there still some aggregate data stored in there however).

Are there any exceptions in the log?

Thanks!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: ike on May 27, 2019, 06:28:17 PM
Hi, first of all thanks for the great mod!

Just one thing I've noticed:
Your .zip uses backslashes as path separators when it should not, and this causes problems for many unarchivers.

This is known to happen when you use archivers that depend on certain old Windows frameworks or some other independently-made engines that don't precisely follow the standard.
What program did you use to create this zip? Can you use another program?
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on May 27, 2019, 09:23:43 PM
Hi, first of all thanks for the great mod!

Just one thing I've noticed:
Your .zip uses backslashes as path separators when it should not, and this causes problems for many unarchivers.

This is known to happen when you use archivers that depend on certain old Windows frameworks or some other independently-made engines that don't precisely follow the standard.
What program did you use to create this zip? Can you use another program?

Hmmm, I use the PowerShell Compress-Archive command:  https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive?view=powershell-6   
Which program are you using that is giving you trouble?  I'll test options on my end and see what I can do to get thing sorted.

*edit*

Does this look like the issue you're running into:  https://github.com/PowerShell/Microsoft.PowerShell.Archive/issues/11   ?
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Se7ventySix on May 28, 2019, 05:45:06 PM
Are there any exceptions in the log?

Not sure if this is what you are looking for but I did find this in the log. (Scroll to the bottom.)

Spoiler
1341331 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Combat Duration: 398.35886
1341331 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - total time in EveryFrameDamageDetector: 1754ms  FrameCount: 92062 Mean Time Per Frame: 0.019052377745432426ms
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - ArchAngel - CRUISER - Apogee - Player did 68,270dmg to 15 ships
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - BioDome - CAPITAL_SHIP - Paragon - Player did 114,755dmg to 22 ships
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Black Hawk - DESTROYER - Hammerhead (D) - Player did 36,376dmg to 8 ships
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Black Pearl - CRUISER - Doom - Player did 63,433dmg to 17 ships
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Calypso - DESTROYER - Shrike (P) (D) - Player did 35,203dmg to 16 ships
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - ISS Away Our Fear - DESTROYER - Hammerhead - Player did 3,427dmg to 4 ships
1341357 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - ISS Muses - DESTROYER - Drover - Player did 57,950dmg to 18 ships
1341358 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Orden Amphithea - CRUISER - Aurora - Player did 29,629dmg to 10 ships
1341358 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Orden Fortuitous Voyager - DESTROYER - Drover - Player did 57,800dmg to 19 ships
1341358 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Orden Pan - CRUISER - Eagle - Player did 21,838dmg to 11 ships
1341358 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Orden Waning Day - CRUISER - Dominator - Player did 99,405dmg to 14 ships
1341358 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Roc - CRUISER - Heron - Player did 4,089dmg to 24 ships
1341358 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Valkyrie - CRUISER - Falcon (P) - Player did 94,901dmg to 8 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Wombat - DESTROYER - Enforcer (P) (D) - Player did 52,600dmg to 4 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Bergelmir - CRUISER - Colossus Mk.III (D) - Computer did 7,075dmg to 5 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Coeurl - CRUISER - Venture - Computer did 1,115dmg to 3 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Ehecatl - CRUISER - Colossus Mk.III (D) - Computer did 6,600dmg to 5 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Fenris - FRIGATE - Kite (P) (D) - Computer did 1,625dmg to 1 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Gorgon - CAPITAL_SHIP - Atlas Mk.II (D) - Computer did 86,550dmg to 8 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Griffin - CAPITAL_SHIP - Atlas Mk.II - Computer did 9,750dmg to 4 ships
1341359 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - His Timelense - CAPITAL_SHIP - Atlas Mk.II (D) - Computer did 38,345dmg to 9 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Honir - CAPITAL_SHIP - Atlas Mk.II (D) - Computer did 62,475dmg to 9 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - In Duty - FRIGATE - Cerberus (P) (D) - Computer did 505dmg to 2 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Inghean - CRUISER - Colossus Mk.III (D) - Computer did 4,150dmg to 5 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Lugh - CRUISER - Falcon (P) (D) - Computer did 5,410dmg to 4 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Meteor - FRIGATE - Shepherd (D) - Computer did 262dmg to 4 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Mextli - DESTROYER - Enforcer (P) (D) - Computer did 5,010dmg to 3 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Mixcoatl - CRUISER - Colossus Mk.III - Computer did 6,775dmg to 6 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Nechtan - DESTROYER - Shrike (P) - Computer did 7,348dmg to 4 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Nidhogg - DESTROYER - Mule (P) (D) - Computer did 1,624dmg to 3 ships
1341360 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Njord - CRUISER - Colossus Mk.III (D) - Computer did 1,765dmg to 5 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Onward Me China - CRUISER - Venture (D) - Computer did 2,473dmg to 2 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Psilone - FRIGATE - Shepherd (D) - Computer did 126dmg to 4 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Sorceptor - CRUISER - Falcon (P) (D) - Computer did 13,950dmg to 5 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Space Raptor - CRUISER - Venture (D) - Computer did 1,090dmg to 3 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Thor - CRUISER - Colossus Mk.III (D) - Computer did 3,200dmg to 2 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - To Goddard With Apologies - CRUISER - Falcon (P) (D) - Computer did 34,557dmg to 7 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Vent Flux Here - CAPITAL_SHIP - Atlas Mk.II (D) - Computer did 56,135dmg to 10 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Wyrm - CRUISER - Colossus Mk.III (D) - Computer did 5,250dmg to 4 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Xiuhcoatl - DESTROYER - Enforcer (P) (D) - Computer did 9,195dmg to 6 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Yacatecuhtli - CRUISER - Colossus Mk.III (D) - Computer did 16,720dmg to 6 ships
1341361 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Zodiacal Light - CRUISER - Colossus Mk.III - Computer did 3,180dmg to 3 ships
1341427 [Thread-4] ERROR data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Unable to saveRawCombatData
java.lang.RuntimeException: Max text file string length: 1048576, string length: 5183691

   at com.fs.starfarer.settings.StarfarerSettings$1.writeTextFileToCommon(Unknown Source)
   at data.scripts.combatanalytics.SerializationManager.saveRawCombatData(SerializationManager.java:173)
   at data.scripts.combatanalytics.CombatAnalyticsCampaignEventListener.reportPlayerE ngagement(CombatAnalyticsCampaignEventListener.java:41)
   at com.fs.starfarer.campaign.CampaignEngine.reportPlayerEngagement(Unknown Source)
   at com.fs.starfarer.api.impl.campaign.FleetEncounterContext.processEngagementResul ts(FleetEncounterContext.java:237)
   at com.fs.starfarer.api.impl.campaign.FleetInteractionDialogPluginImpl.backFromEng agement(FleetInteractionDialogPluginImpl.java:531)
   at com.fs.starfarer.campaign.CampaignState.prepare(Unknown Source)
   at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
   at com.fs.state.AppDriver.begin(Unknown Source)
   at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
   at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)
1342443 [Thread-8] INFO  sound.oo0O  - Cleaning up music with id [Condottiere.ogg]
[close]

Edit:
I also found this:
Spoiler
471501 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 30
471501 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 31
471502 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 32
471502 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 33
471591 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Keyboard key 'L' will open combat analysis dialogue
471591 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - SaveDetailedCombatData: true
471631 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - Found 50 prior battle results
471631 [Thread-4] INFO  data.scripts.combatanalytics.CombatAnalyticsModPlugin  - MaxCombatResultCount: 50
471690 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 34
471690 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 35
471708 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 36
471708 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 37
471708 [Thread-4] INFO  com.fs.starfarer.campaign.save.CampaignGameManager  - Loading stage 38
[close]

Thanks!!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.1 (2019-05-28)
Post by: Nick XR on May 28, 2019, 09:07:14 PM
Version 4.1 is released (see original post)
Minor fixes, 100% past version compatible.

Fixes:
 Proper fighter kill count for TOTAL rows
 Denser data format for detailed combat data (to try and avoid 1MB limit, thanks Se7ventySix)
 No longer using "ship list" functionality, now using rendered sprite images in list to enable more accurate historical data display
 If SaveDetailedCombatData is set to true, save detailed results results when main menu missions are played (saved on completion)
 Images scaled slightly by hull class
 Use 7 zip command line to build archive to hopefully work around archive slash issues (thanks ike)
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on May 28, 2019, 09:11:35 PM
Are there any exceptions in the log?

Not sure if this is what you are looking for but I did find this in the log. (Scroll to the bottom.)

That's good!  I think I've made the issue better in the latest release (4.1).  There's a limit of writing a 1MB string at a time to the "common" area.  So I've cut down on the data being exported (grouped on the data by second, normalized weapons out into their own table, don't export ints as factions).  Hopefully that'll get you under the cutoff.  If not, let me know and I'll break up the data even more.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: ike on May 29, 2019, 10:21:22 AM
Does this look like the issue you're running into:  https://github.com/PowerShell/Microsoft.PowerShell.Archive/issues/11   ?
Yes exactly, and your new archive just works. Thanks!
Now I don't have to apply the workaround you can see in this stackex :P
https://unix.stackexchange.com/questions/166159/convert-a-windows-created-zip-to-linux-internal-paths-issue
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: stormbringer951 on June 04, 2019, 09:11:35 AM
If anyone has any idea how to get a ships sprite image from hull type or something like that, let me know!

Code: java
ShipVariantAPI variant = Global.getSettings().getVariant("someVariantId");
String spriteName = variant.getHullSpec().getSpriteName();

EDIT:

Also, a better way to get ship names without "-class" or " class" without needing to get substrings:

Code: java
variant.getHullSpec().getHullName()
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.0 (2019-05-24)
Post by: Nick XR on June 04, 2019, 03:15:17 PM
If anyone has any idea how to get a ships sprite image from hull type or something like that, let me know!

Code: java
ShipVariantAPI variant = Global.getSettings().getVariant("someVariantId");
String spriteName = variant.getHullSpec().getSpriteName();

EDIT:

Also, a better way to get ship names without "-class" or " class" without needing to get substrings:

Code: java
variant.getHullSpec().getHullName()

Thanks, I got something working!  In the 4.0 version I was using the shiplist functionality, that requires a FleetMemberAPI object which can either be gotten from your current fleet (which doesn't work if that ship is dead or not in your fleet), or you can save the FleetMemberAPI object from the battle and hope you're not dragging around a dump-truck of state that was never intended to be persisted.  So instead I'm just now faking something that looks like the ship list and only has to save a few strings.  It's not elegant, but it works and is pretty safe for an upgrade path (although the smart thing is to just do multiple versions of intel plugins, but that's it's own PITA to deal with).

I have a few more combat results todos around:
* Try to be more accurate with damage actually dealth
* Fighter subtotals (since we're mostly concerned with is fighter X more effective than fighter Y) when evaluating these things.  Or at least I am.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.1 (2019-05-28)
Post by: vorpal+5 on June 16, 2019, 09:07:54 PM
Hi,

The damages done by the Tactical Laser are definitively under-reported. This is systematic.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.1 (2019-05-28)
Post by: Nick XR on June 17, 2019, 08:48:21 AM
I'll check it out, thanks!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.1 (2019-05-28)
Post by: vorpal+5 on June 17, 2019, 12:13:52 PM
Please tell me what you find, because I have suspicions on others weapons.

And that's a great mod and tool you did, congrats!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.1 (2019-05-28)
Post by: stormbringer951 on June 19, 2019, 01:42:14 PM
Hi,

The damages done by the Tactical Laser are definitively under-reported. This is systematic.

As mentioned in the OP, damage is raw damage, doesn't take reductions from armour/shield efficiency into account, which is why some weapon types report what seems to be much higher amounts of damage done compared to other weapons (very high dps, very low damage per shot frag is most conspicuous, although comparing how much similar KE and HE weapons have done to armour+hull/shield is also pretty noticeable).

Would that account for what you've seen?
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.1 (2019-05-28)
Post by: Nick XR on June 19, 2019, 05:31:29 PM
Hi,

The damages done by the Tactical Laser are definitively under-reported. This is systematic.

As mentioned in the OP, damage is raw damage, doesn't take reductions from armour/shield efficiency into account, which is why some weapon types report what seems to be much higher amounts of damage done compared to other weapons (very high dps, very low damage per shot frag is most conspicuous, although comparing how much similar KE and HE weapons have done to armour+hull/shield is also pretty noticeable).

Would that account for what you've seen?

I just looked at it a bit ago in a debugger (shout out to Ava_N for details on how to do that), there was indeed a problem with beam weapons and how their damage was determined.   The method
Code
BeamAPI.didDamageThisFrame()
appears to be misbehaving, or I'm using it incorrectly.  But when I stop using it, and instead just process beam damages the delta I saw in testing went from 500% -> 10% (with that 10% probably being from shield efficiency).

I'm working on a bunch of changes and fixes, hopefully they'll be ready by the weekend!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.2 (2019-06-21)
Post by: Nick XR on June 21, 2019, 11:35:55 AM
New version is out, check the main post for download. 
Changes:
v4.2
 New save data format to enable new functionality
 * this won't break anything
 * but your old combat data will be automatically deleted.
 * Your save game is fine.
 No longer displaying kills based on killing blows, we now display Solo Kills (> 80% of hull damage) and Assists (> 20% hull dmg)
 DP destroyed based on pro-rated armor/hull damage
 Much more accurate damage calculations.  Not perfect, much but better.
 More accurate tracking of what ships were killed.
 Fighters are now treated as a singular weapon system, since that is often the most useful way of thinking about them
 Ships details "kill" grid removed, replaced with sprites:
 * now render sprites for ships that were solo-killed
 * render ship sprites that were kill-assisted (along with a damage overlay)
 New enemy fleet status summary area
 Player ships are shown as Disabled/Destroyed/Retreated in ship list
 Added % hull remaining after combat, color coded
 Can now aggregate data based on history and generate a "Merged combat result"



(https://i.imgur.com/5GyrqKj.png)
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.2 (2019-06-21)
Post by: stormbringer951 on June 21, 2019, 11:47:42 AM
That ... is very cool.

 :D
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.2 (2019-06-21)
Post by: Nick XR on June 21, 2019, 02:26:29 PM
Minor update to 4.2 to deal with Infinities and NaNs (Apparently NumberFormat can write a number it can't read. Super).  If you've managed to grab it before this post, please re-download!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.2 (2019-06-21)
Post by: TimeDiver on June 28, 2019, 12:02:56 AM
Got a downright bizarre issue with a Paragon mounting two Plasma Cannon in any of the large energy mounts; they display 0 damage dealt in the AAR, even though in-battle they did a metric ****-ton of the total DPS.

One possible culprit is that I am using an older 0.9 RC10 save (Nexerelin) loaded into 0.9.1 RC8; spawning in another Paragon via Console Commands and giving that one the Plasma Cannon(s) had the same result.

EDIT: Then again, my mod list, while not exactly small, is a tad more so than average, AND I have two personal use-only mods that may be messing around with the results:

Code
{"enabledMods": [
  "custom_test",
  "example2",
  "automatic-orders",
  "blackrock_driveyards",
  "CombatAnalytics",
  "chatter",
  "lw_radar",
  "lw_console",
  "istl_dam",
  "diableavionics",
  "gs",
  "Imperium",
  "junk_pirates_release",
  "lw_lazylib",
  "leadingPip",
  "MagicLib",
  "Neutrino",
  "nexerelin",
  "sun_ruthless_sector",
  "SEEKER",
  "shadow_ships",
  "swp",
  "speedUp",
  "sun_starship_legends",
  "underworld",
  "vesperon",
  "shaderLib"
]}
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.2 (2019-06-21)
Post by: Nick XR on June 29, 2019, 06:43:17 PM
Got a downright bizarre issue with a Paragon mounting two Plasma Cannon in any of the large energy mounts; they display 0 damage dealt in the AAR, even though in-battle they did a metric ****-ton of the total DPS.

One possible culprit is that I am using an older 0.9 RC10 save (Nexerelin) loaded into 0.9.1 RC8; spawning in another Paragon via Console Commands and giving that one the Plasma Cannon(s) had the same result.

EDIT: Then again, my mod list, while not exactly small, is a tad more so than average, AND I have two personal use-only mods that may be messing around with the results:

I was able to repro the issue with my unmodded testing version.  I *think* the issue is the damage delivered is an AoE effect which we can't determine which weapon originated it and then properly attribute damage.
All of this will be fixed in the next release of SS by piggy backing off of some work Alex is doing.  Other weapons like flak cannons also suffer from this.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.2 (2019-06-21)
Post by: TimeDiver on June 29, 2019, 07:07:18 PM
I was able to repro the issue with my unmodded testing version.  I *think* the issue is the damage delivered is an AoE effect which we can't determine which weapon originated it and then properly attribute damage.
All of this will be fixed in the next release of SS by piggy backing off of some work Alex is doing.  Other weapons like flak cannons also suffer from this.
Huh. So that's why I also got surprisingly low numbers for Single/Dual Flak setups on my Conquest(s) and Onslaught(s)...

Okay, so it's an core game/engine-side issue that's kinda-difficult-to-downright-impossible to resolve. Fair enough.

While I'm here, is it working-as-designed when some (mod-created) fighter weapons are listed separately from the (condensed) fighter entries?
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.3 (2019-06-21)
Post by: TimeDiver on August 02, 2019, 02:57:46 AM
v4.3
 Fully compatible with prior version
 MIRV warheads should now calculate their damage properly (Thanks MesoTroniK)
 Defend against NULL in a place it shouldn't be possible but apparently is.
Rather delayed bug report (took a break from StarSector to play through stuff from the Steam Summer Sale):

Upgrading from v4.2 to v4.3 made the following vanilla weapons report zero shield/ship damage (but flux values weren't zero'd):

Ion Pulser, Mjolnir Cannon, Sabot SRM Pod, and Hypervelocity Driver.

The issue also cropped up with several mod-specific weapons (too many to list, really).

Extracting the StarSectorCombatAnalytics.jar from v4.2 and replacing v4.3's with the older one fixed the issue.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.3 (2019-06-21)
Post by: Nick XR on August 03, 2019, 09:23:53 AM
Gah!  I think I know what the issue is.  There are some complexities in determining child vs parent dmg that's useful for MIRVs that is interfering here.  I'll sort it out today.  Thanks!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.3 (2019-06-21)
Post by: Thaago on August 14, 2019, 06:01:17 PM
Hello there! I have a question and a bug report:

The question is, what is the "flux" damage in the battle report? Is that supposed to be soft flux dealt from beams? EMP damage?

The bug report, is that the damage being done by High Velocity Drivers is entirely reported in the "flux" column, which is very weird as I've seen it impacting both shields and hull.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.3 (2019-08-18)
Post by: Nick XR on August 18, 2019, 09:11:08 PM
New version is up (4.4), should fix issues caused by 4.3 trying to calculate MIRV damage.

Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: dorgus on August 22, 2019, 05:41:06 PM
Is it not possible to track the damage of Doom's mine? I think there are a few other ship mechanics that this mod doesn't track.

Even though this mod is amazing. Thank you for developing it. It changed the game for me.

EDIT: it seems the mod does track mine damage. Just noticed my overall damage on the summary is different from the sum of the damage dealt by all my weapons. It just doesn't show the mine damage separately.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: writeru on August 26, 2019, 07:44:02 PM
Hey Nick, I hope Im not being a bother, but I've registered here just to ask if your mod can also do something. I was searching for a mod that allow me to see how much of the dead crew after a battle were pilots. In fact there was some discussion on reddit and other people seemed excited for something like this. For me just a flat division of dead crew between pilots and normal crew would be enough, but I think it could be even better if we could see how many crew died each way, by hull damange, piloting, explosion of ship, etc




Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: sotanaht on August 31, 2019, 07:54:19 PM
My Paragon's plasma cannons are showing 0 damage in the analytics no matter what.  I usually fly it myself so I know they are getting use/doing damage.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: Nick XR on September 02, 2019, 09:06:25 PM
Is it not possible to track the damage of Doom's mine? I think there are a few other ship mechanics that this mod doesn't track.

Even though this mod is amazing. Thank you for developing it. It changed the game for me.

EDIT: it seems the mod does track mine damage. Just noticed my overall damage on the summary is different from the sum of the damage dealt by all my weapons. It just doesn't show the mine damage separately.
My Paragon's plasma cannons are showing 0 damage in the analytics no matter what.  I usually fly it myself so I know they are getting use/doing damage.
Both probably related to to general issue of not being able to track explosion damage, I'll make a note to double check that both of these work when we get the new damage event model in the next release!

Hey Nick, I hope Im not being a bother, but I've registered here just to ask if your mod can also do something. I was searching for a mod that allow me to see how much of the dead crew after a battle were pilots. In fact there was some discussion on reddit and other people seemed excited for something like this. For me just a flat division of dead crew between pilots and normal crew would be enough, but I think it could be even better if we could see how many crew died each way, by hull damange, piloting, explosion of ship, etc

I track crew killed, by the player, but don't surface it anywhere as I thought it was too grim and seeing a body-count that makes the player a monster was a bit jarring :P

But tracking crew lost from fighters should be possible (and losses in general).  I'll add a note to do it in the next major release!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: Orion03 on September 03, 2019, 04:58:10 PM
This is amazing, thank you very much.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: Electrum on September 04, 2019, 06:16:24 AM
Hello. Love the mod. Question: What is "Pro Rata DP"? Is it a measure of how much damage the ship did relative to it's own deployment cost?

Thanks.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: Nick XR on September 04, 2019, 09:48:46 AM
Hello. Love the mod. Question: What is "Pro Rata DP"? Is it a measure of how much damage the ship did relative to it's own deployment cost?

Thanks.

It's the pro-rated amount of Deployment Points that ship is responsible for destroying.  For example, if ship A did 75% of the total damage to a destroyed 40 DP ship (ship B), ship A's Pro Rata DP against ship B would be 30.  And in the top grid, this is the sum of all that ships pro rata DP.

So it's a high level measure of just how useful a ship was, damage wise, in combat.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.3 (2019-06-21)
Post by: Nick XR on September 04, 2019, 09:54:31 AM

The question is, what is the "flux" damage in the battle report? Is that supposed to be soft flux dealt from beams? EMP damage?


Sorry missed this earlier, the Flux stat is the amount of EMP damage that a weapon specifically delivers.  EMP isn't included in most damage totals since it's usually close to an order of magnitude larger than everything else.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: aikixd on September 04, 2019, 11:08:26 AM
Can you please add a few additional stats: Flux overflow count, Damage when zapped, Damage when venting, Damage while shields are up (to know if the ship is flanked a lot), Mean time between ventings.

Very helpful mod, thanx.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: Nick XR on September 04, 2019, 02:18:12 PM
Can you please add a few additional stats: Flux overflow count, Damage when zapped, Damage when venting, Damage while shields are up (to know if the ship is flanked a lot), Mean time between ventings.

Very helpful mod, thanx.

Glad you like it! 

I think your request probably getting a bit too far into the weeds for what the mods main goal is, which is to help you determine if a ship & weapon load-out is performing as you would expect.  The things you mention would certainly be interesting, personally I'd like to know what % of damage is caused when a ship is overloaded.  But knowing those things probably wouldn't help me make any better decisions about the things I can change (captain/ship/mods/weapons). 

Let me note these things and I'll look at them again when I do the next major release!
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: aikixd on September 05, 2019, 01:52:03 AM
Can you please add a few additional stats: Flux overflow count, Damage when zapped, Damage when venting, Damage while shields are up (to know if the ship is flanked a lot), Mean time between ventings.

Very helpful mod, thanx.
I think your request probably getting a bit too far into the weeds for what the mods main goal is, which is to help you determine if a ship & weapon load-out is performing as you would expect.  The things you mention would certainly be interesting, personally I'd like to know what % of damage is caused when a ship is overloaded.  But knowing those things probably wouldn't help me make any better decisions about the things I can change (captain/ship/mods/weapons).

I want to know whether the shields and their configuration are performing well. If I need to change flux configuration or mod the shields. Right now all I can know is whether my weapons are performing well.
Title: Re: [0.9.1a] Combat Analytics & Detailed Combat Results v4.4 (2019-08-18)
Post by: DornoDiosMio on October 22, 2019, 04:02:21 PM
Thanks so much for this mod. It has so much useful information and is really great. It is hard to imagine playing without it now.