Jump to content

[1.12.3+] RealChute Parachute Systems v1.4.9.5 | 20/10/24


stupid_chris

Recommended Posts

5 hours ago, Eklykti said:

Can somebody explain this behavior with center of mass calculations?

Log if that will help

Nothing stands out in the log and I can't repro the problem

Double check the mass of the chute because that tool you're using looks off. Use the RealChute Parachute Editor and see what it says the total part mass is. Or use the stock Engineer's Report. (compare mass before and after part is added)

You've also got a lot of mods altering the RC parts so it might be time to remove them all and then see if you can still repro the problem. If you can't then add mods back in one at a time until the problem happens again.

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Just added this small patch for convenience:

GameData\zFinal\zzz_RealChuteNoRealChute.cfg

@PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[ModuleParachute]]:NEEDS[RealChute,!FerramAerospaceResearch]:FINAL
{
	+description ^= :^:<color=orange>Not patched for RealChute yet!</color> :
}

@PART[*]:HAS[!MODULE[RealChuteModule],!MODULE[RealChuteFAR],@MODULE[ModuleParachute]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
{
	+description ^= :^:<color=orange>Neither patched for RealChute nor for RealChuteFAR yet!</color> :
}

@PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[RealChuteFAR],!MODULE[ModuleParachute]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
{
	+description ^= :^:<color=orange>Patched for RealChuteFAR, but not for RealChute yet!</color> :
}

 

Edit:

I wonder if it would be possible to have generic patches for parachute parts which have no specific patches by copying the values from the stock module and tinkering with them if needed?

Edited by Gordon Dry
Link to comment
Share on other sites

And btw could it be that in some cases a RealChute is NOT deploying at set altitude above ground, but above sea level?

So the oldish behavior that is prone to Kerbal's death?

Edit: again

Also without this issue mentioned below RealChutes got a bug (already had this yesterday): predeployment occurs at altitude over terrain, but deployment occurs at altitude over sea level = crash.

Edited by Gordon Dry
Link to comment
Share on other sites

I just "slightly" changed my above patch to this:

// No FAR: add description
// @PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[ModuleParachute]]:NEEDS[RealChute,!FerramAerospaceResearch]:FINAL
// {
	// +description ^= :^:<color=orange>Not patched for RealChute yet!</color> :
// }

// FAR + no RealChute or RealChuteFAR: add description
// @PART[*]:HAS[!MODULE[RealChuteModule],!MODULE[RealChuteFAR],@MODULE[ModuleParachute]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
// {
	// +description ^= :^:<color=orange>Neither patched for RealChute nor for RealChuteFAR yet!</color> :
// }

// FAR + RealChuteFAR: add description
// @PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[RealChuteFAR],!MODULE[ModuleParachute]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
// {
	// +description ^= :^:<color=orange>Patched for RealChuteFAR, but not for RealChute yet!</color> :
// }


// or just add generic RealChute

// make RealChuteFAR to ModuleParachute again
@PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[RealChuteFAR]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
{
	@MODULE[RealChuteFAR]
	{
		@name = ModuleParachute
	}
	
	!EFFECTS {}
}

// just fiddle with the already patched ones
@PART[*]:HAS[@MODULE[RealChuteModule]:HAS[@PARACHUTE[]:HAS[deploymentAlt[<2500]]],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		%mustGoDown = true
		@caseMass = #$/mass$
		@caseMass /= 2.5
		@caseMass ^= :(\.\d\d\d)\d+$:$1:
		@PARACHUTE,*
		{
			@minIsPressure = true
			%minPressure = 0.3
			%deploymentAlt = 2000
		}
	}
}

@PART[*]:HAS[@MODULE[RealChuteModule]:HAS[@PARACHUTE[]:HAS[deploymentAlt[>2499]]],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		%mustGoDown = true
		@PARACHUTE,*
		{
			@minIsPressure = true
			%minPressure = 0.1
			%deploymentAlt = 10000
			%cutAlt = 5000
		}
	}
}

//just fix the wrong patches in GameData\RealChute\ModuleManager\ 
@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	!sound_parachute_open = delete
	!sound_parachute_single = delete
}

