Jump to content

Firespitter propeller plane and helicopter parts v7.1 (May 5th) for KSP 1.0


Snjo

Recommended Posts

Could somebody give me a hand please. I'm trying to incorporate the texture/fuel switcher into the Tac Life support parts to reduce the part count. This is what I have currently:

	MODULE
{
name = FStextureSwitch2
textureRootFolder = ThunderAerospace/TacLifeSupportContainers/
textureNames = FoodTexture;OxygenTexture;WasteTexture;WaterTexture;Texture
objectNames = TacContainer
textureDisplayNames = Food;Oxygen;Waste;Water;Life Support
useFuelSwitchModule = true
fuelTankSetups = 0;1;2;3;4
}

MODULE
{
name = FSfuelSwitch
resourceNames = Food;Oxygen;CarbonDioxide,WasteWater,Waste;Water;Food,Water,Oxygen
resourceAmounts = 240;53072.3;18800.1,180.9,19.5;240;113.2,74.8,11466.9
tankCost = 57.4;3;0;0.2;27.8
hasGUI = false
}

The switcher seems to function properly in that the fuels are changed, but the texture of the container doesn't seem to change. What am I doing wrong?

Link to comment
Share on other sites

Could somebody give me a hand please. I'm trying to incorporate the texture/fuel switcher into the Tac Life support parts to reduce the part count. This is what I have currently:

    MODULE
{
name = FStextureSwitch2
textureRootFolder = ThunderAerospace/TacLifeSupportContainers/
textureNames = FoodTexture;OxygenTexture;WasteTexture;WaterTexture;Texture
objectNames = TacContainer
textureDisplayNames = Food;Oxygen;Waste;Water;Life Support
useFuelSwitchModule = true
fuelTankSetups = 0;1;2;3;4
}

MODULE
{
name = FSfuelSwitch
resourceNames = Food;Oxygen;CarbonDioxide,WasteWater,Waste;Water;Food,Water,Oxygen
resourceAmounts = 240;53072.3;18800.1,180.9,19.5;240;113.2,74.8,11466.9
tankCost = 57.4;3;0;0.2;27.8
hasGUI = false
}

The switcher seems to function properly in that the fuels are changed, but the texture of the container doesn't seem to change. What am I doing wrong?

You've had better luck than me, that's for sure. I've been trying to add Karbonite to various B9 parts (actually have a MM config for all the S2 parts, adding in Karbonite and Atmosphere Intake for all relevant parts, modified descriptions, costs, weight, and all...322 lines so far and that's just the S2 parts and a few Mk2's), but the problem I'm having is it crashes on load because I need up update the firespitter sources to include Karbonite as an actual resource defined in the FS dll. Atm Intake is covered with either Karbonite or ORS (not really sure, haven't checked; works on other parts that I'm MM'd Atm Intake into), but Karbonite causes a crash on launch because it isn't a defined resource in the FS dll.

You problem could be because Life Support might need to be LifeSupport (line 6)

and line 5 might need something more than just Texture for the texture name...perhaps LSTexutre as a suggestion (for Life Support)

https://github.com/snjo/Firespitter/blob/master/Firespitter/customization/FSfuelSwitch.cs (link to part of sources needed to add in resources...for fuels)

lines 9-26 need to be modified for more resources

followed by lines 246 to 280 to make them able to be toggled

@SNJO

Would it be possible to move resources from the DLL to a config file...or add in the ability to add more resources with a config file. I'm sorry, my coding skills are mediocre at best..adding in something is easy, moving all resources to a config file is beyond my skill set (especially since I'm most specialized in bash scripts and very basic java...working on learning java actually)

And I've actually done the necessary source changes to add Karbonite support for Firespitter, only I don't have a build environment to actually compile and test it (working on it, gotta work on freeing up some HDD space to hold all of Unity and Visual Studio). If anybody could use the below and compile it for me I'd really appreciate it...if not, give me a few days and I should have it done myself.

What I've done to FSfuelSwitch.cs (sorry, on Windows...If I was on my linux box I'd either post a diff or link to a fork and commit on github)

using System.Collections.Generic;using System.Text;
using UnityEngine;


