Elite Observatory - Search your journal for potentially interesting objects, or notify you of new ones on the fly while exploring!

Hmm, this doesn't appear to work after all. Here's my custom criterium:

Code:
::Criteria::
if scan.TerraformState and Scan.PlanetClass and scan.TerraformState == 'Terraformable' then
  return true, 'Terraformable ' .. scan.PlanetClass, scan.PlanetClass
end
::End::

When I start Observatory Core, it logs the following error and stops processing custom criteria:

Code:
[2024/05/08 17:25:12] Error encountered in Elite Observatory from plugin Explorer while processing custom criteria 'Criteria0' on scan:
{ "timestamp":"2019-03-24T17:56:02Z", "event":"Scan", "ScanType":"AutoScan", "BodyName":"Hepa 2", "BodyID":8, "Parents":[ {"Star":0} ], "DistanceFromArrivalLS":388.145691, "TidalLock":false, "TerraformState":"", "PlanetClass":"Sudarsky class I gas giant", "Atmosphere":"", "AtmosphereComposition":[ { "Name":"Hydrogen", "Percent":69.190788 }, { "Name":"Helium", "Percent":30.809208 } ], "Volcanism":"", "MassEM":7.705753, "Radius":25729286.000000, "SurfaceGravity":4.639476, "SurfaceTemperature":21.134399, "SurfacePressure":0.000000, "Landable":false, "SemiMajorAxis":116363403264.000000, "Eccentricity":0.000009, "OrbitalInclination":0.146388, "Periapsis":330.440338, "OrbitalPeriod":70189312.000000, "RotationPeriod":102962.531250, "AxialTilt":-0.262425, "Rings":[ { "Name":"Hepa 2 A Ring", "RingClass":"eRingClass_Icy", "MassMT":7.9732e+10, "InnerRad":4.6691e+07, "OuterRad":6.8762e+07 } ], "ReserveLevel":"CommonResources" }
NOTE: Custom criteria processing has been disabled to prevent further errors.

Exception message: [string "chunk"]:2: attempt to index a nil value (global 'Scan')
Stack trace:
   at NLua.Lua.ThrowExceptionFromError(Int32 oldTop)
   at NLua.Lua.CallFunction(Object function, Object[] args, Type[] returnTypes)
   at Observatory.Explorer.CustomCriteriaManager.CheckInterest(Scan scan, Dictionary`2 scanHistory, Dictionary`2 signalHistory, ExplorerSettings settings)

Could be a helium-rich gas giant triggering this, not sure, just guessing by it's >30% helium content in the atmosphere.

Missed that there's a capital S in there 🤦‍♂️

Try:
Code:
::Criteria::
if scan.TerraformState and scan.PlanetClass and scan.TerraformState == 'Terraformable' then
  return true, 'Terraformable ' .. scan.PlanetClass, scan.PlanetClass
end
::End::

You'll need to re-enable the Custom Criteria option in Explorer settings.
 
Hmm, this doesn't appear to work after all. Here's my custom criterium:

Code:
::Criteria::
if scan.TerraformState and Scan.PlanetClass and scan.TerraformState == 'Terraformable' then
  return true, 'Terraformable ' .. scan.PlanetClass, scan.PlanetClass
end
::End::

When I start Observatory Core, it logs the following error and stops processing custom criteria:
Lua is case-sensitive and you have a capitalized "Scan" in there.

edit: ...why did the forums not show me your replies since then until after I hit post?
 
Interesting little bug here, HIP 88471 b 5, it's a pre-populated system so I scan nav beacon to get details of system, on scanning the nav beacon I got two possible bio's on that planet, on mapping the planet it turns out there are none actually present, zero bio, but it doesn't update in bio-insights;

1XW9YPe.png
 
Interesting little bug here, HIP 88471 b 5, it's a pre-populated system so I scan nav beacon to get details of system, on scanning the nav beacon I got two possible bio's on that planet, on mapping the planet it turns out there are none actually present, zero bio, but it doesn't update in bio-insights;

1XW9YPe.png

Yep, known issue. I've fixed it (some time ago!) but it's waiting on new UI release. Soon™️
 
Coming up will be new writeups for the updated criteria syntax, and how to create a custom theme.

That said, here's the file for "hot dog stand", if anyone wants to use it. Just save it as a .eot file and load via the "Add Theme" button in Observatory.

JSON:
{
    "Name": "Hot Dog Stand",
    "Theme": {
        "ComboBox.BackColor": {
            "Name": "Yellow"
        },
        "ComboBox.ForeColor": {
            "Name": "WindowText"
        },
        "Default.BackColor": {
            "Name": "Red"
        },
        "Default.ForeColor": {
            "Name": "ControlText"
        },
        "LinkLabel.ActiveLinkColor": {
            "Name": "Yellow"
        },
        "LinkLabel.DisabledLinkColor": {
            "R": 0,
            "B": 0,
            "G": 200
        },
        "LinkLabel.LinkColor": {
            "R": 0,
            "B": 0,
            "G": 200
        },
        "LinkLabel.VisitedLinkColor": {
            "R": 0,
            "B": 0,
            "G": 133
        },
        "ListView.BackColor": {
            "Name": "Yellow"
        },
        "ListView.ForeColor": {
            "Name": "WindowText"
        },
        "NumericUpDown.BackColor": {
            "Name": "Yellow"
        },
        "NumericUpDown.ForeColor": {
            "Name": "WindowText"
        },
        "TrackBar.ForeColor": {
            "Name": "WindowText"
        },
        "UpDownButtons.BackColor": {
            "Name": "Yellow"
        },
        "UpDownButtons.ForeColor": {
            "Name": "WindowText"
        },
        "UpDownEdit.BackColor": {
            "Name": "Yellow"
        },
        "UpDownEdit.ForeColor": {
            "Name": "WindowText"
        }
    }
}
 
