DMagic

[WIP - Plugin][KSP1.4.x - 1.6x] DMagic Module Science Animate V0.21 (3/6/19)

Recommended Posts

I've been working on a new science module to use for most of my parts, rather than using several modules that are all basically the same.

I've come up with something that can be used for science experiments and has much more versatile animation controls than the default ModuleScienceExperiment and ModuleAnimateGeneric modules.

---------------------------

Download from GitHub (For KSP 1.4 - 1.6)

Version 0.21

Allow for specified meshes to be activated when a sample is collected or transmitted

Allow for an animation to play when a sample is collected or transmitted

Allow for a max science value less than the max value specified in the experiment definition (see DMOS reconnaissance parts for reference)

 

Version 0.20

Updated for KSP 1.4

Version 0.19

Add options for using physical mesh transforms to represent samples, which will disappear when data is transmitted or collected

Allow for blocking experiment reset by an EVA scientist

Version 0.18

Fix a bug allowing scientists to reset experiments on EVA

Version 0.17:

Updated for KSP 1.3; experiment reset works based on ScienceResetSkill not Kerbal trait

Version 0.16:

Updated for KSP 1.2.1; adds stock science transfer function; fix compatibility with Science Relay

Version 0.15:

Updated for KSP 1.2

Version 0.14:

Updated for KSP 1.1.2; added new API for external compatibility

Version 0.13:

Fix science labs and scientist EVA lab resets

Version 0.12: 

Updated for KSP 1.1

Version 0.11:
The latest version fixes bugs related to EVA Kerbal detection and EVA data collection and experiment reset.

Version 0.9:

The latest version is updated for KSP 1.0.5. It adds options to exclude planets with an atmosphere, and the option to require one or more specific parts or part modules on the current vessel.

To add a part or part module requirement fill in the requiredParts or requiredModules field (only one can be used, the part requirement takes precedence over the module requirement). You can add multiple requirements by separating each name with a comma, do not add any spaces. All specified parts or modules must be present for the experiment to work, there is currently no method for adding or-type options. For the part field use the actual part name from the config file (the name = myPart field), not the part title. For the part module use the class name (from the MODULE = MyPartModule field in the part config).

Version 0.8:

The latest version is updated for KSP 1.0.4, and fixes a few problems when parts have errors in their animations.

--------------------------

Version 0.7:

The primary additions with the latest update are the ability to setup multiple-use experiments. These allow a variable amount of samples/data to be collected by a single part, unlike all stock parts that only allow for one sample to be collected. Set "experimentsLimit" to a value greater than 1 to use this feature.

There is also a new field to allow for EVA experiment collection. Set "externalDeploy = true" to use this.

A second animation can be used with multiple-use experiments; this allows for a "sample-fill" type of animation where a separate animation plays after you decide to keep or transmit data.

The amount of boost in transmission value generated by the science lab can now be altered. To change from the default value (50% of transmission rate) set the "labDataBoost" to something other than 0.

---------------------------

Everything is configurable through the part.cfg file. Most of the available fields are the same as those found in the two stock modules. There are a handful of additional fields that control the animation behavior along with a few other things.

Included in the package I'm releasing is a reference.cfg file; it is setup with fields for my magnetometer, but shows every available field (or almost every field), their default values, and explains what they are used for. There are a couple that I'm not sure about, and some of them seem to do nothing at all, but most of them are fairly simple.

It is unlikely that you'll actually need to include every field in your part.cfg file, most can be left at their default values.

The source is available on GitHub, along with a copy of the reference.cfg file.

The module inherits from ModuleScienceExperiment, so most of the behavior is the same. The major change is that I am bypassing the base.DeployExperiment() method. Instead I create the science data myself so that I can control the experiment results page and what happens when you push the buttons. This causes a few headaches, but everything is mostly working ok. It does however, let me fix a few of the stock modules bugs; collecting an atmospheric sample while aerobraking for instance, or that annoying way the parts won't complete their animations (they stop on the 2nd to last frame).

