-
Posts
1,083 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by Xyphos
-
Allows the player to manipulate Maneuver Nodes in Map View using the number pad on their keyboards, or create and execute Maneuver Nodes if MechJeb is also installed. Please read the WIKI for instructions. DOWNLOAD from SpaceDock or DOWNLOAD from GitHub CKAN release is pending. SOURCE CODE on GitHub. Change log: 02-FEB-2018 :: v1.0 full release, includes seamless MechJeb integration. 24-JAN-2018 :: v0.1 beta testing
-
Cannot resolve assembly: netstandard
Xyphos replied to Xyphos's topic in KSP1 C# Plugin Development Help and Support
Cheers! -
Cannot resolve assembly: netstandard
Xyphos replied to Xyphos's topic in KSP1 C# Plugin Development Help and Support
ScreenMessages.PostScreenMessage($"Node set for {job} at {UT}..."); because I hate String.Format's ugly face. -
Cannot resolve assembly: netstandard
Xyphos replied to Xyphos's topic in KSP1 C# Plugin Development Help and Support
Thanks, I solved the problem by editing the .csproj file like you suggested <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net46</TargetFramework> </PropertyGroup> I know you said v3.5 but all the nifty compiler features that I enjoy so much are in v4.6 - it compiles and runs just fine. but, even after solving this problem, I've run into a few others. I'll figure them out.... thanks a ton! -
Getting to Eve requires the least dV for any celestial body, from Kerbin. Inserting into Eve is easy if you know how to properly manage heat Getting OFF of Eve is the hard part, your lander will need a minimum of 8,000 dV from sea-level, and a high enough TWR to lift off the surface. However, if you check my signature below, you'll find Mount EveRest, the highest point on Eve at an altitude of 7540 meters above sea level, making it the best place to land, tho tricky. What makes it the best landing site, is because it's so high up, the atmospheric pressure isn't as bad as it would be at sea level, which gives you a small boost to thrust and decreases the dV requirement to return to orbit. Since Eve's rotational speed is about 55 m/s, you won't gain any benefit from landing near the equator. Eve's dense atmosphere makes wings and parachutes more effective than they would be on Kerbin, and winged craft is the best mode of transportation, provided you have the means of propulsion, there's no oxygen for jet engines to work. As for Tylo, you'l need a two or three stage lander to land and return, the high gravity and no atmosphere will require at least one jettisoned descent stage. don't overlook the oscar-b tanks, they're quite useful as you'll see in my Jool 5 video if you click the picture in my signature below.
-
[ANY] BNTR - Bi-operational Nuclear Thermal Rocket
Xyphos replied to Xyphos's topic in KSP1 Mod Releases
sure, I'll even add pictures. just one minute... -
MM Patch to clone the Stock LV-N engine and adds a second mode of operation that uses an oxidizer-injected afterburner for more thrust in atmospheric environments at the expense of ISP. I've tried to balance this engine as much as possible by adding a little more mass, and greatly reduced ISP in OxAug mode to that of an RCS thruster. It cannot make it to orbit under it's own power, but can be ran in asparagus staging and/or with boosters to help it get there. Special thanks to: @Mecripp and @sebi.zzr for their help and contribution. ---> DOWNLOAD from SpaceDock
-
thanks again, @sebi.zzr I've added you in the credits as well!
-
update: it's still doing this in Nuclear mode, after the oxidizer is gone. // Special Thanks to: Mecripp +PART[nuclearEngine] { @name = LVBNTR @author = Xyphos @node_stack_top = 0.0, 1.40383, 0.0, 0.0, 1.0, 0.0 @node_stack_bottom = 0.0, -1.731957, 0.0, 0.0, -1.0, 0.0 !fx_exhaustFlame_blue = DELETE !fx_exhaustLight_blue = DELETE !fx_smokeTrail_light = DELETE !sound_vent_medium = DELETE !sound_rocket_hard = DELETE !sound_vent_soft = DELETE !sound_explosion_low = DELETE @mass = 4.5 @maxTemp = 2600 @entryCost = 50000 @cost = 16000 @title = LV-BNTR @manufacturer = Xyphos Aerospace Industries @description = After smuggling research documents out of a science lab in a lunch pail, Xyphos Aerospace Industries was able to re-create a Bi-operational Nuclear Thermal Rocket engine. It works just like it's LV-N cousin, but includes an oxidizer-injected afterburner for augmented thrust in atmospheric conditions. It also utilizes it's nuclear core to provide electricity. WARNING: This engine has been banned from use due to environmental hazard. !MODULE[ModuleEngines] {} !MODULE[ModuleAlternator] {} EFFECTS { running_closed // Ox Augmented { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 1.0 1.0 pitch = 0.0 0.0 pitch = 1.0 1.0 loop = true } PREFAB_PARTICLE { prefabName = fx_smokeTrail_light transformName = thrustTransform emission = 0.0 0.0 speed = 0.0 0.25 speed = 1.0 1.0 localOffset = 0, 0, 2 } MODEL_MULTI_PARTICLE { modelName = Squad/FX/hydroLOXFlame transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 localPosition = 0, 0, 1.6 } } power_open // LF Only { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 0.05 0.0 volume = 1.0 1.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } MODEL_MULTI_PARTICLE { modelName = Squad/FX/exhaustFlames_blue transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 localPosition = 0, 0, 1.6 } } running_open { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 0.05 0.6 volume = 1.0 1.0 pitch = 0.0 0.7 pitch = 1.0 1.4 loop = true } PREFAB_PARTICLE { prefabName = fx_smokeTrail_aeroSpike transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.25 speed = 1.0 1.0 localPosition = 0, 0, 2 } } engage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { PREFAB_PARTICLE { prefabName = fx_exhaustSparks_flameout_2 transformName = thrustTransform oneShot = true localPosition = 0, 0, 1.6 } AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } MODULE { name = MultiModeEngine primaryEngineID = OxAugmented primaryEngineModeDisplayName = Oxidizer Augmented secondaryEngineID = LfOnly secondaryEngineModeDisplayName = Nuclear Only } MODULE { name = ModuleEnginesFX engineID = LfOnly powerEffectName = power_open thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 60 heatProduction = 250 //fxOffset = 0, 0, 1.6 EngineType = Nuclear exhaustDamageDistanceOffset = 1.86 PROPELLANT { name = LiquidFuel resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 0.9 DrawGauge = True } atmosphereCurve { key = 0 800 key = 1 185 key = 2 0.001 } } MODULE { name = ModuleEnginesFX engineID = OxAugmented runningEffectName = running_closed thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 180 heatProduction = 475 // afterburner runs very hot! fxOffset = 0, 0, 1.6 localOffset = 0, 0, 1.6 EngineType = LiquidFuel exhaustDamageDistanceOffset = 1.86 PROPELLANT { name = LiquidFuel resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 0.151 // Fuel flow remains constant in afterburner mode, it's just the oxidizer helping it to burn with more thrust. DrawGauge = True } PROPELLANT { name = Oxidizer resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 1.1 DrawGauge = True } atmosphereCurve { key = 0 290 key = 1 265 key = 9 0.001 } } MODULE { name = ModuleGenerator isAlwaysActive = true OUTPUT_RESOURCE { name = ElectricCharge rate = 1.2 } } @MODULE[ModuleSurfaceFX] { @thrustProviderModuleIndex = 1 @fxMax = 0.5 @maxDistance = 20 @falloff = 2 @thrustTransformName = thrustTransform } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 2 fxMax = 0.6 maxDistance = 30 falloff = 1.6 thrustTransformName = thrustTransform } }
-
@sebi.zzr YOU'RE A GENIUS! <3
-
nope, 10x didn't do anything, either, but while you're here, @MOARdV any chance of getting RPM to work with the Mk2 inline cockpit? just a single monitor would be great.
-
yeah, that's exactly the problem I'm having, same thing with fxOffset
-
I want it to behave like an engine should. I've tried editing the values myself to no avail.
-
well, I've modified it some more, but now I'm having trouble with the FX; the augmented mode is too close to the nozzle and the LF-Only mode is no where near the nozzle, and I can't seem to move them? // Special Thanks to: Mecripp +PART[nuclearEngine] { @name = LVBNTR @author = Xyphos @node_stack_top = 0.0, 1.40383, 0.0, 0.0, 1.0, 0.0 @node_stack_bottom = 0.0, -1.731957, 0.0, 0.0, -1.0, 0.0 !fx_exhaustFlame_blue = DELETE !fx_exhaustLight_blue = DELETE !fx_smokeTrail_light = DELETE !sound_vent_medium = DELETE !sound_rocket_hard = DELETE !sound_vent_soft = DELETE !sound_explosion_low = DELETE @mass = 4.5 @maxTemp = 2600 @entryCost = 50000 @cost = 16000 @title = LV-BNTR @manufacturer = Xyphos Aerospace Industries @description = After smuggling research documents out of a science lab in a lunch pail, Xyphos Aerospace Industries was able to re-create a Bi-operational Nuclear Thermal Rocket engine. It works just like it's LV-N cousin, but includes an oxidizer-injected afterburner for augmented thrust in atmospheric conditions. It also utilizes it's nuclear core to provide electricity. WARNING: This engine has been banned from use due to environmental hazard. !MODULE[ModuleEngines] {} !MODULE[ModuleAlternator] {} EFFECTS { running_closed // Ox Augmented { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 1.0 1.0 pitch = 0.0 0.0 pitch = 1.0 1.0 loop = true } PREFAB_PARTICLE { prefabName = fx_smokeTrail_light transformName = thrustTransform emission = 0.0 0.0 speed = 0.0 0.25 speed = 1.0 1.0 localOffset = 0, 0, 1 } MODEL_MULTI_PARTICLE { modelName = Squad/FX/hydroLOXFlame transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 localOffset = 0, 0, 2.6 } } power_open // LF Only { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 0.05 0.0 volume = 1.0 1.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } MODEL_MULTI_PARTICLE { modelName = Squad/FX/exhaustFlames_blue transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } } running_open { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 0.05 0.6 volume = 1.0 1.0 pitch = 0.0 0.7 pitch = 1.0 1.4 loop = true } PREFAB_PARTICLE { prefabName = fx_smokeTrail_aeroSpike transformName = smokePoint emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.25 speed = 1.0 1.0 localOffset = 0, 0, 1 } } engage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { PREFAB_PARTICLE { prefabName = fx_exhaustSparks_flameout_2 transformName = smokePoint oneShot = true } AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } MODULE { name = MultiModeEngine primaryEngineID = OxAugmented primaryEngineModeDisplayName = Oxidizer Augmented secondaryEngineID = LfOnly secondaryEngineModeDisplayName = Nuclear Only } MODULE { name = ModuleEnginesFX engineID = LfOnly powerEffectName = power_open thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 60 heatProduction = 250 fxOffset = 0, 0, 1.6 EngineType = Nuclear exhaustDamageDistanceOffset = 1.86 PROPELLANT { name = LiquidFuel resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 0.9 DrawGauge = True } atmosphereCurve { key = 0 800 key = 1 185 key = 2 0.001 } } MODULE { name = ModuleEnginesFX engineID = OxAugmented runningEffectName = running_closed thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 180 heatProduction = 375 // afterburner runs very hot! fxOffset = 0, 0, 0.1.6 EngineType = LiquidFuel exhaustDamageDistanceOffset = 1.86 PROPELLANT { name = LiquidFuel resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 0.151 // Fuel flow remains constant in afterburner mode, it's just the oxidizer helping it to burn with more thrust. DrawGauge = True } PROPELLANT { name = Oxidizer resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 1.1 DrawGauge = True } atmosphereCurve { key = 0 290 key = 1 265 key = 9 0.001 } } MODULE { name = ModuleGenerator isAlwaysActive = true OUTPUT_RESOURCE { name = ElectricCharge rate = 1.2 } } @MODULE[ModuleSurfaceFX] { @thrustProviderModuleIndex = 1 @fxMax = 0.5 @maxDistance = 20 @falloff = 2 @thrustTransformName = thrustTransform } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 2 fxMax = 0.6 maxDistance = 30 falloff = 1.6 thrustTransformName = thrustTransform } }
-
nope, still invisible. I guess I'll stick to your copy then. thanks again!
-
eh, well your patch works. thanks a ton, I'll be sure to credit you. I'm not ready to release it yet, I want to test and tweak it a bit.
-
...that seems like a lot more work than necessary; I'm guessing you can't use models across directories?
-
PART { name = LVBNTR module = Part author = Xyphos //C. Jenkins MODEL { model = Squad/Parts/Engine/liquidEngineLV-N/model scale = 1.0 //texture = Squad/Parts/Engine/liquidEngineLV-N/ } node_stack_top = 0.0, 1.40383, 0.0, 0.0, 1.0, 0.0 node_stack_bottom = 0.0, -1.731957, 0.0, 0.0, -1.0, 0.0 mass = 4.5 // added mass heatConductivity = 0.06 // half default skinInternalConductionMult = 4.0 emissiveConstant = 0.85 // engine nozzles are good at radiating. dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 2 crashTolerance = 12 maxTemp = 2600 //Default 2000 but this runs slightly hotter radiatorMax = 0.35 //Default = 0.25 but nukes are meant to run hot TechRequired = nuclearPropulsion entryCost = 50000 cost = 16000 // added cost category = Engine subcategory = 0 title = LV-BNTR manufacturer = Xyphos Aerospace Industries description = After smuggling research documents out of a science lab in a lunch box, Xyphos Aerospace Industries was able to re-create a Bi-operational Thermo-Nuclear Rocket engine. It works just like it's LV-N cousin, but includes an oxidizer-injected afterburner for augmented thrust in atmospheric conditions. It also utilizes it's nuclear core to provide electricity. Be warned: this engine has been banned from use due to environmental concerns. attachRules = 1,0,1,0,0 bulkheadProfiles = size1 tags = #autoLOC_500438 //#autoLOC_500438 = active atom efficient engine inter liquid (nerv nuclear nuke orbit propuls radio reactor vacuum EFFECTS { running_closed { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 1.0 1.0 pitch = 0.0 0.0 pitch = 1.0 1.0 loop = true } PREFAB_PARTICLE { prefabName = fx_smokeTrail_light transformName = thrustTransform emission = 0.0 0.0 speed = 0.0 0.25 speed = 1.0 1.0 localOffset = 0, 0, 1 } MODEL_MULTI_PARTICLE { modelName = Squad/FX/shockExhaust_blue_small transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } } power_open { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 0.05 0.0 volume = 1.0 1.0 pitch = 0.0 0.2 pitch = 1.0 1.0 loop = true } MODEL_MULTI_PARTICLE { modelName = Squad/FX/afterburner_shock transformName = thrustTransform emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.5 speed = 1.0 1.2 } } running_open { AUDIO { channel = Ship clip = sound_rocket_hard volume = 0.0 0.0 volume = 0.05 0.6 volume = 1.0 1.0 pitch = 0.0 0.7 pitch = 1.0 1.4 loop = true } PREFAB_PARTICLE { prefabName = fx_smokeTrail_aeroSpike transformName = smokePoint emission = 0.0 0.0 emission = 0.05 0.0 emission = 0.075 0.25 emission = 1.0 1.25 speed = 0.0 0.25 speed = 1.0 1.0 localOffset = 0, 0, 1 } } engage { AUDIO { channel = Ship clip = sound_vent_soft volume = 1.0 pitch = 2.0 loop = false } } flameout { PREFAB_PARTICLE { prefabName = fx_exhaustSparks_flameout_2 transformName = smokePoint oneShot = true } AUDIO { channel = Ship clip = sound_explosion_low volume = 1.0 pitch = 2.0 loop = false } } } MODULE { name = MultiModeEngine primaryEngineID = OxAugmented primaryEngineModeDisplayName = Oxidizer Augmented secondaryEngineID = LfOnly secondaryEngineModeDisplayName = Nuclear Only } MODULE { name = ModuleEnginesFX engineID = LfOnly powerEffectName = power_open thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 60 heatProduction = 250 fxOffset = 0, 0, 1.6 EngineType = Nuclear exhaustDamageDistanceOffset = 1.86 PROPELLANT { name = LiquidFuel resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 0.9 DrawGauge = True } atmosphereCurve { key = 0 800 key = 1 185 key = 2 0.001 } } MODULE { name = ModuleEnginesFX engineID = OxAugmented runningEffectName = running_closed thrustVectorTransformName = thrustTransform exhaustDamage = True ignitionThreshold = 0.1 minThrust = 0 maxThrust = 180 heatProduction = 375 // afterburner runs very hot! fxOffset = 0, 0, 0.1.6 EngineType = LiquidFuel exhaustDamageDistanceOffset = 1.86 PROPELLANT { name = LiquidFuel resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 0.9 DrawGauge = True } PROPELLANT { name = Oxidizer resourceFlowMode = STAGE_STACK_FLOW_BALANCE ratio = 1.1 DrawGauge = True } atmosphereCurve { key = 0 290 key = 1 265 key = 9 0.001 } } MODULE { name = ModuleTestSubject useStaging = True useEvent = True situationMask = 127 CONSTRAINT { type = REPEATABILITY value = ALWAYS prestige = Trivial } CONSTRAINT { type = REPEATABILITY value = BODYANDSITUATION prestige = Significant } CONSTRAINT { type = REPEATABILITY value = ONCEPERPART prestige = Exceptional } CONSTRAINT { type = ALTITUDEENV test = GT value = 4000 prestige = Trivial } CONSTRAINT { type = ALTITUDEENV test = LT value = 8000 prestige = Trivial } CONSTRAINT { type = ALTITUDEENV test = GT value = 2000 prestige = Significant } CONSTRAINT { type = ALTITUDEENV test = LT value = 4000 prestige = Significant } CONSTRAINT { type = ALTITUDEENV test = GT value = 1000 prestige = Exceptional } CONSTRAINT { type = ALTITUDEENV test = LT value = 2000 prestige = Exceptional } CONSTRAINT { type = ALTITUDE test = GT value = 0 // this just registers altitude as something to care about situationMask = 8 } CONSTRAINT { type = ALTITUDE test = LT value = 300000 situationMask = 16 body = _NotSun } CONSTRAINT { type = ALTITUDE test = LT value = 600000 situationMask = 32 body = _NotSun } CONSTRAINT { type = SPEED test = GT value = 0 situationMask = 8 prestige = Trivial } CONSTRAINT { type = SPEED test = LT value = 600 situationMask = 8 prestige = Trivial } CONSTRAINT { type = SPEED test = GT value = 300 situationMask = 8 prestige = Significant } CONSTRAINT { type = SPEED test = LT value = 1200 situationMask = 8 prestige = Significant } CONSTRAINT { type = SPEED test = GT value = 600 situationMask = 8 prestige = Exceptional } CONSTRAINT { type = SPEED test = LT value = 2500 situationMask = 8 prestige = Exceptional } CONSTRAINT { type = SPEEDENV test = LT value = 200 prestige = Trivial } CONSTRAINT { type = SPEEDENV test = GT value = 100 prestige = Trivial } CONSTRAINT { type = SPEEDENV test = LT value = 100 prestige = Significant } CONSTRAINT { type = SPEEDENV test = GT value = 50 prestige = Significant } CONSTRAINT { type = SPEEDENV test = LT value = 50 prestige = Exceptional } CONSTRAINT { type = SPEEDENV test = GT value = 20 prestige = Exceptional } } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 1 fxMax = 0.5 maxDistance = 20 falloff = 2 thrustTransformName = thrustTransform } MODULE { name = ModuleSurfaceFX thrustProviderModuleIndex = 2 fxMax = 0.6 maxDistance = 30 falloff = 1.6 thrustTransformName = thrustTransform } }
-
no, it's a completely custom cfg, not a copy, I'm just using the stock model and textures.
-
I'm trying to use a custom MM cfg file to clone an existing stock part, the model and textures are already in Squad's folder, which is a different folder than my cfg file. how do I use the MODEL node to get the part to show in the parts menu? right now, it exists but it's invisible and you cannot pick it back up once you have it placed in the editor
-
Holy Necro, vasimv!
-
I like Mt. EveRest, as stated/punned above.
-
Why Gilly exists? (My personal opinion)
Xyphos replied to Jeb, The Lonely Kerbonaut's topic in KSP1 Discussion
Gilly is a captured asteroid on a elliptical and inclined orbit around Eve. Gilly has existed well before resource mining was a thing, but since the mining update, it's the perfect candidate to build a mining outpost upon, and transport fuel to Low Eve Orbit, making return missions easier to manage. Nobody here can determine why Gilly actually exists, but maybe the Devs thought Eve needed a moon. One can only speculate.