MattG's Observatory plugins

That picture is outdated. EDDiscovery uses the formula Matt provided here. You'll also find a value table there showing that EDD gets it right and Matt isn't accounting the first mapping (I still think it's the typo in the DLL).
 
That picture is outdated. EDDiscovery uses the formula Matt provided here. You'll also find a value table there showing that EDD gets it right and Matt isn't accounting the first mapping (I still think it's the typo in the DLL).

Ah ok, maybe time to stop referencing that old chart (y)
 
Great tool, really happy.

Once comment: can the value reporting be wrong? I have visited a system with Water World, that has already been discovered, but not mapped. Your plugin reported maximum value of 567k, while EDDiscovery reported over 1.379M... have a look...

Are you able to provide the line from the journal showing the Scan event for this body? Or, failing that, can you get a screenshot of the system map with this body highlighted please?

@Eahlstan my variable naming probably needs a lot to be desired but I don't believe it's the issue here (I reserve the right to edit this line later though :))

I calculate the value as:
Code:
GetPlanetValue(k + tk, Mass, IsFirstDiscoverer, IsMapped, IsFirstMapper, IsMappedEfficiently, IsOdyssey, false)

We don't need to dig into each value - we can tell all of them except IsFirstMapper are correct based on the current and potential max values shown in screenshot. For some reason IsFirstMapper gets sent through as false.

But IsFirstMapper is simple:
Code:
public bool IsFirstMapper { get { return !WasMapped && IsMapped; } }
We already know IsMapped is true. WasMapped is passed through from the Observatory Scan object. For the above to return false while IsMapped is true, WasMapped would have to be true.
The only other place it could be wrong is in GetPlanetValue, but that looks right to me:
Code:
            if (isMapped)
            {
                if (isFirstDiscoverer && isFirstMapped)
                {
                    mappingMultiplier = MAPPING_MULTIPLIER_FD_FM;
                }
                else if (isFirstMapped)
                {
                    mappingMultiplier = MAPPING_MULTIPLIER_FM;
                }
                else
                {
                    mappingMultiplier = MAPPING_MULTIPLIER;
                }
            }
mappingMultiplier ends up as MAPPING_MULTIPLIER not MAPPING_MULTIPLIER_FM meaning isFirstMapped (or IsFirstMapper as it's sent to the func) is false.


So my feeling is that body is already mapped - but FSS doesn't always show mapper and perhaps that's what happened here (hence asking for Scan or SysMap screenshot)
 
Yeah, that GetPlanetValue thing is was I was looking at. Let me express my thinking in another way:

You're setting isFirstMapper but in GPV you're querying isFirstMapped, that's why I think it's not working, but then again: I might be totally wrong :)

EDD would show if it was already mapped in the info box and wouldn't show a firstMapped value, so there will be no "wasMapped":true in the journal of Sleepy.
Screenshot 2021-09-30 120113.JPG
 
Last edited:
Yeah, that GetPlanetValue thing is was I was looking at. Let me express my thinking in another way:

You're setting isFirstMapper but in GPV you're querying isFirstMapped, that's why I think it's not working, but then again: I might be totally wrong :)
The ones in the func are just local names/references passed to the func; as long as the func uses those names it's fine (albeit arguably misleading and more difficult to read). I could change the references in GPV from isFirstMapped to fortyNineWibbles and as long as the rest of GPV knows that's what it's called it should work. e.g.:
Code:
a = sum(b,c);
func sum(int fortyNineWibbles, int q)
{
  return fortyNineWibbles+q;
}
(I did it this way partly because I lifted the code from a different project and partly to allow me to calculate different possible values for the same body)
 
Care to share what went wrong? 🙃
So the call to GPV I pasted was the "current value" one, but the max possible uses a very slightly different call - it passes TRUE to the isMapped argument of GPV. But it was also passing the IsFirstMapper property to the isFirstMapped argument - however, as I pasted, IsFirstMapper relies on IsMapped being true so in that scenario it'd only be right after mapping - I think the old broken version would've updated with the correct value for max if you mapped one of those bodies. But actually, it should'nt have have been relying on IsMapped, so I changed "IsFirstMapper" to "!WasMapped" and voila.
(Bet you're glad you asked now :))
 
Thank you.
(Yes I am, having done many stupid mistakes myself I always try to see what others do wrong to try and not make the same or similiar mistakes myself (I'm a coding noob).)
 
I had an issue with the new Observatory Core build that I think was specific to me, but none the less I've rebuilt all the plugins against the latest Observatory Framework. If you encounter any issues with new Observatory and my plugins, I strongly suggest updating.

This latest release of Observatory Core should also mean Telegram plugin isn't too far away.
 
I had an issue with the new Observatory Core build that I think was specific to me, but none the less I've rebuilt all the plugins against the latest Observatory Framework. If you encounter any issues with new Observatory and my plugins, I strongly suggest updating.

This latest release of Observatory Core should also mean Telegram plugin isn't too far away.

I have an issue where it just crashes, Vithigar updated it but still crashing, so will download these new plugin versions and see what happens.
 
MattG and I talk frequently elsewhere, but it just occurred to me that I have not once appeared in this thread!

So I'd like to extend my thanks to him here. I quite enjoy seeing someone else use the plugin framework. It's been quite helpful for my own bugfinding efforts, and makes Observatory a better tool!

1634642502947.png
 
I'd really like to thank both of you, @MattG and @Vithigar for the new program and plugins. Although I've not installed the new version, I'm really looking forward to using it on my next exploration journey.

o7, cmdrs.
 
jawdrop.gif

There is a BoxelStats plugin?!?!
And I just spent considerable time yesterday to go back through a couple of visited boxels and many systems to make me my own little max. He% and ELW/systems spreadsheet...
Well, I guess the plugin would not have helped me with past boxels anyway, but for the future it will help me with the current boxel. Does it only look at the current session, or also past journals or even EDSM data?
 
Last edited:
View attachment 269611
There is a BoxelStats plugin?!?!
And I just spend considerable time yesterday to go back through a couple of visited boxels and many systems to make me my own little max. He% and ELW/systems spreadsheet...
Well, I guess the plugin would not have helped me with past boxels anyway, but for the future it would help me with the current boxel. Does it only look at the current session, or also past journals or even EDSM data?

If you click "Read All" in Observatory Core, it'll read everything from your journal history - so if you have all your journals, you can have your entire boxel stats history. You can configure the minimum systems scanned in a boxel before it's stats are displayed in the settings. They're ordered by most recently visited.
 
Finally finished the Telegram plugin, you can grab it from here

To use it, you will need to
  • Have Telegram, and a Telegram account (duh)
  • A bot of your own - easy enough to create, see BotFather instructions
  • Once you have your bot, send it a message (say hello or something) - this is necessary to create a recent chat history for the plugin to find
  • Your bot will have an API key that looks like 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw - enter this in the Telegram settings
  • After that, tick the Force ChatID Update tickbox
  • If everything worked, you should get a test message from the plugin in Telegram

As an added bonus, the source of this one is available here
 
Back
Top Bottom