If anyone wants to try this out and see how it works for them that would be great. Or if anyone has any of their own science parts that don't work well with the stock modules, you can feel free to use this in your mod (though I wouldn't recommend doing anything beyond testing it for now), just include the .dll file and it should work fine.

Currently it is only setup to play one animation at a time. I plan on seeing about allowing for multiple or looping animations in the future. It does support one way animations, those that start and end at the same place and don't require reverse animations.

Here is the reference.cfg file showing all of the fields. As you can see there are a lot, but again, most shouldn't be necessary to change (it's easier to read this file if you open it in notepad with wordwrap turned off).

 

/*
*                                                             Version 0.21
*			For Reference Only - Do Not Simply Copy All Fields Into Your part.cfg
*				Most Fields Are Unnecessary - All Fields Have Default Values
*/


MODULE
	{
    name = DMModuleScienceAnimateGeneric			//Name of the module - don't change this

	--------------------------

	//Animation Fields**** Similar to ModuleAnimateGeneric (default values shown)

	animationName = *"your animation name"			//Name of your animation - get the name from Unity scene
        sampleAnim = *"your sample fill animation name" //Name of the animation to be played when a sample is stored in a multiple-use experiment, experimentsLimit must be greater than 1 to function correctly
	animSpeed = 1						//Speed to play animation
	endEventGUIName = Retract				//Title of retract animation event/action group
	showEndEvent = true					//Do you want to show the retract event/action group - only displayed in-flight after deploy event triggered
	startEventGUIName = Deploy				//Title of deploy animation event/action group
	showStartEvent = true					//Do you want to show the deploy event/action group
	toggleEventGUIName = Toggle 				//Title of toggle animation event/action group - Plays deploy or retract animation based on current state - Is reversible while playing
	showToggleEvent = false					//Do you want to show the toggle event/action group - not recommended to be used together with deploy/retract events, too many unnecessary buttons
	showEditorEvents = true					//Do you want to be able to preview the animation in the VAB/SPH
	useSampleTransforms = false				//Do you have mesh transforms that represent physical samples which should be removed when an experiment is collected or transmited
	sampleTransformName = "transformName"	//The name of the mesh transform representing the sample
											//If collection of more than one sample is allowed then the number of transforms must equal the number of samples
											//And the transforms must use the same name prefix followed by a .00x number; sampleTransform.000, sampleTransform.001, etc...
											//Only the tranform prefix should be entered in this field, sampleTransform for this example
	useReplacementTransforms = false			//Do you want to have a mesh that is activated only when a sample is collected or transmitted from the part?
	replacementTransformScale = 1				//The scale of the replacement mesh
	replacementTransformName = "transformName"	//The name of the replacement mesh transform - the same rules specified for "sampleTransformName" apply when multiple samples can be collected

	dataRemovalAnimation = false							//Do you want to play an animation when a sample is collected or transmitted?
	dataRemovalAnimationReverse = false						//Do you want the animation to play in reverse when the experiment is reset?
	dataRemovalAnimationName = "Data removal animation name"//The name of the data removal animation
	waitForDataRemoval = false								//Do you want to wait for the animation to complete before sample transforms are disabled or enabled.

	*****\\

	--------------------------

	//Science Experiment Fields**** The same as ModuleScienceExperiment (default values shown)

	collectActionName = Collect Data			//Name of the EVA data collection event
	collectWarningText = *empty string			//Warning text to display when retrieving data from the part during EVA - Only applicable with non-rerunnable parts
	dataIsCollectable = true				//Allow EVA Kerbals to collect science reports from the part
	experimentActionName = Collect Data			//Name for action group and right-click data collection function
	experimentID = *"your experiment id"			//Experiment name - from the "id = " field in your ScienceDefs.cfg for this experiment
	hideUIwhenUnavailable = false				//Hide the right-click data collection buttons when experiment cannot be used
	interactionRange = 1.2					//Range for EVA interaction in meters
	rerunnable = true					//Can the part be used more than once
	resettable = true					//Does nothing???
	resettableOnEVA = true					//Allow EVA Kerbals to reset the part - removes any existing science reports
	resourceResetCost = 1					//Multiplier for the resource cost to reset the experiment with a science lab
	resourceToReset = ElectricCharge			//Can't change????
	resetActionName = Reset Experiment			//Name for action group and right-click reset function
	reviewActionName = Review Data				//Name for action group and right-click review data function
	transmitWarningText = *empty string			//Warning text when transmitting data - only applicable for non-rerunnable parts - do not add anything here unless you want the warning to show
	useActionGroups = True					//Are the VAB/SPH action groups available - does not affect the availability of right-click functions
	useStaging = False					//Control experiment activation through staging (may not actually work)
	xmitDataScalar = 0.5					//Transmission data value, determines the percentage of the baseValue (from your ScienceDefs.cfg) recovered from a transmission
       	usageReqMaskExternal = -1				//Bit Mask to define external usage conditions; 8 specifies that the EVA kerbal must be a scientist to deploy the experiment; 4 will allow any Kerbal to deploy from EVA; -1 means nothing can use the experiment externally


	*****\\

	--------------------------

	//Science Experiment - Animation Fields**** (fields are from my magnetometer setup)

	customFailMessage = The magnetometer is not suitable for use during atmospheric flight, try again on the ground or in space.
						//Default = Can't conduct experiment here
								//Message to be displayed when you attempt an experiment in an unsuitable situation - from the situationMask in your ScienceDefs.cfg file
	deployingMessage = Close proximity to the craft scrambles the magnetometer's sensors, deploying the scanner now.
						//Default = empty string	//Message to be displayed when you try to conduct experiment with the part undeployed
	experimentAnimation = true		//Default = true		//Do you want your experiment to be dependent on the animation playing/already being deployed
	experimentWaitForAnimation = true	//Default = false		//Do you want to wait for the animation to complete before you begin the experiment (or any other arbitrary amount of time)
	keepDeployedMode = 2			//Default = 0			//Determines when to play the retract animation
									//Value of 0 is the stock behavior (mostly) - Parts retract when the experiment is reset or the data is transmitted 
									//Value of 1 - Retracts the part immediately after conducting the experiment - i.e. when the experiment results page appears - *probably better to set up a one way animation
									//Value of 2 - Part will not retract - only manual controls can retract the part
	waitForAnimationTime = -1		//Default = -1 (value set to the length of the animation)
									//Amount of time to wait after deploying the animation before the experiment begins - 0 will begin immediately, -1 waits for the animation to complete (this does take into account animSpeed specified above)
	oneWayAnimation = false			//Default = false		//Do you want the animation to only play in one direction - The animation should begin and end in the same position
	resourceExperiment = *empty string	//Default = ElectricCharge	//Do you want to use resources while collecting data, and what type do you want to use
										//This only functions while waitForAnimationTime and resourceExpCost both != 0, experimentWaitForAnimation can be set to false
										//Experiment will fail if you run out of the resource
	resourceExpCost = 0			//Default = 0			//The cost, in units per second, of resources used while collecting data
        asteroidReports = true		        //Default = false	        //Do you want to be able to collect results while landed on and/or near an asteroid
									//Asteroid reports in the ScienceDefs.cfg file follow the format: "AsteroidSrfLandedClassA" or "AsteroidInSpaceLowClassA" for each asteroid class, A-E
									//Only SrfLanded and InSpaceLow experimental situations are allowed
	planetaryMask = 524287			//Default = 524287		//Bitmask defining which planets the experiment can be performed on/around, works everywhere by default
	planetFailMessage = Can't conduct experiment here  	//Default = Can't conduct experiment here 		//Message to be displayed if the experiment can't be performed on the current planet/moon
        storageFullMessage = No more samples can be collected //Message to play when you can't collect any more data
	experimentsLimit = 1          	//Default = 1		//Sets the limit for how many experiments can be collected and stored by an individual part
	labDataBoost = 0				//Default = 0		//Set the gain for transmission after lab processing; the default value, 0, will set the boost to 50% of the regular transmission value
	externalDeploy = true			//Default = false	//Allow the experiment to be triggered by an EVA Kerbal; still requires power if applicable
	resetLevel = 0				//Default = 0 		//Level of scientist required to reset a used experiment on EVA

        excludeAtmosphere = false			//Default = false	//Specify experiments that can only run on planets/moons without an atmosphere
	excludeAtmosphereMessage = This experiment can't be conducted within an atmosphere       //Message to be displayed when an experiment fails because an atmosphere is present

	requiredParts = *empty string		//Default = none	//A list of part names that are required to be on the vessel for the experiment to work - separate part names by a , - all specified parts must be on the current vessel - use the actual part name (the name = myPart field in the part config), not the in-game title
	requiredModules = *empty string 	//Default = none	//A list of part modules that are required to be used by parts on the vessel for the experiment to work - separate modules by a , - all specified modules must be used by parts on the vessel

    requiredPartsMessage = *empty string 	//Default = empty string	//A message to indicate which parts are required
	requiredModulesMessage = *empty string 	//Default = empty string	//A message to indicate which part modules are required

	allowEVACleanUp = true					//Default = true			//Allow for an EVA scientist to reset a used experiment
	
	totalScienceLevel = 1		//Set to less than 1 to allow for experiments that collect less than 100% of an experiments max value; allows for multiple parts to conduct the same experiment with differing levels of max science available
	*****\\
	}

 