// now convert a ModuleParachute to a RealChuteModule
@PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	!sound_parachute_open = delete
	!sound_parachute_single = delete
	@cost *= 1.1
	@cost ^= :(\.\d\d)\d+$:$1:

	MODULE
	{
		name = RealChuteModule
		caseMass = #$/mass$
		@caseMass /= 2.5
		@caseMass ^= :(\.\d\d\d)\d+$:$1:
		timer = 0
		mustGoDown = true
		cutSpeed = #$/MODULE[ModuleParachute]/autoCutSpeed$
		spareChutes = 5

		PARACHUTE
		{
			material = Nylon
			preDeployedDiameter = #$/MODULE[ModuleDragModifier]:HAS[#dragCubeName[SEMIDEPLOYED]]/dragModifier$
			@preDeployedDiameter *= 3.1415926535897932384626433832795
			@preDeployedDiameter ^= :(\.\d\d)\d+$:$1:
			deployedDiameter = #$/MODULE[ModuleDragModifier]:HAS[#dragCubeName[DEPLOYED]]/dragModifier$
			@deployedDiameter *= 3.1415926535897932384626433832795
			@deployedDiameter ^= :(\.\d\d)\d+$:$1:
			minIsPressure = true
			minPressure = #$/MODULE[ModuleParachute]/minAirPressureToOpen$
			minDeployment = #$/MODULE[ModuleParachute]/deployAltitude$
			@minDeployment *= 8
			deploymentAlt = #$/MODULE[ModuleParachute]/deployAltitude$
			@deploymentAlt += 300
			cutAlt = -1
			preDeploymentSpeed = 1
			@preDeploymentSpeed /= #$/MODULE[ModuleParachute]/semiDeploymentSpeed$
			@preDeploymentSpeed ^= :(\.\d\d)\d+$:$1:
			deploymentSpeed = 1
			@deploymentSpeed /= #$/MODULE[ModuleParachute]/deploymentSpeed$
			@deploymentSpeed ^= :(\.\d\d)\d+$:$1:
			preDeploymentAnimation = #$/MODULE[ModuleParachute]/semiDeployedAnimation$
			deploymentAnimation = #$/MODULE[ModuleParachute]/fullyDeployedAnimation$
			parachuteName = #$/MODULE[ModuleParachute]/canopyName$
			capName = #$/MODULE[ModuleParachute]/capName$
		}
	}

	MODULE
	{
		name = ProceduralChute
		textureLibrary = StockReplacement
		currentCase = Main
		currentCanopies = Main chute, Drogue chute
		currentTypes = Main, Drogue
	}	

	EFFECTS
	{
		rcpredeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_open
				volume = 1
			}
		}

		rcdeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_single
				volume = 1
			}
		}

		rccut
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_cut
				volume = 1
			}
		}

		rcrepack
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_repack
				volume = 1
			}
		}
	}	
}

// just assume it's a drogue chute here
@PART[*]:HAS[@MODULE[RealChuteModule],@MODULE[ModuleParachute]:HAS[#deployAltitude[>2499]]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		@PARACHUTE,*
		{
			@material = Kevlar
			@preDeployedDiameter /= 1.5
			@preDeployedDiameter ^= :(\.\d\d)\d+$:$1:
			@deployedDiameter /= 1.5
			@deployedDiameter ^= :(\.\d\d)\d+$:$1:
			@minPressure = 0.1
			@minDeployment = #$/MODULE[ModuleParachute]/deployAltitude$
			@minDeployment *= 6
			@deploymentAlt = #$/MODULE[ModuleParachute]/deployAltitude$
			@deploymentAlt *= 4
			@preDeploymentSpeed *= 2
			@deploymentSpeed *= 2
			%cutAlt = #$/MODULE[ModuleParachute]/deployAltitude$
			@cutAlt *= 2
		}
	}

	@MODULE[ProceduralChute]
	{
		@currentCase = Drogue
		@currentCanopies = Drogue chute, Main chute
		@currentTypes = Drogue, Main
	}	
}

// now finally remove ModuleParachute
@PART[*]:HAS[@MODULE[RealChuteModule],@MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	!MODULE[ModuleParachute]{}
	!MODULE[ModuleDragModifier]{}
	!MODULE[ModuleDragModifier]{}
}

@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute],#attachRules[1,0,0,*]]:NEEDS[RealChute]:FINAL
{
	@MODULE[ProceduralChute]
	{
		%type = Cone
	}	
}

@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute],#attachRules[1,0,1,*]]:NEEDS[RealChute]:FINAL
{
	@MODULE[ProceduralChute]
	{
		%type = Stack
	}	
}

@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute],#attachRules[0,1,0,*]]:NEEDS[RealChute]:FINAL
{
	@MODULE[ProceduralChute]
	{
		%type = Radial
	}	
}

// tinkering with MM bug
@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		@PARACHUTE:HAS[#preDeployedDiameter[Infinity]]
		{
			@preDeployedDiameter = 1
		}
	}
}

// I also add these here to avoid them to be overlooked
@CCKExtraFilterConfig:NEEDS[CCK]:FINAL
{
Item
	{
	name = Parachutes
	tag = cck-chutes
	normalIcon = Squad/PartList/SimpleIcons/R&D_node_icon_survivability
	}
}

@PART[*]:HAS[@MODULE[RealChuteModule]]:NEEDS[RealChute,CCK]:FINAL
{
	@category = Utility
	@tags = #$tags$ cck-chutes
	&tags = cck-chutes
}

@PART[*]:HAS[@MODULE[ModuleParachute],!MODULE[ModuleCommand]]:NEEDS[CCK]:FINAL
{
	@category = Utility
	@tags = #$tags$ cck-chutes
	&tags = cck-chutes
}

It works with regex replacement.

Edited by Gordon Dry
one change in one line
Link to comment
Share on other sites

48 minutes ago, Agustin said:

what's that patch for?

If there is no dedicated patch to convert a stock parachute into a RealChute this patch will make one in a generic way.

And I guess by your question you didn't read many patches yet :D

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

https://www.dropbox.com/s/c1cquugsxp37h7f/Realchuteexceptions.rar?dl=0

Hey @stupid_chris,

I had a huge swath of exceptions in my KSP log and Output log towards the end in reference to Real Chutes....

I don't understand anything in logs or what to do about it, so I'm passing it on to you.....because it said something about your mod, lol....

It goes on and on like this for quite some time. I wasn't using a cubicoctostrut on my vessel, so I don't know what THAT means. I was using several Real Chute radial chutes and the Ducky Inline Ballute by Linuxgurugamer.....so I told him too...

Spoiler

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

BoxColliders does not support negative scale or size.
The effective box size has been forced positive and is likely to give unexpected collision geometry.
If you absolutely need to use negative scaling you can use the convex MeshCollider. Scene hierarchy path "MSP3000/model/Squad/Parts/Structural/strutCubicOcto/model(Clone)/cubestrut"
 
(Filename:  Line: 0)

BoxColliders does not support negative scale or size.
The effective box size has been forced positive and is likely to give unexpected collision geometry.
If you absolutely need to use negative scaling you can use the convex MeshCollider. Scene hierarchy path "MSP3000/model/Squad/Parts/Structural/strutCubicOcto/model(Clone)/cubestrut"
 
(Filename:  Line: 0)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0
 
(Filename:  Line: -1)

 

 

 

 

 

Oh I figured out that the MSP3000 is, it's that Material Science bin that looks like a Radial Mystery Goo container.....it uses the same model as a cubicoctostrut I guess....

Edited by JoE Smash
Accidental multipost
Link to comment
Share on other sites

KSP v1.4.5 and RC v1.4.6 (on a GPP+GEP install), FMRS/SR and Recovery Controller, and OneWindow (latest versions).

@linuxgurugamer, during his stream on Sunday evening, suggested I post this for your consideration.

Occasionally, my stage recovery parachutes (for Stage Recovery/Recovery Controller) end up at the bottom of the staging list when they should be at the top.  My bad, I know.  When I launch the vessel, the game bogs down with console messages advising me that the parachutes are waiting for negative velocity.

While I have configured the chutes to deploy on descent, the messages volume (in my case in OneWindow) can significantly slow the game.  I realize that it's my design that's flawed but might you consider removing those msgs or reducing their frequency?

oBiCGTQ.png

Edited by Brigadier
Added picture.
Link to comment
Share on other sites

Alright guys, announcement time. Lets start with the good stuff.

