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

Once I got my raw mats criteria running, I noticed some other issue: voice messages for the next scanned body start to play before all messages for the previous body are finished.
 
Heads up, there is a bug in the current explorer plugin where the custom criteria iterator functions won't return the final item in the list they're iterating through. Will be resolved in the next release (possibly tomorrow), until then you can work around it by working with the original collection variables directly.
 
Here are some custom criteria I'm testing out, in case anyone wants to try them.

Oblate gas giants: (I'm not sure if the math is exactly right, but I copied it from an old-Observatory custom rule, and seems to work on spot-checking a few of them)

Code:
::Oblate Gas Giant::
scan.PlanetClass and string.find(string.lower(scan.PlanetClass), 'gas giant') and (((6.28/scan.RotationPeriod)^2 * scan.Radius^3) / (3985760580000 * scan.MassEM) > 5)
::Detail::
'Rotational Period: ' .. math.floor(scan.RotationPeriod/864)/100 .. ' days, Radius: ' .. math.floor(scan.Radius/1000) .. ' km, Earth Masses: ' .. math.floor(scan.MassEM*100)/100

Hot Jupiters (gas giants with orbital period under 10 days). This version of it checks to see if the parent object is a star, to try to avoid false positives from barycentric binary gas giants, or gas giants as moons.

Code:
::Criteria::
--Hot Jupiters
if scan.ParentType == 'Star' then
    if scan.PlanetClass and string.find(string.lower(scan.PlanetClass), 'gas giant') and (scan.OrbitalPeriod <= 864000) then
        return true,
            'Hot Jupiter',
            'Orbital Period: ' .. math.floor(scan.OrbitalPeriod/864)/100 .. ' days'
    end
end
::End:

Wide rings. This is meant to replace the stock wide-ring detection, to be less sensitive. It just requires the ring to be twice the width of the stock detection rule (10x the radius instead of 5x).

Code:
::Criteria::
---Wide rings
if scan.Rings then
    for ring in rings(scan.Rings) do
        if (ring.name and (not string.find(string.lower(ring.name),' belt')) and (ring.outerrad - ring.innerrad) / scan.Radius >= 10) then
            return
                true,
                'Wide Ring',
                'Ring width: ' .. math.floor((ring.outerrad - ring.innerrad) / 1000) .. ' km, Radius: ' .. math.floor(scan.Radius/1000) .. ' km'
        end
    end
end
::End::

And narrow rings. Like wide rings, but narrow instead. ;) Right now this is set to 10% (0.1) of the planet's radius, which keeps it from alerting too often. If you want to see more, just increase the fraction.

Code:
:Criteria::
--Narrow rings
if scan.Rings then
    for ring in rings(scan.Rings) do
        if (ring.name and (not string.find(string.lower(ring.name),' belt')) and (ring.outerrad - ring.innerrad) / scan.Radius <= 0.1) then
            return
                true,
                'Narrow Ring',
                'Ring width: ' .. math.floor((ring.outerrad - ring.innerrad) / 1000) .. ' km, Radius: ' .. math.floor(scan.Radius/1000) .. ' km'
        end
    end
end
::End::
 
I have amusingly found that the 7th body in a system (therefore ending in "g") bodies such as XXXX g will be spoken as "XXXX grams" which I will take as a win for the metric system lol
 
Just an update on my previous effort for alerting to Ammonia, Earthlike and Water Worlds... this time with some logic to give different voice alerts based on how close they are (and so likelihood to go out and DSS)

Code:
::Criteria::
--Undiscovered Ammonia Worlds
if scan.PlanetClass == 'Ammonia world' and scan.WasDiscovered == false then
    if scan.DistanceFromArrivalLS < 700 then
        return true,
            'Commander visit this nearby Undiscovered Ammonia World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.DistanceFromArrivalLS >= 700 and scan.DistanceFromArrivalLS <= 10000 then
        return true,
            'Undiscovered Ammonia World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.DistanceFromArrivalLS > 10000 then
        return true,
            'Distant Undiscovered Ammonia World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    end
end
::End::


::Criteria::
--Undiscovered Water Worlds
if scan.PlanetClass == 'Water world' and scan.WasDiscovered == false then
    if scan.DistanceFromArrivalLS < 700 then
        return true,
            'Commander visit this nearby Undiscovered Water World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.DistanceFromArrivalLS >= 700 and scan.DistanceFromArrivalLS <= 10000 then
        return true,
            'Undiscovered Water World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.DistanceFromArrivalLS > 10000 then
        return true,
            'Distant Undiscovered Water World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    end
end
::End::


::Criteria::
--Undiscovered Earthlike Worlds
if scan.PlanetClass == 'Earthlike body' and scan.WasDiscovered == false then
    if scan.DistanceFromArrivalLS < 700 then
        return true,
            'Commander visit this nearby Undiscovered Earthlike World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.DistanceFromArrivalLS >= 700 and scan.DistanceFromArrivalLS <= 10000 then
        return true,
            'Undiscovered Earthlike World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.DistanceFromArrivalLS > 10000 then
        return true,
            'Distant Undiscovered Earthlike World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    end
end
::End::
 
Popup Settings and Lua Fixes


This release addresses a couple of the easier-to-squash bugs in the last release, including one rather high-priority issue where the built-in iterators would skip over the final item in a collection.
It also adds much requested scale and duration settings for the popup notifications.

The Framework change should be non-breaking, and existing versions of other plugins should continue to work.

Updated items in this release bundle:

Core 0.1.256.1247​

  • Fix crash to desktop when testing voice with no voice selected
  • Added settings for popup duration and scale

Explorer 0.1.256.1248​

  • Fixed issue with custom criteria iterators skipping last item
  • Improved custom criteria variable scoping
  • Prevent crash to desktop when reading malformed criteria files and report error

Framework 0.0.256.1208​

  • Add missing on foot crime types to CrimeType enum (finally, says @varonica)
 
Thanks for the new build!

Having said that...

1631561095749.png


These three were played at the same time after honking the new system. :p
 
Last edited:
Another set of criteria - enjoying this - for things that I sometimes miss in my rush to honk and FSS scan, those very close opportunities for some quick DSS scan credits and photo ops...

Code:
::Criteria::
--Worlds Very Close to Arrival Point
if scan.PlanetClass and scan.DistanceFromArrivalLS < 10 then
    if scan.Landable and scan.WasDiscovered == false then
        return true,
            'Commander visit this very close ' .. math.floor(scan.SurfaceTemperature) .. ' Kelvin undiscovered landable World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. 'K'
    elseif scan.Landable and scan.WasDiscovered == true then
        return true,
            'Very close ' .. math.floor(scan.SurfaceTemperature) .. ' Kelvin landable World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    elseif scan.Landable == false and scan.WasDiscovered == true then
        return true,
            'Very close ' .. math.floor(scan.SurfaceTemperature) .. ' Kelvin World',
            'Temperature: ' .. math.floor(scan.SurfaceTemperature) .. ' K'
    end
end
::End::
 
Been a little over two weeks since I last said anything in here so just wanted to hop in with an update.

First off just wanted to say I've been extremely pleased to see people using the new custom criteria in lots of interesting ways. Going to call it a resounding success as far as being both a functional and usability improvement over the previous formats.
Also, big shout-out to @MattG and the set of plugins he's written. Seeing someone actually using the framework not only makes me feel better about the whole project, but also helps find issues that I might otherwise miss. For anyone who's missed them, you can check them out in his thread here: https://forums.frontier.co.uk/threads/mattgs-observatory-plugins.589466/

I'm hoping to get a new release out sometime this coming weekend. Most notable new feature will be support for the new barycentre scan event in the framework, and the newly added ascending node and mean anomaly values in the scan event.
This should allow for some new interesting custom criteria, and will allow the built-in shepherd moon check to finally see binary moons! There will also be some bugfixes for a few things that I consider to be highest priority. Namely the notification stacking and voice overlapping, as well as the hinky pronunciation of body names in some cases, and finally a few minor UX improvements to the usage of custom criteria.

Now for some less good news. The eagle-eyed among you may have noticed that I haven't been providing linux builds since the very early releases.
Originally this was because I got basically zero feedback on the initial linux release and decided to only do future ones should anyone specifically ask for it. Well the subject came up recently and I built a linux version only to discover that it's currently semi-broken.
There are some things that I knew were just not going to work (obviously there's no support for Windows built-in text-to-speech in linux), but several plugins display no results, and the new custom criteria don't work at all. I don't consider either of these issues insurmountable, but it's going to require a nontrivial investment of time on my part to keep a linux build working. I'm not writing it off entirely yet, but in light of the lack of feedback I got on the initial release linux support is currently the lowest of all my low priorities.

Now all that's left for me to do is find time to actually work on it. :D

edit: My god blocks of text in blinding-white on total-black is hard on the eyes.
 
Last edited:
Some good news for the few of you who might care. Custom criteria are now working in the linux build.

Still having issues with some plugins not generating output, but it'll get there.
 
A hopefully small request:
{ "timestamp":"2021-10-03T21:47:44Z", "event":"SAASignalsFound", "BodyName":"Eotchopt KX-U e2-1661 A 2 A Ring", "SystemAddress":7135352138076, "BodyID":10, "Signals":[ { "Type":"Monazite", "Count":1 } ] }
Please, please, pretty please...? :giggle:
 
A hopefully small request:

Please, please, pretty please...? :giggle:
I assume you're requesting a plugin that notifies of the content of a DSS ring scan so you know all the signal types without having to check your left hand panel?

If you are then this will be part of the Prospector plugin which I'll release... at some point.

If you are not then I have no idea what you're asking for. :D
 
Well... Not sure about the whole plugin. Not an advanced miner. If I could get a "signals" collection with ability to iterate through Type attribute, I'd be more than happy. And if I could also read Count value, I'd be more than more than happy. :giggle:
 
Well... Not sure about the whole plugin. Not an advanced miner. If I could get a "signals" collection with ability to iterate through Type attribute, I'd be more than happy. And if I could also read Count value, I'd be more than more than happy. :giggle:
Oh, as in making it available to custom criteria? Explorer's custom criteria operates on the information available at the time of the FSS scan. You wouldn't have this until long after.
 
So I believe I have the close orbit, shepherd moon, and close ring proximity checks updated to use the new data from the ScanBaryCentre event... but I haven't encountered anything that would trigger those checks since update 7.

Does anyone have a journal file from 2021-09-22 or later in which they encountered a binary that should trigger one of those checks? And if so would you be able to pass it along to me so I can test my changes?
 
for sh#ts and giggles I downloaded some more of the official MS Windows voice packs... and now Explorer lists Microsoft Hazel and Microsoft Haruka (though she speaks Japanese which I cannot understand, she sounds awesome!) LOL
Weirdly some of the other voices do not get listed in Explorer. hmm
1633420455044.png
 
Last edited:
Back
Top Bottom