ChangeLog:

Spoiler

v0.21
- Allow for specified meshes to be activated when a sample is collected or transmitted
- Allow for an animation to play when a sample is collected or transmitted
Allow for a max science value less than the max value specified in the experiment definition (see DMOS reconnaissance parts for reference)

v0.20
- Updated for KSP 1.4

v0.19
- Add options for using physical mesh transforms to represent samples, which will disappear when data is transmitted or collected
      - Use new "useSampleTransforms" and "sampleTransformName" fields to access this feature
      - See the reference config file for details

- Allow for blocking experiment reset by an EVA scientist
      - Set the "allowEVACleanUp" field to false to activate this feature

v0.18
- Fix a bug allowing scientists to reset an experiment on EVA

v0.17
- Updated for KSP 1.3
- Experiment reset works based on ScienceResetSkill not Kerbal trait type

v0.16
- Updated for KSP 1.2.1
- Implement stock science transfer function
- Compatibility with Science Relay
- Show transmission percentage in editor info tooltip
- Hide science results window when needed
- Show correct transmission error message

v0.15
- Updated for KSP 1.2

v0.14
- Updated for KSP 1.1.2
- Added new API for external mod compatibility

v0.13
- Fixes for science labs
- Fixed EVA scientist experiment reset

v0.12
- KSP 1.1 update

