Jump to content

[1.7.x ~ 1.3.x] Better Specialization Settings [ v0.0.4 @ 2019-05-22 ]


cakepie

Recommended Posts

Better Specialization Settings
v0.0.4 @ 2019-05-22

This mod provides a bunch of settings to allow finer customization of gameplay revolving around crew specializations (i.e. Pilot, Engineer, Scientist). The bulk of its functionality is focused on making crew specializations more relevant and meaningful in sandbox and science sandbox play. There are also settings to allow customization of the level requirements needed to perform certain tasks in career mode.

Oversimplified tl;dr:

  • Make autopilot/SAS require a pilot in science/sandbox
  • Make wheel/leg repairs require an engineer in science/sandbox
  • Allow adjusting engineer level required for wheel/leg repairs in career
  • Make parachute repacking require an engineer in science/sandbox
  • Allow adjusting engineer level required for parachute repacking in career

~ ~ ~ ~ ~

Preface: stock KSP settings

In stock KSP, the primary setting affecting gameplay behavior related to crew specializations is the "Enable Kerbal Experience" setting found under "Advanced" in the difficulty options for new games:

Spoiler

 

SopS79u.png

7Xpq7Rt.png

 

In Career mode, this setting is turned on by default, which means that kerbals need to gain experience in order to level up and unlock more abilities, such as different SAS stability modes for pilots, or wheel repair skills for engineers. In the Science or Sandbox modes, it is turned off by default, and all kerbals start with their level already maxed out.

This option can be changed at the start of a new game (but not for existing saves), which means it is actually possible to play a Career game without having to level up your kerbals, or play Science or Sandbox modes with the experience system turned on.

However, this setting is very coarse-grained and has other side effects. Consider:
When the setting is on, certain tasks can only be performed by specialized kerbals of a particular skill level, e.g. a pilot of particular skill level is needed to access various SAS stability modes like normal/anti-normal and radial/anti-radial. But with the setting turned off, many of these tasks can suddenly be performed by all kerbals regardless of specialization. Scientists and engineers can fly vessels with full SAS and all stability mode options. Pilots and scientists can repack parachutes and perform repairs. You can do almost everything with just a scientist, etc.

This behavior cheapens the specializations, so the specialization type of a crew member does not matter as much anymore.
And because this is the default setting for Science and Sandbox games, it can contribute to the gameplay in those modes feeling more shallow.

Now, I'm not actually opposed to having an "easy mode" option where the skill levels and specializations do not matter very much.
The real problem here is that there is a lack of a middle ground between the "on" and "off" settings.

Why can't we have a setting where we don't have to deal with the XP and leveling up aspects, but where the different specializations are still meaningful in terms of needing certain types of crew to fill different roles and do different tasks?

This mod was born to address that flaw.

~ ~ ~ ~ ~

Autopilot/SAS

For players with mods that add other crew specialization types: when "pilot" is mentioned here, it includes any modded crew specialization that has the "Autopilot" skill.

Stock behavior:

If Enable Kerbal Experience is on, SAS and the stability modes available to a vessel depends on having a command module with a pilot of adequate skill level for crewed vessels. For uncrewed probes, a part with the required SAS service level is needed. (SAS service level is analogous to pilot experience level: cheaper, simpler probe cores have lower level than the more expensive and advanced models. For example, the QBE is equivalent to a Level 0 pilot and only has stability assist, whereas an OKTO2 is equal to a Level 2 pilot.)

For KSP versions before KSP 1.6, if experience system is turned off, then none of the above crew skill requirements and part SAS service level requirements are respected. SAS and all stability modes are available with any type of crewmember in a command module, or any probe core. This actually makes it pointless to use more expensive, "better" probe cores when a cheaper one would still give full SAS.
To fix the issue, since KSP 1.6+ an additional option called "All SAS Modes on all probes" is available in the "Advanced" tab of the difficulty options when the game mode is Science or Sandbox:

Spoiler

IXDp9x5.png

If the option is turned on, the behavior is the same as having experience system turned off in earlier versions, as already described above.
If it is turned off, then the intended behavior is for any type of crewmember to be able to provide all SAS stability modes on crewed vessels, but uncrewed probes would still need to have a part with the required SAS service level.

