Closed Darkcyde13 closed 1 year ago
Since the Scan
events are written immediately after the NavBeaconScan
event, a test triggered by a NavBeaconScan
would not yet have incorporated the Scan
event data and your results likely reflect just the data which is available from EDSM. EDSM does not provide any data about whether a body is already discovered or already mapped (though we can infer that bodies from EDSM have already been discovered at least).
Testing using a system I've visited many times and have previously fully scanned:
{set reportSystem to SystemDetails("Diaguandri")}
{for body in reportSystem.bodies:
{body.name} - {if body.alreadydiscovered: "true" |else: "false"} - {if body.alreadymapped: "true" |else: "false"}
}
Diaguandri A - true - false
Diaguandri B - true - false
Diaguandri C - true - false
Diaguandri B 1 - true - false
Diaguandri B 2 - true - false
Diaguandri AB 1 - true - false
Diaguandri AB 2 - true - false
Diaguandri AB 3 - true - false
Diaguandri C 1 - true - false
Diaguandri C 2 - true - false
Diaguandri C 3 - true - false
Diaguandri C 4 - true - false
I've also been to Diaguandri many times (as it's the best place to get ships and outfitting), so I ran your code and got exactly the same result as you have. This is still wrong though, as all the bodies have been mapped by other players, so the second check for each body should also be 'true', as well as the first check.
Considering the alreadymapped
property says:
alreadymapped - whether another commander has already submitted mapping data for the body to Universal Cartographics (scan required to fill this value)
then the above test should result in true - true
for both of us. If not, what am I missing here?
As for my original test, I manually ran the Bodies to map
script several times, and many minutes, after my scan of the nav beacon. Even if the data takes a few seconds to populate, testing after 5-10 minutes should not have resulted in the alreadymapped
property being 'void'. Having loaded into game today, I'm now getting the same results as we both have for Diaguandri, true - false
, yet all bodies have been mapped by other players, as is evident from the Journal section in my post above.
If the description for alreadymapped
is correct, then we shold both have been getting true - true
in our tests, but that is clearly not the case.
I'm going to see if I can find some other systems in the bubble that I've not visited before, and see what happens. I'm wondering if I do need a restart of EDDI for the alreadymapped
to be anything other than void.
So I've found a few systems, with mixed results.
Test code:
{set reportSystem to SystemDetails(system.systemname)}
{for body in reportSystem.bodies:
{body.name} - {if body.alreadydiscovered: "true" |else: "false"} - {if body.alreadymapped: "true" |else: "false"}
}
Herculis Sector LX-U b2-2 - Scanned all bodies. Ran test code. All bodies resulted in true - true
. This is as expected.
Uzbekree - Already visited but I scanned the nav beacon anyway. Ran test code after 30 seconds. All bodies resulted in false - false
even though all have been mapped.
Herculis Sector MX-U b2-1 - Already visited sometime in the past, but don't know if I had scanned the nav beacon or used the FSS. Ran test code. The single planet resulted in true - false
, but has been mapped.
Alrai Sector BG-X b1-4 - 1st visit. Scanned 6 bodies out of 12 and ran the test. The six I had scanned returned true - true
, as expected. The remaining bodies returned true - false
.
At this point I decided to update the test code to
{set reportSystem to SystemDetails(system.systemname)}
{for body in reportSystem.bodies:
{char(10)}
{body.name} -
{if body.alreadydiscovered = true: "true"
|elif body.alreadydiscovered = false: "false"
|else: void} -
{if body.alreadymapped = true: "true"
|elif body.alreadymapped = false: "false"
|else: void}.
}
Running it again, those that had said "false" were now void. I scanned the rest of the bodies, then all reported as true - true
.
Jumping to the Salara system, I scanned the nav beacon and waited a minute before running the test, with this result:
Salara A - "true" - "false". Salara B - "true" - "false". Salara A 1 - "true" - void. Salara A 1 a - "true" - void. Salara A 2 - "true" - void. Salara A 3 - "true" - void. Salara A 3 a - "true" - void. Salara A 4 - "true" - void. Salara A 4 a - "true" - void. Salara A 5 - "true" - void. Salara A 6 - "true" - void.
However, all the bodies in this system have been mapped, and all by the same player. I waited another 3 minutes and ran the test again, with exactly the same result. I reloaded EDDI, and got the same. I tried quitting ED to the main menu, reloaded EDDI, logged back into game, but got the same. So I quit ED to desktop, reloaded EDDI, reloaded ED, and got the same again.
I'm beginning to think that if you manually scan the bodies in a system with the FSS, then it all works as expected, but if you scan the nav beacon then things don't work correctly.
As for why Uzbekree reports as false - false
I think that's because none of the bodies have the 'discovered by' tag, meaning (I guess) that this is an original, already known system to the Pilots Federation. However, it should still report as false - true
as they are all mapped by players.
I went to Jeti, scanned the nav beacon, waited a couple of minutes and ran the test. This resulted in all planets being true - void
, with the star true - false
.
Finally, I found a populated system on the edge of the bubble, with a nav beacon, but I could also use the FSS. I ran the test first, after a honk, to get a base line. All the planets/moons reported as true - void
, with the star true - false
' So I manually scanned four bodies. 1, 2, 7 & 8. Ran the test again, and these bodies had become true - true
. I then scanned the nav beacon, and then they all became true - true
.
I'm wondering if, when it's possible to use the FSS to scan, then bodies will report correctly no matter how you obtain the data, but if the bodies are already known the the Pilots Federation (so you can't use the FSS on them) then there is a problem?
To be honest, this is kinda doing my head in, with what does and doesn't seem to work. It's certainly given me a headach tonight...
Results when I jumped into a system, scanned the nav beacon, and then checked the results:
Oho Bajo - true - false.
Oho Bajo 1 - true - true.
Oho Bajo 2 - true - true.
Oho Bajo 3 - true - true.
Oho Bajo 3 a - true - true.
Oho Bajo 3 b - true - true.
Oho Bajo 3 c - true - true.
Oho Bajo 3 d - true - true.
Oho Bajo 3 e - true - true.
Oho Bajo 4 - true - true.
Oho Bajo 4 a - true - true.
Oho Bajo 4 b - true - true.
Oho Bajo 4 c - true - true.
Oho Bajo 4 d - true - true.
Oho Bajo 4 e - true - true.
Oho Bajo 4 f - true - true.
The results persist after I jump several jumps away and then re-check the data.
I've just been to Oho Bajo (as it was only a couple of jumps away from where I was) to double check what I get. I get exactly the same as you, just as I expected I would. This still fits with what I've reported above though.
If a system can be FSS scanned, then it will work as expected, no matter if you scan the nav beacon or manually scan the bodies yourself. Oho Bajo fits this criteria. I also found another system just like this on my way there, Ekonir. Try that and you will get the same result as Oho Bajo. Velingai is nearby, and that's the same.
It seems that if a system is already in the UC database (so you can't manually scan with FSS), then scanning a nav beacon will not fill out the mapped property, it will remain as 'void'. Even if they have a 'first mapped by' tag in the system map, they will not populate the 'alreadymapped' property.
Try these systems to see what I mean: Nakulha FT Ceti (bodies 4 & 7 are stars, so automatically populate with 'false') Iah Bulu (for some reason, A3 is 'true' for me, but nothing else is, but I scanned this a long time ago)
For Nakulha, it was my first visit. After the 'honk' the FSS was fully populated (so I couldn't FSS scan anything), The system map shows 'first mapped by', but no 'first discovered by' tags. Running the test, the stars were true - false
, and the bodies true - void
, as expected. Dropping in and scanning the nav beacon gave the same results, nothing changed.
Here's the Journal section for the nav beacon scan:
Journal section for Nakulha Nav Beacon.txt
You can see that both 'first ... by' fields have either true or false in them. There were no entries in the EDDI log for this timestamp, but I'm not sure if there should be or not. Travelling to other systems, and waiting over 30 minutes, still resulted in true - void
for this system.
The following two systems are always 'void' for me, but I can't remember what their status was before I scanned them some time ago. These do have both 'first ... by' tags, yet still exhibit this problem (for me anyway): Gabjaujavas Col 285 Sector PY-R d4-140 It's possible these were 'first discovered by' back in the early days before these became populated systems, but that's just a guess, and I'm not sure that's even relevant.
Something is not right somewhere. Whether that's my end or a bug in EDDI, I don't know, but so far you've managed to get the same results I have. Diaguandri is a good example, where we both get true - false
even though all bodies have been mapped. However, I can't see why scanning a nav beacon in a system where the bodies are already known to UC would fail, (especially as the Journal has those fields correctly populated), and scanning a nav beacon where you can also manually FSS scan works as expected.
As we are both getting the same results, and the alreadymapped
property is failing with some systems, this will render it ineffective for use in the 'Bodies to map' script as planned.
Hmm. Taking Nakulha BC 4 a
as an example the scan event does parse correctly (e.g. with alreadydiscovered
false and alreadymapped
true) to match the journal (though I'm very tempted to force alreadydiscovered
to true for all nav beacon scans). The only times I've seen info like you've described is when reviewing EDSM data for bodies not yet scanned. I'll visit the systems you mentioned and see if I can figure anything further out though.
I think I've got something that fits the observations. If a Discovery Scan indicates that a system is 100% explored, we set a scanned DateTime value on those bodies at that time (presuming that they were scanned at a time where EDDI was not monitoring the journals).
When a body is subsequently scanned (like during a Nav Beacon scan of a fully discovered system) we've been checking the value of that scanned DateTime and haven't been saving the data when the scanned DateTime value indicated that the body had already been scanned previously. This appears to have been an attempt to protect player-specific metadata and prevent data loss (e.g. for info about the player's prior scan and mapping states for that body) from being lost, but it also prevents updating data on a nav beacon scan of a fully discovered system. I have another method that I can adapt to update the body without that data loss which will make this conditional vestigial.
I've just been trying to do the current 'gold rush' CG (poorly, as I have a fractured wrist), and i've noticed that there is a body worth mapping in Laedla (Mansfiled Colony) that has been mapped, but the .alreadymapped
property for it is void (null in the EDDI database). So I was wondering if this issue could still be happening?
I'd look into this deeper, but I can't do much before I need to rest my wrist, and trying to fly with my left hand only is quite difficult. I'll go scan the nav beacon in the system and see what happens, but I thought I'd just make you aware that I found a body where that property is still null when it shouldn't be.
Don't worry, looks like the nav scan fixed it.
I think this system is one already known to the Pilots federation Database, so I don't think I had scanned anything, which would explain why that property wasn't populated.
Sorry about that, I guess my pain meds are messing with my head. :/
I'm glad it was a false alarm and sorry that your pain meds are giving you trouble. I hope the wrist heals quickly.
What's Wrong (please be as specific as possible)
Expected
The
alreadymapped
property of bodies to be true or false after a system scan or nav beacon scan.Observed
Stars have the property set to false, but for other bodies it is always void.
Steps to reproduce
alreadymapped
property is false for stars, but always void for planets and moons.Configuration
My Investigation
Investigation Notes
I was looking over the 'Bodies to map' script after our discussion in #2490 and wanted to test out the suggested fix using
body.alreadymapped
. However, no matter what I tried, I couldn't get things working as I expected. Upon further investigation, I have discovered that thealreadymapped
property for planets and moons never seems to be populated, and is always void.I added this line at the top of the
{for body in reportSystem.bodies:
loop:{body.name} - {dump(body.alreadydiscovered)} - {dump(body.alreadymapped)},
After scanning a nav beacon of a system I'd never been to before, running the test resulted in:
I had a quick look for a system that I needed to use the FSS, but can't find one in my immediate vicinity.
I also tried manually setting
reportSystem
to systems I know I've fully scanned and mapped some bodies, but I get the same result.So, it seems that the property is never populated, at least not from a honk and nav beacon scan anyway.
I notice from the player Journal that all of the bodies have the
WasDiscovered
property set to false, but I'm assuming this is probably because it is an already known system to the Pilots Federation.EDDI Logs
My log of the session (but before I logged out): eddi.zip
Player journals
Journal entry for the nav beacon scan: