Release EDDI 3.3 - Bring your cockpit to life

Can someone plz help me? I'd like to be able to trigger the script "Bodies to map" via Voice Attack, but it doesn't seem to do anything at all?

Also the "test" button doesn't do anything, but I already heard EDDI reporting this ingame after mapping any planet.

EDIT: OK, I think it works... but I've still got another question then: is there a way to make EDDI answer when there are no worthwhile planets at all in a system? I think, in the script it will only say so when you have mapped at least one planet?
 
Last edited:
Can someone plz help me? I'd like to be able to trigger the script "Bodies to map" via Voice Attack, but it doesn't seem to do anything at all?

Also the "test" button doesn't do anything, but I already heard EDDI reporting this ingame after mapping any planet.

EDIT: OK, I think it works... but I've still got another question then: is there a way to make EDDI answer when there are no worthwhile planets at all in a system? I think, in the script it will only say so when you have mapped at least one planet?
Here's my version of the 'Bodies to map' script:
Code:
{_ Preferences _}
{F("Body Mapping Preferences")}

{_ Fetch from context _}
{set reportSystem to SystemDetails(state.eddi_context_system_name)}
{if !reportSystem:
    {set reportSystem to SystemDetails(system.systemname)}
}

{_ Identify bodies worth mapping _}
{set totalBodies to reportSystem.totalbodies}
{_ set scannedBodies to len(reportSystem.bodies)}
{set scannedBodies to reportSystem.scannedbodies}


{set toMapList to []}
{set mappedBodies to 0}
{set scannedStars to 0}

{for body in reportSystem.bodies:
    {if body.mapped:
        {set mappedBodies to mappedBodies + 1}
    |elif body.bodyType.invariantName = "Star":
        {set scannedStars to scannedStars + 1}
    |elif body.terraformState.invariantName != "Not terraformable":
        {if reportTerraformables && !toMapList[body.shortname]: 
            {set toMapList to cat(toMapList, [body.shortname])}
        }
    |elif reportPlanetTypes[body.planetClass.invariantName] || body.estimatedvalue > highValueThreshold:
        {if !toMapList[body.shortname]: 
            {set toMapList to cat(toMapList, [body.shortname])}
        } 
    }
}
{set toMapCount to len(toMapList)}

{_ Begin speaking _}
{set worthy to OneOf("worthwhile", "interesting", "notable", "noteworthy")}

{if toMapCount > 0:

    {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
        {OneOf("Additionally", "Also")},
    |elif len(toMapList) = 1 && mappedBodies = 0:
        Only
    }

    {if toMapCount = 1: Body |else: Bodies}

    {set cur to 0}
    {set length to toMapCount - 1}
    {while cur < toMapCount:
        {P(toMapList[cur], "body")}
        {set cur to cur + 1}
        {if cur = length: and
        |elif cur < length:,
        }
    }

    {if toMapCount = 1: is |else: are}
    {if event.type = "Body mapped": also}
    {if toMapCount = 1: a}
    {OneOf("recommended", "good", "viable")}
    {set candidates to when(toMapCount = 1, "candidate", "candidates")}
    {OneOf("{candidates} for mapping", "{candidates} to map", "mapping {candidates}")}.

|elif mappedBodies > 0:
    {OneOf("You have mapped all {if mappedBodies < (totalBodies - scannedStars): {worthy}}
            bodies scanned {if scannedBodies < totalBodies: so far |else: in this system}.",
           "All {OneOf('{if mappedBodies < (totalBodies - scannedStars): {worthy}} bodies',
                       'bodies {if mappedBodies < (totalBodies - scannedStars): of interest}')}
            {if scannedBodies < totalBodies: scanned so far |else: in this system}
            {OneOf('have been mapped', 'are now mapped')}."
    )}
|elif reportNoBodiesToMap = true:
    {if scannedBodies < totalBodies:
        You have {OneOf("not yet scanned", "yet to scan")}
        any {worthy} bodies in this system
    |else:
        {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
            However,
        }

        {OneOf("There are no", "You have not found any")}
        {if totalBodies - scannedStars > 0:
            {Occasionally(2, "{worthy}")} bodies 
            {OneOf("to map", "worth mapping")}
        |else:
            mappable bodies
        }

        {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
            here
        |else:
            in this system
        }
    }.
}
This will tell you if there is nothing worth mapping.

Note that I have removed the preferences section and placed them in a separate script so they apply to other exploration scripts. So if you copy my version, just remember to keep the preferences section at the top of your existing one (alternatively, you could create a preferences script like I have).

Also note, I have created a new preference: 'reportNoBodiesToMap', and this needs to be set to True to allow the script to tell you when there is nothing to map. You will need to add this to your 'preferences' section.

Hope that helps with what you're looking for. Any questions, please ask! :)
 
