Release EDDI Scripts and EDDI enabled VA Commands Thread

So, after an extraordinarily long time (over a year now) I've finally got around to releasing a new version of my EDDI and VA profiles. There are a LOT of updates made since I last posted them, so be sure to check out the change logs. I would normally post the latest changes here, but it's too much for a forum post.

I was going to post a version earlier in the year, but then decided to wait for Odyssey to come out. Now that a lot of it has been updated for Odyssey, I can finally release it. :)

I've tested it all as thoroughly as I can, but if you find anything wrong at all, please let me know and I'll see if I can fix it as soon as possible.

EDIT: I'm aware of a typo I made in the Location script. On line 34 it should say 'surface', not 'suface'. ;)
 

Attachments

  • Darkcyde's Defaults - 11-09-21.zip
    230.5 KB · Views: 276
Last edited:
So, after an extraordinarily long time (over a year now) I've finally got around to releasing a new version of my EDDI and VA profiles. There are a LOT updates made since I last posted them, so be sure to check out the change logs. I would normally post the latest changes here, but it's too much for a forum post.

I was going to post a version earlier in the year, but then decided to wait for Odyssey to come out. Now that a lot of it has been updated for Odyssey, I can finally release it. :)

I've tested it all as thoroughly as I can, but if you find anything wrong at all, please let me know and I'll see if I can fix it as soon as possible.
AWESOME!!!! Thanks for this one. I've been using your profile for almost a year now
 
Max speed is apparently possible to calculate but we don't specialize in analyzing your ship build like EDSY or Coriolis would so we can't currently offer that value through EDDI.
Actually, you sorta already offer that.

I have VA open EDDI, then just go to the ship monitor. You can then just sort by location and it will move your currently used ship to the top of the list.

Then just export it.

But the easiest way is to just take your hands off the controls and hit boost to see how fast it will go...

No voice input required
 
Actually, you sorta already offer that.

I have VA open EDDI, then just go to the ship monitor. You can then just sort by location and it will move your currently used ship to the top of the list.

Then just export it.

But the easiest way is to just take your hands off the controls and hit boost to see how fast it will go...

No voice input required
Sorta. We make it easy to pass data to the specialists and then let the specialists handle it from there.
And yes, a little practical testing would typically satisfy the question. :)
 
Small question for the team...

On my travels recently, I've noticed that for systems I already know about, or have purchased the system data for prior to arriving in the system, then EDDI thinks I haven't scanned any of the bodies in said systems. Technically, that's true, I've not scanned them, but I do know all about them, at least the data is in the Pilot Federation database on my ship anyway.

This is for systems that are already fully known, as in, the FSS shows all bodies as scanned after doing the 'honk', with nothing left to scan. It's not all systems though, just some of them. The thing is, there are no Journal entries if I try to scan them for the first time, after the 'honk'.

So the question is, is there any way of letting EDDI know that I already know about them? EDSM also thinks I don't know them, so that can't be used to get the info. The only thing I can think of is that maybe the API can tell EDDI that I already know about them. Is that possible at all, or will I be forever told that I've not scanned any bodies in systems that are technically fully scanned & discovered?
 
Small question for the team...

On my travels recently, I've noticed that for systems I already know about, or have purchased the system data for prior to arriving in the system, then EDDI thinks I haven't scanned any of the bodies in said systems. Technically, that's true, I've not scanned them, but I do know all about them, at least the data is in the Pilot Federation database on my ship anyway.

This is for systems that are already fully known, as in, the FSS shows all bodies as scanned after doing the 'honk', with nothing left to scan. It's not all systems though, just some of them. The thing is, there are no Journal entries if I try to scan them for the first time, after the 'honk'.

So the question is, is there any way of letting EDDI know that I already know about them? EDSM also thinks I don't know them, so that can't be used to get the info. The only thing I can think of is that maybe the API can tell EDDI that I already know about them. Is that possible at all, or will I be forever told that I've not scanned any bodies in systems that are technically fully scanned & discovered?
Hmm. You might check the alreadydiscovered property if you'd like to weed out bodies that are already known to the community?
 
Hmm. You might check the alreadydiscovered property if you'd like to weed out bodies that are already known to the community?
Thank you for the suggestion T'kael. However, that's not quite what I'm looking for. Also, according to the EDDI help, that only works if you scan a body first. And therein lies the problem, there are bodies that simply cannot ever be scanned, because you already know about them; they are already 'discovered' by you. Either by buying the system data on the GalMap, or they are simply already in your ships database.

