nightingale Posted September 25, 2020 Author Share Posted September 25, 2020 3 minutes ago, VoidSquid said: Hey @nightingale, Since a couple of days I have an quite interesting issue between CC and the new ScanSat (20.4 atm), though this also happened with the two or three previous CC versions. What happens is, when I accept a new contract (seems independent of the contract pack), fly the rocket, switch to map view, and active a ScanSat overlay (terrain, or biome, makes no difference), the terrain info under the mouse pointer flickers alternating with the initial contract duration time (e.g. recover a satellite after 60 days, the ScanSat terrain info alternates with a small box displaying 60:00:00) several times a second. Finishing the contract, all all is back to normal. Console doesn't give any output about this, and before I bother you with any logs: any at least faint idea what's going, or have you heard / seen this ever before? I have never heard of anything like this. Those things sound like they should not be related in any way. Can you post some screenshots (or a video) and I'll take a closer look? Quote Link to comment Share on other sites More sharing options...
VoidSquid Posted September 25, 2020 Share Posted September 25, 2020 (edited) Will do when I'm back at home. What is so totally weird about this: when I remove CC and the contract point and load the save game again, the issue is totally gone, including the flickering of all orbit lines for about 10s when switching to map view. Ofc, this kills the persistent.sfs, when reenabling CC plus packs, all progress ever is gone. Funny fact: it doesn't matter if switch to another craft (and another CB) but the one from the contract, same result. I went back 2 or 3 CC versions, one ScanSat version, no difference. And as per my superficial view across, nothing useful in the logs too. Edited September 25, 2020 by VoidSquid Quote Link to comment Share on other sites More sharing options...
VoidSquid Posted September 25, 2020 Share Posted September 25, 2020 (edited) Recording and contract: https://easyupload.io/m/3899om Btw, the time displayed during the flickering is the remaining time for the contract, not the total required time. I admit, it seems to be a very odd issue - you're sure you want to invest your time here, @nightingale ? Already feel a bit silly bothering you with this, let me know, please Edited September 25, 2020 by VoidSquid Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 25, 2020 Author Share Posted September 25, 2020 @VoidSquid - I have a vague sense of what's going on here. The Contracts appis a bit silly and doesn't have the ability to support dynamic text. Contract Configurator fakes this the same way it does everything else - through hacking internals. In this case it walks through the UI elements associated to the contracts app, and then updates it when it finds it based on what has changed. I don't really know how it could get crossed up though, as Contract Configurator looks for children of the Contracts App. I'll have a look later tonight to see if I can reproduce, unless @DMagic knows off the top of their head what could possibly be causing this. Quote Link to comment Share on other sites More sharing options...
VoidSquid Posted September 26, 2020 Share Posted September 26, 2020 (edited) Hey @nightingale, I found some more time for testing, interesting result: when I replace CC with the older 1.29.0 version, the bug is gone! As soon as I use any 1.30.x version, the bug appears. Hope this helps to narrow down finding what's going on here. Question: will it be save to continue using 1.29.0 for the time being, or will it ruin my career save game due to incompatibilities? Edited September 26, 2020 by VoidSquid Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 26, 2020 Author Share Posted September 26, 2020 (edited) 9 hours ago, VoidSquid said: Hey @nightingale, I found some more time for testing, interesting result: when I replace CC with the older 1.29.0 version, the bug is gone! As soon as I use any 1.30.x version, the bug appears. Hope this helps to narrow down finding what's going on here. Question: will it be save to continue using 1.29.0 for the time being, or will it ruin my career save game due to incompatibilities? Pretty questionable to continue on 1.29.0, I don't know what will happen. Looking at the diffs now to see if something jumps out. Problem is that localization happened between those two versions... so there's a lot to diff. I'm going to try to repro first, so if you're around, @VoidSquid and can post your save file it may help make that go a little quicker. EDIT: No need for the save, I managed to reproduce. EDIT: I think this is a SCANsat bug. I haven't identified it completely, but I have enough for @DMagic to take a look. What's happening is that SCANsat builds its tooltip based off a cached StringBuilder using a SCANSat specific caching framework. The place that reads the tooltip releases the StringBuilder, which is questionable, but may or may not be the cause. So what *seems* to be happening is that Contract Configurator and SCANsat are using the same cached StringBuilder (as part of some performance enhancements, I started using a StringBuilder using the stock caching framework in 1.30.0, which is why rolling back past that "fixes" the issue). Now, I don't 100% know how/why this could be, since SCANsat does it's own caching and I use the stock StringBuilderCache. I did see a spot where SCANsat uses the stock one, and found a questionable method that could allow injecting the stock one into the SCANsat framework (but I didn't see a call to it, so not sure if that's correct or not). So there it is - I don't completely know what/where the issue is, but I'm fairly certain the fix needs to happen in SCANsat. DMagic hasn't been on the forums for a couple weeks - so if we don't get a response from him then I'd suggest linking this thread from a SCANsat GitHub issue. Edited September 26, 2020 by nightingale Quote Link to comment Share on other sites More sharing options...
VoidSquid Posted September 26, 2020 Share Posted September 26, 2020 (edited) 1 hour ago, nightingale said: I managed to reproduce So it's not just my imagination or my specific mod setup, glad to hear 1 hour ago, nightingale said: DMagic hasn't been on the forums for a couple weeks - so if we don't get a response from him then I'd suggest linking this thread from a SCANsat GitHub issue. Will do, thank you again for your time analyzing this odd bug so far. 1 hour ago, nightingale said: Pretty questionable to continue on 1.29.0 1 hour ago, nightingale said: Problem is that localization happened between those two versions Well, I'm playing the English version of KSP, no need for any localization for me. 1.29. is safe then, what do you think? Edited September 26, 2020 by VoidSquid Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 26, 2020 Author Share Posted September 26, 2020 3 hours ago, VoidSquid said: So it's not just my imagination or my specific mod setup, glad to hear Will do, thank you again for your time analyzing this odd bug so far. Well, I'm playing the English version of KSP, no need for any localization for me. 1.29. is safe then, what do you think? It's not the localization that is the problem, there's a bunch of bug fixes and stuff like that. So I'm guessing you're more likely to hit a bug that's worse than the flickering tooltip if you roll back. More importantly, I won't provide support if you go from 1.30.x => 1.29, so read the changlogs carefully and decide for yourself whether it's worth the risk. Quote Link to comment Share on other sites More sharing options...
VoidSquid Posted September 27, 2020 Share Posted September 27, 2020 (edited) Understood, then I'll stay with the current CC version, not worth taking the risk for this little annoyance. Hopefully @DMagic will soon find some time looking into this issue. EDIT: Just opened an issue at Github https://github.com/S-C-A-N/SCANsat/issues/391 , I hope I put in the right words. Edited September 27, 2020 by VoidSquid Quote Link to comment Share on other sites More sharing options...
ussdefiant Posted September 28, 2020 Share Posted September 28, 2020 So, i've been having a habit of using the Exploration Plus contract pack instead of the stock progression stuff for the past while. However, since i've started a new game in 1.9.1 to go with the new Kopernicus version, the CC option to disable the stock Exploration contracts no longer seems to work, and i get those served up to me alongside the Exploration Plus ones. I'm not really sure whether theres something else i should be doing to get rid of the stock contracts, or if this is simply some sort of CC/contract pack issue. Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 28, 2020 Author Share Posted September 28, 2020 9 hours ago, ussdefiant said: So, i've been having a habit of using the Exploration Plus contract pack instead of the stock progression stuff for the past while. However, since i've started a new game in 1.9.1 to go with the new Kopernicus version, the CC option to disable the stock Exploration contracts no longer seems to work, and i get those served up to me alongside the Exploration Plus ones. I'm not really sure whether theres something else i should be doing to get rid of the stock contracts, or if this is simply some sort of CC/contract pack issue. It works fine for me on 1.10.1. Can you provide a screenshot of the contract you are getting that you think shouldn't be getting? Quote Link to comment Share on other sites More sharing options...
ussdefiant Posted September 28, 2020 Share Posted September 28, 2020 3 hours ago, nightingale said: It works fine for me on 1.10.1. Can you provide a screenshot of the contract you are getting that you think shouldn't be getting? I'm getting that Explore Mun contract from the World Record Society. Keeps respawning when it expires, too. Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 28, 2020 Author Share Posted September 28, 2020 1 hour ago, ussdefiant said: I'm getting that Explore Mun contract from the World Record Society. Keeps respawning when it expires, too. And you can confirm that Exploration Contract is disabled in the difficulty menu? If so, please provide a KSP.log and I'll look from there. Quote Link to comment Share on other sites More sharing options...
NermNermNerm Posted September 28, 2020 Share Posted September 28, 2020 Is there a way, within the expression language, to use just the Kerbal's first name? E.g. to replicate things like we see in the stock rescue contracts, where it's "Fred's shipwreck" and not "Fred Kerman's shipwreck" ? I mean when the kerbal is generated, so the text would be "@/lostkerbal's derelict" Something like "@/lostkerbal.name()'s derelict". Is that a thing? Also, is there an escaping sequence - like if I'm writing a sentence, the "." seems to sometimes get confused for language syntax, e.g. in "... from @/lostbody." The period is intended to be plain text, but in some cases it seems that the configurator thinks it's part of an expression. Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 28, 2020 Author Share Posted September 28, 2020 23 minutes ago, NermNermNerm said: Is there a way, within the expression language, to use just the Kerbal's first name? E.g. to replicate things like we see in the stock rescue contracts, where it's "Fred's shipwreck" and not "Fred Kerman's shipwreck" ? I mean when the kerbal is generated, so the text would be "@/lostkerbal's derelict" Something like "@/lostkerbal.name()'s derelict". Is that a thing? There's a couple ways. First is to break the string and use a + to concatenate them: DATA { type = string cat = I am a cat catString = @cat + " and a bat" } Second is to use the new Format method: DATA { type = string formatString = Eat <<1>> and <<2>>. formattedString = Format(@formatString, ["oats", "goats"]) } Results: The second is what you'd want to use if you ever want to support localization (and probably just better overall in terms of performance and garbage generation). 23 minutes ago, NermNermNerm said: Also, is there an escaping sequence - like if I'm writing a sentence, the "." seems to sometimes get confused for language syntax, e.g. in "... from @/lostbody." The period is intended to be plain text, but in some cases it seems that the configurator thinks it's part of an expression. Looks like no - I only ever added escaping for ". Quote Link to comment Share on other sites More sharing options...
NermNermNerm Posted September 29, 2020 Share Posted September 29, 2020 2 hours ago, nightingale said: There's a couple ways. First is to break the string and use a + to concatenate them: How do you break a string? I mean if @/kerbal is of type Kerbal, how do you get the *first* name? That is, I want "Jebediah", not "Jebediah Kerman". Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 29, 2020 Author Share Posted September 29, 2020 5 hours ago, NermNermNerm said: How do you break a string? I mean if @/kerbal is of type Kerbal, how do you get the *first* name? That is, I want "Jebediah", not "Jebediah Kerman". Whoops, sorry. I got caught up with the second question and didn't realize that I never answered the first one. You can use the FirstWord() method on any string (from https://github.com/jrossignol/ContractConfigurator/wiki/String-Type): Quote string FirstWord() Returns the first word in a space-seperated list (ie. pull Jebediah out of Jebediah Kerman). Quote Link to comment Share on other sites More sharing options...
NermNermNerm Posted September 29, 2020 Share Posted September 29, 2020 13 hours ago, nightingale said: You can use the FirstWord() method on any string Well yeah, but what if @/kerbal is not a string, but rather of type Kerbal? There's some shenanigans I could pull, e.g. Format("{0}", @kerbal).FirstWord(), but maybe there's a first-class way to get the name of the kerbal? @kerbal.name doesn't seem to be a thing... Quote Link to comment Share on other sites More sharing options...
nightingale Posted September 30, 2020 Author Share Posted September 30, 2020 (edited) 10 hours ago, NermNermNerm said: Well yeah, but what if @/kerbal is not a string, but rather of type Kerbal? There's some shenanigans I could pull, e.g. Format("{0}", @kerbal).FirstWord(), but maybe there's a first-class way to get the name of the kerbal? @kerbal.name doesn't seem to be a thing... There isn't a Name or FirstName method on Kerbal. Would be pretty easy to add, but I think @kerbal.ToString().FirstWord() should work (didn't test though). Edited September 30, 2020 by nightingale Quote Link to comment Share on other sites More sharing options...
ussdefiant Posted September 30, 2020 Share Posted September 30, 2020 On 9/28/2020 at 11:55 AM, nightingale said: And you can confirm that Exploration Contract is disabled in the difficulty menu? If so, please provide a KSP.log and I'll look from there. Yeppers, here it is. The "[ERR 13:05:02.226] [ContractSystem]: Contract type 'ExplorationContract' not found" is something that quite caught my eye.https://www.dropbox.com/s/ja6fb5whj7qtzqd/KSP.log?dl=0 Quote Link to comment Share on other sites More sharing options...
nightingale Posted October 2, 2020 Author Share Posted October 2, 2020 On 9/30/2020 at 1:15 PM, ussdefiant said: The "[ERR 13:05:02.226] [ContractSystem]: Contract type 'ExplorationContract' not found" is something that quite caught my eye. That message actually means it's working (sort of). The Exploration contracts are special to stock, so it makes extra sure those get generated. I needed to add a little bit more logic to fully disable those. Should be good in the next release now. Quote Link to comment Share on other sites More sharing options...
nightingale Posted October 5, 2020 Author Share Posted October 5, 2020 New release: Contract Configurator 1.30.5 Major performance improvements to save loading time (thanks siimav). Fixed SI units not appearing on HasAntenna parameter (thanks Nobody6). Fixed Exploration contracts not being fully disabled when requested (thanks ussdefiant). Quote Link to comment Share on other sites More sharing options...
siimav Posted October 5, 2020 Share Posted October 5, 2020 @nightingale Thanks for getting the performance optimizations into place so quickly. At least for RP-1 players it's going to be a huge QoL improvement. Quote Link to comment Share on other sites More sharing options...
VoidSquid Posted October 11, 2020 Share Posted October 11, 2020 (edited) Hey @nightingale, I don't know if this of interest for you, but @severedsolo's Clever Sats contract pack still works fine KSP 1.10.1 with these two little changes: A MM patch made by @4x4cheesecake: Spoiler //Add revamped probe core to the cleversat contract pack //Add Kopernicus solarpanel if available @CONTRACT_TYPE[CleverSatCore]:FINAL { !REQUIREMENT[Probe] {} REQUIREMENT { name = Any type = Any REQUIREMENT { name = Probe type = PartUnlocked part = probeCoreSphere } REQUIREMENT { name = Probe_v2 type = PartUnlocked part = probeCoreSphere_v2 } } @REQUIREMENT[Any]:HAS[@REQUIREMENT[PartModuleUnlocked]]:NEEDS[Kopernicus] { REQUIREMENT { name = PartModuleUnlocked type = PartModuleUnlocked partModule = KopernicusSolarPanel } } } plus correcting line 19 from CleverSatRandomShift.cfg (a closing bracket too much). EDIT 10.03.2021: @4x4cheesecake found, that for Korpernicus version 1.8+, the line partModule = KopernicusSolarPanel needs to be changed to partModule = KopernicusSolarPanels Edited March 10, 2021 by VoidSquid Quote Link to comment Share on other sites More sharing options...
NermNermNerm Posted October 11, 2020 Share Posted October 11, 2020 I've been learning about Lingoona script, but am having some trouble applying it to ContractConfigurator because there seems no way to get a kerbal name with the right gender marker on it (e.g. "Valentina Kerman^f"). If I'm reading the source code right, there's no native way to do it. For kerbals, I think I see how I could make it happen with some fancy expression stuff using the Gender() method, but that seems hacky and wrong. For celestial bodies (which have a language-specific gender as well), I don't think I see a way. If I'm right and it really is missing, I would be happy to submit a PR, as I think I see how it should be done. (I'd probably take care of that first-name thing at the same time). Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.