v0.11
- Fixes bugs related to EVA Kerbal detection and EVA data collection and experiment reset

v0.9
- Updated for KSP 1.0.5

- Add an option to exclude celestial bodies with an atmosphere

- Add an option to require specific parts on the current vessel
- Add an option to require specific part module on the current vessel
      - Use only one of these options at a time
      - The part requirement takes precedence over the part module requirement

v0.8
- Updated for KSP 1.0.4
- Improved fault tolerance for animation errors

v0.7
- Updated for KSP 0.90
- Fixed compatibility with Science Alert
 

Let me know if anyone has any questions or suggestions.

License for software: BSD License

Edited by DMagic
Version 0.21

Share this post


Link to post
Share on other sites

Wow. I was just hoping someone would make a partmodule exactly like this. Nice work.

I have only one suggestion. Add the possibility to set a single or multiple resource(s) (plus amount) to request for each time the experiment is run

Share this post


Link to post
Share on other sites
Wow. I was just hoping someone would make a partmodule exactly like this. Nice work.

I have only one suggestion. Add the possibility to set a single or multiple resource(s) (plus amount) to request for each time the experiment is run

That's a good idea, it shouldn't be difficult to do. I think I can manage with just one or two more fields in the .cfg file (resourceForScience = "", or something like that, and a cost associated with it). I'll see what I can come up with.

Share this post


Link to post
Share on other sites