I have a script that will run through all known bodies in a system and count how many you've already scanned, and how many you haven't yet, by checking the scanned property. For the systems that are already 'discovered', you are no longer able to scan any of the bodies, so in those systems EDDI will forever say you've not scanned anything yet, even though all bodies are already 'discovered' by you by buying the data, or simply already in your ships database.

So, as a hypothetical example, say you've never been to Sol. Your ship already has all the body info (or you buy it from the GalMap) and you go visit it for the first time. On arrival, you do the honk while in the FSS mode. The bar at the bottom then shows all bodies as the colored dot to show you know about them all. But EDDI still thinks you haven't scanned any of them (which is technically true), but because they are already showing as the dots, you just can't scan them in game and have EDDI think you've done it, because there is no Journal entry for 'body scanned' to inform it of this. Thus EDDI perpetually says you've never scanned anything there, no matter how much you try.

So, I was wondering if there is anything in the Frontier API that can retrieve such data, and let EDDI know that you already know about all the bodies in a system. If there is, then maybe get EDDI to check only on your first visit to a system, to find out if it's already known to you in-game, so that the API isn't spammed with requests.

Granted, this is more of an annoyance than a bug or major problem. It will really only affect systems in the bubble or Colonia, and should never happen when out exploring. I've also noticed that it doesn't affect all systems where you've bought the system data, only some of them. Likewise, there are systems in the bubble that still need a proper scan after the honk, too.
 
Thank you for the suggestion T'kael. However, that's not quite what I'm looking for. Also, according to the EDDI help, that only works if you scan a body first. And therein lies the problem, there are bodies that simply cannot ever be scanned, because you already know about them; they are already 'discovered' by you. Either by buying the system data on the GalMap, or they are simply already in your ships database.

I have a script that will run through all known bodies in a system and count how many you've already scanned, and how many you haven't yet, by checking the scanned property. For the systems that are already 'discovered', you are no longer able to scan any of the bodies, so in those systems EDDI will forever say you've not scanned anything yet, even though all bodies are already 'discovered' by you by buying the data, or simply already in your ships database.

So, as a hypothetical example, say you've never been to Sol. Your ship already has all the body info (or you buy it from the GalMap) and you go visit it for the first time. On arrival, you do the honk while in the FSS mode. The bar at the bottom then shows all bodies as the colored dot to show you know about them all. But EDDI still thinks you haven't scanned any of them (which is technically true), but because they are already showing as the dots, you just can't scan them in game and have EDDI think you've done it, because there is no Journal entry for 'body scanned' to inform it of this. Thus EDDI perpetually says you've never scanned anything there, no matter how much you try.

So, I was wondering if there is anything in the Frontier API that can retrieve such data, and let EDDI know that you already know about all the bodies in a system. If there is, then maybe get EDDI to check only on your first visit to a system, to find out if it's already known to you in-game, so that the API isn't spammed with requests.

Granted, this is more of an annoyance than a bug or major problem. It will really only affect systems in the bubble or Colonia, and should never happen when out exploring. I've also noticed that it doesn't affect all systems where you've bought the system data, only some of them. Likewise, there are systems in the bubble that still need a proper scan after the honk, too.
No, the Frontier API doesn't offer data like that. We need to rely on player journals and EDSM API for this. :unsure:
You might filter systems with populations, filter if you detect a nav beacon signal source, filter based on the role of the current ship, etc. but none of those are precisely what you are asking for. You can also scan a nav beacon to obtain a scan of all of the bodies in the system but that still requires a player action.
 
No, the Frontier API doesn't offer data like that. We need to rely on player journals and EDSM API for this. :unsure:
You might filter systems with populations, filter if you detect a nav beacon signal source, filter based on the role of the current ship, etc. but none of those are precisely what you are asking for. You can also scan a nav beacon to obtain a scan of all of the bodies in the system but that still requires a player action.
I suspected that may be the case. Thanks anyway. :)

I have a couple of ideas rattling around that I may be able to use to mitigate the instances that I've described. I'll probably go with something along the lines of not reporting unscanned bodies if the player has been to the system more than a couple of times. If scanning the nav beacon 'fixes' it too, I might add in some recommendation speech for that as well.

Thanks again for your insights. :)
 
I'm having a problem with the "entered normal space" event.

