Adds new functions to the Lua environment available to custom criteria for handling rings and belts: - the existing `rings(scan.Rings)` function behavior is unchanged - NEW: `ringsOnly(scan.Rings)` and `beltsOnly(scan.Rings)` functions return ONLY rings or belts, respectively, and shortcuts the `scan.Rings` check - NEW: `hasRings(scan.Rings)` and `hasBelts(scan.Rings)` functions return true if there are one or more proper rings or belts, respectively, in scan.Rings and shortcuts the check, too Furthermore, this adds a debugging aid that identifies what custom criteria caused an error/crash. For simple criteria, ie: `::Hot Landable::` ... the description "Hot Landable" is used. For complex criteria, you can now annotate the `::Criteria::` line with a description used for debugging like so: `::Criteria=Hot Landable::`. Criteria errors are logged like this: ``` Error encountered in Elite Observatory from plugin Explorer while processing custom criteria 'Criteria14=I just crash' on scan: ``` Duplicates are avoided by prepending the user-provided description with a generated name (ie. `Criteria14`, in the example above). Finally, the Detail expression for simple criteria can now safely reference values checked as part of the criteria condition. In particular, the Detail expression is now conditionally evaluated if the result is true. So the following will now work (previously it failed for non-star bodies when StarType was nil): ``` ::Ringed Star:: scan.StarType and hasRings(scan.Rings) ::Detail:: 'Star type: ' .. scan.StarType ```
Elite Observatory Core
Tool for reading/monitoring Elite Dangerous journals for interesting objects. Successor to the original Elite Observatory, rewritten from scratch using .NET 5.0 and AvaloniaUI.
IMPORTANT
Observatory Core and it's associated plugins are currently in an alpha state and are neither feature-complete nor using a finalised UI. Over the coming weeks I will outline in detail what functionality is missing but still planned, and begin work on getting it to feature parity with the original Elite Observatory.
Omissions to current functionality include:
- Integration with Frontier's Companion API
- Data submission to IGAU
- More that I'm just not thinking of right now
How To Use
Observatory Core differs from the original Elite Observatory in that it is a fully generic reader for the Elite Dangerous journal files, passing those events along to plugins to do the actual work.
Observatory will attempt to locate your Elite Dangerous journal location in its default location, though other locations can be specified from the settings in the "Core" application tab. Due to the variety of possible system configurations this automatic detection does not function under Linux, so all Linux users will need to browse for the correct location.
The "Read All" button will read all journal files in the specified folder, handing their contents over to all loaded worker plugins. "Start Monitor" will begin watching files in the journal folder for changes, and pass new journal lines as they are created, as well as all changes to the status.json file, over to the worker plugins.
In addition to updating the content of their respective UI tabs, some workers can also send notifications, which will be distributed to all notifier plugins, as well as be passed to Observatory Core's native notification popup.
For specifics on what each plugin does, please refer to their respective wiki pages:
If you're interested in Custom Criteria for Explorer in particular you can find the documentation for writing them in the project wiki.
If you want to chat or collaborate with other users of Observatory you can find us either in the Elite Dangerous forum thread for Observatory, or on the Elite Observatory Discord.
For information on how to create a plugin, refer to this article about ObservatoryFramework.
Prerequisites for use
.NET 5, and by extension one of its supported OSes.
Prerequisites for building
C# 9.0, .NET 5.0, AvaloniaUI 0.10.3, and of course ObservatoryFramework.