I'm starting to work on RealChute 2 as I'm writing this. As I mentioned before, this will be a whole new project from the ground up, too much to fix, to little to keep. It'll be a fresh start. I'll try posting updates about once a week, but this will likely take quite a while.

Now the less good stuff. Given the energy I'll have to put in this, I'm not going to be supporting/updating RealChute 1.X through this. This would scatter my work too much, and I do not want to get into this mess. I apologize for the dissapointment. I do not know if @Starwaster still wanted to keep doing some updating work, but otherwise if someone wants to help out, feel free to PM me. I can however confirm I will not be personally updating RealChute 1 any further. I'm seeing some issues right now being reported. I'll probably quickly boot it up to see if a quick recompile might not fix the issues, but otherwise, It'll have to wait unfortunately.

That being said, I have a brand new shiny build to help along this project :) Don't want to derail this thread, but I'll link to the post below.

That being said, thank you everyone for your patience. Good things will be coming down the pipeline!

Edited by stupid_chris
Link to comment
Share on other sites

Alright, did a quick test and everything is clean on my side, so I'm gonna call this one a day. Recompiled to new KSP binaries and everything seems to go perfectly. If anyone is having issues, I recommend switching to this version.

August 25th 2018
v1.4.6.1
-Recompiled for KSP 1.4.5

Should do the job for the near future, thanks everyone for your understanding.

On this, cheers!

Link to comment
Share on other sites

9 hours ago, stupid_chris said:

 "...too much to fix, to little to keep. "

 

May I advocate for keeping some style of stack chute?  It is my #1 RC item.  A texture switch to match the stock pods (black/white) would be nirvana IMO.

Link to comment
Share on other sites

11 hours ago, stupid_chris said:

I'm starting to work on RealChute 2 as I'm writing this.
.
.
Given the energy I'll have to put in this, I'm not going to be supporting/updating RealChute 1.X through this

I understand and completely support you on this.  In my case, RC1 works just fine for all that I ask it to do, which is less than it is capable of.  Thanks for issuing a final RC1 update and undertaking a full rewrite.  Best speed on RC2...but only if RL permits.

Link to comment
Share on other sites

Thank you all for understanding, hopefully it will be timely :)

13 hours ago, jpkerman said:

May I advocate for keeping some style of stack chute?  It is my #1 RC item.  A texture switch to match the stock pods (black/white) would be nirvana IMO.

Mostly speaking of code haha, the parts are staying, with potentially a graphical update if @sumghai wants to do it. I'm still content on how they look though, so I'm fine with just keeping them as is!

Link to comment
Share on other sites

7 minutes ago, stupid_chris said:

with potentially a graphical update if @sumghai wants to do it.

Ideally, I'm keen on a graphical update too - which is why I'm having a practice run at replicating the stock not-quite bumped specular texture in SDHI SMS V4.

No guarantees on if and when that'll also happen for RC2, though.

 

Link to comment
Share on other sites

3 minutes ago, sumghai said:

Ideally, I'm keen on a graphical update too - which is why I'm having a practice run at replicating the stock not-quite bumped specular texture in SDHI SMS V4.

No guarantees on if and when that'll also happen for RC2, though.

 

Not in the need of any guarantees, like I said, I like them as is, entirely up to you! :)

Link to comment
Share on other sites

On 8/25/2018 at 1:20 AM, stupid_chris said:

I do not know if @Starwaster still wanted to keep doing some updating work, but otherwise if someone wants to help out, feel free to PM me. I can however confirm I will not be personally updating RealChute 1 any further. I'm seeing some issues right now being reported. I'll probably quickly boot it up to see if a quick recompile might not fix the issues, but otherwise, It'll have to wait unfortunately.

I will though I've been preoccupied of late. I've seen those issues too.

Link to comment
Share on other sites

  • 4 weeks later...

Darn it KSP 1.4.5 - and another mod that is throwing issues - did not happen on KSP 1.4.3:

1. I use this patch:
GameData\RealChute\ModuleManager\SoundingRockets_RealChute_MM.cfg