I updated to version 0.2. I think all of the basic functions are working correctly now. Transmitting data from the transmitter's button, lab processing/cleaning, and EVA data collection were causing the major issues and they all seem to work now. The only problem that I can find is that the Inoperable experiment warning will not show during EVA data collection using my module. Normally if you try to collect data from an experiment that can't be reused, like the goo pod, the warning dialogue will pop up, but that doesn't happen here for some reason, I don't think it's really a big deal though.

I also added resource usage in a limited fashion. I added .cfg file fields for what resource to use (though I've only tested ElectricCharge) and how much to use (in units per second). Right now it only works when you set a waitForAnimationTime value. When you start the experiment it will begin using resources, wait for the amount of time you set, then give the result (even if you have experimentWaitForAnimation set to false). If you run out of power it will stop the experiment and give you a message about being out of power. It also displays the resource usage in the part's VAB extra info tab.

Otherwise it is about the same. The code is much cleaner and hopefully easier to follow. There is a lot of support built in for collecting multiple reports with the same part, but none of it is explicit, I need to add something to tell the module that the part can collect multiple reports (either to store more than one, or to collect more than one before becoming inoperable), but most of the code is written with this in mind.

Let me know if anyone is interested in using this or has more suggestions.

The download link in the first post has been updated.

Share this post


Link to post
Share on other sites

Thanks. I didnt see you where concidering my idea before now. Should make for some interesting science parts using this plugin

Share this post


Link to post
Share on other sites
Thanks. I didnt see you where concidering my idea before now. Should make for some interesting science parts using this plugin

The power usage idea is actually something I had overlooked before, even though it makes a lot of sense. I've since added it to some of my own parts, though I still haven't decided how forgiving I should be about what happens when you run out of the resource.

Share this post


Link to post
Share on other sites

Very nice! I want to add science to my mod, and i hope this will help me work it out, thanks!

Share this post


Link to post
Share on other sites

About the "stricktness" of the resource requirement. I feel it Should be.. well, strickt. No resource=No experiment.

Hey im up with another couple of ideas. Dunno if any of these are within the scope of the plugin but here i go:

-"Social" experiments (require kerbals on vessel/bonus science for extra kerbals) would be nice as this game really needs more ways to make big ships/bases more useful

-how about passive science rewards? (Park a vessel or base on x planet for x days. Return science relative to the difficulty x duration with a science report. Only a set amount of time can be gathered at each biome/planet but perhaps more kerbals can increase the science reward returned)

-ill post more ideas if i can think of them

Edited by landeTLS

Share this post


Link to post
Share on other sites

I will try to put out an update today. The current release of DMagic Orbital is using this module already and seems to be working fine (Don't use the plugin from that pack, it has lots of other things, possible license restrictions, and won't always be the same as what I release here) so I'll just release it as is with a slightly different module name to prevent future issues.

The current setup causes experiments using resources to fail if they run out. Both the laser and drill from my pack use 80 electricity during the course of their animation, and if they run out a message will pop up and the science report won't be collected (the animation still finishes though, as I can't think of a good way to make it escape without looking funny). The resource cost is configurable, so users can change it if they want.

For now, the first thing I want to get to (assuming everything is stable) is a workable solution for conducting science with asteroids. Running experiments while docked shouldn't be too tough, but I want to also get experiments that work in close proximity. But I'm also thinking of several other aspects including base/station science, though I'm not sure if those will be incorporated into this plugin, or if maybe I'll make a separate one for less traditional experiments.

Share this post


Link to post
Share on other sites

I updated the link in the first post with the release version. I haven't tested this much beyond what I did for my mod, but the code is the same, only the name is different (and has changed from older versions). This should be stable, so anyone who wants to use this can include it with their parts. Just put the plugin somewhere in the GameData folder and include it with your download.

Let me know about any problems or if anyone has more suggestions.

Share this post


Link to post
Share on other sites

I updated this again with the latest version: http://www./download/5uetoyutzgiadt2/DMModuleScienceAnimateGeneric_V0_4.zip

The newest plugin adds the ability to collect science from asteroids.

To setup your experiment for asteroids you need to change the "asteroidReports" field in the .cfg file to true. In your ScienceDefs.cfg file you setup the "situationMask" as normal (the "biomeMask" doesn't matter); the InSpaceLow experimental situation will give results when you are within 2km of an asteroid, SrfLanded will give results when you have grappled an asteroid. Outside of those two cases your experiments should work as normal and give regular science reports for all relevant experimental situations. If you have multiple asteroids within 2km it should only choose the first of them (I don't know how it will order them, or if it will always be the same).

For custom asteroid science reports follow the format: "AsteroidSrfLandedClassA" and "AsteroidInSpaceLowClassA". Separate reports for each class (A-E) can be created, but the host planet does not matter (results collected near an asteroid in orbit around Kerbin will be the same as those in orbit around Eve, the Sun, etc...).

I am classifying asteroids by their mass; I think I have the ranges fairly accurate, but it's possible that the plugin could report an asteroid as the wrong class. The science value multipliers for reports near an asteroid are: 1.5X, 3X, 5X, 8X and 10X for classes A-E, respectively. The values for a grappled asteroid are 1.5X higher for each class. These can obviously be adjusted in future updates if anyone feels they are too high/low.

I fixed a handful of other, minor bugs with this update as well.

Let me know if anyone has thoughts on this idea.

Share this post


Link to post
Share on other sites

DMagic, I consider your science parts pack a must have in my game, and I am looking forward to seeing where this goes. I am sure, in time, I will have a few asteroid specific ideas to share.

Share this post


Link to post
Share on other sites

I've released an update for this module; see the first post for the download link.

The primary change is that non-animated parts should function properly now. To be safe you should set all of the animation related fields to false (showEndEvent, showStartEvent, showToggleEvent, showEditorEvents) and you must set 'experimentAnimation' to false. You can still set your experiment to use resources when activated, you must define a 'waitForAnimationTime' value and you must change 'resourceExpCost' to something higher than zero. Try not to set 'waitForAnimationTime' shorter than around 0.2-0.3 seconds, this can cause odd behavior in resource usage.

----------------

The other major change is the addition of the 'planetaryMask' field. This is a bitmask used to define on which planets your experiment can be conducted. It is similar to the 'situationMask' and 'biomeMask' used when creating a custom ScienceDefs.cfg file definition. The difference is that there are 19 possible values here instead of 6. By default it is set to allow experiments on every planet, default and mod, and on asteroids (it should still respect the 'requireAtmosphere' flag in your ScienceDefs.cfg file).

All | Asteroid | Eeloo | Dres | Pol | Gilly | Tylo | Bop | Vall | Laythe | Jool | Ike | Duna | Eve | Moho | Minmus | Mun | Kerbin | Sun

The first two are special cases. The 'All' position allows your experiment to be carried out on any mode planets, this, unfortunately, is an all-or-nothing option, there is no way to further specify which mod planet you want your experiment to work on. The 'Asteroid' position allows reports to be collected from asteroid, this requires that the part be configured to collect asteroid science. The rest are for the default planets.

To simplify converting the values from binary to decimal, here is a string of 19 ones that you can plugin to this converter. Switch the values to zero for any planet that you don't want your experiment to work on. Just copy the values below and paste them into the binary-to-decimal box, it should tell you how many digits are in the value.

1111111111111111111

Some examples:

If you want an experiment that only works on the Mun you would use 100 (you only need to start at the first '1', any preceding '0's can be removed) in the converter, which comes out to 4, so you would set planetaryMask = 4.

If you want something that works on every non-atmospheric planet you would put the value in 0111111110010011100 the converter; which comes out to 261276 (note that the first value for mod planets is set to zero, there is currently no way to specify which mod planets to add or ignore).

It's a lot of numbers, so it's worth checking a few times to make sure you've got the values in the right positions if you want to use this. If you don't care you can just leave out the 'planetaryMask' field and it will default to work on every planet.

----------------

I have also made several bug fixes and updates. It should properly detect the boundary between the upper atmosphere and space now, and it respects the FlyingHigh and InSpaceHigh science multiplier values (they previously defaulted to using the FlyingLow and InSpaceLow values for both of the respective situations, which is also the behavior of stock science parts). You can really take advantage of this with my Celestial Body Science Multiplier Editor. A few other minor bugfixes are included as well.