namespace Firespitter.customization
{
public class FSfuelSwitch : PartModule, IPartCostModifier
{
[KSPField]
public string resourceNames = "ElectricCharge;LiquidFuel,Oxidizer;MonoPropellant;Karbonite";
[KSPField]
public string resourceAmounts = "100;75,25;200;100";
[KSPField]
public float basePartMass = 0.25f;
[KSPField]
public string tankMass = "0;0;0;0;0";
[KSPField]
public string tankCost = "0; 0; 0; 0; 0";
[KSPField]
public bool displayCurrentTankCost = false;
[KSPField]
public bool hasGUI = true;
[KSPField]
public bool availableInFlight = false;
[KSPField]
public bool availableInEditor = true;



[KSPField(isPersistant = true)]
public Vector4 currentAmounts = Vector4.zero;
[KSPField(isPersistant = true)]
public int selectedTankSetup = 0;
[KSPField(isPersistant = true)]
public bool hasLaunched = false;
[KSPField]
public bool showInfo = true; // if false, does not feed info to the part list pop up info menu


[KSPField(guiActive = false, guiActiveEditor = false, guiName = "Added cost")]
public float addedCost = 0f;
[KSPField(guiActive = false, guiActiveEditor = true, guiName = "Dry mass")]
public float dryMassInfo = 0f;
private List<FSmodularTank> tankList = new List<FSmodularTank>();
private List<float> weightList = new List<float>();
private List<float> tankCostList = new List<float>();
private bool initialized = false;
[KSPField (isPersistant = true)]
private bool brandNewPart = true;


UIPartActionWindow tweakableUI;


public override void OnStart(PartModule.StartState state)
{
initializeData();
assignResourcesToPart(false);
brandNewPart = false;
}


private void initializeData()
{
if (!initialized)
{
setupTankList(false);
weightList = Tools.parseFloats(tankMass);
tankCostList = Tools.parseFloats(tankCost);
if (HighLogic.LoadedSceneIsFlight) hasLaunched = true;
if (hasGUI)
{
Events["nextTankSetupEvent"].guiActive = availableInFlight;
Events["nextTankSetupEvent"].guiActiveEditor = availableInEditor;
}
else
{
Events["nextTankSetupEvent"].guiActive = false;
Events["nextTankSetupEvent"].guiActiveEditor = false;
}


if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
{
Fields["addedCost"].guiActiveEditor = displayCurrentTankCost;
}


initialized = true;
}
}


[KSPEvent(guiActive = true, guiActiveEditor = true, guiName = "Next tank setup")]
public void nextTankSetupEvent()
{
selectedTankSetup++;
if (selectedTankSetup >= tankList.Count)
{
selectedTankSetup = 0;
}
if (HighLogic.LoadedSceneIsFlight)
{
currentAmounts = Vector4.zero;
}
assignResourcesToPart(true);
}


public void selectTankSetup(int i, bool calledByPlayer)
{
initializeData();
selectedTankSetup = i;
assignResourcesToPart(calledByPlayer);
}


private void assignResourcesToPart(bool calledByPlayer)
{
// destroying a resource messes up the gui in editor, but not in flight.
setupTankInPart(part, calledByPlayer);
if (HighLogic.LoadedSceneIsEditor)
{
for (int s = 0; s < part.symmetryCounterparts.Count; s++)
{
setupTankInPart(part.symmetryCounterparts[s], calledByPlayer);
FSfuelSwitch symSwitch = part.symmetryCounterparts[s].GetComponent<FSfuelSwitch>();
if (symSwitch != null)
{
symSwitch.selectedTankSetup = selectedTankSetup;
}
}
}


//Debug.Log("refreshing UI");


if (tweakableUI == null)
{
tweakableUI = Tools.FindActionWindow(part);
}
if (tweakableUI != null)
{
tweakableUI.displayDirty = true;
}
else
{
Debug.Log("no UI to refresh");
}
}


private void setupTankInPart(Part currentPart, bool calledByPlayer)
{
currentPart.Resources.list.Clear();
PartResource[] partResources = currentPart.GetComponents<PartResource>();
for (int i = 0; i < partResources.Length; i++)
{
DestroyImmediate(partResources[i]);
}


for (int tankCount = 0; tankCount < tankList.Count; tankCount++)
{
if (selectedTankSetup == tankCount)
{
for (int resourceCount = 0; resourceCount < tankList[tankCount].resources.Count; resourceCount++)
{
if (tankList[tankCount].resources[resourceCount].name != "Structural")
{
//Debug.Log("new node: " + tankList[i].resources[j].name);
ConfigNode newResourceNode = new ConfigNode("RESOURCE");
newResourceNode.AddValue("name", tankList[tankCount].resources[resourceCount].name);
if (calledByPlayer || brandNewPart)
{
newResourceNode.AddValue("amount", tankList[tankCount].resources[resourceCount].maxAmount);
setResource(resourceCount, tankList[tankCount].resources[resourceCount].amount);
}
else
{
newResourceNode.AddValue("amount", getResource(resourceCount));
}
newResourceNode.AddValue("maxAmount", tankList[tankCount].resources[resourceCount].maxAmount);


//Debug.Log("add node to part");
currentPart.AddResource(newResourceNode);
}
else
{
//Debug.Log("Skipping structural fuel type");
}
}
}
}
currentPart.Resources.UpdateList();
updateWeight(currentPart, selectedTankSetup);
updateCost();
}


private float updateCost()
{
if (selectedTankSetup < tankCostList.Count)
{
addedCost = tankCostList[selectedTankSetup];
}
else
{
addedCost = 0f;
}
//GameEvents.onEditorShipModified.Fire(EditorLogic.fetch.ship); //crashes game
return addedCost;
}


private void updateWeight(Part currentPart, int newTankSetup)
{
if (newTankSetup < weightList.Count)
{
currentPart.mass = basePartMass + weightList[newTankSetup];
}
}


public override void OnUpdate()
{
updateResourcePersistence();



}


private void updateResourcePersistence()
{
if (selectedTankSetup < tankList.Count)
{
if (tankList[selectedTankSetup] != null)
{
for (int i = 0; i < tankList[selectedTankSetup].resources.Count; i++)
{
if (tankList[selectedTankSetup].resources[i].name == "Structural")
{


}
else
{
setResource(i, (float)part.Resources[tankList[selectedTankSetup].resources[i].name].amount);
}
}
}
}
}


public void Update()
{
if (HighLogic.LoadedSceneIsEditor)
{
dryMassInfo = part.mass;
updateResourcePersistence();
}
}


private float getResource(int number)
{
switch (number)
{
case 0:
return currentAmounts.x;
case 1:
return currentAmounts.y;
case 2:
return currentAmounts.z;
case 3:
return currentAmounts.w;
case 4:
return currentAmounts.v;
default:
return 0f;
}
}


private void setResource(int number, float amount)
{
switch (number)
{
case 0:
currentAmounts.x = amount;
break;
case 1:
currentAmounts.y = amount;
break;
case 2:
currentAmounts.z = amount;
break;
case 3:
currentAmounts.w = amount;
break;
case 4:
currentAmounts.v = amount;
break;
}
}


private void setupTankList(bool calledByPlayer)
{
tankList.Clear();


// First find the amounts each tank type is filled with


List<List<float>> resourceList = new List<List<float>>();
string[] resourceTankArray = resourceAmounts.Split(';');
for (int tankCount = 0; tankCount < resourceTankArray.Length; tankCount++)
{
resourceList.Add(new List<float>());
string[] resourceAmountArray = resourceTankArray[tankCount].Split(',');
for (int amountCount = 0; amountCount < resourceAmountArray.Length; amountCount++)
{
try
{
resourceList[tankCount].Add(float.Parse(resourceAmountArray[amountCount]));
}
catch
{
Debug.Log("FSfuelSwitch: error parsing resource amount " + tankCount + "/" +amountCount + ": " + resourceTankArray[amountCount]);
}
}
}


// Then find the kinds of resources each tank holds, and fill them with the amounts found previously, or the amount hey held last (values kept in save persistence/craft)


string[] tankArray = resourceNames.Split(';');
for (int tankCount = 0; tankCount < tankArray.Length; tankCount++)
{
FSmodularTank newTank = new FSmodularTank();
tankList.Add(newTank);
string[] resourceNameArray = tankArray[tankCount].Split(',');
for (int nameCount = 0; nameCount < resourceNameArray.Length; nameCount++)
{
engine.FSresource newResource = new engine.FSresource(resourceNameArray[nameCount].Trim(' '));
if (resourceList[tankCount] != null)
{
if (nameCount < resourceList[tankCount].Count)
{
newResource.maxAmount = resourceList[tankCount][nameCount];
if (calledByPlayer)
{
newResource.amount = resourceList[tankCount][nameCount];
}
else
{
newResource.amount = getResource(nameCount);
}
}
}
newTank.resources.Add(newResource);
}
}
}


public float GetModuleCost()
{
return updateCost();
}


public override string GetInfo()
{
if (showInfo)
{
List<string> resourceList = Tools.parseNames(resourceNames);
StringBuilder info = new StringBuilder();
info.AppendLine("Fuel tank setups available:");
for (int i = 0; i < resourceList.Count; i++)
{
info.AppendLine(resourceList[i].Replace(",", ", "));
}
return info.ToString();
}
else
return string.Empty;
}
}
}


