taniwha

[1.4-1.7] KerbalStats v3.0.3

Recommended Posts

It's not entirely harmless, but thankfully, the event system got tweaked to cope with exceptions in event handlers and carry on, thus this isn't a save-breaking problem.

Actually, that very much does help. I will have to talk to @nightingale to see if he's done anything odd with adding tourists but I now know exactly what is going on.

The first exception is actually a KNFE (KeyNotFoundException), not that that really matters to the average user (it matters to devs as it gives an indication of what sort of error to look for). It was caused by you accepting the contract (? I assume that's what you did with that contract activity a bit before the exception), Tito getting added to the roster, and KerbalStats not being told about it (despite KS requesting to be told). This is where I need to talk to nightingale.

The second exception (actually an NRE (NullReferenceException) this time) is caused by Tito not existing in KerbalStats' database.

Share this post


Link to post
Share on other sites
26 minutes ago, taniwha said:

It was caused by you accepting the contract (? I assume that's what you did with that contract activity a bit before the exception),

Yes, looks so from the video and the timestamp.

Share this post


Link to post
Share on other sites

I've sent a message to nightingale (he doesn't need too many pings:) and I've found some other bugs in KS while doing some basic testing before seeing if I can reproduce the problem.

Share this post


Link to post
Share on other sites

Ok, I've reproduced the problem and I can see exactly what's happening: the kerbal is getting renamed from a generated name to Tito.

And, in the meantime, I have more bugs to fix :/ (related to saving new kerbals from the AC)

Share this post


Link to post
Share on other sites

I've released version 3.0.1 of KerbalStats:

Changes from 3.0.0:

  • Avoid NRE when entering the astronaut complex and new applicants are generated.
  • Avoid a KNFE when saving new applicants.
  • Handle ContractConfigurator changing kerbal names. (above bug discussion)

 

Share this post


Link to post
Share on other sites

Hi Taniwha. I've got KerbalStats 3.0.1 + EPL 5.7.1 running on KSP 1.2.2, and I'm getting bursts of these log messages about ConstructionSkill upon every scene load. It doesn't happen for every kerbal and there are a lot of names there that I don't even recognise (old candidates maybe). Is this a KerbalStats problem, perhaps, or do I need to look elsewhere?

Spoiler

[LOG 21:20:11.335] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.335] [KerbalStats] loading ext for Kanica Kerman
[LOG 21:20:11.335]     loading_kerbals
[LOG 21:20:11.335] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.335] [KerbalStats] loading ext for Hadvey Kerman
[LOG 21:20:11.335]     loading_kerbals
[LOG 21:20:11.335] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.335] [KerbalStats] loading ext for Wilpond Kerman
[LOG 21:20:11.335]     loading_kerbals
[ERR 21:20:11.335] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.335] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.335] [KerbalStats] loading ext for Mito Kerman
[LOG 21:20:11.335]     loading_kerbals
[ERR 21:20:11.335] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.336] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.336] [KerbalStats] loading ext for Lancal Kerman
[LOG 21:20:11.336]     loading_kerbals
[LOG 21:20:11.336] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.336] [KerbalStats] loading ext for Samchelle Kerman
[LOG 21:20:11.336]     loading_kerbals
[LOG 21:20:11.336] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.336] [KerbalStats] loading ext for Camdard Kerman
[LOG 21:20:11.336]     loading_kerbals
[ERR 21:20:11.336] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.336] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.336] [KerbalStats] loading ext for Carenna Kerman
[LOG 21:20:11.336]     loading_kerbals
[LOG 21:20:11.336] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.336] [KerbalStats] loading ext for Veret Kerman
[LOG 21:20:11.336]     loading_kerbals
[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Lefty Kerman
[LOG 21:20:11.337]     loading_kerbals
[ERR 21:20:11.337] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Haygie Kerman
[LOG 21:20:11.337]     loading_kerbals
[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Dante Kerman
[LOG 21:20:11.337]     loading_kerbals
[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Harpont Kerman
[LOG 21:20:11.337]     loading_kerbals
[ERR 21:20:11.337] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Kirk Kerman
[LOG 21:20:11.337]     loading_kerbals
[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Chuck Kerman
[LOG 21:20:11.337]     loading_kerbals
[ERR 21:20:11.337] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Urca Kerman
[LOG 21:20:11.337]     loading_kerbals
[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Arigh Kerman
[LOG 21:20:11.337]     loading_kerbals
[ERR 21:20:11.337] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Stalina Kerman
[LOG 21:20:11.337]     loading_kerbals
[LOG 21:20:11.337] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.337] [KerbalStats] loading ext for Aldlie Kerman
[LOG 21:20:11.338]     loading_kerbals
[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Santa Kerman
[LOG 21:20:11.338]     loading_kerbals
[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Gerene Kerman
[LOG 21:20:11.338]     loading_kerbals
[ERR 21:20:11.338] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Gilgee Kerman
[LOG 21:20:11.338]     loading_kerbals
[ERR 21:20:11.338] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Milie Kerman
[LOG 21:20:11.338]     loading_kerbals
[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Geneson Kerman
[LOG 21:20:11.338]     loading_kerbals
[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Seanhat Kerman
[LOG 21:20:11.338]     loading_kerbals
[LOG 21:20:11.338] [KerbalStats] onProtoCrewMemberLoad: GameEvents+FromToAction`2[[ProtoCrewMember, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[ConfigNode, Assembly-CSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
[LOG 21:20:11.338] [KerbalStats] loading ext for Jebing Kerman
[LOG 21:20:11.338]     loading_kerbals
[ERR 21:20:11.338] ExperienceTrait: Cannot add effect 'ConstructionSkill' as it does not exist.

 

Thanks.

Edited by Bluebottle

Share this post


Link to post
Share on other sites

I forgot to disable the debug logging. As for the unfamiliar names, they may be contract kerbals (rescues or tours).

Share this post


Link to post
Share on other sites

@taniwha

I've recompiled KerbalStats for 1.3.0, and it's mostly working fine, but I got the following exception:


Exception handling event onKerbalStatusChange in class ProgenyTracker:System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[System.String,System.String].get_Item (System.String key) [0x00000] in <filename unknown>:0 
  at KerbalStats.Progeny.ProgenyTracker.onKerbalStatusChange (.ProtoCrewMember pcm, RosterStatus oldStatus, RosterStatus newStatus) [0x00000] in <filename unknown>:0 
  at EventData`3[ProtoCrewMember,ProtoCrewMember+RosterStatus,ProtoCrewMember+RosterStatus].Fire (.ProtoCrewMember data0, RosterStatus data1, RosterStatus data2) [0x00000] in <filename unknown>:0 
 
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

KeyNotFoundException: The given key was not present in the dictionary.
  at System.Collections.Generic.Dictionary`2[System.String,System.String].get_Item (System.String key) [0x00000] in <filename unknown>:0 
  at KerbalStats.Progeny.ProgenyTracker.onKerbalStatusChange (.ProtoCrewMember pcm, RosterStatus oldStatus, RosterStatus newStatus) [0x00000] in <filename unknown>:0 
  at EventData`3[ProtoCrewMember,ProtoCrewMember+RosterStatus,ProtoCrewMember+RosterStatus].Fire (.ProtoCrewMember data0, RosterStatus data1, RosterStatus data2) [0x00000] in <filename unknown>:0 
UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
EventData`3:Fire(ProtoCrewMember, RosterStatus, RosterStatus)
ProtoCrewMember:set_rosterStatus(RosterStatus)
CrewRandR.CrewRandRRoster:HideVacationingCrew()
CrewRandR.Interface.EditorModule:OnEditorScreenChanged(EditorScreen)
EventData`1:Fire(EditorScreen)
EditorLogic:SelectPanelCrew()
UnityEngine.Events.InvokableCall:Invoke(Object[])
UnityEngine.Events.InvokableCallList:Invoke(Object[])
UnityEngine.Events.UnityEventBase:Invoke(Object[])
UnityEngine.Events.UnityEvent:Invoke()
UnityEngine.UI.Button:Press()
UnityEngine.UI.Button:OnPointerClick(PointerEventData)
UnityEngine.EventSystems.ExecuteEvents:Execute(IPointerClickHandler, BaseEventData)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMousePress(MouseButtonEventData)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent(Int32)
UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent()
UnityEngine.EventSystems.StandaloneInputModule:Process()
UnityEngine.EventSystems.EventSystem:Update()

It appears to be in the tracker.cs, at line 286:

var kerbal = ProgenyScenario.current.GetKerbal (kerbal_ids[pcm.name]);

I haven't had much time to look at this, but before I do, I'm wondering if you are already working on an update?  If so, I'll just wait, otherwise I may do some digging.

It seemed to be in the Editor, probably when I was either looking at the available crew.  I'm running GPP, so kerbal names were changed when I started the game, but I didn't get any new ones today.

Any ideas?

Thanks in advance

Share this post


Link to post
Share on other sites

Oh, I think I figured it out.

I'm also running Crew R&R, which sends kerbals on vacation.  I added some debugging, and saw that a kerbal who came back from vacation wasn't found.  Vacation is represented by status = 9001

 

Share this post


Link to post
Share on other sites

So, putting a simple try/catch around that line solves the problem.  I didn't dig into why the kerbal wasn't added, probably because he was on vacation and the status was 9001.,  But this code fixes the problem:

            Zygote kerbal = null;
			// If kerbal isn't found, just return
            try
            {
                kerbal = ProgenyScenario.current.GetKerbal(kerbal_ids[pcm.name]);
            } catch
            {
                return;
            }
          

I can do a PR if you want

Share this post


Link to post
Share on other sites

Progeny is not ready yet, so it should not be included in any builds (it's not in the Makefile). The only reason it's there on the master branch is I had done a lot of work to improve scenario loading and it was easiest to just merge and disable Progeny. Same for Genome (really part of Progeny). There is a lot of work on the progeny branch that I'm pretty sure fixes the exception, though.

Anyway, I've been meaning to do a release for a while now, just kept forgetting due to being busy with RL stuff. I've got some quiet time right now. Might as well sort things out while it's on my mind :).

Share this post


Link to post
Share on other sites

I've released version 3.0.2 of KerbalStats (thanks for the prompt, @linuxgurugamer). The only change other than recompiling for KSP 1.3 is to silence a lot of log spam.

Share this post


Link to post
Share on other sites
26 minutes ago, taniwha said:

Progeny is not ready yet, so it should not be included in any builds (it's not in the Makefile). The only reason it's there on the master branch is I had done a lot of work to improve scenario loading and it was easiest to just merge and disable Progeny. Same for Genome (really part of Progeny). There is a lot of work on the progeny branch that I'm pretty sure fixes the exception, though.

Anyway, I've been meaning to do a release for a while now, just kept forgetting due to being busy with RL stuff. I've got some quiet time right now. Might as well sort things out while it's on my mind :).

Oh, I've been using Visual Studio for the compiles.

Thanks for the new release

Share this post


Link to post
Share on other sites

Sorry about the delay. Part of it was the impression of there being little interest in the mod and thus insufficient motivation when I had time to do some modding.

Share this post


Link to post
Share on other sites
5 hours ago, taniwha said:

Sorry about the delay. Part of it was the impression of there being little interest in the mod and thus insufficient motivation when I had time to do some modding.

Thank you, just installed.

For curiosity, what are the Progeny/Genome parts which you said you were developing?

Share this post


Link to post
Share on other sites

Kerbal reproduction. Genome provides the genetic code, Progeny does all the messy stuff. Getting the Progeny scenario working without throwing exceptions or otherwise losing track of kerbals was the main thing slowing down progress (when I had time to work on it). I started back in the days of late KSP 0.25/early 0.90 (even before KSP had females). I'm pretty sure the progeny branch is working now in that regard. Current work is focused on gestation, iirc.

Share this post


Link to post
Share on other sites

That is very interesting.  I'll keep track of this, sounds interesting

Share this post


Link to post
Share on other sites

Hi, I'm having a kerbal experience problem, I'm not at all sure what is causing it but this might be one possibility.

Many of my kerbals don't have the right number of stars. For example Valentina is showing up in the astronaut complex as 1 star. on mouse over her log reads "fly by the sun + orbit kerbin". However I know she has done much more, and in the persistence file I can see many more acheivements listed

Spoiler

KERBAL
        {
            name = Valentina Kerman
            gender = Female
            type = Crew
            trait = Pilot
            brave = 0.550000012
            dumb = 0.400000006
            badS = True
            veteran = True
            tour = False
            state = Available
            inactive = False
            inactiveTimeEnd = 0
            gExperienced = 0
            outDueToG = False
            ToD = 0
            idx = 2
            extraXP = 0
            CAREER_LOG
            {
                flight = 27
                0 = Land,Kerbin
                0 = Flight,Kerbin
                0 = Recover
                1 = Land,Kerbin
                1 = Flight,Kerbin
                1 = ExitVessel,Kerbin
                1 = Recover
                2 = Flight,Kerbin
                2 = Suborbit,Kerbin
                2 = Orbit,Kerbin
                2 = Land,Kerbin
                2 = ExitVessel,Kerbin
                2 = BoardVessel,Kerbin
                2 = Recover
                3 = Flight,Kerbin
                3 = Suborbit,Kerbin
                3 = Orbit,Kerbin
                3 = Land,Kerbin
                3 = Recover
                4 = Flight,Kerbin
                4 = Suborbit,Kerbin
                4 = Orbit,Kerbin
                4 = Land,Kerbin
                4 = ExitVessel,Kerbin
                4 = BoardVessel,Kerbin
                4 = Recover
                5 = Flight,Kerbin
                5 = Suborbit,Kerbin
                5 = Orbit,Kerbin
                5 = Land,Kerbin
                5 = Recover
                6 = Flight,Kerbin
                6 = Suborbit,Kerbin
                6 = Orbit,Kerbin
                6 = Land,Kerbin
                6 = Recover
                7 = Flight,Kerbin
                7 = Suborbit,Kerbin
                7 = Orbit,Kerbin
                7 = Land,Kerbin
                7 = Recover
                8 = Flight,Kerbin
                8 = Land,Kerbin
                8 = Suborbit,Kerbin
                8 = Orbit,Kerbin
                8 = Recover
                9 = ExitVessel,Kerbin
                9 = BoardVessel,Kerbin
                9 = Land,Kerbin
                9 = Recover
                10 = Land,Kerbin
                10 = ExitVessel,Kerbin
                10 = BoardVessel,Kerbin
                10 = Flight,Kerbin
                10 = Recover
                11 = Land,Kerbin
                11 = Flight,Kerbin
                11 = Suborbit,Kerbin
                11 = Orbit,Kerbin
                11 = Flyby,Mun
                11 = Escape,Mun
                11 = Orbit,Mun
                11 = Suborbit,Mun
                11 = Land,Mun
                11 = PlantFlag,Mun
                11 = ExitVessel,Mun
                11 = BoardVessel,Mun
                11 = Flyby,Kerbin
                11 = Recover
                12 = Flight,Kerbin
                12 = Suborbit,Kerbin
                12 = Orbit,Kerbin
                12 = Flyby,Mun
                12 = Escape,Mun
                12 = ExitVessel,Mun
                12 = BoardVessel,Mun
                12 = Orbit,Mun
                12 = Suborbit,Mun
                12 = Land,Mun
                12 = PlantFlag,Mun
                12 = Flyby,Kerbin
                12 = Land,Kerbin
                12 = Recover
                13 = Flight,Kerbin
                13 = Land,Kerbin
                13 = Suborbit,Kerbin
                13 = Orbit,Kerbin
                13 = Recover
                14 = Flight,Kerbin
                14 = Land,Kerbin
                14 = ExitVessel,Kerbin
                14 = BoardVessel,Kerbin
                14 = Recover
                15 = Flight,Kerbin
                15 = Land,Kerbin
                15 = Suborbit,Kerbin
                15 = Orbit,Kerbin
                15 = ExitVessel,Kerbin
                15 = BoardVessel,Kerbin
                15 = Recover
                16 = Flight,Kerbin
                16 = Land,Kerbin
                16 = Suborbit,Kerbin
                16 = Orbit,Kerbin
                16 = Recover
                17 = Land,Kerbin
                17 = Flight,Kerbin
                17 = Recover
                18 = Flight,Kerbin
                18 = Suborbit,Kerbin
                18 = Orbit,Kerbin
                18 = Escape,Kerbin
                18 = Flyby,Sun
                18 = Orbit,Sun
                18 = ExitVessel,Sun
                18 = BoardVessel,Sun
                18 = Flyby,Kerbin
                18 = Land,Kerbin
                18 = Recover
                19 = Flight,Kerbin
                19 = Suborbit,Kerbin
                19 = Orbit,Kerbin
                19 = Flyby,Minmus
                19 = Orbit,Minmus
                19 = ExitVessel,Minmus
                19 = BoardVessel,Minmus
                19 = Escape,Minmus
                19 = Flyby,Kerbin
                19 = Land,Kerbin
                19 = Recover
                20 = Land,Kerbin
                20 = Flight,Kerbin
                20 = Suborbit,Kerbin
                20 = Orbit,Kerbin
                20 = Recover
                21 = Land,Kerbin
                21 = Flight,Kerbin
                21 = Suborbit,Kerbin
                21 = Orbit,Kerbin
                21 = Recover
                22 = Recover
                23 = Land,Kerbin
                23 = Flight,Kerbin
                23 = Suborbit,Kerbin
                23 = Orbit,Kerbin
                23 = Escape,Kerbin
                23 = Flyby,Sun
                23 = Flyby,Jool
                23 = Flyby,Vall
                23 = Escape,Vall
                23 = Orbit,Vall
                23 = ExitVessel,Vall
                23 = Suborbit,Vall
                23 = Land,Vall
                23 = BoardVessel,Vall
                23 = PlantFlag,Vall
                23 = Orbit,Sun
                23 = Flyby,Kerbin
                23 = Recover
                24 = Flight,Kerbin
                24 = Suborbit,Kerbin
                24 = Orbit,Kerbin
                24 = Escape,Kerbin
                24 = Flyby,Sun
                24 = Orbit,Sun
                24 = Flyby,Eve
                24 = Escape,Eve
                24 = Orbit,Eve
                24 = Die
                25 = ExitVessel,Eve
                25 = Orbit,Eve
                25 = Suborbit,Eve
                25 = Flight,Eve
                25 = Land,Eve
                25 = PlantFlag,Eve
                25 = BoardVessel,Eve
                25 = Escape,Eve
                25 = Die
                26 = Flyby,Sun
                26 = Flyby,Kerbin
                26 = Suborbit,Kerbin
                26 = Orbit,Kerbin
                26 = ExitVessel,Kerbin
                26 = BoardVessel,Kerbin
                26 = Flight,Kerbin
                26 = Land,Kerbin
                26 = Recover
            }
            FLIGHT_LOG
            {
                flight = 27
            }
            KerbalExt
            {
                experience
                {
                    Passenger
                    {
                        _current = Kerbin
                        Kerbin
                        {
                            PRELAUNCH = 61.240032851696014
                            FLYING = 5931.1004817783833
                            SUB_ORBITAL = 101439.24992597103
                            ORBITING = 117397.05109864473
                            ESCAPING = 53323.494562625885
                        }
                        Sun
                        {
                            ORBITING = 5337199.6480726004
                            ESCAPING = 429653.62082093954
                            FLYING = 1085225.5802375376
                        }
                        Eve
                        {
                            ESCAPING = 35992.206873416901
                            ORBITING = 2316012.1708032191
                            SUB_ORBITAL = 529.24342516064644
                            FLYING = 222088.61069735885
                            LANDED = 20321.965427815914
                        }
                    }
                    EVA
                    {
                        _current = Kerbin
                        Eve
                        {
                            SUB_ORBITAL = 0
                            ORBITING = 7315.324668943882
                        }
                        Kerbin
                        {
                            SUB_ORBITAL = 0
                            ORBITING = 21.920011758804321
                        }
                    }
                    Command
                    {
                        _current = Kerbin
                        Kerbin
                        {
                            ORBITING = 448.88472694158554
                            SUB_ORBITAL = 196.45516803860664
                            FLYING = 521.1526525914669
                            SPLASHED = 8.1000043451786041
                        }
                    }
                }
            }
        }

Do you have any idea what is going on?

Share this post


Link to post
Share on other sites
10 minutes ago, taniwha said:

@tomf: She died in flights 24 and 25. Death resets experience (stock behavior).

Thank you for spotting that. She definitely didn't die, and was able to do an EVA at eve immediately afterwards without having to re spawn and travel to eve again. I don't have re-spawning on anyway so I have no idea of why it would record that.

I guess it could be KSPI-E that does regularly tell me on load that a ship has exploded due to an antimatter containment issue, only for the ship to be loaded safe and sound anyway.

I have no problem with editing the save file to remove the spurious deaths.

Share this post


Link to post
Share on other sites

Is KerbalStats available on CKAN? I don't see it there in the list of available mods, but since @taniwha's other mods are there (I want to use KS with ExtraplanetaryLaunchpads) I'm wondering if I'm just not looking in the right place.

I see that the title of this thread currently says "[1.3]", not "[1.3.1]" - could CKAN simply not be showing the mod because my KSP install is 1.3.1 and the mod doesn't declare compatibility with it?

Thanks!

Share this post


Link to post
Share on other sites
5 hours ago, ej89 said:

Is KerbalStats available on CKAN? I don't see it there in the list of available mods, but since @taniwha's other mods are there (I want to use KS with ExtraplanetaryLaunchpads) I'm wondering if I'm just not looking in the right place.

I see that the title of this thread currently says "[1.3]", not "[1.3.1]" - could CKAN simply not be showing the mod because my KSP install is 1.3.1 and the mod doesn't declare compatibility with it?

Thanks!

OK, so I partially figured out the answer to my question...but now I have a new one. :-) It turns out that I did indeed previously install KerbalStats from CKAN (along with ExtraplanetaryLaunchpads, which is still installed and working just fine), back when 1.3.0 was the current KSP version and I was running that. But it appears that since 1.3.1 came out, KerbalStats no longer appears in CKAN. The existing install, however, is still present in my GameData folder.

My new question: is there any in-game UI to actually tell whether KerbalStats is installed and working in conjunction with EL? I could have sworn that right-clicking on a manned EL workshop showed the experience numbers for each of the crew inside, back in 1.3.0...but I don't see that any more. Now I'm wondering whether it was ever there (and stopped working with 1.3.1) or if I'm just remembering wrong. :-)

Alternatively, is there somewhere I can look in a raw file (the .sfs savegame file, perhaps?) to confirm that my engineers are indeed racking up experience from spending time in the workshop? Some of them have pretty bad stats (stupidity + courage) and are hard to get work out of...some accumulated experience would really help them out.

Share this post


Link to post
Share on other sites

There is nothing in-game, but there is some stuff in KSP.log (just some stuff showing that the dll got loaded), and more importantly, something in the .sfs file: search for ROSTER, this will give you the list of all kerbals in your save (stock). Within each KERBAL node, you will find a KerbalExt node (this is what KerbalStats adds). Within that is the experience node which logs the time in each "task" near each body in each situation.

There is a pending bugfix I need to release dealing with kerbal name changes (usually done by contract configurator), but otherwise KS should work with 1.3.1.

Share this post


Link to post
Share on other sites
39 minutes ago, taniwha said:

There is nothing in-game, but there is some stuff in KSP.log (just some stuff showing that the dll got loaded), and more importantly, something in the .sfs file: search for ROSTER, this will give you the list of all kerbals in your save (stock). Within each KERBAL node, you will find a KerbalExt node (this is what KerbalStats adds). Within that is the experience node which logs the time in each "task" near each body in each situation.

There is a pending bugfix I need to release dealing with kerbal name changes (usually done by contract configurator), but otherwise KS should work with 1.3.1.

Good to know, thanks. KSP.log confirms that KerbalStats is indeed being loaded.

I'm a little concerned because the KerbalExt nodes for my engineers don't show anything that seems to indicate workshop experience; I only see generic "Passenger", "Pilot", etc. experience. For instance, here is the KERBAL node for one of my engineers who's been hard at work in a workshop on the Mun for some time:

Spoiler

		KERBAL
		{
			name = Melble Kerman
			gender = Female
			type = Crew
			trait = Engineer
			brave = 0.114066459
			dumb = 0.111833736
			badS = False
			veteran = False
			tour = False
			state = Assigned
			inactive = False
			inactiveTimeEnd = 0
			gExperienced = 0
			outDueToG = False
			ToD = 0
			idx = 1
			extraXP = 0
			CAREER_LOG
			{
				flight = 2
				0 = Suborbit,Mun
				0 = Orbit,Mun
				0 = ExitVessel,Mun
				0 = BoardVessel,Mun
				0 = Escape,Mun
				0 = Flyby,Kerbin
				0 = Suborbit,Kerbin
				0 = Flight,Kerbin
				0 = Land,Kerbin
				0 = Recover
				1 = ExitVessel,Kerbin
				1 = Land,Kerbin
				1 = Recover
			}
			FLIGHT_LOG
			{
				flight = 2
				2 = Flight,Kerbin
				2 = Suborbit,Kerbin
				2 = Orbit,Kerbin
				2 = Flyby,Mun
				2 = Orbit,Mun
				2 = Suborbit,Mun
				2 = Land,Mun
				2 = ExitVessel,Mun
				2 = BoardVessel,Mun
				2 = PlantFlag,Mun
			}
			KerbalExt
			{
				experience
				{
					_current = Passenger
					Passenger
					{
						_current = Mun
						Mun
						{
							_current = LANDED
							_currentUT = 2880222.1467681229
							LANDED = 82874.791115848348
						}
					}
				}
			}
		}

 

Perhaps I should've taken the wording in the EL manual more literally, that "currently only EL's blue workshop" counts workshop experience. My engineers are working not in the blue workshop, but in Planetary Base Structures' K&K Workshop. I (perhaps incorrectly) assumed/hoped that since it was a purpose-built part designed to integrate with EL, it was "as complete as" the blue workshop...

If this is the case, then it will be a moot point soon as these engineers are in the process of building themselves a bigger and better base containing an EL blue workshop. :-)

Or does the experience not get recorded until I level up the Kerbals using a science lab (or by returning them home), as with stock XP?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.