Jump to content

Tahvohck

Members
  • Posts

    80
  • Joined

  • Last visited

Posts posted by Tahvohck

  1. @king of nowhere @Basilicofresco Here's a Module Manager patch that makes the RDU and TV configurable modules instead of permanent upgrades. Thanks for helping me track down what was going on by posting years ago :D

    Spoiler
    @PARTUPGRADE[Upgrade-*RDU|Upgrade-TV]:HAS[#cost,!entryCost]:NEEDS[Kerbalism]:FINAL
    {
    	%entryCost = #$cost$
    	-cost = 0
    }
    
    @PART[*]:HAS[@MODULE[Sickbay]]:NEEDS[Kerbalism]:FINAL
    {
    	MODULE
    	{
    		name = Configure
    		title = Sickbay Modules
    		slots = 1
    		SETUP
    		{
    			name = None
    			desc = Empty slot for mass and cost savings.
    		}
    		SETUP
    		{
    			name = Tranquilizing Vortex
    			cost = #$@PARTUPGRADE[Upgrade-TV]/entryCost$
    			@cost /= 10
    			mass = 0.1
    			tech = #$@PARTUPGRADE[Upgrade-TV]/techRequired$
    			desc = A tranquilizing vortex (TV) uses low quality distraction to put the crew into a state of apathy. It also relieves some of the stress, effects on dumbness are said to be hearsay.
    			MODULE
    			{
    				type = Sickbay
    				id_field = resource
    				id_value = _SickbayTV
    			}
    		}
    		SETUP
    		{
    			name = Radiation Detoxication Unit
    			tech = #$@PARTUPGRADE[Upgrade-HitchhikerRDU]/techRequired$
    			cost = #$@PARTUPGRADE[Upgrade-HitchhikerRDU]/entryCost$
    			@cost /= 10
    			mass = .75
    			desc = The Radiation Detoxication Unit (RDU) uses <b>EC</b> and <b>Oxygen</b> to reduce the effects of radiation poisoning.
    			MODULE
    			{
    				type = Sickbay
    				id_field = resource
    				id_value = _SickbayRDU
    			}
    		}
    	}
    	
    	@MODULE[Sickbay]:HAS[#resource[_SickbayTV]]
    	{
    		%slots = #$UPGRADES/UPGRADE/slots$
    		%cureEverybody = #$UPGRADES/UPGRADE/cureEverybody$
    		sickbay_id = kerbalism_TV
    		-UPGRADES {}
    	}
    	
    	@MODULE[Sickbay]:HAS[#resource[_SickbayRDU]]
    	{
    		%slots = #$UPGRADES/UPGRADE/slots$
    		sickbay_id = kerbalism_RDU
    		-UPGRADES {}
    	}
    }

     

  2. The X and Z axis for rotation seem to be flipped in the UI. This can be seen most readily in absolute position mode with a large angle. Pressing +/- on one actually rotates the other. You can also see the effect by leaving the window open but using the stock rotation tool. 

    As you can see here, the rail is rotated around the red axis (X) but the 10 degree rotation is listed in the blue (Z) field.
    image.png

    Rotating it further back causes additional rotation in the Z box.
    image.png

  3. How long are inflatable parts supposed to take to inflate? For me they inflate to about 50% and then slow down drastically. I have kerbalism installed, which I know isn't explicitly supported, but it's not like nitrogen or oxygen or ANY resource are being consumed during the inflation that might be starving it of the ability to inflate. What's weird is that transferring crew back and forth temporarily boosts the speed back up.

    Edit: nevermind, it wasn't immediately clear, but it is because of kerbalism. On the ground it was harder to see, but in space it's clear to see it's consuming Atmosphere to inflate the part. It powers through some of the excess Atmosphere and then it's limited by the combined power of my pressure control modules.

  4. Sensible Screenshot is breaking  when I try to use dates or the save name in the screenshot. NullRef on both of them.
    Let me know if providing a modlist or more of the log file would help, but it seems to me that it's going to be isolated code if it's failing the DateTime of all things.

    [LOG 03:29:06.042] SCREENSHOT!!
    [EXC 03:29:06.366] NullReferenceException: Object reference not set to an instance of an object
    	MagiCore.StringTranslation.ReplaceStandardTokens (System.String sourceString) (at <4ba817917bf941048de4cb8d3f2b666f>:0)
    	MagiCore.StringTranslation.AddFormatInfo (System.String original, System.String caller, System.String DateString, System.Collections.Generic.Dictionary`2[TKey,TValue] extraVariables) (at <4ba817917bf941048de4cb8d3f2b666f>:0)
    	SensibleScreenshot.SensibleScreenshot.GetFileName () (at <bdd87ade0549468dbcdd2abb58e04d28>:0)
    	SensibleScreenshot.SensibleScreenshot.DoWork () (at <bdd87ade0549468dbcdd2abb58e04d28>:0)
    	SensibleScreenshot.SensibleScreenshot.Update () (at <bdd87ade0549468dbcdd2abb58e04d28>:0)
    	UnityEngine.DebugLogHandler:LogException(Exception, Object)
    	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
    	UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)

    Config code just in case:
     

    DateString = yyyyMMdd-HH.mm.ss
    FileNameTemplate = [body]_[version]_[date]
    ConvertToJPG = False
    JPGQuality = 75
    KeepOrigPNG = False
    FillSpaces = True
    ReplaceChar = _

    And just to be sure, I did check that that format is compatible with the DateTime.ToString() method:
     

    C:\
    > [DateTime]::Now.ToString("yyyyMMdd-HH.mm.ss")
    20230702-20.56.11

     

  5. I think that will work perfectly, thanks.

    EDIT: Okay, that was a pain, I'm apparently really rusty with module manager patches; had to debug with the dump command... Here's a patch for Modular Fuel Tanks that gets rid of an issue they have where one of their files has duplicate entries for... everything, as far as I can tell. This is most obvious when you're using CryoTanks, since it would give it two switcher dialogues.

    @PART[*]:HAS[@MODULE[ModuleFuelTanks]]:AFTER[modularFuelTanks] {
        @MODULE[ModuleFuelTanks],* {
    		%FlagForDeletion = yes
    	}
    }
    
    @PART[*]:HAS[@MODULE[ModuleFuelTanks]]:AFTER[modularFuelTanks] {
        @MODULE[ModuleFuelTanks],0 {
    		%FlagForDeletion = no
    	}
    }
    
    @PART[*]:HAS[@MODULE[ModuleFuelTanks]]:AFTER[modularFuelTanks] {
        -MODULE[ModuleFuelTanks]:HAS[#FlagForDeletion[yes]],* {}
    }
    
    @PART[*]:HAS[@MODULE[ModuleFuelTanks]]:AFTER[modularFuelTanks] {
        @MODULE[ModuleFuelTanks] {
    		-FlagForDeletion = delete
    	}
    }

     

    1. Can someone PLEASE collate the information in this thread and update the wiki? It's so out of date it's not even funny.
    2. Is there any syntax that can match "has this node this many times"? I'm trying to write a patch that deletes nodes that have been double-applied and being able to say @Part:HAS[Node:count>2] { -Node,1 } instead of having to list every part with a duplicate node would be really helpful.
  6. @cakepie hasn't posted on the forum in four years (almost to the date, actually), though they did interact about a year ago. HOPEFULLY this ping gets their attention.

    The license for this mod is, unfortunately, a pain in the ass for modification. Even if I was willing to maintain it that would put me off. With that said, you can get this to compile pretty easily against 1.12/ModuleManager 4.2.2 with the following setup:

    .NET version: 4.8
    
    References:
    Assembly-CSharp.dll
    UnityEngine.CoreModule.dll
    UnityEngine.InputLegacyModule.dll
    UnityEngine.PhysicsModule.dll
    UnityEngine.Te3xtRenderingModule.dll
    UnityEngine.UI.dll
    
    0Harmony.dll
    ModuleManager.4.2.2.dll
    
    CLSInterfaces.dll
    ConnectedLivingSpace.dll

    You'll need to make the following change to the source files to use the MM-distributed Harmony:

    diff --git a/Source/HarmonyPatches.cs b/Source/HarmonyPatches.cs
    index 163ecb3..d54befc 100644
    --- a/Source/HarmonyPatches.cs
    +++ b/Source/HarmonyPatches.cs
    @@ -4,7 +4,7 @@
     using System.Reflection;
     using UnityEngine;
     using KSP.UI.Screens.Flight.Dialogs;
    -using Harmony;
    +using HarmonyLib;
    
     namespace AirlockPlus.Harmony
     {
    @@ -18,9 +18,9 @@ public sealed class Patcher : MonoBehaviour
                 // If Harmony dependency is missing, AddonLoader will barf in logs when instantiating addon
                 //     ADDON BINDER: Cannot resolve assembly ...
                 // and none of this will execute
    -            Assembly harmonyAssy = typeof(HarmonyInstance).Assembly;
    +          Assembly harmonyAssy = typeof(HarmonyLib.Harmony).Assembly;
                 Debug.Log($"[AirlockPlus|Patcher] Using Harmony {harmonyAssy.GetName().Version.ToString()} located at {harmonyAssy.Location}");
    -            HarmonyInstance harmony = HarmonyInstance.Create("com.github.cake-pie.AirlockPlus");
    +          HarmonyLib.Harmony harmony = new HarmonyLib.Harmony("com.github.cake-pie.AirlockPlus");
                 harmony.PatchAll(Assembly.GetExecutingAssembly());
                 harmonyAvailable = true;
                 Destroy(gameObject);

    I've only tested it briefly since recompiling it, but at first glance it works fine. Given that the harmony code is all I changed I'd be surprised if there's any actual "new" bugs that didn't exist already.

  7. Heads-up, there's a bug in the the altimeter configuration. The 1000 meter arrow doesn't have an attached transform.

    // arrow rotation
    
    	MODULE
    	{
    		name = JSIVariableAnimator
    		refreshRate = 1
    		
    	// x100
    		VARIABLESET
    		{
    			scale = 0,100000
    			variableName = ALTITUDE 
    			controlledTransform = ALT10_arrow
    			localRotationStart = 0,0,0
    			localRotationEnd = 0,360,0
    			modulo = 1000
    			longPath = yes
    			maxRateChange = 1
    		}
    	// x1000
    		VARIABLESET
    		{
    			scale = 0,100000
    			variableName = ALTITUDE 
    			localRotationStart = 0,0,0
    			localRotationEnd = 0,360,0
    			modulo = 10000
    			longPath = yes
    			maxRateChange = 1
    		}
    	// x10000
    		VARIABLESET
    		{		
    			scale = 0,100000
    			variableName = ALTITUDE 
    			controlledTransform = ALT1000_arrow
    			localRotationStart = 0,0,0
    			localRotationEnd = 0,360,0
    			longPath = yes
    			maxRateChange = 1
    		}
    	}

     

  8. On 2/21/2021 at 9:02 AM, TaxiService said:

    Based on the codebase (link), each vessel has  a sorted list of all valid paths, which is sorted in ascending by path length. Generally, RemoteTech will take the first path from this sorted list as working connection. I saw few code sets using conditions to select a path from the list, not necessarily the shortest path.

    By the way, I think you should be interested to know that each antenna of a vessel has own process (link) of transmitting science data, based on science packet size, interval and cost. Basically, if you click "Transmit all science" button in Part Action Menu of one antenna with the strongest data properties, RemoteTech will run it based on those antenna data properties.

    Last time I checked, it had been decided that Kerbalism would eventually implement its own CommNet functionality, phasing out the RemoteTech dependancy.

    Thanks for the link, that's exactly what I'm looking for. It's doing more or less what I expected too, but I noticed - it looks like it's updating the cache every physics frame. Isn't that a little too aggressive?

    The fact that each antenna has a method of transmitting data is pretty neat too, but with how Kerbalism overhauls science results and transmission (some experiments taking ingame weeks to run) it probably doesn't help as much as it could.

    And I hadn't actually heard that it was going to implement its own CommNet! From what I'd seen it was actually just supporting RealAntennas more explicitly instead, with some form of updated RT support possible in 4.0. If it does roll its own CommNet, I hope it's at least as good as RT/RA.

  9. On 2/19/2021 at 9:47 AM, TaxiService said:

    Hi,

    RemoteTech pathfinding logic will find the shortest path among all possible paths from a destination to source, even if there is a better but longer link. This problem is complicated by the fact that all links are on same plane regardless of vessel purposes.

    Also, link power (signal strength) is not considered by RemoteTech which just looks at the distance if I understand your description correctly.

    Right, but it knows about the other paths, right? How does it translate the list into the shortest path? (A link to the spot in the code that does this would be enough). I assume it's sorting some sort of List/Array structure by total distance and then taking whatever is at index 0, vs finding the index of the shortest path.

    And yeah, it wouldn't know anything about link power without some sort of (hard?) bind into Kerbalism which would be a significant amount of work; with Kerbalism 4.0 in the works it probably would be a bad idea to add that feature at this time anyway. I was mentioning that as more of an ideal solution, with the fallback of putting the user-selected link first in the list of links as a more practical one.

  10. I know that it's a known fact that Kerbalism and RemoteTech don't play nice together (to the point where Kerbalism throws a warning when both are installed), but RT's path algorithm is causing me some heartache when transmitting science over long distances. RT's dish-coverage code is making it pick the weaker Dish-to-DSN-Omni link past a certain distance, rather than the stronger Dish-to-local-Dish-to-DSN-Omni connection. Is this because it's trying to pick the fastest path? And if so, shouldn't pointing a dish at a spacecraft ALWAYS prefer that spacecraft if possible?

    Normally I'd blame this on Kerbalism since it's the mod with an interaction, but I know that RT supports multiple control paths and it's clearly displaying the active path as a direct connection to the DSN. If RT simply has an array of connections and Kerbalism is picking the first on in that array, is it possible to have the array in a different order while still preserving the fastest-path for control? It'd be nice if it ordered it by signal strength when Kerbalism was installed, but just having the active target at the front of the list if possible should "solve" the issue.

  11. Dunno what I did, but I've eliminated the issue for now in my modded save. I've removed the following, but I don't think they're to blame.

    AmpYearPowerManager 1:V1.5.8.0
    DeployableEngines 1.2.3
    FilterExtensions 3.2.6
    MoarFEConfigs 1.0.5.2
    ModularFlightIntegrator 1.2.8.0
    NearFutureLaunchVehicles 2.1.2
    REPOSoftTech-Agencies V1.5.8.0
    SixCrewScienceLab 1.2
    SixSeatMk3cockpit 1.2

  12. Some good news, out of 128 mods I've identified 96 that don't seem to be interfering, and I've confirmed it's not a local configuration issue (fresh install with 128 still had the issue, I believe).

    Bad news: The 32 mods I'd removed were ones I was sure weren't causing issues. So... that's a good time. :( That leaves the following to test:

    Spoiler

    ASETAgency 1.0
    ASETAvionics 2.1
    ASETProps 1.5
    AviationLights 1:v4.1.1
    BasicProceduralTextures v1.2
    Chatterer 0.9.99
    ChattererExtended 0.6.2
    ContractConfigurator 1.30.5
    ContractConfigurator-CleverSats 1.4
    ContractConfigurator-FieldResearch 1.2.2
    ContractConfigurator-KerbalAcademy 1.1.10
    ContractConfigurator-KerbinSpaceStation 2:3.7.2.3
    ContractConfigurator-RemoteTech 2.1.4
    ContractConfigurator-Tourism 1.5.2
    ContractsWindowPlus 9.4
    CorrectCoL 1.6.5.3
    CraftManager 1.2.0
    DatedQuickSaves 1.2.4.4
    DistantObject v2.0.2.0
    DistantObject-default v2.0.2.0
    DockingPortAlignmentIndicator 6.9.2.2
    FilterExtensions 3.2.6
    GAP 1.6.1
    HangarGrid 0.4.0-181
    KerbalNRAP 1.6.0
    MK12PodIVAReplacementbyASET 1:0.3
    Mk1CockpitIVAReplbyASET 1.1
    Mk1LanderCanIVAReplbyASET 1.1
    MoarFEConfigs 1.0.5.2
    SixCrewScienceLab 1.2
    SixSeatMk3cockpit 1.2
    WindTunnel 1.3.0

    Personally I have my eye on ModularFlightIntegrator, maybe the wind tunnel mod. If it's any of the contract mods I'm gonna have stern words for them.

    Test 2 - failure

    Spoiler

     

    Test 3 - clean

    Spoiler

     

    Edit: No video this time. I can't actually get the interaction to happen again on the minimized list. Also, it turns out I already eliminated Modular Flight Integrator... so I have no idea. I'm gonna see if I can get my full modded install to work with this knowledge.

  13. Here's some testing done with the panels open, in case Boris sees anything in particular that might be setting the AA off. Modlists are in the video descriptions, I'll be doing further tests as I have patience for them.

    It should be noted that Remote Tech is installed in both cases, but there are no antennas on the plane, and there's also no kOS KPU modules on the plane.

    Edit: Also, sorry about double-posting, I'm not thinking very well right now.

     

  14. 1 hour ago, Cinquine said:

    When cruise flight controller is activated, there seems to be a system which causes the plane to nosedive at high altitudes + speeds. I'm noticing it on reentry with a spaceplane, when the altitude is set to 50,000 or the vertical speed is set to something like -10, the plane will start nosediving around 55,000 m, pointing as far below the velocity vector as the craft AOA setting lets it. Then at around 25,000 it pulls up hard, and behaves normally.

    Is there a way to make it not do this? I've looked through all the settings and documentation (along with google searches), I can't find anything explaining this.

    This is with AA 1.5.6, using KSP 1.10.1 and FAR 0.16.0.1

    This could be related to my issues as well, though I'm seeing it at low altitudes and pretty much any speed. The nosedive is exactly what's happening though. Are AA and FAR your only mods?

  15. I'm also finding that the AA will occasionally wig out after several minutes of flight on KSP 1.11. I thought this was an issue with kOS at first but the plane thinking it's on the ground seems pretty likely from what I'm seeing in the previous posts. I'm testing on a clean + isolated install anyway, but with no error messages it's hard to say why the AA is suddenly deciding that it needs to apply hard authority.

    Edit: It's a mod interaction. I can't reproduce it when clean + isolated. I'll see if I can figure out what it is - kOS shouldn't have control of my vessel and neither should remote tech under these situations (manned flight)

  16. I'm able to hook it into RemoteTech, but for some reason that completely destroys the feedback loop that AA uses. I'm not sure where I'd even start to look for troubleshooting that. You might still get a pull request from me at some point, but it won't be any time soon, since programatically dealing with FlightCtrlStates isn't something I know how to do. :(

    In the meantime, the oscillations aren't so bad that they aren't manageable.

  17. You're correct. This is an interaction with RemoteTech.

    unknown.png

    The only mods in this save are Remote Tech, Atmospheric Autopilot, and Module Manager. Without Remote Tech, this plane flies stable. With Remote Tech, the plane flies with rapid oscillations. A 10 microsecond delay probably shouldn't cause these oscillations by itself, which means this is an issue with how AA sends commands to the vessel. Remote Tech has an API that allows bypass of the signal delay, which this mod appears not to be hooking into (and should be, given its purpose). I couldn't find RemoteTech.API referenced in your github, so "fixing" this oscillation should just mean hooking into the Remote Tech API and registering a sanctioned pilot.

  18. What's going on with the difference in flight performance for drones vs pilots? I thought this was just because my drone planes were small, but even small piloted planes are stable, while small drone planes wobble all over the place. I've even tested this by putting a command seat on a drone plane and suddenly it's stable.

×
×
  • Create New...