However, testing has shown that when "All SAS Modes on all probes" is off, SAS availability for crewed vessels actually depends on having a crewmember with either Autopilot Skill, Repair Skill, or Science Skill, i.e. these are being used as a proxy to test if there is a Pilot, Engineer, or Scientist on board the vessel. This works for stock KSP, but if you use any mod that adds crew specialization types that don't have any of these skills, then it is no longer true that "any crewmember" is able to give full SAS control.

What this mod provides:

If "Enable Kerbal Experience" is on, stock behavior as described in the previous section will be used. Full requirements are imposed for SAS availability.
If "Enable Kerbal Experience" is off, but "All SAS Modes on all probes" is on, stock behavior will be used: none of the SAS requirements are imposed.

For backwards compatibility, this mod adds the "All SAS Modes on all probes" option to older KSP versions before KSP 1.6.
This option is located under the "Better Specialization Settings" tab of difficulty settings dialog, rather than under the stock "Advanced" tab.

If both "Enable Kerbal Experience" and "All SAS Modes on all probes" settings are off, then custom behavior of this mod will be used.
This is governed by a setting called "Require pilot for SAS":

vNhitpx.png (KSP 1.6+)           MzIrW4X.png (KSP < 1.6)

When "Require pilot for SAS" is on, SAS and the stability modes available to a crewed vessel will depend on having a command module with a pilot. Crew level is irrelevant as it is always maxed out. Other crew types will not be able to provide SAS. Uncrewed probes will need to have a part with the required SAS service level.