Not sure what's up the the "Case 4" parts having bad formatting...looks just fine in Notepad++ and inside the code brackets before posting...and then they look just fine on the 2nd preview...weird...

Link to comment
Share on other sites

None of the resources are defined in the dll, what you are seeing are just sample values that get used if nothing else is put in the cfg. There is no reason ElectricCharge would work any better than Kethane or Karbonite, IF they are defined in the resource cfgs.

Link to comment
Share on other sites

None of the resources are defined in the dll, what you are seeing are just sample values that get used if nothing else is put in the cfg. There is no reason ElectricCharge would work any better than Kethane or Karbonite, IF they are defined in the resource cfgs.

Hmm. Now I feel like I over thought it. I've found the files and see exactly what you mean. Thanks.

I can easily add Karbonite to regular parts, but any part with FSFuelSwitcher crashes upon loading when Karbonite either replaces a different fuel or is added as a new option; hence my above suggestion. Perhaps I need to read a bit more on setting up Module Manager configs. The only reason I thought what I mentioned above was necessary is because I took a stock B9 part, changed relevant LiquidFuel parts to Karbonite (everything sans texture..used LiquidFuel's because the best I can do with image editing is a meme pic :kiss:), and it crashed upon loading B9 (no Mod Manager; part cfg edit). Reverted that, tried with MM, same results when loading the MM config...I know it'll probably be something stupid that I overlooked since, technically, it should work.

I don't wanna post what all I've done yet...not that I don't want the help, but one really doesn't learn all that much if someone else points out what needs to be done...plus I want to figure it out on my own for a sense of accomplishment. Thanks again.

Link to comment
Share on other sites

Hmm. Now I feel like I over thought it. I've found the files and see exactly what you mean. Thanks.

I can easily add Karbonite to regular parts, but any part with FSFuelSwitcher crashes upon loading when Karbonite either replaces a different fuel or is added as a new option; hence my above suggestion. Perhaps I need to read a bit more on setting up Module Manager configs. The only reason I thought what I mentioned above was necessary is because I took a stock B9 part, changed relevant LiquidFuel parts to Karbonite (everything sans texture..used LiquidFuel's because the best I can do with image editing is a meme pic :kiss:), and it crashed upon loading B9 (no Mod Manager; part cfg edit). Reverted that, tried with MM, same results when loading the MM config...I know it'll probably be something stupid that I overlooked since, technically, it should work.

I don't wanna post what all I've done yet...not that I don't want the help, but one really doesn't learn all that much if someone else points out what needs to be done...plus I want to figure it out on my own for a sense of accomplishment. Thanks again.

Someone said something about resources with GUI tweakability turned off in their cfgs bugging out a while back, that might cause some issued if your resource acts up.

Link to comment
Share on other sites

is there a fix for KSPI + engines using FSpropellerSpinner = engines launch in the activated state? it's happening with B9; Karbonite; and my RF engines.

Doesn't it happen for all engines now?

You mean the fact that is starts at 50% throttle, right? Or are they staged from the get go, where they weren't before?

Link to comment
Share on other sites

non-FSpropellerSpinner engines start with throttle at 50%, but not running at launch. engines with FSpropellerSpinner (can't say for FSengine module, I believe B9 engines use ModuleEngineFX) , like B9 turbofans, Karbonite turbofans, and my propeller engines, start with throttle at 50%, and running at launch; so the vessel is under propulsion as soon as it is loaded on the launchpad or runway.. Though not considered staged by KSP, if you press space bar, the staging sound will play.

This only happens when KSPI is installed along with Firespitter. presumably KSPI Experimental, since KSPI isn't compatible with 24.x

Edited by nli2work
Link to comment
Share on other sites

Someone said something about resources with GUI tweakability turned off in their cfgs bugging out a while back, that might cause some issued if your resource acts up.

I overlooked the simplest thing...64bit vs 32bit. I've been launching with a shortcut on my desktop that points to my modded KSP folder's 64bit executable...changed to 32bit and all the B9 S2 parts had user selectable Karbonite and the intake parts have both intake atmosphere (a Karbonite resource) and air intake (stock resource) at the same time...really shouldn't matter, but I'm gonna make that user selectable and post something in the B9 and Karbonite threads. Got busy with work, didn't play for a month, updated stuff, saw an issue I had with mods needing stuff from other mods, learned a bit of MM, tested, didn't work, went all out...didn't check the executable I was using...sigh and embarrassment and yet glad it works...

Thanks for all the help.

Link to comment
Share on other sites

non-FSpropellerSpinner engines start with throttle at 50%, but not running at launch. engines with FSpropellerSpinner (can't say for FSengine module, I believe B9 engines use ModuleEngineFX) , like B9 turbofans, Karbonite turbofans, and my propeller engines, start with throttle at 50%, and running at launch; so the vessel is under propulsion as soon as it is loaded on the launchpad or runway.. Though not considered staged by KSP, if you press space bar, the staging sound will play.

This only happens when KSPI is installed along with Firespitter. presumably KSPI Experimental, since KSPI isn't compatible with 24.x

I'm having the same issue with Karbonite and B9 engines like that...using KSPI E too. Though I haven't updated any of the plugins I use, except Mod Manager, since the 5th. Sometimes you just want to enjoy playing the game and don't want to break your save game updating mods every other day. Gonna update them all after work today, start fresh, and I'll chime back in if that helps any. (also was hoping .25 would be released).

Not really a deal breaker, but it sucks because my "cheat" engine was based on the Karbonite turbofan jet engine. What? I wanted an engine that looked Star Treky and can run for a long time on a single barrel. 3500 thrust and 42000 isp only gives a few minutes of time with a plethora of S2 modified Karbonite parts and 2 engines anyways...gonna up the isp to 420000 and modify the rapier into a Karbonite "cheat" engine as work-around...The way I figure it, if all the tech is unlocked, logically thinking, IRL that would take some time, during that time fuel efficiency should improve, so by the time there's able to be a Captain Jeb T. Kerb using antimatter warp drives, there should be an engine with cheat level specs when compared to what Jeb Armstrong was using.

Actually, that makes me think a good mod would be to enhance everything in the tech tree as newer and better parts are unlocked. Multi generation engines, increased tire grip, decreased weight as newer build materials are discovered (land on minmus, take soil sample, discover new element or compound, wings/body are now a bit lighter), etc. Has anyone made a mod like that? For example, 1st gen engine would be stock, 2nd gen could add alternate fuels, 3rd gen could increase isp or thrust, 4th gen increases vectoring range, etc. It could make science feel like less of a grind when, for example, you take an air sample of Eeloo and discover Tri-Karbonite and Di-Oxidizer which leads to better efficiency engines.

Link to comment
Share on other sites

Found a minor display bug with FSfuelSwitcher, when switching back to empty ("Structural") fuselage, the VAB/SPH craft total cost (in bottom left) fails to update immediately.

I didn't see anything like it on the github issue tracker, apologies if known issue and I missed it or something.

To reproduce:

- In sandbox mode, start a new craft in SPH/VAB.

- place one Oblong Multi Tank as the first part. Editor total cost should reflect 250

- either switch to next tank (fuel) or previous tank (battery) -- Editor total cost will change accordingly (280 or 370) instantly.

- switch back to the empty structural tank. Editor total cost fails to update. However, we can tell that the part cost actually changed, because:

-- if you have the newest KER 1.0.9, the KER mouseover info reflects the new cost instantly

-- if you slap another Oblong Multi Tank onto the first one, the Editor total cost will correctly change to 2*250 = 500

This is not due to decreasing vs increasing cost, as switching from battery->rocket->fuel will be reflected correctly immediately 370->330->280

Link to comment
Share on other sites

Found a work around

If I cycle through the vtol angles in the vab/sph, then detach & rotate the part to the right orientation again, and re-attach, the part works as intended at launch. weird stuff.

ideas?

Original

Hi all,

Regarding the FSVTOLrotator module, and a custom part.

I am having difficulty setting up the part axis and having it rotate & display properly in game vs sph/vab. Is there a way to change the axis of rotation for this module? Or is there a better way of setting the part up in unity that I am missing?

When in the vab/sph, the part appears to be placed correctly. Once I launch, the part rotates 90 degrees out of place.

I appreciate any and all help on this, Thanks!

FSvtol

mods in use:

firespitter, toolbar, ThrottleControlledAvionics, MM, DavonTCsystemsMod, BDAnimationModule and the following by diazo: extended action grps, RCSLandAid, TWR1

My part cfg so far


PART
{
// --- general parameters ---
name = ep_1
module = Part
author = TTDesProd

// --- asset parameters ---
mesh = ep_1.mu
rescaleFactor = 1

// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,1,1,1,0


// --- editor parameters ---
TechRequired = start
entryCost = 0
cost = 3600
category = Pods
subcategory = 0
title = Engine Pod
manufacturer = TTDesProd
description = Getting places slowly

// --- standard part parameters ---
mass = 15.321
dragModelType = default
maximum_drag = 0.2
minimum_drag = 0.15
angularDrag = 2
crashTolerance = 100
breakingForce = 5000
breakingTorque = 5000
maxTemp = 3400

// --- node definitions ---
// x y z x y z
node_stack_attach = 0.0246, 1.267498, -0.102023, 0.0, 0.0, -1.0, 1


MODULE
{
name = FSanimateGeneric
animationName = gear_deploy
startEventGUIName = Open Gear Bay Doors
endEventGUIName = Close Gear Bay Doors
startDeployed = True
startDeployedString = Start Deployed?
availableInEVA = True
availableInVessel = True
EVArange = 5
layer = 1
useActionEditorPopup = True
moduleID = 0
playAnimationOnEditorSpawn = True
}

//Engine

MODULE
{
name = ModuleAnimateHeat
ThermalAnim = heat_2
}

// --- FX definitions ---

fx_exhaustFlame_blue_small = 0.0, 0, 0.0, 0.0, 1.0, 0.0, running
fx_exhaustLight_blue = 0.0, 0, 0.0, 0.0, 0.0, 1.0, power
fx_smokeTrail_light = 0.0, 0, 0.0, 0.0, 1.0, 0.0, running
fx_exhaustSparks_flameout = 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, flameout

// --- Sound FX definition ---

sound_vent_medium = engage
sound_rocket_hard = running
sound_vent_soft = disengage
sound_explosion_low = flameout

//engine stuff

MODULE
{
name = ModuleEngines
thrustVectorTransformName = thrust
exhaustDamage = True
ignitionThreshold = 0.1
minThrust = 0
maxThrust = 1000
heatProduction = 800
fxOffset = 0, 0, 0.0
PROPELLANT
{
name = LiquidFuel
ratio = 0.9
DrawGauge = True
}
PROPELLANT
{
name = Oxidizer
ratio = 1.1
}
atmosphereCurve
{
key = 0 390
key = 1 270
}

}

MODULE
{
name = ModuleGimbal
gimbalTransformName = thrust
gimbalRange = 2.5
}

//prop spinning
MODULE
{
name = FSplanePropellerSpinner
// the gameObject to Spin around its forwards axis. Can be a parent to other sub objects.
propellerName = intake_1
// the propeller rotation speed in RPMs when the engine is ignited, independent of throttle. Positive or negative values can be used. Use 0 for a wholly throttle controlled rotation.
rotationSpeed = 20
// the propeller rotation speed in RPMS that are added to the rotationSpeed according to the final thrust of the engine. i.e., higher throttle makes spinny thing go fast.
thrustRPM = 70
// Normalized value to spin the propeller if the engine is shut down/flamed out, but moving fast. If the craft is moving beyond windMillAirSpeed, the engine will spin at the speed you
//would expect in a running engine * windMillRPM. This means a purely thrustRPMcontrolled
//engine will not windmill.
windmillRPM = 0.1
// If the craft is moving beyond this speed, and atmospheric density is above 0.1, the windmilling will start. It currently does not scale with speed above the minimum threshold.
windmillMinAirspeed = 20.0
// divide engineResponseSpeed by this amount for dramatic effect. Slows the spin up time of the propeller
spinUpTime = 1
// //The rotor disc swap, when enabled, will swap out the blades for a slowly spinning blurrydisc graphic when the engine is spinning at top speed.
// whether the blade/disc swap at high RPMs is used
useRotorDiscSwap = 0
}
MODULE
{
name = FSplanePropellerSpinner
// the gameObject to Spin around its forwards axis. Can be a parent to other sub objects.
propellerName = intake_2
// the propeller rotation speed in RPMs when the engine is ignited, independent of throttle. Positive or negative values can be used. Use 0 for a wholly throttle controlled rotation.
rotationSpeed = 20
// the propeller rotation speed in RPMS that are added to the rotationSpeed according to the final thrust of the engine. i.e., higher throttle makes spinny thing go fast.
thrustRPM = 70
// Normalized value to spin the propeller if the engine is shut down/flamed out, but moving fast. If the craft is moving beyond windMillAirSpeed, the engine will spin at the speed you
//would expect in a running engine * windMillRPM. This means a purely thrustRPMcontrolled
//engine will not windmill.
windmillRPM = 0.1
// If the craft is moving beyond this speed, and atmospheric density is above 0.1, the windmilling will start. It currently does not scale with speed above the minimum threshold.
windmillMinAirspeed = 20.0
// divide engineResponseSpeed by this amount for dramatic effect. Slows the spin up time of the propeller
spinUpTime = 1
// //The rotor disc swap, when enabled, will swap out the blades for a slowly spinning blurrydisc graphic when the engine is spinning at top speed.
// whether the blade/disc swap at high RPMs is used
useRotorDiscSwap = 0
}
MODULE
{
name = FSVTOLrotator
deployedAngle = 90 //the starting max value
maxDownAngle = -90 // Allowed rotation below the default parked state
stepAngle = 10 // How much each action group button press will rotate the engine
targetPartObject = rotate
availableAngles1 = 90, 130, 45 //max three values, use 0 to skip the value and shorten the list. The first value is the default, so smaller than default values should be the final numbers.
availableAngles2 = 0, 0, 0 // more angles, for a max of 6
invertYaw = True
}

MODULE
{
name = FSengineMenuCleaner
}
MODULE
{
name = FSpropellerAtmosphericNerf
disableAtmosphericNerf = true
}
}

Edited by somewhatcasual
Problem with image displaying
Link to comment
Share on other sites

It should be as simple as copying the surface attach node and replacing the name of it with node_stack_bottom = (or node_stack_top = ) since the coordinates should be the same.

I just tried this fix you mentioned a while back... but the problem is there is no node_attach, and the node_stack looks like this...

PART

...

name = FScopterRotorMainElectric

...

node_stack_top = 0.0, 0.0, 0.0, 0.0, 0.0, 1.0

...

attachRules = 1,1,1,1,1

...

}

I guess I could just mess with it a bit until I get a node in the correct spot. But if you happen to have this info handy that would be swell. Also I notice the rotor provides max lift even with the blades retracted. is this a bug, or a limitation of the mod? Amd a second question... it seems to me mechjeb has no idea how to fly a helicopter... is this true? or do I need to fix my setup somehow?

Edited by Bit Fiddler
Link to comment
Share on other sites

I found a bug on the landings gears : the 'disable dynamic steering' option is not saved.

On a fresh linux install, with only firespitter : create a plane with a landing gear (tail gear in my case), enable steering and disabled dynamic, save, reload (or launch), and then the steering is enabled but with dynamic still activated.

Anyway, thanks for this great mod! :)

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