@PART[SR_Nosecone_35]:FOR[RealChute]
{

	@category = none
	@mass = 0.005
	!sound_parachute_open
	!sound_parachute_single

	!MODULE[ModuleParachute]{}

	MODULE
	{
		name = RealChuteModule
		caseMass = 0.005
		timer = 0
		mustGoDown = true
		cutSpeed = 0.5
		spareChutes = 1

		PARACHUTE
		{
			material = Nylon
			preDeployedDiameter = 1
			deployedDiameter = 8
			minIsPressure = false
			minPressure = 0.1
			minDeployment = 3000
			deploymentAlt = 500
			cutAlt = -1
			preDeploymentSpeed = 2
			deploymentSpeed = 8
			preDeploymentAnimation = PreDeploy
			deploymentAnimation = Deploy
			parachuteName = String
			capName = Cap
		}
	}

	MODULE
	{
		name = ProceduralChute
	}

	EFFECTS
	{
		rcpredeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_open
				volume = 1
			}
		}

		rcdeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_single
				volume = 1
			}
		}

		rccut
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_cut
				volume = 1
			}
		}

		rcrepack
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_repack
				volume = 1
			}
		}
	}
}

@PART[SR_Nosecone_625]:FOR[RealChute]
{

	@category = none
	@mass = 0.01
	!sound_parachute_open
	!sound_parachute_single

	!MODULE[ModuleParachute]{}

	MODULE
	{
		name = RealChuteModule
		caseMass = 0.01
		timer = 0
		mustGoDown = true
		cutSpeed = 0.5
		spareChutes = 1

		PARACHUTE
		{
			material = Nylon
			preDeployedDiameter = 2
			deployedDiameter = 16
			minIsPressure = false
			minPressure = 0.1
			minDeployment = 4000
			deploymentAlt = 600
			cutAlt = -1
			preDeploymentSpeed = 2
			deploymentSpeed = 8
			preDeploymentAnimation = PreDeploy
			deploymentAnimation = Deploy
			parachuteName = String
			capName = Cap
		}
	}

	MODULE
	{
		name = ProceduralChute
	}

	EFFECTS
	{
		rcpredeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_open
				volume = 1
			}
		}

		rcdeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_single
				volume = 1
			}
		}

		rccut
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_cut
				volume = 1
			}
		}

		rcrepack
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_repack
				volume = 1
			}
		}
	}
}

@PART[SR_PackChute_35]:FOR[RealChute]
{

	@category = none
	@mass = 0.005
	!sound_parachute_open
	!sound_parachute_single
	@PhysicsSignificance = 0
	
	!MODULE[ModuleParachute]{}

	MODULE
	{
		name = RealChuteModule
		caseMass = 0.005
		timer = 0
		mustGoDown = true
		cutSpeed = 0.5
		spareChutes = 1

		PARACHUTE
		{
			material = Nylon
			preDeployedDiameter = 1
			deployedDiameter = 8
			minIsPressure = false
			minPressure = 0.1
			minDeployment = 4000
			deploymentAlt = 600
			cutAlt = -1
			preDeploymentSpeed = 2
			deploymentSpeed = 8
			preDeploymentAnimation = PreDeploy
			deploymentAnimation = Deploy
			parachuteName = String
			capName = Pack
		}
	}

	MODULE
	{
		name = ProceduralChute
	}

	EFFECTS
	{
		rcpredeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_open
				volume = 1
			}
		}

		rcdeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_single
				volume = 1
			}
		}

		rccut
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_cut
				volume = 1
			}
		}

		rcrepack
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_repack
				volume = 1
			}
		}
	}
}

2. and this patch:
GameData\zFinal\zzz_RealChuteNoRealChute.cfg

// No FAR: add description
// @PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[ModuleParachute]]:NEEDS[RealChute,!FerramAerospaceResearch]:FINAL
// {
	// +description ^= :^:<color=orange>Not patched for RealChute yet!</color> :
// }

// FAR + no RealChute or RealChuteFAR: add description
// @PART[*]:HAS[!MODULE[RealChuteModule],!MODULE[RealChuteFAR],@MODULE[ModuleParachute]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
// {
	// +description ^= :^:<color=orange>Neither patched for RealChute nor for RealChuteFAR yet!</color> :
// }

// FAR + RealChuteFAR: add description
// @PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[RealChuteFAR],!MODULE[ModuleParachute]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
// {
	// +description ^= :^:<color=orange>Patched for RealChuteFAR, but not for RealChute yet!</color> :
// }


// or just add generic RealChute