If the setting is off, then any type of crewmember will be able to provide all SAS stability modes on crewed vessels. Uncrewed probes will still need to have a part with the required SAS service level.
This is a bugfixed version of the KSP 1.6+ behavior when "All SAS Modes on all probes" is off, in that truly (almost) all crew types will provide SAS. (Tourists, and the modded specialization type "Civilian" don't count.)

~ ~ ~ ~ ~

Wheel/leg repair

For players with mods that add other crew specialization types: when "engineer" is mentioned here, it includes any modded crew specialization that has the "Repair" skill.

Stock behavior:

If Enable Kerbal Experience is on, an engineer of level 3 or above will be required to repair damaged wheels and landing legs.
Much, much older versions of KSP needed only level 2 to repair legs, but that has not been the case since around KSP 1.1 when the old ModuleWheel, ModuleLandingLeg and ModuleLandingGear were replaced by ModuleWheelBase and its submodules.

If Enable Kerbal Experience is off, any type of crewmember can perform repairs.

What this mod provides:

If Enable Kerbal Experience is off, an option "Require engineer to repair legs/wheels" is available.
When this option is on, it will limit the ability to perform repairs to engineers only.
Turning this option off will cause stock behavior to be used instead.

Rq3OyB4.png

If Enable Kerbal Experience is on, an option is provided to override the engineer level required to perform repairs.
If this option is not used, then the stock reqirement of level 3 will be followed.

TpmY7yf.png

~ ~ ~ ~ ~

Parachute repacking

For players with mods that add other crew specialization types: when "engineer" is mentioned here, it includes any modded crew specialization that has the "Repair" skill.

Stock behavior:

If Enable Kerbal Experience is on, an engineer of level 1 or above will be required to repack parachutes.

If Enable Kerbal Experience is off, any type of crewmember can repack parachutes.

What this mod provides:

If Enable Kerbal Experience is off, an option "Require engineer to repack parachutes" is available.
When this option is on, it will limit the ability to repack parachutes to engineers only.
Turning this option off will cause stock behavior to be used instead.

zZ9kvgm.png

If Enable Kerbal Experience is on, an option is provided to override the engineer level required to repack parachutes.
If this option is not used, then the stock reqirement of level 1 will be followed.

riyqqmm.png

~ ~ ~ ~ ~

License

All rights reserved.

Download

Better Specialization Settings v0.0.4 for KSP 1.7.x
(backward compatible with KSP 1.6.x - 1.3.x)

Caution: Dev build. Backup your saves before proceeding.

Requires Module Manager (please obtain separately.)
Download includes the Harmony library, version 1.2.0.1. See this comment for explanation.

Installation:
Delete older version, if any.
Place contents of GameData into your installation's GameData folder.

Source: GitHub

Changelog:

v0.0.4 ~ 2019-05-22 ~ KSP 1.7.x - 1.3.x
Dev Build - Harmony 1.2.0.1 included
Add restrict parachute repacking to engineers
Add adjust level requirement for parachute repacking
Fix bug in engineer (repair skill) requirement check for wheel repair

v0.0.3 ~ 2019-05-13 ~ KSP 1.7.x - 1.3.x
Dev Build - Harmony 1.2.0.1 included
- Add restrict wheel/leg repair to engineers
- Add adjust level requirement for wheel/leg repair
- Rename mod due to feature for career mode
- Refactored code

v0.0.2 ~ 2019-04-17 ~ KSP 1.7.x - 1.3.x
Dev Build - Harmony 1.2.0.1 included
- Refactored code, improved robustness, optimizations
- Backward compatibility for KSP < 1.6.x

v0.0.1 ~ 2019-04-15 ~ KSP 1.7.x - 1.6.x
Dev Build - Harmony 1.2.0.1 included
- Prototype autopilot/SAS restricted to pilots

 

Edited by cakepie
v0.0.4
Link to comment
Share on other sites

8 hours ago, Nightside said:

What is the Harmony dependency?

It is a C# patching library.

In layman's terms (or at least, anyone with some fundamental experience and understanding of using mods in KSP) it can be thought of like Module Manager, but for code rather than configs. Just as Module Manager lets you write configs that patch other configs at runtime without having to actually modify the original files, Harmony provides modders a way to write code that patches other code at runtime without actually modifying the originals.

Not a perfect analogy, but hopefully should help most people understand what it is.

Link to comment
Share on other sites

I don't know if you want ideas but I think it'd be neat if the player could specify what costs what, and maybe what gets what.

Like for example give rep for landing on a world for the first time ONLY, and then make upgrading buildings cost rep, so you have to expand to grow.

(Assuming it's possible to enable rep in science mode)

Edited by 5thHorseman
Link to comment
Share on other sites

Out of scope.

Right now, I am only focused on a narrow and well-defined problem definition, which I have outlined right at the top of OP:

11 hours ago, cakepie said:

all kerbals [have] the ability to do certain tasks that would normally require a specialized kerbal in career mode

Which cheapens specializations far too much.

 

26 minutes ago, 5thHorseman said:

in-depth Science mode, with [...] Kerbal progression

If you mean having to gain experience and level up, this is already possible in stock.
You need to look under "Advanced" in the difficulty options when starting a new game, and turn on "Enable Kerbal Experience".
It is on by default for career and off by default for science and sandbox, but you can adjust it.
There is also the option to have them level up immediately once required XP is reached.

For autopilot/SAS functionality:
I don't have any problem with how things work when the "Enable Kerbal Experience" setting is "on".
I also respect the "All SAS Modes on all probes" stock setting if the player turned that on. ( = all SAS available all the time without prerequisites. )
What I've done is provide a bit more depth of choice when both of those are turned off. Stock gives any crewmember* full SAS abilities. With this mod, that can be changed to specifically require a pilot.
* oversimplification. based on testing, stock behavior is not completely robust in modded installs.

 

Link to comment
Share on other sites

Better Sandbox Specializations v0.0.2 for KSP 1.7.x
(backward compatible with KSP 1.6.x - 1.3.x)

WARNING: Dev build. Use with caution. Backup your saves before proceeding.

Requires Module Manager (please obtain separately.)
Download includes the Harmony library, version 1.2.0.1.

v0.0.2 ~ 2019-04-17 ~ KSP 1.7.x - 1.3.x
Dev Build - Harmony 1.2.0.1 included
- Refactored code, improved robustness, optimizations
- Backward compatibility for KSP < 1.6.x

 

Link to comment
Share on other sites

  • 4 weeks later...

Version 0.0.3. Mod is slightly renamed.

Added setting to limit repairs in sandbox to engineers only.

Added setting to adjust required engineer level for repairs in career.
(An old mod called EngineerLevelFixer used to provide this feature)

OP has been massively fleshed out.

 

Better Specialization Settings v0.0.3 for KSP 1.7.x
(backward compatible with KSP 1.6.x - 1.3.x)

Caution: Dev build. Backup your saves before proceeding.

Requires Module Manager (please obtain separately.)
Download includes the Harmony library, version 1.2.0.1.

v0.0.3 ~ 2019-05-13 ~ KSP 1.7.x - 1.3.x
Dev Build - Harmony 1.2.0.1 included
- Add restrict wheel/leg repair to engineers
- Add adjust level requirement for wheel/leg repair
- Rename mod due to feature for career mode
- Refactored code
Edited by cakepie
Link to comment
Share on other sites

  • 2 weeks later...

v0.0.4 adds control over requirements for repacking parachutes.
Parachute repacking code is a tentative first pass -- please let me know if you notice any discrepancies in is behavior when compared to stock.

 

Better Specialization Settings v0.0.4 for KSP 1.7.x
(backward compatible with KSP 1.6.x - 1.3.x)

Caution: Dev build. Backup your saves before proceeding.

Requires Module Manager (please obtain separately.)
Download includes the Harmony library, version 1.2.0.1. See this comment for explanation.

v0.0.4 ~ 2019-05-22 ~ KSP 1.7.x - 1.3.x
Dev Build - Harmony 1.2.0.1 included
Add restrict parachute repacking to engineers
Add adjust level requirement for parachute repacking
Fix bug in engineer (repair skill) requirement check for wheel repair

 

Edited by cakepie
Link to comment
Share on other sites

Hi @cakepie! Many thanks for your mods, I´m having a blast!

Just to let you know - and I'm not sure if it was intentional - but in your latest release (v0.0.4) you didn't include the Harmony library. I copied it from the previous version and it works.

Link to comment
Share on other sites

I'm glad you find the mods useful.

46 minutes ago, scdr91 said:

in your latest release (v0.0.4) you didn't include the Harmony library

Hm? I just double checked, the release looks like this:

BSS.0.0.4.zip
 - GameData
    - 0Harmony.1.2.0.1.dll
    - BetterSpecializationSettings
       - BetterSpecializationSettings.cfg
       - BetterSpecializationSettings.dll
       - LICENSE.md
       - localization_en-us.cfg

You should have it as long as you downloaded from the github release, which is the only place it should be available.
Install should be as easy as copy all GameData contents from the zip file to your KSP's GameData.

Did you only look inside the BSS folder and miss the 0Harmony.x.x.x.x.dll in GameData?

Note that you should put 0Harmony.x.x.x.x.dll in GameData -- multiple mods can use it, so it is best to just have one copy in one place to avoid any problems and also makes it easy to keep it up-to-date (similar to module manager).

Link to comment
Share on other sites

  • 1 year later...

Hi,

I've just tested the mod with the new 1.11 version.

Good news : there is no regression with the parachute/repair system. Engineers at a precise level are still needed to fix specific parts (level 3 => wheels for example), and repair kits are consumed normally. EVA construction mode is fine, only engineers can move parts in every situation (kerbal xp or not).

Bad news : Engineers now can repair ALL broken parts (solar panels, antennae, robotic scanning arms) with repair kits if they are level1. And again, Squad didn't bother and ALL kerbals can fix parts in default sandbox/science mode :( (I thought they would take the opportunity to change this with this update...)

I suppose a new trait is missing, but beware : wheels and legs only need a level 1 engineer in career since it's a "generic broken part".

Personnaly, I think the number of repair kits should be level dependant, for example a 4 repair kit should require a 4-star kerbal since it's a more complex part. To be discussed ;) 

I'll look at the code when I'll have some time.

 

Link to comment
Share on other sites

  • 5 months later...

Hello @cakepie,

Are you still maintaining this mod?

Since 1.11.2 a lot of players experiment a wild bug which gives full SAS to all kerbals even in career mode with kerbal xp on (bug link), unless Making History is installed.

Your mod addresses this (and other problems) but the option for pilot only SAS is grayed out when the gamemode is career. The mod assumes the game is career mode with kerbal xp so it doesn't patch the function, but it should because the stock code is broken...

Since you have an All Rights Reserved Licence we cannot fork or remix your code...

Thanks in advance!

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

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...