It sets two variables: event bodyname and event bodytype and here's where I'm having a problem.

It works fine for stations and outposts, but when exiting SC near a carrier, these variables always seem to be set to the body around which it's orbiting. Perhaps carriers aren't recognised as stations?

Any help, greatly received.

Cheers.
 
I'm having a problem with the "entered normal space" event.

It sets two variables: event bodyname and event bodytype and here's where I'm having a problem.

It works fine for stations and outposts, but when exiting SC near a carrier, these variables always seem to be set to the body around which it's orbiting. Perhaps carriers aren't recognised as stations?

Any help, greatly received.

Cheers.
Unfortunately, the Journal entry for exiting supercruise doesn't have any data for fleet carriers:
Code:
{ "timestamp":"2021-09-28T15:33:39Z", "event":"SupercruiseExit", "Taxi":false, "Multicrew":false, "StarSystem":"Djaujang", "SystemAddress":7267755566465, "Body":"Djaujang 1", "BodyID":1, "BodyType":"Planet" }
This is me, entering normal space at a fleet carrier in the Djaujang system.

My guess is that, fleet carriers are technically a ship with station-like facilities, rather than an actual station... plus the fact they are mobile and not static. I'd say it probably wouldn't be too hard for FDev to add this info, but that would probably need several requests by Cmdrs before they felt the need to spend time on it. ;)
 
Unfortunately, the Journal entry for exiting supercruise doesn't have any data for fleet carriers:
Code:
{ "timestamp":"2021-09-28T15:33:39Z", "event":"SupercruiseExit", "Taxi":false, "Multicrew":false, "StarSystem":"Djaujang", "SystemAddress":7267755566465, "Body":"Djaujang 1", "BodyID":1, "BodyType":"Planet" }
This is me, entering normal space at a fleet carrier in the Djaujang system.

My guess is that, fleet carriers are technically a ship with station-like facilities, rather than an actual station... plus the fact they are mobile and not static. I'd say it probably wouldn't be too hard for FDev to add this info, but that would probably need several requests by Cmdrs before they felt the need to spend time on it. ;)
You can query the station model (station.model). Here you can find the "FleetCarrier".
 
You can query the station model (station.model). Here you can find the "FleetCarrier".
Unfortunately, there is no station to query for this information. The only data available for arriving at a fleet carrier, is the body (star, planet, or moon) that it is orbiting.

I've been trying to think of ways around this, and I've been able to compile a list of fleet carriers in a system, and all their 'station' data, but I'm having trouble finding a way to match them up with the fleet carrier I arrive at. I've not given up just yet, though. :)
 
Unfortunately, there is no station to query for this information. The only data available for arriving at a fleet carrier, is the body (star, planet, or moon) that it is orbiting.

I've been trying to think of ways around this, and I've been able to compile a list of fleet carriers in a system, and all their 'station' data, but I'm having trouble finding a way to match them up with the fleet carrier I arrive at. I've not given up just yet, though. :)
Me either. It's the last but one piece left in the puzzle that is my script.

:unsure:
 
One moment (hopefully) please. I'll ask in the German ED forum. Our GerDA (EDDI character) has a corresponding entry in the script "Entered normal space" ...

Here the code, sorry only in German
Code:
{Log("EDDI EVENT: Entered normal space")}

{_ Entered normal space }
{_ Triggered when your ship enters normal space }

{_ Context }
{SetState('eddi_context_last_subject', 'fsd')}
{SetState('eddi_context_last_action', 'disengage')}
{SetState('eddi_context_system_name', event.systemname)}
{SetState('eddi_context_body_name', event.bodyname)}
{SetState('eddi_context_body_type', event.bodytype)}
{SetState('eddi_context_body_system', event.systemname)}
{SetState('station_model_normalspace', 'no station')}

{set station_notifications to:
    {set station_missions to F("Mission check station")}
    {set station_crimes to F("Crime check station")}
    {if station_missions || station_crimes:
        {_ Pause for station ATC before speaking again _}
        {Pause(5000)}
        Information:
        {if station_missions:
            {Pause(500)}
            {station_missions}
        }
        {if station_crimes:
            {Pause(500)}
            {station_crimes}
        }
    }
}

{Pause(500)}
{set reportBody to BodyDetails(event.bodyname, event.systemname)}