// make RealChuteFAR to ModuleParachute again
@PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[RealChuteFAR]]:NEEDS[RealChute,FerramAerospaceResearch]:FINAL
{
	@MODULE[RealChuteFAR]
	{
		@name = ModuleParachute
	}
	
	!EFFECTS {}
}

// just fiddle with the already patched ones
@PART[*]:HAS[@MODULE[RealChuteModule]:HAS[@PARACHUTE[]:HAS[deploymentAlt[<2500]]],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		%mustGoDown = true
		@caseMass = #$/mass$
		@caseMass /= 2.5
		@caseMass ^= :(\.\d\d\d)\d+$:$1:
		@PARACHUTE,*
		{
			@minIsPressure = true
			%minPressure = 0.3
			%deploymentAlt = 2000
		}
	}
}

@PART[*]:HAS[@MODULE[RealChuteModule]:HAS[@PARACHUTE[]:HAS[deploymentAlt[>2499]]],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		%mustGoDown = true
		@PARACHUTE,*
		{
			@minIsPressure = true
			%minPressure = 0.1
			%deploymentAlt = 10000
			%cutAlt = 5000
		}
	}
}

//just fix the wrong patches in GameData\RealChute\ModuleManager\ 
@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	!sound_parachute_open = delete
	!sound_parachute_single = delete
}

// now convert a ModuleParachute to a RealChuteModule
@PART[*]:HAS[!MODULE[RealChuteModule],@MODULE[ModuleDragModifier],@MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	!sound_parachute_open = delete
	!sound_parachute_single = delete
	@cost *= 1.1
	@cost ^= :(\.\d\d)\d+$:$1:

	MODULE
	{
		name = RealChuteModule
		caseMass = #$/mass$
		@caseMass /= 2.5
		@caseMass ^= :(\.\d\d\d)\d+$:$1:
		timer = 0
		mustGoDown = true
		cutSpeed = #$/MODULE[ModuleParachute]/autoCutSpeed$
		spareChutes = 5

		PARACHUTE
		{
			material = Nylon
			preDeployedDiameter = #$/MODULE[ModuleDragModifier]:HAS[#dragCubeName[SEMIDEPLOYED]]/dragModifier$
			@preDeployedDiameter *= 3.1415926535897932384626433832795
			@preDeployedDiameter ^= :(\.\d\d)\d+$:$1:
			deployedDiameter = #$/MODULE[ModuleDragModifier]:HAS[#dragCubeName[DEPLOYED]]/dragModifier$
			@deployedDiameter *= 3.1415926535897932384626433832795
			@deployedDiameter ^= :(\.\d\d)\d+$:$1:
			minIsPressure = true
			minPressure = #$/MODULE[ModuleParachute]/minAirPressureToOpen$
			minDeployment = #$/MODULE[ModuleParachute]/deployAltitude$
			@minDeployment *= 8
			deploymentAlt = #$/MODULE[ModuleParachute]/deployAltitude$
			@deploymentAlt += 300
			cutAlt = -1
			preDeploymentSpeed = 1
			@preDeploymentSpeed /= #$/MODULE[ModuleParachute]/semiDeploymentSpeed$
			@preDeploymentSpeed ^= :(\.\d\d)\d+$:$1:
			deploymentSpeed = 1
			@deploymentSpeed /= #$/MODULE[ModuleParachute]/deploymentSpeed$
			@deploymentSpeed ^= :(\.\d\d)\d+$:$1:
			preDeploymentAnimation = #$/MODULE[ModuleParachute]/semiDeployedAnimation$
			deploymentAnimation = #$/MODULE[ModuleParachute]/fullyDeployedAnimation$
			parachuteName = #$/MODULE[ModuleParachute]/canopyName$
			capName = #$/MODULE[ModuleParachute]/capName$
		}
	}

	MODULE
	{
		name = ProceduralChute
		textureLibrary = StockReplacement
		currentCase = Main
		currentCanopies = Main chute, Drogue chute
		currentTypes = Main, Drogue
	}	

	EFFECTS
	{
		rcpredeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_open
				volume = 1
			}
		}

		rcdeploy
		{
			AUDIO
			{
				channel = Ship
				clip = sound_parachute_single
				volume = 1
			}
		}

		rccut
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_cut
				volume = 1
			}
		}

		rcrepack
		{
			AUDIO
			{
				channel = Ship
				clip = RealChute/Sounds/sound_parachute_repack
				volume = 1
			}
		}
	}	
}