Great progress. Initial thoughts:
  • Needs an "autostart monitoring on startup" option
  • Needs to remember window size and column widths (or auto size column widths)
  • Some date sorting is not working as expected
 
Great progress. Initial thoughts:
  • Needs an "autostart monitoring on startup" option
  • Needs to remember window size and column widths (or auto size column widths)
  • Some date sorting is not working as expected
Thanks for the report!

As much has they've been inexplicable bugbears for pretty much the entire time I've been working on Observatory I'm happy to dig in on the first two and try to get them sorted out.

Can you elaborate on your date sorting issue? At a glance sorting by time in Explorer seems to be fine, but if you can give me a specific example I'll happily look into it.
 
After doing a read all, and seeing entries going all the way back to about 2020 then sorting by date so it would show 2024 at the top I saw something like this
2022 ...
2022 ...
2020 ...
2024 ...
2023 ...
 
After doing a read all, and seeing entries going all the way back to about 2020 then sorting by date so it would show 2024 at the top I saw something like this
2022 ...
2022 ...
2020 ...
2024 ...
2023 ...
I'll need more information than that as I'm not seeing that behaviour myself. A screenshot might be helpful, and depending on any insight I do or do not glean from that possibly a copy of your logs.
 
Ah, those aren't my plugins, and are using something other than ISO8601 dates. Observatory's default sort is just "natural" sort order, which works fine for dates formatted like "yyyy-MM-dd", but will fail with most other date formats.

The authors of those plugins need to update them to either provide their own sorting algorithm, or use a naturally sortable date format.
 
Ah, those aren't my plugins, and are using something other than ISO8601 dates. Observatory's default sort is just "natural" sort order, which works fine for dates formatted like "yyyy-MM-dd", but will fail with most other date formats.

The authors of those plugins need to update them to either provide their own sorting algorithm, or use a naturally sortable date format.
Ah, I always forget which is who's lol
 
The file was ObservatoryCrashLog.txt. The last entry is:
[21/05/2024 19:41:05] Error encountered in Elite Observatory 0.2.23060.2034
Exception message: '0x00' is an invalid end of a number. Expected 'E' or 'e'. Path: $.Nebulae[189].Coords[0] | LineNumber: 0 | BytePositionInLine: 104660.
Stack trace:
at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo jsonTypeInfo, Nullable`1 actualByteCount)
at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo jsonTypeInfo)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
at CodexLib.CodexChecker..ctor()
at Observatory.BioInsights.BioInsights.Load(IObservatoryCore observatoryCore)
at Observatory.PluginManagement.PluginManager..ctor() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\PluginManagement\PluginManager.cs:line 61
at Observatory.PluginManagement.PluginManager.NewPluginManager() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\PluginManagement\PluginManager.cs:line 28
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at System.Lazy`1.get_Value()
at Observatory.UI.MainApplication.OnFrameworkInitializationCompleted() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\UI\MainApplication.axaml.cs:line 17
at Avalonia.Controls.AppBuilderBase`1.Setup() in /_/src/Avalonia.Controls/AppBuilderBase.cs:line 308
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 208
at Observatory.ObservatoryCore.Main(String[] args) in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\ObservatoryCore.cs:line 21
Inner exception message: '0x00' is an invalid end of a number. Expected 'E' or 'e'. LineNumber: 0 | BytePositionInLine: 104660.
Stack trace:
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
at System.Text.Json.Utf8JsonReader.TryGetNumber(ReadOnlySpan`1 data, Int32& consumed)
at System.Text.Json.Utf8JsonReader.ConsumeNumber()
at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)
at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonCollectionConverter`2.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TCollection& value)
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonCollectionConverter`2.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TCollection& value)
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1.ReadJsonAndSetMember(Object obj, ReadStack& state, Utf8JsonReader& reader)
at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
 
That was the previous version. Try this instead:

[21/05/2024 19:24:03] Error encountered in Elite Observatory 0.3.24141.2140
Exception message: Value of '-1' is not valid for 'Value'. 'Value' should be between 'Minimum' and '$Maximum'. (Parameter 'value')
Actual value was -1.
Stack trace:
at System.Windows.Forms.TrackBar.set_Value(Int32 value)
at Observatory.UI.CoreForm.PopulateNativeSettings() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\UI\CoreForm.Settings.cs:line 104
at Observatory.UI.CoreForm..ctor() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\UI\CoreForm.cs:line 37
at Observatory.ObservatoryCore.Main(String[] args) in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\ObservatoryCore.cs:line 48
 
That was the previous version. Try this instead:

[21/05/2024 19:24:03] Error encountered in Elite Observatory 0.3.24141.2140
Exception message: Value of '-1' is not valid for 'Value'. 'Value' should be between 'Minimum' and '$Maximum'. (Parameter 'value')
Actual value was -1.
Stack trace:
at System.Windows.Forms.TrackBar.set_Value(Int32 value)
at Observatory.UI.CoreForm.PopulateNativeSettings() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\UI\CoreForm.Settings.cs:line 104
at Observatory.UI.CoreForm..ctor() in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\UI\CoreForm.cs:line 37
at Observatory.ObservatoryCore.Main(String[] args) in C:\Users\Xjph\Repos\ObservatoryCore\ObservatoryCore\ObservatoryCore.cs:line 48
That's enough to go on I think. Thanks.
 
Back
Top Bottom