{if state.booked_type = "Taxi":
    {OneOf("\{OneOf(\"Das Taxi hat\",\"Unser Taxi hat\",\"Wir haben\")\} den Supercruise verlassen,",
            "\{OneOf(\"Das Taxi ist\",\"Unser Taxi ist\",\"Wir sind\")\} in den Normalraum eingetreten,")}
|elif state.booked_type = "Dropship":
    {OneOf("Kampfschiff hat den Supercruise verlassen", "Das Kampfschiff ist in den Normalraum eingetreten")}
    {OneOf("Fertig machen für den Kampfeinsatz", "Achtung, der Einsatz startet in wenigen Augenblicken!")}
|else:
    {OneOf("\{OneOf(\"{ShipName()} hat\",\"Wir haben\")\} den Supercruise verlassen,",
            "\{OneOf(\"{ShipName()} ist\",\"Wir sind\")\} in den Normalraum eingetreten,")}
}


{if event.bodytype = 'Planet' || event.bodytype = "Mond" || event.bodytype = "Moon":
    {OneOf("nahe", "in der Nähe von")} 
    {set time_a to SecondsSince(0) - state.eddi_context_approach_time}
    {set time_b to SecondsSince(0) - state.eddi_context_granted_time}
    {if !time_b || time_a < time_b : {set time to time_a} {set settlement to state.eddi_context_last_settlement}
    |else: {set time to time_b} {set settlement to state.eddi_context_last_docking}
    }
    {if time < 60:     
        {set station to StationDetails(settlement, event.systemname)}
        {if station:
            {SetState('eddi_context_body_name', settlement)}
            {if station.model = "Carrier" || station.model = "FleetCarrier":
                {if station.name = state.eigener_carrier : unserem Träger,
                |else: Träger {station.name},
                }
                {P(settlement, "station")} {station_notifications}
            |else:
                {P(settlement, "station")}
            }
        |else:
            {reportBody.bodytype} {reportBody.shortname}, {station_notifications}
        }
    |else:
        {reportBody.bodytype} {reportBody.shortname}
    }
|elif event.bodytype = 'Star' || event.bodytype = 'Stern':
    {OneOf("nahe", "in der Nähe von")} Stern {event.body}
|elif event.bodytype = 'Station':
    {set station to StationDetails(event.bodyname, event.systemname)}
    {OneOf("nahe", "in der Nähe von")}
    {if station.model = "Unbekannte Station" : der Station {event.bodyname}
    |else: {OneOf("der Station", "{station.model}")}, {event.bodyname}
    }
    {SetState('station_model_normalspace', station.model)}
    {station_notifications}
|elif event.bodytype = 'Planetary Ring' || event.bodytype = 'Stellar Ring' :
    Planetenring {P(token(event.body," Ring",0))}
}.

Or have I misunderstood you ?

EDIT:
Ok feedback from the German FD forum: No, it always reports the planet.
Sorry, I didn't have that info yet.
 
Last edited:
Me either. It's the last but one piece left in the puzzle that is my script.

:unsure:
Hmm, so I had the idea to use destinationstation, as a carrier will appear in the Status.json when targeted as a destination (when in the same system). However, this only seems to be populated by using the RouteDetail() function, so will not work in this way.
One moment (hopefully) please. I'll ask in the German ED forum. Our GerDA (EDDI character) has a corresponding entry in the script "Entered normal space" ...

Here the code, sorry only in German
Code:
{Log("EDDI EVENT: Entered normal space")}

{_ Entered normal space }
{_ Triggered when your ship enters normal space }

{_ Context }
{SetState('eddi_context_last_subject', 'fsd')}
{SetState('eddi_context_last_action', 'disengage')}
{SetState('eddi_context_system_name', event.systemname)}
{SetState('eddi_context_body_name', event.bodyname)}
{SetState('eddi_context_body_type', event.bodytype)}
{SetState('eddi_context_body_system', event.systemname)}
{SetState('station_model_normalspace', 'no station')}

{set station_notifications to:
    {set station_missions to F("Mission check station")}
    {set station_crimes to F("Crime check station")}
    {if station_missions || station_crimes:
        {_ Pause for station ATC before speaking again _}
        {Pause(5000)}
        Information:
        {if station_missions:
            {Pause(500)}
            {station_missions}
        }
        {if station_crimes:
            {Pause(500)}
            {station_crimes}
        }
    }
}

{Pause(500)}
{set reportBody to BodyDetails(event.bodyname, event.systemname)}