Here's my version of the 'Bodies to map' script:
Code:
{_ Preferences _}
{F("Body Mapping Preferences")}

{_ Fetch from context _}
{set reportSystem to SystemDetails(state.eddi_context_system_name)}
{if !reportSystem:
    {set reportSystem to SystemDetails(system.systemname)}
}

{_ Identify bodies worth mapping _}
{set totalBodies to reportSystem.totalbodies}
{_ set scannedBodies to len(reportSystem.bodies)}
{set scannedBodies to reportSystem.scannedbodies}


{set toMapList to []}
{set mappedBodies to 0}
{set scannedStars to 0}

{for body in reportSystem.bodies:
    {if body.mapped:
        {set mappedBodies to mappedBodies + 1}
    |elif body.bodyType.invariantName = "Star":
        {set scannedStars to scannedStars + 1}
    |elif body.terraformState.invariantName != "Not terraformable":
        {if reportTerraformables && !toMapList[body.shortname]:
            {set toMapList to cat(toMapList, [body.shortname])}
        }
    |elif reportPlanetTypes[body.planetClass.invariantName] || body.estimatedvalue > highValueThreshold:
        {if !toMapList[body.shortname]:
            {set toMapList to cat(toMapList, [body.shortname])}
        }
    }
}
{set toMapCount to len(toMapList)}

{_ Begin speaking _}
{set worthy to OneOf("worthwhile", "interesting", "notable", "noteworthy")}

{if toMapCount > 0:

    {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
        {OneOf("Additionally", "Also")},
    |elif len(toMapList) = 1 && mappedBodies = 0:
        Only
    }

    {if toMapCount = 1: Body |else: Bodies}

    {set cur to 0}
    {set length to toMapCount - 1}
    {while cur < toMapCount:
        {P(toMapList[cur], "body")}
        {set cur to cur + 1}
        {if cur = length: and
        |elif cur < length:,
        }
    }

    {if toMapCount = 1: is |else: are}
    {if event.type = "Body mapped": also}
    {if toMapCount = 1: a}
    {OneOf("recommended", "good", "viable")}
    {set candidates to when(toMapCount = 1, "candidate", "candidates")}
    {OneOf("{candidates} for mapping", "{candidates} to map", "mapping {candidates}")}.

|elif mappedBodies > 0:
    {OneOf("You have mapped all {if mappedBodies < (totalBodies - scannedStars): {worthy}}
            bodies scanned {if scannedBodies < totalBodies: so far |else: in this system}.",
           "All {OneOf('{if mappedBodies < (totalBodies - scannedStars): {worthy}} bodies',
                       'bodies {if mappedBodies < (totalBodies - scannedStars): of interest}')}
            {if scannedBodies < totalBodies: scanned so far |else: in this system}
            {OneOf('have been mapped', 'are now mapped')}."
    )}
|elif reportNoBodiesToMap = true:
    {if scannedBodies < totalBodies:
        You have {OneOf("not yet scanned", "yet to scan")}
        any {worthy} bodies in this system
    |else:
        {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
            However,
        }

        {OneOf("There are no", "You have not found any")}
        {if totalBodies - scannedStars > 0:
            {Occasionally(2, "{worthy}")} bodies
            {OneOf("to map", "worth mapping")}
        |else:
            mappable bodies
        }

        {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
            here
        |else:
            in this system
        }
    }.
}
This will tell you if there is nothing worth mapping.

Note that I have removed the preferences section and placed them in a separate script so they apply to other exploration scripts. So if you copy my version, just remember to keep the preferences section at the top of your existing one (alternatively, you could create a preferences script like I have).

Also note, I have created a new preference: 'reportNoBodiesToMap', and this needs to be set to True to allow the script to tell you when there is nothing to map. You will need to add this to your 'preferences' section.

Hope that helps with what you're looking for. Any questions, please ask! :)
Wow! Thank you very much... will try this out later :)

EDIT: It works! Thank you! :D
 
Last edited:
I have no way to reproduce what i think is a tiny bug, so please can someone check if it is real or just me being sleepy?

I was landing my anaconda on a moon and felt asleep for a moment while descending. So i've hit the ground without shields a tad too fast, lost 40% of hull, extracted the landing gears and finally landed, taking other 20% of damage , remaining with 43% of hull.

EDDI voice was appropriately garbled.

I've created some limpets are repaired the hull, one limpet at time.

While the voice was not garbled, it still was'nt like the usual, i can't tell if the echo was a bit too much, or some other effect was active, anyway it sounded "not fully resetted to default". Hard to explain.

As i am near to Beagle Point with a far amount of valuable data, i'd avoid to repeat this experience.... could some of you try to reproduce it?
If you think that it could be related to my ship build (hull reinforcement etc) then i can share the design.

Thanks.
 
Is reportbody.reserves returning the english strings "Pristine" or "Major", or the localized strings?
In the latter case, there's a way to get the non-translated strings?

(i cannot debug it right now, that's why i'm asking)
 
Another question:
there's a way to know what kind of planets there's in a system BEFORE scanning? or at least what kind of signals (giants, ammonia, waterworld, etc) the scanner will show?
 
Another question:
there's a way to know what kind of planets there's in a system BEFORE scanning? or at least what kind of signals (giants, ammonia, waterworld, etc) the scanner will show?
As far as I'm aware, the only way to find out, would be to get the info from EDSM after someone has already scanned the system and sent the data to EDSM. This should then be retrievable in EDDI. But if you're out exploring, you probably won't want to go to systems that someone else has already been to and scanned.

The in-game way to find out, is to look at the signals on the scanner. The positions of the 'blips' show roughly what type of body they relate to. So gas giants are on the right hand end, with water world/ammonia/earth-like somewhere around the middle right, and rocky & icy worlds more to the middle and left middle. The left hand side is mostly for artificial signals.
 
The in-game way to find out, is to look at the signals on the scanner. The positions of the 'blips' show roughly what type of body they relate to. So gas giants are on the right hand end, with water world/ammonia/earth-like somewhere around the middle right, and rocky & icy worlds more to the middle and left middle. The left hand side is mostly for artificial signals.
Yup, i was hoping that EDDI had access to these infos, so while i scoop fuel i can hear if it's worthy to stop to scan :)
 
I have no way to reproduce what i think is a tiny bug, so please can someone check if it is real or just me being sleepy?

I was landing my anaconda on a moon and felt asleep for a moment while descending. So i've hit the ground without shields a tad too fast, lost 40% of hull, extracted the landing gears and finally landed, taking other 20% of damage , remaining with 43% of hull.

EDDI voice was appropriately garbled.

I've created some limpets are repaired the hull, one limpet at time.

While the voice was not garbled, it still was'nt like the usual, i can't tell if the echo was a bit too much, or some other effect was active, anyway it sounded "not fully resetted to default". Hard to explain.

As i am near to Beagle Point with a far amount of valuable data, i'd avoid to repeat this experience.... could some of you try to reproduce it?
If you think that it could be related to my ship build (hull reinforcement etc) then i can share the design.

Thanks.
By default, EDDI changes the voice when the ship is damaged. This can be turned off in the Text to Speech tab.
 
By default, EDDI changes the voice when the ship is damaged. This can be turned off in the Text to Speech tab.
Sorry for not being clear enough: the problem is that the voice did'nt seems back to normal after the limpets repaired the hull to 100%.
 
I've also got another "problem": EDDI keeps reporting that I have a fine in a system and where I can pay it, although there are no fines at. I even tried to go to a station and see if there actually is a fine on my ship, but nope.

Can I do something to manually give EDDI an update?

Also: Is it possible to somehow tell EDDI that in the destination system there are 0 jumps to go? :) Would be great if it said something like "You've arrived at your destination" instead or whatever.
 
Last edited:
I've also got another "problem": EDDI keeps reporting that I have a fine in a system and where I can pay it, although there are no fines at. I even tried to go to a station and see if there actually is a fine on my ship, but nope.

Can I do something to manually give EDDI an update?

Also: Is it possible to somehow tell EDDI that in the destination system there are 0 jumps to go? :) Would be great if it said something like "You've arrived at your destination" instead or whatever.
You can manually update the crime monitor from EDDI's UI and I've been working on some updates to the accuracy of the crime monitor so that it tracks better (though bonds are still reported in the journal at pre-buff amounts so still under-reported).

Regarding the destination system, try dropping this into your Music event?
Code:
{if event.musictrack = "DestinationFromHyperspace":
    You have arrived.
}
 
Here's my version of the 'Bodies to map' script:
Code:
...
    {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
        {OneOf("Additionally", "Also")},
    |elif len(toMapList) = 1 && mappedBodies = 0:
        Only
    }
...
        {if hasSRV && ((system.isgold && reportGoldSystems) || (system.isgreen && reportGreenSystems)):
            However,
        }
...
What's the meaning of these two condition in your script? I mean: i see how hasSRV and reportGreenSystems are variable you set elsewhere... but i would like to know when that condition happens :)
 
What's the meaning of these two condition in your script? I mean: i see how hasSRV and reportGreenSystems are variable you set elsewhere... but i would like to know when that condition happens :)
These are set in 'System scan complete', and in that event script, there is a call to 'Bodies to map'. The code you mention, is there to make the flow of speech sound more natural when 'Bodies to map' is run from 'System scan complete'. If it is run from another script, or executed by itself, then they help to change the speech to sound better when it is not following on from 'System scan complete'. ;)
 
Yup, i was hoping that EDDI had access to these infos, so while i scoop fuel i can hear if it's worthy to stop to scan :)
I've updated my 'Bodies Exploration Report' script to include things like the number and type of bodies in a system (assuming they are known to EDSM). I'm getting output like this now:

Synuefai P L dash D c 0 is unpopulated. You have yet to visit this system, however it has previously been visited by other Commanders, and contains: 1 Class 2 gas giant, 10 Icy bodies, 1 unclassified body and 1 High metal content world.
Oochost J P dash A c 29 dash 0 is unpopulated. You have not yet visited this system, however it has already been visited by other Commanders. So far, no bodies have been reported.
Oochost D C dash B d 14 dash 0 is unpopulated. You have not yet visited this system, but it has been previously visited by other Commanders, and is comprised of: 3 High metal content worlds and 3 Rocky ice worlds. 2 of these are worth scanning and mapping.

I've got it working so you can ask in VA for the current system, or one you have selected on the Galaxy Map (Odyssey only). Of course you can set the script to run automatically after a jump, if you like, by adding a call to it in the 'Jumped' script.

I'm just waiting for the next version of EDDI which should hopefully have a fix in for the setting of the 'odyssey' game state variable. My VA command relies on this to work properly, so at the moment, I've hardcoded it to work in a way that will break it when the variable is fixed. Obviously I don't want to release my update if it will break with the next version of EDDI. :)

@T'kael in the first output above, EDDI is reporting a planettype of "None" (which I've labelled as 'unclassified' for now). This is actually a "Gas giant with ammonia-based life", as I found by checking EDSM. This is body 2 in Synuefai PL-D C0. I've also noticed the same in Kokobii, body A4 (in the bubble if you want to check it out). That is a "Gas giant with water-based life", but is reported as a planettype of "None". Is this a bug in EDDI? Shouldn't the planettype for these be correct, and not "None"? I can open a ticket if needed.
....
That output was before I visited the system. However, after I visited and scanned the two gas giants, I now get this:
Synuefai P L dash D c 0 is unpopulated. You have only partially scanned this system, with 11 bodies remaining, and no bodies worth mapping have been detected yet. This system has already been visited by other Commanders, and is comprised of: 1 Class 2 gas giant, 10 Icy bodies, 1 Gas giant with ammonia based life and 1 High metal content world.
It seems that the planettype isn't set correctly when retrieved from EDSM, but is correct after scanning it myself. From the two examples I've found, it seems to happen with "gas giants with X-based life".
 
I've updated my 'Bodies Exploration Report' script to include things like the number and type of bodies in a system (assuming they are known to EDSM). I'm getting output like this now:





I've got it working so you can ask in VA for the current system, or one you have selected on the Galaxy Map (Odyssey only). Of course you can set the script to run automatically after a jump, if you like, by adding a call to it in the 'Jumped' script.

I'm just waiting for the next version of EDDI which should hopefully have a fix in for the setting of the 'odyssey' game state variable. My VA command relies on this to work properly, so at the moment, I've hardcoded it to work in a way that will break it when the variable is fixed. Obviously I don't want to release my update if it will break with the next version of EDDI. :)

@T'kael in the first output above, EDDI is reporting a planettype of "None" (which I've labelled as 'unclassified' for now). This is actually a "Gas giant with ammonia-based life", as I found by checking EDSM. This is body 2 in Synuefai PL-D C0. I've also noticed the same in Kokobii, body A4 (in the bubble if you want to check it out). That is a "Gas giant with water-based life", but is reported as a planettype of "None". Is this a bug in EDDI? Shouldn't the planettype for these be correct, and not "None"? I can open a ticket if needed.
....
That output was before I visited the system. However, after I visited and scanned the two gas giants, I now get this:

It seems that the planettype isn't set correctly when retrieved from EDSM, but is correct after scanning it myself. From the two examples I've found, it seems to happen with "gas giants with X-based life".
Noted. Looks like EDSM is reporting Gas giant with ammonia-based life while we expect Gas giant with ammonia based life (note the differing hyphen). Same for water based life. I'll fix it for the next release. o7
 
Is reportbody.reserves returning the english strings "Pristine" or "Major", or the localized strings?
In the latter case, there's a way to get the non-translated strings?

(i cannot debug it right now, that's why i'm asking)
reportbody.reserves returns the localized string.
reportbody.reserveLevel.invariantName should do the trick for the non-translated version.
 
Regarding the destination system, try dropping this into your Music event?
Code:
{if event.musictrack = "DestinationFromHyperspace":
    You have arrived.
}
Won't this play after every jump? What I meant was if you have a multiple jumps route, can you make EDDI say "You have arrived." instead of "You have ONE jump left" (which is also wrong) when reaching the destination system?

EDIT: Oh... and by the way. EDDI is such a great addition to the game! Is there a way to make a donation for all your time and efforts?
 
Last edited:
Top Bottom