Jump to content

[1.10.1+] Contract Configurator [v1.30.5] [2020-10-05]


nightingale

Recommended Posts

Hi, I totally reinstall all my mods, one by one, it seems I don't have "trait : pilot" problem anymore.

I still have red and yellow in spacetux contracts as in screenshots, is that normal ?

Thanks a lot for your help

edit : "trait pilot" problem comes from french translation. Exactly same KSP folder, without it works, with FR translation it doesn't work anymore

Ah, that makes sense. Raised [#216], I'll need to give this one some thought as to how to handle it.

Hello.

I come with a new set of problems.


CONTRACT_TYPE
{
name = Mission0
title = The World Ends
group = ContractGroup
description = The Kerbals once formed a vast civilization that spanned their entire planet. Simple-minded yet technologically advanced, they saw their home as their playground and never dream of going higher than the sky. Over the course of millennia, they drained their planet dry. However, millions of light years away, a massive star collapses to form a black hole. The energies released as gamma rays converge on the Kerbol System and blast it with billions of yottajoules of energy. All life is extinguished on Kerbin's hemisphere instantly. The atmosphere bursts into flame and the oceans rise as titanic walls of steam. In the last instants before the thermal wave engulfs the planet, a few scientists and engineers manage to reach underground bunkers lock themselves up.
synopsis = The Beginning.
completedMessage = The sensors detect cool, dry air outside. Slowly, the bunker doors open...
agent = TheSurvivors
minExpiry = 1000.0
maxExpiry = 1000.0
deadline = 1000.0
cancellable = False
declinable = False
autoAccept = False
prestige = Trivial
targetBody = Kerbin
maxCompletions = 1
maxSimultaneous = 1
rewardScience = 20.0
rewardReputation = 0.0
rewardFunds = 0.0
failureReputation = 0.0
failureFunds = 0.0
advanceFunds = 0.0
weight = 1.0
PARAMETER
{
name = Timer
type = Timer
duration = 10s
}
}
{
name = Mission1
title = The Beginning
group = ContractGroup
description = The world ended with a violent flash of gamma ray light. It's been 100 years now. We survived in this bunker, but it isn't the only one we built. Others could have pulled through, in other protected facilities... Can we visit the old research center to see if there's anyone left? They built the first bunkers. Government officials would have been the first to be protected. They'd know what to do.
synopsis = The first steps.
completedMessage = Sadly, it seems that we're on our own now. There's no trace left of the green cities, nor any government. You're the highest authority now.
agent = TheSurvivors
minExpiry = 1000.0
maxExpiry = 1000.0
deadline = 1000.0
cancellable = False
declinable = False
autoAccept = False
prestige = Trivial
targetBody = Kerbin
maxCompletions = 1
maxSimultaneous = 1
rewardScience = 5.0
rewardReputation = 20.0
rewardFunds = 1000.0
failureReputation = 0.0
failureFunds = 0.0
advanceFunds = 0.0
weight = 1.0
PARAMETER
{
name = All
type = All
title = Send a Pilot
PARAMETER
{
name = HasCrew
type = HasCrew
trait = Pilot
minCrew = 1
}
PARAMETER
{
name = VisitWaypoint
type = VisitWaypoint
index = 0
distance = 10000.0
title = Get within 10km to get a good look.
}
}
BEHAVIOUR
{
name = WaypointGenerator
type = WaypointGenerator
WAYPOINT
{
name = Ruins
targetBody = Kerbin
icon = thermometer
altitude = 1000.0
latitude = -1.8
longitude = -72.0
}
}
}

First of all, the debug window shows no problems, but here they are:

-Mission0 becomes available. If the player accepts it, he automatically gains the rewards (20 science) but the contract never completes. It gets stuck at time 0:00:00:01 and just lingers in the contract window.

-Mission1 never becomes available. It doesn't even show up in the debug window.

More information:

I currently have 7 missions.

I tried started with putting them inside one .cfg file, like this:


CONTRACT_TYPE
{
Mission0
}
CONTRACT_TYPE
{
Mission1
}

but only mission 0 loaded into the game. No error report, all green (except for the last two, where I changed Agent. The second Agent, defined exactly the same way as the first one, is incomprehensibly bugged out as an error).

I tried placing each Mission into separate .cfg files, so that my ContractGroup folder contained Mission0.cfg, Mission1.cfg and so on.

All missions appeared in the Alt+F10 debug menu, all green, no error messages.... but only Mission0 actually appears in the offered menu. The rest of the missions never appear.

Here's my entire ContractGroups folder: https://www./folder/nhl767xihh9r0/ContractGroup

Here are some screenshots:

http://imgur.com/a/UPMGg

Okay, the first config you sent is bugged (you don't have a CONTRACT_TYPE node), but looks like you figured that out. I have no idea why the agent isn't working - but you've provided way too much information and I don't have the time to sift through it all. I'd suggest checking the logs to see where the agent that is loading is getting loaded, and see what it says about the one that's failing. There's undoubtedly some difference, but this is stock KSP and I only know so much about the agent set up.

The contracts that don't show up could be for a few reasons:

  • The requirements for the contract might not be met. Do a force check requirement and see if the requirement nodes turn green or yellow.
  • The contracts are Exceptional, and you aren't being offered Exceptional contracts. You have to be careful as this happens with default settings on a new game - the player doesn't have enough prestige to get the 3 star contracts.
  • They just haven't shown up yet. You're at the mercy of the RNG - try clearing all active contracts in the stock debug menu a few times and see if that makes them show up.

Link to comment
Share on other sites

Okay, the first config you sent is bugged (you don't have a CONTRACT_TYPE node), but looks like you figured that out. I have no idea why the agent isn't working - but you've provided way too much information and I don't have the time to sift through it all. I'd suggest checking the logs to see where the agent that is loading is getting loaded, and see what it says about the one that's failing. There's undoubtedly some difference, but this is stock KSP and I only know so much about the agent set up.

The contracts that don't show up could be for a few reasons:

  • The requirements for the contract might not be met. Do a force check requirement and see if the requirement nodes turn green or yellow.
  • The contracts are Exceptional, and you aren't being offered Exceptional contracts. You have to be careful as this happens with default settings on a new game - the player doesn't have enough prestige to get the 3 star contracts.
  • They just haven't shown up yet. You're at the mercy of the RNG - try clearing all active contracts in the stock debug menu a few times and see if that makes them show up.

I tried force checking requirements or outright removing requirements. No change.

As for exceptional and three star contracts, how do I create contracts that don't run into this problem?

My previous tests included a MissionSettings.cfg file that removed all stock contracts (set their max availability to zero). It worked, but the only contract offered was mission1 and nothing else.

Link to comment
Share on other sites

I tried force checking requirements or outright removing requirements. No change.

As for exceptional and three star contracts, how do I create contracts that don't run into this problem?

My previous tests included a MissionSettings.cfg file that removed all stock contracts (set their max availability to zero). It worked, but the only contract offered was mission1 and nothing else.

Don't use prestige=Exceptional for early-career contract (and use them sparingly in general). Removing all the stock contracts will probably cause more problems. The contract system will often stop generating contracts if it can't generate anything. Ie. if it has no more 1 star contracts to generate but it wants to fill four 1-star slots, it will not move on to generate a 2-star contract until it can fill all slots.

Link to comment
Share on other sites

I think I found the issue - when you get a chance, please grab the latest dll from GitHub and git it another go - I'll probably release tomorrow afternoon.

NRE fixed. Still can't get the mission to complete though =/ that may be me though. I'll have a little play.

Edited by severedsolo
Link to comment
Share on other sites

Don't use prestige=Exceptional for early-career contract (and use them sparingly in general). Removing all the stock contracts will probably cause more problems. The contract system will often stop generating contracts if it can't generate anything. Ie. if it has no more 1 star contracts to generate but it wants to fill four 1-star slots, it will not move on to generate a 2-star contract until it can fill all slots.

I just double checked: all my prestige lines read 'Trivial'.

Link to comment
Share on other sites

"trait pilot" problem comes from french translation. Exactly same KSP folder, without it works, with FR translation it doesn't work anymore

Ugh, KSP really is horrible for stuff like this sometimes... the "Title" and "Type" of the trait both get set to the translated literal... I think I need to look back at the config node to get the untranslated literal. :(

Link to comment
Share on other sites

NRE fixed. Still can't get the mission to complete though =/ that may be me though. I'll have a little play.

Got it. location = Space didn't work. situation = InSpaceLow did - but I had to launch a new vessel before it registered the recovery. (bug?)

Link to comment
Share on other sites

Got it. location = Space didn't work. situation = InSpaceLow did - but I had to launch a new vessel before it registered the recovery. (bug?)

Sounds like it, but it's too late for the release. :) I'll play with it for the next version.

- - - Updated - - -

1.2.1 is out, with lots and lots of fixes! Download now.

Translation bug fixed... it looks kind of awkward with only one single literal translated... baby steps. :)

udmepbs.png

​Contract Configurator 1.2.1

  • CompleteContract requirement now checks on active contracts too.
  • Improved transfer of parameters from Kerbal => Vessel => Vessel, such as PlantFlag in an Apollo-style mission (thanks jordanjay29).
  • Fixed possible exception on contract save.
  • Fixed exception with WaypointGenerator for contracts using random waypoint names (thanks Galenmacil).
  • Fixed CollectScience NRE issue (thanks severedsolo).
  • Fixed orientation/height of spawned kerbals (thanks AlphaAsh).
  • Fixed orientation/height of vessels built in the SPH.
  • Fixed issue with HasCrew not checking traits properly when translation mods installed (thanks dureiken).

Link to comment
Share on other sites

I don't think I understand how any of this works.

Started new career with 7 missions that had zero requirements, all prestige = trivial. Use cheat menu to achieve maximum reputation, upgraded mission center to allow for maximum 7 contracts....

Only mission3 shows up. Not mission 0 or 1, like before, just mission 3.

Just tell what you need to debug the situation, please.

Link to comment
Share on other sites

I don't think I understand how any of this works.

Then you probably should start here first.

Started new career with 7 missions that had zero requirements, all prestige = trivial. Use cheat menu to achieve maximum reputation, upgraded mission center to allow for maximum 7 contracts....

All good things to make them show up, except the upgrading (that 7 active contracts, so won't make a difference in them showing up).

Only mission3 shows up. Not mission 0 or 1, like before, just mission 3.

Just tell what you need to debug the situation, please.

I'd much rather tell you what you need to know to debug the situation. Aside from what you've done, the only other thing to check for bad RNG luck is to go to the stock debug menu, under contracts (somewhere) hit the "clear current contracts". Do this while in mission control, and it'll re-roll a whole new set of contracts. You can spam click that button all you like - your contract should show up if its valid.

Otherwise to make sure it's valid:

- Look in the Contract Configurator debug menu (alt-f10) and check that your contracts are actually there. Do they match what you think they should be? This will catch obvious syntax errors (of which I saw a few in your original post).

- Make sure nothing's red - that'll imply a loading/parsing error, which usually means an issue in your config.

- Scroll over and make sure there's no errors

- Check the KSP.log or in-game debug log for errors, both at load time and when generating contracts through the button I mentioned above

Otherwise, I'd just suggest keeping it simple... instead of putting 7 contracts together and trying to get it all to work, maybe just focus on one of the non-working ones, get it nice and clean and readable and working... then move on.

- - - Updated - - -

Oh and one last thing - try removing your agent line in the contract config too - perhaps there's problems related to that?

Link to comment
Share on other sites

Working on a contract that requires you to kill tourists after taking them to their destination. I was going to use KerbalDeaths Parameter but that seems to only be able to fail a contract. I have settled on having to destroy the craft as a parameter using just the very simple


PARAMETER
{
name = VesselDestroyed
type = VesselDestroyed
}

Unfortunately I cannot get this part of the contract to turn green. I ran the entire vessel in to the surface of Kerbin at >2000m/s and it just will not complete. I blew it up in space using explosives that are part of the KIS mod.. nada. I attached SRB's to it pointing at the craft and let er rip... nope

Anybody able to give me any help?

For those interested in the entire config it is here


CONTRACT_TYPE
{
name = Murder_LowOrbit
group = Murder


title = Murder: Bring @/SpawnPassengers/count.Print() tourists to low @targetBody orbit and KILL THEM.
description = The Mob has a contract out on these civilians. Bring them to orbit around @targetBody then botch the landing. The pilot must return home safely.
synopsis = Bring @/SpawnPassengers/count.Print() tourists to orbit of @targetBody orbit then make them go boom.
completedMessage = The tourists are dead!


targetBody = HomeWorld()


// Can only have two at a time
maxSimultaneous = 2


// Contract rewards
rewardFunds = 50000.0 * @/SpawnPassengers/count + Random(0.0, 10000.0)
rewardReputation = 1.0
failureReputation = 20.0


PARAMETER
{
name = VesselParameterGroup
type = VesselParameterGroup


title = Bring the tourists into orbit


duration = 1s


PARAMETER
{
name = HasCrew
type = HasCrew


trait = Pilot
}


PARAMETER
{
name = HasPassengers
type = HasPassengers
}


PARAMETER
{
name = Orbit
type = Orbit


minPeA = @/targetBody.AtmosphereAltitude() + 5000
}
}
PARAMETER
{
name = VesselDestroyed
type = VesselDestroyed
}
PARAMETER
{
name = ReturnHome
type = ReturnHome


// Text for the contract parameter.
// Default = Return home.
//title =
}


BEHAVIOUR
{
name = SpawnPassengers
type = SpawnPassengers


count = Random(2, 5)
}
}

Also, is it possible to assign a negative reputation REWARD? I envision this to be a last ditch money making contract.

Don't judge me.

Link to comment
Share on other sites

Working on a contract that requires you to kill tourists after taking them to their destination. I was going to use KerbalDeaths Parameter but that seems to only be able to fail a contract. I have settled on having to destroy the craft as a parameter using just the very simple


PARAMETER
{
name = VesselDestroyed
type = VesselDestroyed
}

Unfortunately I cannot get this part of the contract to turn green. I ran the entire vessel in to the surface of Kerbin at >2000m/s and it just will not complete. I blew it up in space using explosives that are part of the KIS mod.. nada. I attached SRB's to it pointing at the craft and let er rip... nope

Anybody able to give me any help?

For those interested in the entire config it is here


CONTRACT_TYPE
{
name = Murder_LowOrbit
group = Murder


title = Murder: Bring @/SpawnPassengers/count.Print() tourists to low @targetBody orbit and KILL THEM.
description = The Mob has a contract out on these civilians. Bring them to orbit around @targetBody then botch the landing. The pilot must return home safely.
synopsis = Bring @/SpawnPassengers/count.Print() tourists to orbit of @targetBody orbit then make them go boom.
completedMessage = The tourists are dead!


targetBody = HomeWorld()


// Can only have two at a time
maxSimultaneous = 2


// Contract rewards
rewardFunds = 50000.0 * @/SpawnPassengers/count + Random(0.0, 10000.0)
rewardReputation = 1.0
failureReputation = 20.0


PARAMETER
{
name = VesselParameterGroup
type = VesselParameterGroup


title = Bring the tourists into orbit


duration = 1s


PARAMETER
{
name = HasCrew
type = HasCrew


trait = Pilot
}


PARAMETER
{
name = HasPassengers
type = HasPassengers
}


PARAMETER
{
name = Orbit
type = Orbit


minPeA = @/targetBody.AtmosphereAltitude() + 5000
}
}
PARAMETER
{
name = VesselDestroyed
type = VesselDestroyed
}
PARAMETER
{
name = ReturnHome
type = ReturnHome


// Text for the contract parameter.
// Default = Return home.
//title =
}


BEHAVIOUR
{
name = SpawnPassengers
type = SpawnPassengers


count = Random(2, 5)
}
}

Also, is it possible to assign a negative reputation REWARD? I envision this to be a last ditch money making contract.

Don't judge me.

There were some issues, so I made some changes to VesselDestroyed for the next release (hopefully works better).

Negative rewards don't really work, so I'll have to hack around it. This was raised a while back as [#149].

Link to comment
Share on other sites

There were some issues, so I made some changes to VesselDestroyed for the next release (hopefully works better).

Negative rewards don't really work, so I'll have to hack around it. This was raised a while back as [#149].

Really appreciate the work you did to address my concern. I downloaded the dev version of the dll to do more testing.

Running in to the ground at full speed seems to work great now. Other ways of destruction work most of the time. 95% of the time firing a nuke engine directly at the pod that contains the victims will get it to complete after it explodes.. but 5% of the time it doesn't, it's very weird.

Also the explosives from KIS/KAS don't work, but I believe that is just from the way it creates the explosion. I've looked at that source code, and with absolutely no experience in C or C# I have concluded that I have no idea what it says... but it seems to create an explosion, and delete the ship parts, not actually have them explode.

I can get it to recognize as being destroyed only if I have the vessel as my focus when it explodes. That makes sense, how else would it know what to look for as being destroyed. There is probably a way to save the vessel I want the state of tracked, I'll have to dive deeper in to the documentation though.

For now I'll just have to get creative in the way I write my contracts to take advantage of the things I know how to make work.

PS: I totally just copy/pasted your tourism contracts and edited them for my needs. They serve as great tutorial templates, thank you.

Link to comment
Share on other sites

New version up! Download now!

Contract Configurator 1.2.2

  • New UnlockTech behaviour (thanks Klefenz).
  • Added support for specifying science by subject in CollectScience.
  • Added CelestialBody.SemiMajorAxis() expression method.
  • Fixes to VesselDestroyed (thanks tito13kfm).
  • Fixes to contracts failing unexpectedly (thanks Recon777). Affects RemoteTech Contract Pack.
  • Fixed issues with CollectScience location (thanks severedsolo).
  • Fixed issue with ContractGroup max checks not working correctly for parent contract groups.
  • Fixed CollectScience to display correct experiment name.
  • Minor bug fixes.

Link to comment
Share on other sites

Still getting the problems with contract to do a low resolution scan after last update. Contract failed and reported no percentage of completion. If this bug repeats again in a loop. We need a way to completely remove it form the game. What really annoying is we have been here before and I am sure this was fixed.

Edited by nobodyhasthis
Link to comment
Share on other sites

Still getting the problems with contract to do a low resolution scan after last update. Contract failed and reported no percentage of completion. If this bug repeats again in a loop. We need a way to completely remove it form the game. What really annoying is we have been here before and I am sure this was fixed.

That was quite some time ago. Still have the issue, or did it go away and come back. I suspect it's bad data from that one bad release - may need to manually scrub that contract from the save file.

Link to comment
Share on other sites

That was quite some time ago. Still have the issue, or did it go away and come back. I suspect it's bad data from that one bad release - may need to manually scrub that contract from the save file.

Yes, I thought this was fixed. This is a new career started after the fix. There has only been one Contract Configuration update to it so far I think.

I agree that it could just be some junk left over. I don't know how but it seems the most logical explanation. What I am going to do is let it run as is out of curiosity. Just to see if it pops up again. If I am still seeing problems I will go for the manual scrub of save game and reinstall mods to clean up.

Link to comment
Share on other sites

Yes, I thought this was fixed. This is a new career started after the fix. There has only been one Contract Configuration update to it so far I think.

I agree that it could just be some junk left over. I don't know how but it seems the most logical explanation. What I am going to do is let it run as is out of curiosity. Just to see if it pops up again. If I am still seeing problems I will go for the manual scrub of save game and reinstall mods to clean up.

I have a guess as to a fix, but not 100% sure. If you'd be willing to test (shouldn't be any more harmful), then you can grab the dll here.

If that's not working, then create a file called ContractConfigurator.cfg (anywhere you want), and add the following content:

CC_DEBUGGING
{
// Possible LogLevel: VERBOSE, DEBUG, INFO, WARNING, ERROR
logLevel = DEBUG

ADD_LOGLEVEL_EXCEPTION
{
// Type name
type = ContractType
// Possible LogLevel: VERBOSE, DEBUG, INFO, WARNING, ERROR
logLevel = VERBOSE
}
}

That'll output some extra debug for me. Reproduce with those debug settings, and send a log my way.

- - - Updated - - -

Also, congratulations to Whitecat106 for releasing his new contract pack, Historic Mission Pack. It contains a whooping 317 contracts that emulate real manned space flights.

Link to comment
Share on other sites

New release, a few features, bug fixes and a new contract pack coming very soon. Download now!

Contract Configurator 1.2.3

  • Added Waypoint.Location() expression method.
  • Added Location.Biome() expression method.
  • Added RandomKerbalName() global expression function.
  • Added experienceTrait to SpawnPassenger.
  • Fixed some issues with recovering from tracking station in CollectScience.
  • Fixed null reference issue in dead contract types (thanks DMagic).
  • Fixed issues with biome detection for KSC biomes in CollectScience.
  • More fixes related to contracts failing unique check in SCANsat Lite (thanks nobodyhasthis).
  • Minor bug fixes.

- - - Updated - - -

Hey Nightingale, I know this is not Contract Configurator related, but do you know how to make all stock contracts reward 0 science?

Try DMagic's Contract Reward Modifier.

Link to comment
Share on other sites

Hi nightingale,

I love contract configurator and also the super cool and diverse/different contracts. Now this leads to the problem that I have multiple saves and for exaple i try to play the tourism contracts on one save and on the other the seti contracts. So i would like to get only the seti contracts in the seti save. And also only the tourism ones in my tourism save.

However this is not possible with both packs installled at the same time.

So here is my request: Could you make an ingame, per save, choice dialog what contracts packs should appear ? All ohters would be installed but not shown ingame. ()

EDIT:

I know that there are mods like rejector and so on, but the contract modders do not seem to name their creations correctly so i dont know what contract is it. It would be better to sort them with the folder names of contract configurator.

EDIT 2:

This would also be super useful for the historian contract pack. (just discovered)

Thanks!

Link to comment
Share on other sites

Hi

Very glad you like the idea :-)

Of couse i meant the: Historic Missions . Dammn typos.

I would be happy with a Menu button in the space center who lets you click "ok" or whatever to the contrackt packs you want to appear. This could be made with blizzys toolsbar so we can easy hide it after configuration :-)

Thanks!

Link to comment
Share on other sites

Hi

Very glad you like the idea :-)

Of couse i meant the: Historic Missions . Dammn typos.

I would be happy with a Menu button in the space center who lets you click "ok" or whatever to the contrackt packs you want to appear. This could be made with blizzys toolsbar so we can easy hide it after configuration :-)

Thanks!

Yeah, that was probably what I was thinking, space-center only menu with check boxes... maybe some other configuration options if it makes sense.

Link to comment
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.

×
×
  • Create New...