Share this post


Link to post
Share on other sites

Great update!

Is it possible to use two resources in an experiment?

Share this post


Link to post
Share on other sites
Fantastic update. Thank you for this.

You might also want to consider my Science Multiplier Editor, it can give you a lot more control over how much science you get from each planet and each situation. It would be especially useful if you want to decrease the science given from the Mun/Minmus to force people to go further to get more science.

Great update!

Is it possible to use two resources in an experiment?

Not currently, though that could be an interesting addition. I'll see if I can come up with a way to include any number of resources.

Share this post


Link to post
Share on other sites
You might also want to consider my Science Multiplier Editor, it can give you a lot more control over how much science you get from each planet and each situation. It would be especially useful if you want to decrease the science given from the Mun/Minmus to force people to go further to get more science.

Oh kerbal hades yes. Since KAP's trying to widen the 'timeline' this is very useful considering how 'over-scienced' Kerbin's moons currently are.

Share this post


Link to post
Share on other sites

Updated to version 6; get it on MediaFire.

The major addition here is ability to setup multiple-use experiments. These function similar to the solar particle collector and the core drill in my pack. They allow for multiple samples to be collected by a single part.

A second animation can be used in conjunction with this feature. It is meant to be either a sample storage type of animation, or some kind of indicator animation (something that tells you how many samples have been collected). To set this up properly you want to create a second Unity animation and enter its name in the "sampleAnim" field. This will play in segments based on how many experiments have been collected by the part. So if you create a 10 second long animation, and your part can collect 4 experiments, it will play 2.5 seconds of the animation every time you store or transmit a new experiment. Create your animation with this pattern in mind. Also note that the full animation will play backward after lab reset, and individual segments will play after discarding data from the results page.

Experiments can now be deployed by an EVA Kerbal, just set "externalDeploy = true".

You can change how much science lab processing will boost the transmission rate for your experiments. The "labDataBoost" field is set to 0 by default, which triggers the stock, 50% transmission rate boost. Set it to something other than 0 to change this.

Check the reference config included on the first post here and in the download packaged for the complete set of customizable fields.

Let me know if you have any questions on settings or any requests.

Share this post


Link to post
Share on other sites

There has been some renewed interest in this, so I updated it for KSP 0.90 and fixed a few minor issues. Get the latest version on GitHub.

The configs are the same as before (as shown in the first post); you have options for consuming resources (with or without an animation), deploying experiments on EVA, collecting data from asteroids, limiting experiments to certain planets (instructions for which can be found a few posts up), etc...

Share this post


Link to post
Share on other sites

I updated this for KSP 1.0.4. Details in the first post.

This is the same version currently in use by CobaltWolf's [thread=135535]Bluedog Design Bureau[/thread].

Share this post


Link to post
Share on other sites

I've been hunting everywhere-and it's extremely possible that I missed something :blush:- but I can't seem to find of how the planetaryMask field deals with mod-added planets such as OPM. Since I'm trying to update a mod that involves OPM comparability, if someone could explain, it would be MOST helpful.

Edited by AlbertKermin

Share this post


Link to post
Share on other sites

Do you need it to work on only certain planets? Otherwise I believe it defaults to working everywhere.

Share this post


Link to post
Share on other sites
I've been hunting everywhere-and it's extremely possible that I missed something :blush:- but I can't seem to find of how the planetaryMask field deals with mod-added planets such as OPM. Since I'm trying to update a mod that involves OPM comparability, if someone could explain, it would be MOST helpful.

It doesn't, not really, at least.

You can specify that your experiment work on all mod planets, using 1<<18, or 2^18, but there is no way to only target specific mod planets. If you just leave out the value, or leave it at the default value used by the example config it should work anywhere.

I'm also pretty sure that mod planet packs which rearrange stock planets and change their planetary index numbers will screw things up.

One thing that I should add is the ability to target on planets that don't have an atmosphere; just the opposite of the requireAtmosphere flag in the experiment definition.

Share this post


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