// just assume it's a drogue chute here
@PART[*]:HAS[@MODULE[RealChuteModule],@MODULE[ModuleParachute]:HAS[#deployAltitude[>2499]]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		@PARACHUTE,*
		{
			@material = Kevlar
			@preDeployedDiameter /= 1.5
			@preDeployedDiameter ^= :(\.\d\d)\d+$:$1:
			@deployedDiameter /= 1.5
			@deployedDiameter ^= :(\.\d\d)\d+$:$1:
			@minPressure = 0.1
			@minDeployment = #$/MODULE[ModuleParachute]/deployAltitude$
			@minDeployment *= 6
			@deploymentAlt = #$/MODULE[ModuleParachute]/deployAltitude$
			@deploymentAlt *= 4
			@preDeploymentSpeed *= 2
			@deploymentSpeed *= 2
			%cutAlt = #$/MODULE[ModuleParachute]/deployAltitude$
			@cutAlt *= 2
		}
	}

	@MODULE[ProceduralChute]
	{
		@currentCase = Drogue
		@currentCanopies = Drogue chute, Main chute
		@currentTypes = Drogue, Main
	}	
}

// now finally remove ModuleParachute
@PART[*]:HAS[@MODULE[RealChuteModule],@MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	!MODULE[ModuleParachute]{}
	!MODULE[ModuleDragModifier]{}
	!MODULE[ModuleDragModifier]{}
}

@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute],#attachRules[1,0,0,*]]:NEEDS[RealChute]:FINAL
{
	@MODULE[ProceduralChute]
	{
		%type = Cone
	}	
}

@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute],#attachRules[1,0,1,*]]:NEEDS[RealChute]:FINAL
{
	@MODULE[ProceduralChute]
	{
		%type = Stack
	}	
}

@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute],#attachRules[0,1,0,*]]:NEEDS[RealChute]:FINAL
{
	@MODULE[ProceduralChute]
	{
		%type = Radial
	}	
}

// tinkering with MM bug
@PART[*]:HAS[@MODULE[RealChuteModule],!MODULE[ModuleParachute]]:NEEDS[RealChute]:FINAL
{
	@MODULE[RealChuteModule]
	{
		@PARACHUTE:HAS[#preDeployedDiameter[Infinity]]
		{
			@preDeployedDiameter = 1
		}
	}
}

// I also add these here to avoid them to be overlooked
@CCKExtraFilterConfig:NEEDS[CCK]:FINAL
{
Item
	{
	name = Parachutes
	tag = cck-chutes
	normalIcon = Squad/PartList/SimpleIcons/R&D_node_icon_survivability
	}
}

@PART[*]:HAS[@MODULE[RealChuteModule]]:NEEDS[RealChute,CCK]:FINAL
{
	@category = Utility
	@tags = #$tags$ cck-chutes
	&tags = cck-chutes
}

@PART[*]:HAS[@MODULE[ModuleParachute],!MODULE[ModuleCommand]]:NEEDS[CCK]:FINAL
{
	@category = Utility
	@tags = #$tags$ cck-chutes
	&tags = cck-chutes
}

As I said above, it worked in KSP 1.4.3, but now I get these:

NullReferenceException: Object reference not set to an instance of an object
  at RealChute.ProceduralChute.Update () [0x00000] in <filename unknown>:0 

^a good amount of them.

Using Sounding Rockets.

Full log and stuff:
https://www.dropbox.com/s/cg0xubrxfieaaoo/2018-09-20_1 KSP.log and stuff.7z?dl=1

Link to comment
Share on other sites

@Gordon Dry Your configs are lacking necessary data. Look at the log: It starts when you added SR.Nosecone.35 (config part name is SR_Nosecone_35)

Part SR_Nosecone_35 is lacking a textureLibrary field for ProceduralChute

That is the cause of your errors

(it's also lacking a currentCanopies field but I'm not sure that would cause issues or not. Missing texureLibrary WILL for sure. Guaranteed)

Link to comment
Share on other sites

  • 3 weeks later...

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