{if state.booked_type = "Taxi":
    {OneOf("\{OneOf(\"Das Taxi hat\",\"Unser Taxi hat\",\"Wir haben\")\} den Supercruise verlassen,",
            "\{OneOf(\"Das Taxi ist\",\"Unser Taxi ist\",\"Wir sind\")\} in den Normalraum eingetreten,")}
|elif state.booked_type = "Dropship":
    {OneOf("Kampfschiff hat den Supercruise verlassen", "Das Kampfschiff ist in den Normalraum eingetreten")}
    {OneOf("Fertig machen für den Kampfeinsatz", "Achtung, der Einsatz startet in wenigen Augenblicken!")}
|else:
    {OneOf("\{OneOf(\"{ShipName()} hat\",\"Wir haben\")\} den Supercruise verlassen,",
            "\{OneOf(\"{ShipName()} ist\",\"Wir sind\")\} in den Normalraum eingetreten,")}
}


{if event.bodytype = 'Planet' || event.bodytype = "Mond" || event.bodytype = "Moon":
    {OneOf("nahe", "in der Nähe von")}
    {set time_a to SecondsSince(0) - state.eddi_context_approach_time}
    {set time_b to SecondsSince(0) - state.eddi_context_granted_time}
    {if !time_b || time_a < time_b : {set time to time_a} {set settlement to state.eddi_context_last_settlement}
    |else: {set time to time_b} {set settlement to state.eddi_context_last_docking}
    }
    {if time < 60:   
        {set station to StationDetails(settlement, event.systemname)}
        {if station:
            {SetState('eddi_context_body_name', settlement)}
            {if station.model = "Carrier" || station.model = "FleetCarrier":
                {if station.name = state.eigener_carrier : unserem Träger,
                |else: Träger {station.name},
                }
                {P(settlement, "station")} {station_notifications}
            |else:
                {P(settlement, "station")}
            }
        |else:
            {reportBody.bodytype} {reportBody.shortname}, {station_notifications}
        }
    |else:
        {reportBody.bodytype} {reportBody.shortname}
    }
|elif event.bodytype = 'Star' || event.bodytype = 'Stern':
    {OneOf("nahe", "in der Nähe von")} Stern {event.body}
|elif event.bodytype = 'Station':
    {set station to StationDetails(event.bodyname, event.systemname)}
    {OneOf("nahe", "in der Nähe von")}
    {if station.model = "Unbekannte Station" : der Station {event.bodyname}
    |else: {OneOf("der Station", "{station.model}")}, {event.bodyname}
    }
    {SetState('station_model_normalspace', station.model)}
    {station_notifications}
|elif event.bodytype = 'Planetary Ring' || event.bodytype = 'Stellar Ring' :
    Planetenring {P(token(event.body," Ring",0))}
}.

Or have I misunderstood you ?
Thank you for the script, but I think you may have misunderstood.

The problem is that when entering normal space at a fleet carrier, event.bodytype is not "station". It is always either "planet" / "moon" / "star", describing the body that the fleet carrier is orbiting.

I'm at the point now where I think this could be impossible with the information we currently have available with EDDI (but will be glad to be proved wrong if that's not that case). However, as fleet carriers are noted as a destination in the Status.json file, I'm wondering if it will be possible to have this 'destination' data made available to EDDI under the status object? Maybe something like status.target or status.destination (as that's what it is called in the file). @T'kael any thoughts on this at all?

This is what the Status.json looks like when a fleet carrier is locked as a destination:
Code:
{ "timestamp":"2021-09-28T18:26:28Z", "event":"Status", "Flags":150994952, "Flags2":0, "Pips":[2,8,2], "FireGroup":1, "GuiFocus":0, "Fuel":{ "FuelMain":25.700008, "FuelReservoir":0.544398 }, "Cargo":0.000000, "LegalState":"Clean", "Balance":2474362611, "Destination":{ "System":7267755566465, "Body":1, "Name":"SRS ASTRA INCLINANT Q7W-66T" } }

With this data, I thought about matching a fleet carrier signal source with this 'destination' when entering normal space, as this will almost certainly be the same, meaning that you returned to normal space at that particular fleet carrier.

EDIT: No.. wait.. that wouldn't work 100%. You could target a FC and then drop to normal space somewhere else, so my idea wouldn't be completely accurate. Damn. Still, it would be nice to have that 'status.destination' available. ;)
 
Last edited:
Back
Top Bottom