Release EDDI Scripts and EDDI enabled VA Commands Thread

Audio Bit depth

A little more detail would help: there seems to be some confusion here as bitrate is measured in bits per second (bps) or kilobits per second (kbps). A figure of 16 bits is more likely to be the bits per sample. Wikipedia article on WAV.
Hello, I'll clarify this for you.
I'm talking about the bit depth in the audio file.
All other parameters are changeable. Even Mono/Stereo has no influence.


Here is a picture of the file properties

 
Ship Limpets Carried

I'm trying to write a Voice Attack command to report my ship's limpet status. I was originally intending to track 'limpets-in versus limpets out' but then it dawned on me that EDDI appeared to provide a much simpler solution along the lines of:

Say, '{INT:Ship limpets carried} limpets remaining'​

But I can't get it to work as {INT:Ship limpets carried} continually reports 'not set'. I've also noticed, though I don't actually use it at present, that {INT:Ship cargo carried} continually shows '0' even though my ship has ordinary cargo and limpets onboard.

I understand from the EDDI development area on GitHub (which I watch without even pretending to understand what's going on...) that there's been some re-writing around the cargo modules, and the change logs suggest that various issues have been fixed. Hoping that might provide the answer, I've upgraded to the latest beta, 3.1-b4, but without success.

The following is clipped from the VA log using the ((EDDI: ship variables)) command that was very helpfully provided by someone on this thread (I think). The ship is actually carrying 3 tons of cargo and 2 limpets but nothing shows up here. I'm probably missing something obvious but I can't see what, and I'd appreciate any suggestions.

17:08:48 - Ship model: Type-10 Defender
17:08:48 - Ship model (spoken): Type-10 Defender
17:08:48 - Ship name: anson
17:08:48 - Ship name (spoken): Not set
17:08:48 - Ship callsign: Lakon Spaceways PEN
17:08:48 - Ship callsign (spoken): [...snipped...]
17:08:48 - Ship role: Multipurpose
17:08:48 - Ship size: Large
17:08:48 - Ship value: 594219120
17:08:48 - Ship value (spoken): over 594 million
17:08:48 - Ship cargo capacity: 16
17:08:48 - Ship cargo carried: 0
17:08:48 - Ship limpets carried: Not set
17:08:48 - Ship health: 100.0 (hull %)

I'm using Voice Attack 1.7.2 on Windows 10.
 
@Pengelly,

Yep, that's a real issue, thanks for pointing it out. I have a hotfix in the queue that should be merged into the next beta.

Cheers, Hooda
 
Hi All,

I'm searching for a script/command to see if I have selected something (Target/Station/Body/System). But I can only find the "Ship targeted event". This only shows a BOOL:"True" on ships.

Tnx.
 
Hi everyone,

As a late Christmas present (or early New Year one?) I have a new version of my Darkcyde's Defaults EDDI personality available. You can download it from my signature below, or from this link... https://www.dropbox.com/s/gabbv35uxier3f2/Darkcydes_Defaults_29-12-18.rar?dl=0

This has a few fixes and updates for some of the new scripts in EDDI v3.3.2, plus a load of other things. Here is the change log since my last release:-
Code:
Release 29-12-18
================

Event Scripts
-------------
- Body Mapped
 - Replaced ESC characters.

- Body Scanned
 - Updated to base it on the latest default.

- Engineer Contributed
 - Refined script.

- Star Scanned
 - Removed Scan Value and Habitable Zone, as now in the report.


Function Scripts
----------------
- Body Name Tidy
 - Updated to use '(body).shortname' where appropriate.
 - Updated to set 'bodytidy' as BodyDetails(), so it's only called once.

- Body Atmosphere Report
 - Added back my variations for unknown body.
 - Capitalised 'Class' in gas giant checks, as this is case sensitive. Section works now.
 - Updated old references of 'atmo' variable left behind when old script copied to be new EDDI default.
 - Updated pressure option checks to check if they are '= 1' rather than '> 0'.
 - Updated find() checks to '> -1'.
 - Reformatted script to make it easier to read.
 - Added pressure check to temperature report to make the speech sound more natural.
 - Added comma to pressure report to make the speech sound more natural.
 - Removed "I detect a" from pressure intro choices, as it made it 'personal' rather than 'informational' (like the rest of the reporting), and replaced with "It is a" instead.
 - Added back plural pressure atmospheres check.
 - Added back full atmospheric composition reporting. Updated pressure section to account for this.
 - Made full composition reporting a configurable option.
 - Added body introduction, in case the script is called outside of Body Report.

- Body Materials Report
 - Added missing checks and reports for material percentages.
 - Added preference option for 'no percentage reporting'.
 - Removed the '&& reportMatConc != 1' from the materials setup, as it wouldn't add 'goodmaterials' even if you wanted to hear about them, when you choose not to hear about good percentages.
 - Added missing 'else' section to materials setup, so that all materials can be reported as per the preferances option.
 - Changed reporting to only use a WHILE loop. This makes reporting the percentages easier, and the code shorter and easier to read.
 - Moved the check for 'and' between the great and good mats, into the good mats section, to reduce code.
 - Added missing 'all materials' report section. There is an option for it, so I've added it.
 - Reversed reportMatConc order to be in line with other Body Report type options. Lower to higher = more reported.
 - Set default reportMatConc to 2, for 'great' and 'good' materials, like the default is.
 - Added check for unknown body, to match other Body Report scripts.
 - Updated introduction at the beginning to use 'Body Name Tidy' if this script is called out of Body Report.

- Body Report
 - Updated to base it on the latest default.
 - Updated 'preferances', standardised them, and made them more concise.
 - Added Radius and Mass preferences ('on' by default).
 - Fixed Terraform state section, so it now works as it used to.
 - Changed Atmosphere section to call new script.
 - Changed Materials section to call new script.
 - Changed Volcanism section to call new script.
 - Removed redundant '|| len(event.rings) > 0' from the rings report section.
 - Updated so all options checks are first in IF statements.
 - Updated options checks to check if they are '= 1' rather than '> 0'.

- Body Volcanism Report
 - Based on new default script.
 - Changed the way the script is structured to my personal preferance. Reduces/eliminates repeated code sections.
 - Added back my variations for unknown body.
 - Updated introduction at the beginning to use 'Body Name Tidy' if this script is called out of Body Report.
 - Updated main IF statement by removing redundant '&& reportVolcanism > 0'.
 - Corrected main IF statement to '&&' (AND) instead of redundant '||' (OR).  If one is set, then they both will be.
 - Added body introduction, in case the script is called outside of Body Report.

- Star Habitable Zone
 - Refined report IF statements.

- Star Report
 - Kept my original script due to my existing fixes, but I'm going to review the new default and see what I can do with it.
 - Standardised 'fetch from context' to match Body Report.
 - Added 'preferances' from default script, and standardised them.
 - Added preferance checks to the script sections.
 - Added report Luminosity class section and preferance.
 - Added Scan Value and Habitable Zone from default script and put them in the correct place. The default script has them inside the 'notables' section, I believe by mistake.
 - Updated so all options checks are first in IF statements.

Function Scripts Removed
------------------------
- Body Atmosphere
 - This has been superceded by the new 'Body Atmosphere Report'.


Release ?? (unreleased due to huge changes in 3.3)
==================================================

Voice Attack
------------
- Removed old test commands that don't do anything other than write to the log window.
- Removed some status messages from some commands that no one really cared about.
- Corrected 'Unset destination system' to actually unset the destination lock.

Event Scripts
-------------
- Commodity purchased
 - Added check and report for Collection mission commodities.

- Docked
 - Clear variable to say if missions have been accepted at this station.
 - Added check for crime to pay at current station.

-Entered Normal Space
 - Set approach timer variable name to match the EDDI default, as it now uses my original fix.
 - Updated 'Planetary Ring' section remove body name.
 - Updated 'Planetary Ring' section to correctly use the body type (planet or moon).
 - Updated 'Station' section to shorten model to just the type as it was speaking over station announcer.

- Jumped
 - Cleared mission route information if this is the last destination in your route.
 - Set 'reported' to yes if the missions destination distance is reported (used in Check Near Most report).

- Mission Accepted
 - Updated cargo IF statement logic. Should be more accurate now.

- Settlement Approached
 - Set approach timer variable name to match the EDDI default, as it now uses my original fix.

- VA Initialised
 - Moved contents of VAStartup into this event

- Undocked
 - Set mission accepted variable to "no".

Function Scripts
----------------
- Body Atmosphere
 - Updated to use new 'atmospherecompositions'

- Body Name Tidy
 - Updated to remove 'Ring' designation.

- Body Report
 - Corrected typo in 'greatmaterials' section.
 - Updated to use 'planettype', as 'bodytype' is depreciated now.
 - Removed IF statements that used eventdata as the information has now been standardised between event data and BodyDetails().
 - Returned reportbody setting to default code as event data doesn't set all information.

- Mission Check Near Most
 - Use 'reported' (from Jumped) so some info isn't repeated.

- Mission Check System
 - Set to only speak the station type (Station or Outpost).
 - Set to not speak station type if it is also part of the station's name.

- Mission Route Report
 - Updated logic of IF statements to be more accurate.
 - Updated 'Distance' and 'Initial Destination' to only be spoken if more than one destination.

- Mission Route Update
 - Set variable to say if missions have been accepted at this station.
 - Only say destination system if a new mission has been accepted, or the last one in this system has been handed in.
 - Moved the Route Plotting suggestions out of the main IF statment.
 - Moved the VoiceAttack string building out of the IF statement.
 - Updated logic for RouteDetails() IF statement.
 - Updated to only (re)plot a route when taking a mission that has a destination.

- Target Type
 - Added Krait Mk. II.

- TextWisdom
 - Collated all three TextWisdom functions into the one script.

Function Scripts Removed
------------------------
- TextWisdomSetup
- TextWisdomChoice
 - Collated these into the TextWisdom function script.

- VAStartup
 - Moved contents into the VA Initialised event.
Have fun, and Happy Holidays to you all! :D

-=] Darkcyde [=-
 
I've messed about with quite a few of the scripts to add more variations. Here are some of the most varied I came up with, in case anyone would like 'em.

This "Fine incurred" script may say things in order of finer, fine, crime; crime, finer, fine; crime, fine, finer; etc.:
Code:
{_ Context }
{SetState('eddi_context_last_subject', 'fine')}
{SetState('eddi_context_last_action', 'incur')}
{SetState('eddi_context_fine_name', event.victim)}
{SetState('eddi_context_fine_faction', event.faction)}
{SetState('eddi_context_fine_amount', event.fine)}

{OneOf("Notice:",  "", "", "Attention:", "{F('Honorific')},")}

{set earlier to
OneOf("You have been fined", "You've been fined", "You have incurred a fine of", "You've incurred a fine of") }

{set later to
OneOf("has fined you", "has issued a fine of") }

{OneOf("{earlier} {Humanise(event.fine)} credits by {P(event.faction)} for {event.crime}.", "{P(event.faction)} {later} {Humanise(event.fine)} credits for {event.crime}.", "For {event.crime}, {P(event.faction)} {later} {Humanise(event.fine)} credits.", "For {event.crime}, {earlier} {Humanise(event.fine)} credits from {P(event.faction)}." ) }
This "xxx vote cast" script (modify the first line for which vote you're editing) provides also a huge variety of responses, sometimes putting the vote first, or the action first, and so on:
Code:
{set vote to OneOf("expansion", "system expansion")}
{set sometimes to Occasionally(3, "for {vote}")}
{set cast to OneOf("cast", "registered")}
{set later to OneOf("Vote", "Your vote has been", "Vote has been")}
{set earlier to OneOf("You have voted for {vote}", "You have {cast} a vote for {vote}", "Vote for {vote} has been {cast}.")}

{OneOf("{later} {cast} {sometimes}.", "{earlier}")}
I did a lot of others too but I don't even remember exactly which now. Those certainly create the most varied responses of the bunch, though.
 
I have a (hopefully) quick question; on EDDI, specifically with the Speech Responder section, I'm trying to set up a quick little scipt for the Station No Fire Zone Enter/Exit triggers. So far, I've been able to get it to say 'No fire zone entered' and 'No fire zone left', but I'd like to be able to have EDDI tell me like, "You are now entering McKean City's no fire zone", but have it be context-sensitive for each station I visit. And unfortunately, the scripting reference isn't all that useful as there are no examples of how these objects and variable are used. I tried modifying an existing thing, the trade data buy to something like '("You are now entering the no fire zone for station" {P(station.name)})', but un fortunately, all it returned was "You are now entering the no fire zone for station" Any assistance that might help me better unstand the scripting so I can actually -do- sometthing with it would be much appreciated.
 
Last edited:
I have a (hopefully) quick question; on EDDI, specifically with the Speech Responder section, I'm trying to set up a quick little scipt for the Station No Fire Zone Enter/Exit triggers. So far, I've been able to get it to say 'No fire zone entered' and 'No fire zone left', but I'd like to be able to have EDDI tell me like, "You are now entering McKean City's no fire zone", but have it be context-sensitive for each station I visit. And unfortunately, the scripting reference isn't all that useful as there are no examples of how these objects and variable are used. I tried modifying an existing thing, the trade data buy to something like '("You are now entering the no fire zone for station" {P(station.name)})', but un fortunately, all it returned was "You are now entering the no fire zone for station" Any assistance that might help me better unstand the scripting so I can actually -do- sometthing with it would be much appreciated.
Hi,

In the Entered normal space you can store the station name to NearStation (or whatever you like), and use this in your script for entering no fire zone :

{SetState('eddi_context_last_subject', 'fsd')}
{SetState('eddi_context_last_action', 'disengage')}
{SetState('eddi_context_system_name', event.system)}
{SetState('eddi_context_body_name', event.body)}
{SetState('eddi_context_body_system', event.system)}


{if state.eddi_context_interdicted != "yes":

{Pause(3000)}

{OneOf("{ShipName()} has", "")}
{OneOf("left supercruise", "{OneOf('entered','returned to','dropped to')} normal space")}
{F("Body Name Tidy")}

{if event.bodytype && event.bodytype != "":
{OneOf("near", "near to", "close to", "in the vicinity of")}

{if event.bodytype = "Planet":
{body}.
|elif event.bodytype = "Star":
{body}.
|elif event.bodytype = "Station":
{P(event.body)}.

{SetState('NearStation', event.body)}

|elif event.bodytype = "PlanetaryRing":
Planetary Ring {P(token(event.body," Ring",0))}.
}
}
}

{SetState('eddi_context_interdicted', 'no')}

Theoretically something like this should work.

Best regards!
 
Hi everyone,

As a late Christmas present (or early New Year one?) I have a new version of my Darkcyde's Defaults EDDI personality available. You can download it from my signature below, or from this link... https://www.dropbox.com/s/gabbv35uxier3f2/Darkcydes_Defaults_29-12-18.rar?dl=0

This has a few fixes and updates for some of the new scripts in EDDI v3.3.2, plus a load of other things. Here is the change log since my last release:-
Hi,

thank you!

I'm sure, it will be a few hours (days?) of hard "work" to comb together your update with my profiles, but at the end, I'll be a happy and satisfied commander :) !

Best regards!
 
Happy New Year everyone! And to celebrate I have a new version of my personality. This is mostly fixes, but also has a couple of upgrades. Enjoy! :D

As always, get it from my signature, or the link below.
https://www.dropbox.com/s/is8cvzyyrtxpaw9/Darkcydes_Defaults_01-01-19.rar?dl=0

Change Log since the last one:-
Code:
Event Scripts
-------------
- Body Scanned
 - Check if event.name is the same as the last one. Fixes multiple repeats of speech.

- Star Scanned
 - Check if event.name is the same as the last one. Fixes multiple repeats of speech.

Function Scripts
----------------
- Body Atmosphere Report
 - Updated intro to check for 'body' instead of previous 'bodytidy', to make it more efficient.
 - Corrected atmosphere compositions section code when atmosphere is 100% one element.
 - Changed and expanded the main atmosphere section to realistically reflect the atmosphere. 0.3% Neon in a 99.7% Nitrogen atmosphere isn't what I would consider as 'Neon-rich'. :-P  So now it says the predominant element, and mentions if there are any rich ones.  As the option for full atmosphere analysis, it will detail any other elements.
 - Changed how setting 'reportbody to event' works. (See Body Report below).

- Body Materials Report
 - Updated intro to check for 'body' instead of previous 'bodytidy', to make it more efficient.
 - Changed how setting 'reportbody to event' works. (See Body Report below).

- Body Name Tidy
 - Added setting body type in the case of the primary star.
 - Replaced 'bodytidy' with 'reportbody'.
 - Updated to use reportbody if it has already been set in calling script, otherwise set it.
 - Updated reportbody check to see if reportbody.shortname exists, if not then set reportbody.
 - Fixed event.type being 'scan type' instead of 'body type' as it is in BodyDetails().
 - After changing Body and Star Reports to use BodyDetails(), event.type fix no longer required.

- Body Report
 - As the 'event' data is missing some information (like full atmosphere composition), I have changed how setting 'reportbody to event' works.  It now only sets 'reportbody to BodyDetails()' which has complete information available.

- Body Volcanism Report
 - Updated intro to check for 'body' instead of previous 'bodytidy', to make it more efficient.
 - Changed how setting 'reportbody to event' works. (See Body Report above).

- Star Report
 - Changed how setting 'reportbody to event' works. (See Body Report above).
 
EDDI is a really nice add-on.
There's a way to get the personality name inside an EDDI script ? I've created my own personality (AMY) and i wish to obtain something like "Welcome back {F("Honorific")}, i'm {F("Personality")}" in the Commander continued script

Thanks in advance !
 
EDDI is a really nice add-on.
There's a way to get the personality name inside an EDDI script ? I've created my own personality (AMY) and i wish to obtain something like "Welcome back {F("Honorific")}, i'm {F("Personality")}" in the Commander continued script

Thanks in advance !
Not at the moment but there's nothing stopping you from simply customising that script with your personality's name as a literal.
 
Is there a quite script , only speaks on impending death / real emergency, like your low on fuel
I was toying with this a few months ago I think I pretty much copied the personality and then went though all the scripts editing them to not say anything. Don't think there is a simple way to do it, if you find one give me a shout
 
I was toying with this a few months ago I think I pretty much copied the personality and then went though all the scripts editing them to not say anything. Don't think there is a simple way to do it, if you find one give me a shout
Once you've copied a personality, you can uncheck the scripts for events you don't care to hear.
 
I was toying with this a few months ago I think I pretty much copied the personality and then went though all the scripts editing them to not say anything. Don't think there is a simple way to do it, if you find one give me a shout

Right thought maybe there would be more to it .. And it's not a case of EDDI NOT saying anything, its the endless chattering

So you enter a system, It says 100 variants of "possible danger" or "nothing to see here" then shuts up as your usually fuel scooping or in the Nav menu working out where to dock.

After about 1 + mins if you still in the system, have NOT jump then EDDI starts saying more about the system When EDDI responds now there's no timer delay EDDI speaking is usually in competition with other Voices giving information all talking over the top of each other, so no information is heard.


It's not about silence and "just turning it all off by unchecking the ticks" it's about

"Is there a quite script , only speaks on impending death / real emergency, like your low on fuel", which it seems was not read so not heard.

you're right !
 
Last edited:
Top Bottom