diff --git a/CHANGELOG.md b/CHANGELOG.md index 97c8125..018e5ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,7 +24,7 @@ able to invoke that plugin. [You can safely ignore that](https://github.com/alte ### Added -* `alterNERDtive-base` plugin. FIXXME +* `alterNERDtive-base` plugin. Provides functionality common to all profiles. * Proper logging to the VoiceAttack log. You will notice a lot of useful information, more is available if you change the log level configuration option. Logging to a file for troubleshooting will be added at a later date. @@ -64,7 +64,7 @@ profile will keep the old name. Feel free to manually rename it. ### Added -* `EliteAttack` plugin. FIXXME +* `EliteAttack` plugin. Doesn’t do a lot yet. * `where is my landing pad` command: Will use EDDI to tell you about the landing pad location on star ports in relation to the mail slot. @@ -82,7 +82,10 @@ profile will keep the old name. Feel free to manually rename it. ### Added -* `RatAttack` plugin. FIXXME +* `RatAttack` plugin. Responsible for handling case data instead of having a way + too long and convoluted list of VoiceAttack variables. Also provides a way to + send RATSIGNALs to VoiceAttack via IPC. +* `RatAttack-cli.exe` helper tool. Used to send RATSIGNALs to the plugin via IPC. * Will now announce permit locks, including the name of the permit if available. * Now supports manually injected cases that might not provide a system. You will still have to manually copy the system from \#fuelrats or the dispatch board diff --git a/docs/configuration/EliteAttack.md b/docs/configuration/EliteAttack.md index 842e0c9..315e8ff 100644 --- a/docs/configuration/EliteAttack.md +++ b/docs/configuration/EliteAttack.md @@ -1,465 +1,34 @@ -# EliteAttack # - -This is my personal VoiceAttack profile for Elite: Dangerous. It started out -ages ago as a modification of [MalicVR’s public -profile](https://forums.frontier.co.uk/threads/malics-voice-attack-profile-for-vr.351050/), -then looked less and less and less like that and I added and cleaned up a lot of -things while removing the stuff I didn’t use anyway. By now it would have -probably been simpler to start from scratch. - -Some of it has grown to a state that it might be useful to others in its own -package, so I’ve separated the neutron jumping and Seals stuff into their own -profiles. - -The rest is a random conglomerate of all things VA and E:D; from various voice -commands to lots of EDDI event handlers. - -Speaking of EDDI; it has become in integral part of my Elite experience, -especially the plethora of information it extracts from the game’s journal and -presents to you via lots and lots of status variables and by firing various -events that can then be handled through VA commands. It’s great. Check it out. -(You might want to make it talk a lot less in it’s personality options, or -disable the speech responder entirely like I have.) - -## Requirements ## - -In addition to the bindED and EDDI VoiceAttack plugins, this profiles needs my -[Python elite-scripts](https://github.com/alterNERDtive/elite-scripts) to do -everything properly. The release page here includes a compiled version for -Windows that does not need Python installed. If you use the profile package from -the release page, they will be installed automatically. - -## Settings ## - -Because Elite’s keyboard handling is … weird you’ll have to set the key to use -for pasting text into Elite:Dangerous. If you are not using a “standard” -QWERT[YZ] layout, you will have to change it back to the key that is physically -in the place where `v` would be on QWERTY. - -For other settings, see the [Configuration Variables](#Configuration-Variables) -section. - -## Including the Profile In Another Profile ## - -This is meant to be a standalone profile, including the others in this repo (and -a couple more). It was never designed to be included into your existing profile. -Nevertheless, it _should_ work properly if you follow some guide lines: - -* Run the startup command. You will need to have a startup command in your - profile (= one that is run on profile loading) and call - `EliteDangerous.startup` by name from that one. -* Make sure all EDDI events that EliteDangerous needs are correctly handled. For - all events used in EliteDangerous that you already have handlers for in your - profile, you’ll have to include a call to `EliteDangerous.`. E.g. - for “EDDI Jumped”, call `EliteDangerous.EDDI Jumped` by name from your `((EDDI - Jumped))` command. - -## Usage ## - -### Chat Commands ### - -There’s a bunch of commands in here to send certain things to chat. Unless -stated otherwise, they will only work with the comms panel active, and you -should be in the edit window ready to send. They will _not_ hit Enter on their -own. - -* `clear [chat;text]`: Clears the chat window. Use from outside the comms panel. -* `[local;squad;system;wing] chat`: Puts you into the chosen chat channel. -* `paste text`: Pastes your clipboard into Elite. Works outside the comms panel - too, e.g. on the galaxy map inside the search field. -* `salute; oh seven`: Will put “o7” into the chat. - -### Engineering/Materials ### - -* `how many [] do i have`: Tells you how many of - the given g5 manufactured material you currently have on board. I’ve - restricted it to just those to not spam speech recognition with too many - phrases, and because those are the ones I usually want to know while jumping - around the bubble and having an eye on any HGE that might be around. -* `open e d engineer`: Opens the ED Engineer tool. -* `what [mats;materials] do i need?`: Runs the EDDI responder that tells you - which materials are below wanted threshold. Needs setting those first. Gets - very spammy if you do it for all of them; personally I only set them for g5 - manufactured, so I can quickly check if it’s worth looking for HGE in a system - I’m in. - -### Events ### - -The main point of this profile is to react to Elite’s journal events (powered by -EDDI). Each of the events listed here will trigger a `((EDDI ))` command -in VoiceAttack which in turn triggers `EliteDangerous.EDDI ` and all -included profiles’ similar commands, e.g. `SpanshAttack.EDDI `. - -The actual `((EDDI ))` command will only be executed once by VoiceAttack, -the first one it can find. Keeping it separate from the actual code to be run -makes it easier to handle (multiple) included profiles. - -If the command for an event will send key presses to Elite, it focuses the -client window first to make sure they get registered properly. If it is not in -focus, the first key press might be swallowed otherwise. - -For other commands, the profile just assumes that you are actively doing -something in game and it is already focused :) - -#### Body Mapped #### - -Announces an estimate for high-value bodies’ payouts and the remaining mapping -candidates in the system as given by EDDI. - -#### Body scanned #### - -Announces any interesting body traits found when scanning: - -* terraformable -* Earth-like World, Ammonia World or Water World -* landable and >5 g -* semimajor axis <1.5 ls (only really interesting for planets, but there’s no - proper way to separate them from moons, sadly) -* radius <300 km - -Feel free to suggest more! - -#### Carrier Cooldown #### - -Tells you when your carrier is able to do its next jump. Technically only works -if you were docked at it when it performed the jump, but I’m doing some -behind-the-scenes magic if you weren’t :) - -Might be slightly off (too early) in the latter case. - -#### Carrier Jumped #### - -Announces system and body your carrier has just jumped to. - -#### Carrier Jump Engaged #### - -This event fires when your carrier jumps but you are _not_ docked at it. It -provides way less information than the `Carrier Jumped` event, but hey, I don’t -use most of it anyway. - -Basically just calls `Carrier Jumped` (and makes sure that a `Carrier cooldown` -event is triggered manually at approximately the right time). - -#### Carrier Jump Request #### - -Announces the system and body your carrier has just been scheduled to jump to. -Use this to double check ingame information; I’ve had my carrier accept a body -as jump target, but then end up around the star. This _might_ give you a heads -up on that. - -#### Carrier Pads Locked #### - -Announces your carriers lockdown procedures. This _might_ only work when you are -docked (which would make it pretty useless). Feel free to open in issue if -that’s the case. - -#### Discovery Scan #### - -Announces the number of bodies (and non-body signals) found in the system. Also -compares the number of bodies to the amount reported by EDSM (requires Python -scripts). - -#### Docked #### - -Automatically gets your ship into the hangar and opens station services. - -#### Docking Denied #### - -Tells you the reason for docking denial. - -#### Entered Normal Space #### - -Throttles to 0 upon dropping from SC, if `EliteDangerous.hyperSpaceDethrottle` is set. - -#### Fighter Launched #### - -Orders your ship to hold position so it doesn’t chase after you immediately. - -#### Jet Cone Boost #### - -Sets your ship to full throttle immediately after you have supercharged. - -#### Jumped #### - -* zeroes throttle -* gets the system’s body count from EDSM (requires Python scripts) -* gets stations with outdated data (older than 1 year) from Spansh’s API -* if you haven’t visited the systems, starts a discovery scan (see the discovery - scan command) -* last but not least tells you about planets worth scanning if you are on the - R2R - -#### Liftoff #### - -Retracts landing gear for you. Seriously, is there any occasion in which you -_don’t_ immediately want to retract it after takeoff? - -#### Low Fuel #### - -Warns you when you reach 25% fuel. Also reports number of jumps you have left or -the (rough) range you still have on the fumes left in your tank. - -#### Material Threshold #### - -Warns you when a monitored material falls below it’s minimum stock level. You -will have to set a minimum desired amount in EDDI’s material monitor options -first for all materials you wish to be monitored. - -#### Message Sent #### - -Checks any message you send for a chat prefix and sends it to the proper chat -window. Probably largely useless to you without modification. - -* `.nc`: Actually doesn’t send anything, but runs the - `RatAttack.announceNearestCMDR` command with the system given in the rest of - the message. -* `.dc`: Sends the message to the Discord window. -* `.tc`: Sends the message to my twitch channel window (IRC #alternerdtive). - -There are similar event commands in RatAttack and SealAttack handling other chat -windows. - -#### Ship FSD #### - -This event actually is several different events in one. Currently the following -are handled: - -* charging: Warns you if your target system’s main star is not scoopable, - including an extra warning at low fuel levels. (__Note__: This only works if - the target system is in EDSM. So it’s kind of useless for its intended use - (exploration) and probably going to be removed at some point.) -* cooldown complete: Announces FSD cooldown if you are currently in normal - space. - -#### Ship interdicted #### - -Tells you when you have been interdicted by a player. Is also supposed to target -the interdictor automatically, but randomly sometimes just doesn’t work. Yay! - -#### Ship targeted #### - -This currently doesn’t do anything. I was fiddling around with automatically -targeting a certain module on ship targeting, but it was more hassle than I had -thought. - -#### SRV Launched #### - -Toggles SRV lights off after launching. Might not work if you drop particularly -far after deployment because it works off a timer. Conversely might take -a second to turn your lights off on a short drop and/or in high gravity. - -#### System Scan Complete #### - -Lists you all bodies EDDI considers worth mapping in the current system. - -#### Undocked #### - -Retracts landing gear for you. Seriously, is there any occasion in which you -_don’t_ immediately want to retract it after takeoff? - -#### VA initialized #### - -Fires when the EDDI VoiceAttack plugin is loaded. Makes sure that EDDI is set to -quite mode even if the profile was loaded before plugin initialization had -completed. - -### Misc ### - -The commands in here do random more or less useful things. - -* `bind keys;reset key binds`: Reloads your key binds through the bindED plugin. - You should do that after changing anything in the controls options. -* `copy current system`: Copies the current system name into the clipboard. -* `distance [from;to] […]`: Tells you the distance from your current position to - the other thing you mentioned and is supported in the command. (requires - Python scripts) -* `do a barrow roll`: WHOOOOOOO! -* `fix window dimensions`: When you start the game in VR, it forces into - windowed mode with weird resolution. This changes it back. Hover the “PLAY” - entry in the main menu, then run this. Will need adjustment for different - graphics cards/drivers and the resolution you want. -* `neutron [jump;trip] time`: Shorter version of the same thing in SpanshAttack. -* `neutron jumps left`: Shorter version of the same thing in SpanshAttack. -* `open copied system on EDSM`: Opens the system in your clipboard on EDSM in - your default browser. - * `open coriolis`: Opens Coriolis in your default browser. -* `open [current;] system on EDSM`: Opens your current system on EDSM in your - default browser. -* `open EDDI options; configure EDDI`: Opens the EDDI configuration window. -* `open e d d b [station;system;faction;] [search;]`: Opens EDDB in your default - browser. -* `open e d s m`: Opens EDSM in your default browser. -* `open inara`: Opens Inara in your default browser. -* `open materials finder`: Opens EDTutorials’ materials finder in your default - browser. -* `open miner’s tool`: Opens https://edtools.ddns.net/miner in your default - browser. -* `reload bindings`: Reloads your bindings for bindED. -* `shut up EDDI`: Immediately stops any ongoing (and queued) EDDI speech. -* `[start;stop] [EDISON;navigation]`: Hits `CTRL+ALT+E` which just so happens to - be the start/stop hotkey I have set in E.D.I.S.O.N. -* `[bodies;what’s;what is] left to [map;be mapped;scan]`: Tells you which bodies - EDDI thinks are worth mapping in the system that you haven’t mapped yet. - -### Navigation ### - -There are so many navigation-focused commands now, they deserve there own -category. Basically anything that helps you plot anywhere. A lot of those are -powered by awesome EDDI so I don’t have to do the work myself! - -* `plot course;[target;] next [waypoint;way point]`: Plots a course to the - system set in `~~system` or the one in your clipboard. The former way is - usually used by other commands to not interfere with your clipboard. -* `[find;target] nearest [encoded;manufactured;raw] material trader`: Targets - the nearest respective material trader. -* `[find;target] nearest [guardian;human] tech broker`: Targets the nearest respective - tech broker. -* `[find;target] nearest [interstellar factor;mission system;scoopable star]`: Well, - you know the drill by now. -* `[find;target] nearest mission system`: Targets the nearest system that has a mission - target. -* `[find;target] []`: Targets the given system on the galaxy map. There’s - a bunch in there, the list is easily extensible. Drop me a note if you want - something included. - -### Ship Controls ### - -Basically anything that is related to directly doing something with your ship. - -* `[abort;cancel;stop] jumping`: Stops a currently charging FSD jump. -* `[buggy;exploration] power`: Sets your PD to 0/4/2 or 2/4/0 respectively. - Works in SRV too. -* `[close;deploy;extend;open;retract;] […] [up;down;]`: Overly complicated - command to handle everything related to Cargo Scoop, Hard Points, Landing - Gear. You get the gist, I guess. Works in SRV too. -* `[disco;discovery scan]`: Executes a discovery scan. To work properly, you’ll - have to set the Discovery Scanner to your first fire group, secondary fire. -* `[dis;]engage silent running`: Turns silent running on and off. -* `[head;spot;] lights [on;off]`: Turns your lights on and off. Works in SRV - too, kinda; turning lights off there relies on the state updating fast enough, - which sometimes leads to weird results. -* `[jump;engage;get me out;punch it chewie] [and scan;] [when ready;]`: Retracts - everything that might be protruding from your ship, then jumps to the next - system. If the FSD isn’t charging within 1s, it gets you into SC instead (e.g. - if your target is obstructed). If given “and scan” runs a discovery scan. If - given “when ready” waits for mass lock to clear, your FSD to cool down and you - to leave scoop range before jumping. -* `night vision [on;off]`: Toggles your night vision on/off. Works in SRV too. -* `power to [engines;shields;systems;weapons`: Sets 4 pips to the thing you told - it, 1 to the others. -* `rapid fire lights`: Flashes your lights 5 times in a row. -* `retract [all;everything]`: Retracts, well, everything. -* `[start;stop] [firing;mining]`: Starts/stops holding down primary fire. Mostly - useful when mining. When triggered with “mining”, also deploys the cargo - scoop. -* `[super;] cruise [when ready;]`: Retracts everything, then jumps to SC. If - given “when ready” will wait for mass lock to clear and your FSD to cool down - first. - -### SRV controls ### - -Things relevant to your SRV, but not your ship. - -* `[recall;dismiss] ship`: Recalls or dismisses ship. Currently does the same - thing regardless of the state of your ship. I wish it would be possible to - restrict it to doing one thing each, but that’s currently not possible sadly. -* `[toggle;enable;disable] drive assist`: Handles all your drive assist needs! - -### Targeting ### - -Well … targeting stuff, I guess. Not really sure why I made that it’s own -category, but oh well :) - -* `target next system`: Selects the next system on your route. -* `target wing man [1;2;3]`: Targets your wing men. -* `target’s target`: Targets your target’s target. -* `wing man [1;2;3] target`: Targets your wing men’s target. -* `wing man nav lock`: Toggles wing man nav lock on the selected wing member. - -### UI Commands ### - -Everything handling stuff that’s not related to controlling your ship, but -manipulating some UI element(s). - -* `controls options`: Opens the controls options menu. -* `docking request;request dock[ing;]`: Sends a docking request. -* `[enter;leave] F S S`: Opens/closes FSS. -* `galaxy map`: Opens the galaxy map. -* `[main;game] menu`: Opens the ESC menu. -* `[relog;reset] to [open;solo]`: Relogs to Open or Solo mode, respectively. -* `restart from Desktop`: Quits the game and restarts from an open launcher by - clicking the play button. -* `set […] filter`: Sets a nav panel filter setting. See the command or just try - different things for what is possible. You need to clear filters and hover - over the filter button, then run this. -* `system map`: Opens the system map. -* `take [high res;] screenshot`: Takes a (high res) screenshot. -* `toggle orbit lines`: Toggles the visibility of orbit lines. -* `[toggle;show;hide] interface`: Toggles the cockpit interface (CTRL+ALT+G). - Probably needs to be adjusted if you are not playing with Neo2 keyboard layout - :) - -### Update Commands ### - -* `check for profiles update`: Does just that. Is also automatically run each - time the profile is started. -* `download profiles update`: Downloads a profiles update if applicable. Will - prompt you to restart VoiceAttack when the download has finished to import the - updated profiles. -* `open profiles change log`: Opens `CHANGELOG.md` on Github. - -## Logging ## - -The profile supports logging a bunch of stuff to the VoiceAttack event log. By -default, logging is concise and constrained to basically error messages. - -If you need more logging (usually for debugging purposes), say `enable logging`. -If you want to enable verbose logging _by default_, call the -`Logging.enableLogging` command from your custom profile’s `startup` command. - -## Configuration Variables ## - -There are a bunch of configuration variables. You should not overwrite those -manually, instead use the provided commands in the `_configuration` section! - -Basically all the settings are available using the `customize settings` prefix, -then saying `[enable;disable] ` for on/off switches and `set ` -for text variables. - -* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default: - true. -* `Elite.pasteKey` (string): the key used for pasting into Elite. On QWERTY this - is `v`. Default: `p`. -* `EliteDangerous.announceEdsmSystemStatus` (boolean): whether to announce the - system or some of its bodies missing on EDSM. Default: true. -* `EliteDangerous.announceMappingCandidates` (boolean): whether to announce - mapping candidates when they are scanned. Default: true. -* `EliteDangerous.announceOutdatedStationData` (boolean): whether to announce - stations with outdated data in systems you jump to. Default: true. -* `EliteDangerous.announceR2RMappingCandidates` (boolean): whether to announce - planets worth mapping when jumping into a known system. This is useful for - doing some R2R on the side. Default: false. -* `EliteDangerous.enableCarrierAnnouncements` (boolean): whether or not to - process fleet carrier events. Default: true. -* `EliteDangerous.enableAutoUpdateCheck` (boolean): whether or not to - automatically check for updates on profile startup. Default: true. -* `EliteDangerous.flightAssistOff` (boolean): whether to automatically toggle - FlightAssist off on liftoff. Default: true. -* `EliteDangerous.hyperspaceDethrottle` (boolean): same thing as the SC assist - setting; if on, will throttle to 0 automatically after jumping. Default: true. -* `EliteDangerous.oldStationThreshold` (int): Age in days that will cause - station data to be considered outdated. Default: 365 (1 year). -* `python.ScriptPath` (string): the path you have placed the compiled python - scripts in. Default: “{VA_DIR}\Sounds\scripts” (the “\Sounds\scripts” folder - in your VoiceAttack installation directory). - -#### Delays / Pauses #### - -Delays needed e.g. between key presses in UI navigation can vary wildly -depending on your PC’s specs and configuration. Therefore they should be -configurable, shouldn’t they? - -So far those actually are: - -* `EliteDangerous.delays.quitToDesktop`: Delay between quitting to desktop and hitting the - play button in the launcher. +# EliteAttack + +## Settings + +Toggles: + +* `auto honk all systems`: Automatically honk upon entering a system, each jump + without constraints. Default: false. +* `auto honk new systems`: Automatically honk upon entering as system if it is + your first visit. Default: true. +* `auto restock`: Automatically restock after docking at a station. You will + always refuel, repair and enter the Station Services menu. Default: true. +* `edsm system status`: Pull system data from EDSM and compare it + against your discovery scan. Default: true. +* `discovery scan on primary fire`: Use primary fire for honking instead of + secondary. Default: false. +* `flight assist off`: Permanent Flight Assist off mode. You should really do + that, it’s great. Default: false. +* `hyper space dethrottle`: Throttle down after a jump and when dropping from + SC. Like the SC Assist module does. Default: true. +* `mapping candidates`: Announce bodies worth mapping when you’ve finished + scanning a system. (Terraformables, Water Worlds, Earth-Like Worlds and + Ammonia Worlds that have not been mapped yet.) Default: true. +* `outdated stations`: Announce stations with outdated data in the online + databases. Default: true. +* `road to riches`: Announce bodies worth scanning if you are looking for some + starting cash on the Road to Riches. Default: false. + +Other settings: + +* `outdated station threshold`: The threshold for station data to count as + “outdated”, an days. Default: 365. +* `scanner fire group`: The fire group your discovery scanner is assigned to. + Default: 0 (the first one). \ No newline at end of file diff --git a/docs/configuration/RatAttack.md b/docs/configuration/RatAttack.md index 6884ced..58c9402 100644 --- a/docs/configuration/RatAttack.md +++ b/docs/configuration/RatAttack.md @@ -1,283 +1,92 @@ -# RatAttack # +# RatAttack -This profile facilitates [Fuel Ratting](https://www.fuelrats.com). It aims to -eliminate as much of the required manual task and attention switching as -possible via automation and voice commands. +## Getting Case Data From IRC -If you don’t know what the Fuel Rats are, come hang out and ask :) - -## Requirements ## - -Only vanilla VoiceAttack is absolutely required to use this profile. Optionally -you can install EDDI and my elite scripts for advanced features. - -* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin: This - will give you a better (IMO) way of using TTS. Be sure to set - `RatAttack.useEddiForVoice`. It will also enable you to have ingame chat be - transferred to IRC; see below. -* [elite-scripts](https://github.com/alterNERDtive/elite-scripts): Using the - Python scripts will give RatAttack a way to be aware of where your CMDRs are - and give you the nearest one to a rat case. That’s only really needed if you - actually _have_ multiple CMDRs, obviously. If you are using the profile - package from the release page, they will be installed automatically. - -### EDDI speech responder ### - -For the convenience of people that have not been using EDDI in the past, -RatAttack will deactivate the speech responder automatically to not clutter them -with unwanted TTS. - -If you are already an EDDI user and want to keep the default speech responder -functionality, you will have to disable the `EDDI.quietMode` setting by running -the `customize settings disable eddi quiet mode` command. - -## Settings ## - -There are a lot of preferences you can set, including some you really want to -concern yourself with before you start using the profile. Some of the more -advanced features heavily rely on you giving it the correct things to work with. - -See the [Configuration Variables](#Configuration-Variables) section. - -## Including the Profile ## - -When including the profile, be sure to - -* Run the startup command. You will need to have a startup command in your - profile (= one that is run on profile loading) and call `RatAttack.startup` - from that one. -* Make sure all EDDI events that RatAttack needs are correctly handled. For all - events used in RatAttack that you already have handlers for in your profile, - you’ll have to include a call to `RatAttack.`. E.g. for “EDDI - Message sent”, call `RatAttack.EDDI Message sent` by name from your `((EDDI - Message sent))` command. - -## Usage ## - -### Going On/Off Duty ### - -When you are on duty, RatAttack will automatically announce cases coming in -through IRC. When off duty, it won’t. - -* `[enable;disable] rat duty`: puts you on/off duty. -* `open [rat;] dispatch board`: opens the web dispatch board. - -### Handling a Case ### - -#### Getting Case Data From IRC #### - -You can setup your IRC client to pass incoming RATSIGNALS to VoiceAttack by -writing them to a file (`%appdata%\Ratattack\ratsignal.pipe`), then calling the -appropriate command (`RatAttack.announceCaseFromRatsignal` for notification, -`RatAttack.getInfoFromRatsignal` for silently putting it into the case list). +You can setup your IRC client to pass incoming RATSIGNALS to VoiceAttack by calling the +`RatAttack-cli.exe` helper tool with the RATSIGNAL as first argument and an +optional boolean that triggers a TTS case announcement. You can find it under +your VoiceAttack “Apps” folder, `\alterNERDtive\RatAttack-cli.exe`. This has two purposes: -1. announcing a new incoming case -1. storing case data and making it available to VoiceAttack, e.g. for copying - the case’s system into the clipboard +1. Announcing a new incoming case (if passing `true` as second argument). +1. Storing case data and making it available to VoiceAttack, e.g. for copying + the case’s system into the clipboard. -You need to make your IRC client +For my AdiIRC, it looks like this (obviously change the path, please): -1. wait until the file disappears (for several cases coming in at once) -1. write the RATSIGNAL to the file -1. run the VoiceAttack command - -In my case I am running AdiIRC and have the following script setup for handling -this: - -``` +```adiirc on *:TEXT:RATSIGNAL - CMDR*(??_SIGNAL):#fuelrats:{ - /mkdir C:\users\\appdata\roaming\RatAttack\ - /handleratsignal $1- -} -alias handleratsignal { - if ( $exists(C:\users\\appdata\roaming\RatAttack\ratsignal.pipe) ) { - /sleep 1 /handleratsignal $1- - } - else { - /write C:\users\\appdata\roaming\RatAttack\ratsignal.pipe $1- - if ( $away ) { - /run -h "X:\path\to\VoiceAttack\VoiceAttack.exe" -nofocus -command "RatAttack.getInfoFromRatSignal" - } - else { - /run -h "X:\path\to\VoiceAttack\VoiceAttack.exe" -nofocus -command "RatAttack.announceCaseFromRatSignal" - } - } + if ( $away ) { + /run -h "X:\path\to\VoiceAttack\Apps\alterNERDtive\RatAttack-cli.exe" " $+ $replace($1-,","") $+ " false + } + else { + /run -h "X:\path\to\VoiceAttack\Apps\alterNERDtive\RatAttack-cli.exe" " $+ $replace($1-,","") $+ " true + } } ``` -You get the gist; if not and you don’t know how to do the same thing for your -IRC client or it doesn’t support copying the control characters in the ratsignal -that the profile uses to split the information, either switch to AdiIRC or bribe -me to include some other way to get case data into VoiceAttack. +If I am away it will just add the new case to the list. If I am not away, it +will announce it using TTS. -**Note**: If you are running VoiceAttack as admin you need to run your IRC -client as admin, too! Otherwise it can’t talk to VoiceAttack for security -reasons. You really should _not_ run VoiceAttack with elevated privileges -though. Or anything. +The “replace” part handles the fact that announcements now put the system in +quotes. They have to be escaped as double quotes (`""`) to create a correct +command invocation. -#### Internal Case List #### +You get the gist; if not and you don’t know how to do the same thing for your +IRC client, either switch to AdiIRC or bribe me to make an example for yours. -If you have your IRC client setup properly, VoiceAttack will hold a list with -all rat cases that have come in while you had it running. It will save the case -number, CMDR name, system, O₂ status and platform. There are several commands -you can run on this list, giving it a case number: +Note: If you are not on duty (see below) you will _not_ get case announcements. -* `rat case number [0..19] details`: Will give you all stored info on a case. -* `[current;] rat case details`: Will give you all stored info on the currently - open case. -* `distance to current rat case`: Will give you the distance from your current - location to the currently opened rat case. Requires the use of my - `elite-scripts` Python scripts. -* `distance to rat case number [0..19]`: Will give you the distance from your - current system to a case’s system. Requires the use of my `elite-scripts` - Python scripts. -* `nearest commander to rat case number [0..19]`: Will give you the nearest of - your CMDRs with their distance to a case’s system. Requires some setup and the - use of my `elite-scripts` Python scripts. -* `nearest commander to [the;] rat case`: Will give you the nearest of your - CMDRs with their distance to the current case’s system. Requires some setup - and the use of my `elite-scripts` Python scripts. +## Announcing Your Nearest CMDR -#### Opening a Case #### +In case you have more than one CMDR registered as a Fuel Rat, you can have +VoiceAttack announce the nearest one to a case and the distance. You will have +to go through a couple steps to set that up: -* `open rat case number [0..19]`: Opens rat case with the given number. If there - is no case data for that case (e.g. because you don’t have your IRC client set - up properly), it will still open it, just not have any data on it. -* `open [latest;] rat case`: Opens the latest rat case that has come in through - IRC. Will probably error out in creative ways if you don’t have your IRC - client set up properly. Too tired right now to have proper error handling so - just open an issue if you run into problems (it’s 7am, I haven’t slept and - want to finish this doc to get the release out (yes, you are allowed to laugh - at this section)). +1. Have all CMDRs on EDSM. +1. Have all profiles on EDSM set to _public_ including your flight log (which + includes the current location). +1. Set the CMDR names you want to use (“customize setting set fuel rat + commanders”). +1. Enable the nearest CMDR announcements (“customize setting enable nearest + commander to fuel rat case”). -#### Closing a Case #### +You can use this for a single CMDR, too. A less convoluted setup for announcing +the distance to your location in that case is on the list™ but does not have an +ETA yet. -* `[close;clear] rat case`: Closes the currently open rat case. +Currently there is no way to specify a platform for each CMDR. -### Making Calls ### +## Ingame chat → FuelRats IRC -There are a bunch of calls you can make for a case, the most common are modelled -through VoiceAttack commands. The descriptive commands (e.g. “system confirmed”) -will be shortened to the usual IRC short hands (e.g. “sysconf”). If you need -something more unusual you can either still manually type it into your IRC -client or use the “General IRC Integration”, see below. +You can send messages from ingame chat directly to the “\#fuelrats” and +“\#ratchat” channels on FuelRats IRC. (See [[#FIXXME]]) -* `call [1..20] jumps [and login;and takeoff;left;]`: Calls jump for the - currently open case. You can optionally include that you will still have to - login to the game or have to take off from your current - station/port/outpost/planet. -* `call friend [positive;negative] [in pg;in private group;in solo;in main - meu;sysconf;system confirmed]`: Friend request confirmations, with all the - things you might want to / should call with it. -* `call [beacon;fuel;instance;pos;position;prep;sys;system;wing] - [positive;negative]`: All the stuff you usually need for ratting after you - have received the friend request. -* `call wing pending`: Calls “wr pending” for when it takes 30s again to - actually show up. -* `call client in [exclusion zone;main menu;open;open sysconf;pg;private - group;solo;super cruise]`: Callouts for all the various things a client could - get themselves into. -* `call [client destroyed;client offline;sysconf;system confirmed]`: This is the - command you don’t want to use. Include sysconf in your “friend+” or “in open” - calls, and make sure you will never have to call “client destroyed”, would - you? - -### General IRC Interaction ### - -(requires EDDI) - -Using EDDI to read the game’s journal, you can send messages to IRC from Elite’s -ingame chat. - -**Be aware that the chat message will still appear in the ingame chat channel -you send it to!** - -I recommend using local chat and limiting the use to instances that will -probably not have other players in it (e.g. instanced in normal space with the -client or in SC in some remote system out in the black on a long range rescue). - -* #fuelrats: Use “.fr \” to have VoiceAttack send “#\ - \” to the #fuelrats channel – or yell at you when you are not on - a case. -* #ratchat: Use “.rc \” to have VoiceAttack send “\” to - #ratchat. - -These commands send their text to windows with “#fuelrats” and “#ratchat” in +That will send text to windows with “#fuelrats” and “#ratchat” in their title, respectively. If your IRC client does not do that, you will have to change the “target” window of the `RatAttack.sendToFuelrats` and `RatAttack.sendToRatchat` commands to reflect the actual window titles on your system. I will look into making this more elegant to change in the future. -## Logging ## +## Settings -The profile supports logging a bunch of stuff to the VoiceAttack event log. By -default, logging is concise and constrained to basically error messages. +Toggles: -If you need more logging (usually for debugging purposes), say `enable logging`. -If you want to enable verbose logging _by default_, call the -`Logging.enableLogging` command from your custom profile’s `startup` command. - -## Exposed Variables ## - -The following Variables are _global_ and thus readable (and writeable! Please -don’t unless it’s a config variable …) from other profiles. - -### Configuration Variables ### - -There are a bunch of configuration variables. You should not overwrite those -manually, instead use the provided commands in the `_configuration` section! - -Basically all the settings are available using the `customize settings` prefix, -then saying `[enable;disable] ` for on/off switches and `set ` -for text variables. - -* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default: - true. -* `EDDI.useEddiForVoice` (boolean): whether to use the EDDI plugin to handle - text-to-speech over VoiceAttacks built-in speech function. Default: false. -* `Elite.pasteKey` (string): the key used for pasting into Elite. On QWERTY this - is `v`. Default: `v`. -* `RatAttack.announceNearestCMDR` (boolean): whether or not to automatically - announce your nearest CMDR to a case. Requires the `elite-scripts` Python - scripts. Will probably break in creative ways if you don’t have them and turn - it on anyway. Default: false. -* `RatAttack.announcePlatform` (boolean): whether or not to announce the case’s - platform by default. Useful to set if you are active on more than one - platform. Even with this off, you will still be warned when you open a case - that is _not_ on one of your platforms. Default: false. -* `RatAttack.CMDRs` (string): list of your CMDR names, delimited by spaces. If - your names include spaces, you will have to put them in quotes. Default: “"J - Jora Jameson" NameWithNoSpace”. -* `RatAttack.confirmCalls` (boolean): whether VoiceAttack should ask you before - posting to #fuelrats to make sure there hasn’t been an error in voice - recognition and you accidentally post the wrong thing. Default: true. -* `RatAttack.autoCloseCase` (boolean): whether or not to automatically close an - open rat case on calling “fuel+”. Default: false. -* `RatAttack.onDuty` (boolean): whether or not you are currently on rat duty. +* `auto close fuel rat case`: Automatically close a rat case when sending + “fuel+” via voice command or ingame chat. Default: false. +* `fuel rat call confirmation`: Only make calls in #fuelrats after vocal + confirmation to prevent mistakes. Default: true. +* `fuel rat duty`: Set FuelRats duty to active when the profile is loaded. Default: true. -* `RatAttack.platforms` (string): the platforms you want to be informed of - incoming cases for. If you are on console, you can still have VoiceAttack - running on the PC that you are using for IRC and handle calls and stuff using - voice! Delimited by whatever you want. Can include “PC”, “XB”, “PS4”. - Default: “PC”. -* `python.scriptPath` (string): the path you put the Python scripts in. Default: - “{VA_DIR}\Sounds\scripts”. +* `nearest commander to fuel rat case`: Announce the nearest commander to + incoming rat cases. Default: false. +* `platform for fuel rat case`: Announce the platform for incoming rat cases. + Default: false. -### Other Variables ### +Other Settings: -Current case data: - -* `RatAttack.caseNumber` (int): the number of the case you are currently on. - Will be `Not Set` if you are not on a case. -* `RatAttack.onCase` (boolean): whether or not you are currently on a case. - -Case list: - -* `RatAttack.caseList..cmdr` (string) -* `RatAttack.caseList..system` (string) -* `RatAttack.caseList..platform` (string) -* `RatAttack.caseList..codeRed` (boolean) - -… with `` being a number between 0 and 19. +* `fuel rat commanders`: All your CMDRs that are ready to take rat cases. Use + ‘;’ as separator, e.g. “Bud Spencer;Terrence Hill”. Default: "". +* `fuel rat platforms`: The platform(s) you want to get case announcements for + (PC, Xbox, Playstation). Use ‘;’ as separator, e.g. “PC;Xbox”. Default: "PC". \ No newline at end of file diff --git a/docs/configuration/SpanshAttack.md b/docs/configuration/SpanshAttack.md index f5d2422..b542dc8 100644 --- a/docs/configuration/SpanshAttack.md +++ b/docs/configuration/SpanshAttack.md @@ -1,241 +1,50 @@ -# SpanshAttack # +# SpanshAttack -This profile uses the -[ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter) plugin to plot -neutron jumps using [spansh](https://spansh.co.uk/plotter). It fully does -everything you need from within the game and VoiceAttack, you won’t have to -visit the site at any point. +## Supplying Your Ship’s Range -## Requirements ## +The ED-NeutronRouter plugin is technically supposed to read the current jump +range from EDDI; sadly a) it’s +[bugged](https://github.com/sc-pulgan/ED-NeutronRouter/issues/3) right now, and +b) EDDI is storing the _maximum_ distance for your ship instead of the current / +full on fuel one. -In addition to VoiceAttack, you will need the following plugins to use this -profile: +The “default to laden range” option works reasonably well, but it has a few +quirks. It always assumes full cargo, and it will take your _current_ fuel +levels for range calculations, disregrading the range loss if you fill your tank. -* [bindED](https://forum.voiceattack.com/smf/index.php?topic=564.0) -* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin -* [ED-NeutronRouter](https://github.com/sc-pulgan/ED-NeutronRouter): required - for SpanshAttack. **Make sure to [grab the pre-release - 1.02](https://github.com/sc-pulgan/ED-NeutronRouter/releases/tag/1.02)** since - 1.01 has a bug with a hardcoded 50 ly jump range. +For any ships that you regularly use for neutron jumping, e.g. long range Fuel +Rat ships, I recommend telling SpanshAttack about the range they are supposed to +have with full fuel and your preferred amount of cargo/limpets. -### EDDI speech responder ### +In oder to do that, copy the `SpanshAttack.getShipRange` command from +SpanshAttack or the example profile to your custom profile and add your ships. +Any ship listed in there will automatically have its jump range used instead of +EDDI’s reported laden range or VoiceAttack prompting you to manually supply it. -For the convenience of people that have not been using EDDI in the past, -SpanshAttack will deactivate the speech responder automatically to not clutter -them with unwanted TTS. +![[SpanshAttack-getshiprange.png]] -If you are already an EDDI user and want to keep the default speech responder -functionality, you will have to disable the `EDDI.quietMode` setting by running -the `customize settings disable eddi quiet mode` command. +You can override a saved range for your ship by using the +`plot neutron [course;route;trip] with custom range` command. -## Settings ## +## Settings -Because Elite’s keyboard handling is … weird you’ll have to set the key to use -for pasting text into Elite:Dangerous. If you are not using a “standard” -QWERT[YZ] layout, you will have to change it back to the key that is physically -in the place where `v` would be on QWERTY. +Toggles: -For other settings, see the [Configuration Variables](#Configuration-Variables) -section. +* `auto jump after scooping`: Automatically accelerate and jump out when fuel + scooping is complete. Default: true. +* `auto plot`: Automatically plot to the next waypoint after supercharging. + Default: true. +* `clear neutron route on shutdown`: Clear an active neutron route when the game + is shut down. Default: true. +* `copy neutron waypoints to clipboard`: Copy each neutron waypoint into the + Windows clipboard. Default: false. +* `default to laden range`: Default to the current ship’s laden range as + reported by EDDI instead of prompting for input. Default: false. +* `time neutron route`: Keep track of how long a neutron route takes you to + complete. Default: false. +* `waypoint announcements`: Announce each waypoint by name. Default: true. -The last “setting” in the not-so-strict sense of the word is the -`SpanshAttack.getShipRange` command. Any ship listed in there will automatically -have its jump range used instead of VA prompting you for it. Since, again, VA -will execute the first matching command found, you can create this command in -your own profile when you are using SpanshAttack by including it. You can -override a saved range for your ship by using the `plot neutron -[course;route;trip] with custom range` command. +Other Settings: -The ED-NeutronRouter plugin is technically supposed to read the current jump -range from EDDI; sadly a) it’s -[bugged](https://github.com/sc-pulgan/ED-NeutronRouter/issues/3) right now, and -b) EDDI is storing the _maximum_ distance for your ship instead of the current -/ full on fuel one. - -## Including the Profile ## - -When including the profile, be sure to - -* Run the startup command. You will need to have a startup command in your - profile (= one that is run on profile loading) and call `SpanshAttack.startup` - from that one. -* Make sure all EDDI events that SpanshAttack needs are correctly handled. For - all events used in SpanshAttack that you already have handlers for in your - profile, you’ll have to include a call to `SpanshAttack.`. E.g. - for “EDDI Jumped”, call `SpanshAttack.EDDI Jumped` by name from your `((EDDI - Jumped))` command. -* (Optional) Have a `SpanshAttack.getShipRange` command in your profile to - overwrite the default one with your ship’s ranges. See the default command for - pointers. - -## Usage ## - -### Plotting a Route ### - -1. _Target_ the system you want to be routed to (target, do not plot to it). -1. Either exit the galaxy map or make sure you are on its first tab (or - auto-plotting will break). -1. Trigger the `SpanshAttack.plotRoute` command either by voice (`plot neutron - [course;route;trip] [with custom range;]`) or calling it from another - command. -1. Enter your ship’s jump range if prompted. -1. Wait for the route to be calculated. The command will automatically open the - galaxy map and jump to the first waypoint on your route. If you run into - weird behaviour, it’s probably because your target system is not in EDDB. -1. Either target the first waypoint or plot to it. -1. Start jumping! - -#### Plotting to a System Unknown to the Neutron Router #### - -The router can only plot a route to a system that is in its data base (obviously -can also only give you way points that are). If your target system is not, there -are several levels of fallback handling to find a system that is. - -1. Check `Next system` coordinates provided by EDDI. If the system is in EDSM, - but has for some reason not been sent over EDDN to other sites including - Spansh we can get coordinates here. -1. If the system is not in EDSM check EDTS. It can calculate approximate - coordinates for a given procedurally generated system name. -1. If that fails prompt the user for input. -1. Query Spansh’ API for the closest system to these coordinates. -1. Plot a route to the closest system. - -Generally you should almost never be asked to input coordinates manually. If -EDTS provides coordinates with an accuracy that is worse than ±100 ly per axis, -you will be prompted to make sure you are going roughly to the right -coordinates. You will find the system that is used for plotting, its -coordinates and the accuracy in VoiceAttack’s log window. - -### Neutron Jumping ### - -With standard settings, just supercharge off a neutron cone. You should -automatically be taken to the galaxy map with the next waypoint selected. - -In case you have disabled auto-plotting to the next waypoint, manually invoke -the `SpanshAttack.targetNextNeutronWaypoint` command by voice (`[target;] next -neutron [waypoint; way point]`) or calling it from another command. - -Additionally, you can use the `SpanshAttack.copyNextNeutronWaypoint` -/ `[get;copy] next neutron [waypoint;way point]` command to copy the next -neutron waypoint to the clipboard. - -#### Manual Re-Plot #### - -Trigger the `SpanshAttack.replotRoute` command either by voice (`replot neutron -[course;route;trip]`) or calling it from another command. This will start -a re-plot of the current route with the same target system and jump range. - -### Refueling ### - -Whenever you refuel off a scoopable star, the profile will automatically -throttle back up to 100% speed. Unless you have disabled it in your -configuration, you will also automatically target the next system on your route -and jump to it once you leave fuel scoop range. - -### Clearing a Route ### - -When you reach your target system, the neutron route will automatically be -cleared. If you want to prematurely end your trip, call the -`SpanshAttack.clearRoute` / `clear neutron [course;route;trip]` command. - -## Other Commands ## - -### Announcing Jumps Left ### - -You can have VoiceAttack tell you the amount of jumps left on the current route -by invoking `SpanshAttack.announceJumpsLeft` or saying -`how many [neutron;] jumps [are;] left?`. - -**Note**: Because it’s pretty much impossible to calculate a 100% accurate value -for the total jumps left, it will just tell you the jump count _from the current -neutron waypoint_. - -### Announce elapsed time on the trip ### - -SpanshAttack keeps track of your start time, even if you have the option to time -your trip turned off. This way you can get the time you’ve been jumping with the -`SpanshAttack.announceTripTime` or -`how long have i been [jumping;on this trip;on this neutron trip]?` commands. - -### Reload bindings ### - -If you change any relevant bindings (e.g. the galaxy map key), you should run -the `reload bindings` command to make sure that SpanshAttack presses the right -thing for you. - -Eh, just do it every time you edit your controls without re-starting -VoiceAttack, just to be sure. - -### Helper Functions ### - -The profile contains a lot of helper functions that get called by the -aforementioned commands. Have a look around, maybe learn something about -VoiceAttack :) - -## Logging ## - -The profile supports logging a bunch of stuff to the VoiceAttack event log. By -default, logging is concise and constrained to basically error messages. - -If you need more logging (usually for debugging purposes), say `enable logging`. -If you want to enable verbose logging _by default_, call the -`Logging.enableLogging` command from your custom profile’s `startup` command. - -## Exposed Variables ## - -The following Variables are _global_ and thus readable (and writeable! Please -don’t unless it’s a config variable …) from other profiles: - -### Configuration Variables ### - -There are a bunch of configuration variables. You should not overwrite those -manually, instead use the provided commands in the `_configuration` section! - -Basically all the settings are available using the `customize settings` prefix, -then saying `[enable;disable] ` for on/off switches and `set ` -for text variables. - -* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default: - true. -* `EDDI.useEddiForVoice` (boolean): whether to use EDDI over VA’s builtin `say` - command. Default: false. -* `Elite.pasteKey` (string): the key used for pasting into Elite. On QWERTY this - is `v`. Default: `v`. -* `SpanshAttack.timeTrip` (boolean): whether to automatically tell you at the - end of a trip how long it took you to get there. Default: false. -* `SpanshAttack.announceWaypoints` (boolean): whether to announce each waypoint - of the neutron route. Default: true. -* `SpanshAttack.announceJumpsLeft` (string): `;`-separated list of remaining - jumps to announce when said amounts are reached. Right now only works if they - are _exactly_ reached when supercharging off a neutron. Note the extra `;` at - the beginning and end of the string. Default: `;1;3;5;10;15;20;30;50;75;100;` -* `SpanshAttack.autoJumpAfterScooping` (boolean): whether to automatically jump - after fuel scooping (and moving out of scoop range). Default: true. -* `SpanshAttack.autoPlot` (boolean): whether to automatically plot to the next - waypoint on supercharging. Default: true. -* `SpanshAttack.clearOnShutdown` (boolean): whether or not to automatically - clear an active neutron route on Elite client shutdown. Default: true. -* `SpanshAttack.defaultToLadenRange` (boolean): whether or not to default to - your ship’s laden range (as reported by EDDI) instead of asking for user - input. Sadly it’s with _current_ fuel, not full. Setting a ship’s jump range - in the `SpanshAttack.getShipRange` command will still overrule this. Default: - false. -* `SpanshAttack.copyWaypointToClipboard` (boolean): whether to copy the next - waypoint into the Windows clipboard for use in other programs. Default: false. -* `python.scriptPath` (string): the path you put the Python scripts in. - Default: “{VA_DIR}\Sounds\scripts”. - -### Other Variables ### - -These variables can be used to get information about the current neutron route. -Please do not set them manually and / or from outside the SpanshAttack profile. - -* `SpanshAttack.plotSystem` (string): the system actually plotted towards using - the neutron router (onley used/set if the target system is not in the data - base) -* `SpanshAttack.targetSystem` (string): the target system for the current - neutron route -* `SpanshAttack.nextNeutronWaypoint` (string): the next waypoint on the current - neutron route -* `SpanshAttack.neutronJumpMode` (boolean): neutron jump mode active/inactive -* `SpanshAttack.jumpRange` (decimal): the current ship’s jump range +* `announce jumps left`: Estimated jumps left to announce when reached. NEEDS to + have leading and trailing “;”. Default: ";1;3;5;10;15;20;30;50;75;100;" \ No newline at end of file diff --git a/docs/configuration/StreamAttack.md b/docs/configuration/StreamAttack.md index 36828dd..5b455d2 100644 --- a/docs/configuration/StreamAttack.md +++ b/docs/configuration/StreamAttack.md @@ -1,120 +1,6 @@ -# StreamAttack # +# StreamAttack -This profile uses the [EDDI](https://github.com/EDCD/EDDI) plugin to write -a bunch of information about your commander, your current location and your ship -to files that can be accessed e.g. by your streaming software to be displayed on -stream. +## Settings -Default folder is `%appdata%\StreamAttack\`. - -## Requirements ## - -In addition to VoiceAttack, you will need the following plugins to use this -profile: - -* [EDDI](https://github.com/EDCD/EDDI) installed as a VoiceAttack plugin - -### EDDI speech responder ### - -For the convenience of people that have not been using EDDI in the past, -StreamAttack will deactivate the speech responder automatically to not clutter -them with unwanted TTS. - -If you are already an EDDI user and want to keep the default speech responder -functionality, you will have to disable the `EDDI.quietMode` setting by running -the `customize settings disable eddi quiet mode` command. - -## Settings ## - -See the [Configuration Variables](#Configuration-Variables) section. - -## Including the Profile ## - -When including the profile, be sure to - -* Run the startup command. You will need to have a startup command in your - profile (= one that is run on profile loading) and call `StreamAttack.startup` - from that one. -* Make sure all EDDI events that StreamAttack needs are correctly handled. For - all events used in StreamAttack that you already have handlers for in your - profile, you’ll have to include a call to `StreamAttack.`. E.g. - for “EDDI Jumped”, call `StreamAttack.EDDI Jumped` by name from your `((EDDI - Jumped))` command. - -## Commands ## - -* `clear jump target`: clears the current jump target. -* `set jump target`: sets the jump target to the currently targeted system. - Distance will be written to the configured file. - -* `[copy;open] ship build`: copies the current ship build (coriolis) or opens it - in your default browser. -* `open StreamAttack folder`: opens the configured folder in Explorer. - -## Files the Profile Provides ## - -### Elite ### - -#### Commander #### - -* `Elite\cmdr\name`: the current commander’s name. - -#### Jump Target #### - -* `Elite\jumpTarget\distance`: distance to current jump target in light years. -* `Elite\jumpTarget\full`: pretty-printed ` ly to `. -* `Elite\jumpTarget\name`: the current jump target’s system name. - -#### Location #### - -* `Elite\location\full`: depending on your status, either the station you are - currently docked at (+ system), the body you are currently near, or the system - you are currently in. -* `Elite\location\system`: the system you are currently in. - -#### Ship #### - -* `Elite\ship\build`: your current ship’s loadout (link to coriolis). -* `Elite\ship\full`: `“” | | `. -* `Elite\ship\model`: your current ship’s model. -* `Elite\ship\name`: your current ship’s name. - -## Logging ## - -The profile supports logging a bunch of stuff to the VoiceAttack event log. By -default, logging is concise and constrained to basically error messages. - -If you need more logging (usually for debugging purposes), say `enable logging`. -If you want to enable verbose logging _by default_, call the -`Logging.enableLogging` command from your custom profile’s `startup` command. - -## Exposed Variables ## - -The following Variables are _global_ and thus readable (and writeable! Please -don’t unless it’s a config variable …) from other profiles: - -### Configuration Variables ### - -There are a bunch of configuration variables. You should not overwrite those -manually, instead use the provided commands in the `_configuration` section! - -Basically all the settings are available using the `customize settings` prefix, -then saying `[enable;disable] ` for on/off switches and `set ` -for text variables. - -* `EDDI.quietMode` (boolean): whether or not to set EDDI to quite mode. Default: - true. -* `EDDI.useEddiForVoice` (boolean): whether to use EDDI over VA’s builtin `say` - command. Default: false. -* `StreamAttack.outputDir` (string): the directory StreamAttack will save its - information to. Default: `%appdata%\StreamAttack\`. -* `python.ScriptPath` (string): the path you have placed the compiled Python - scripts in. Default: “{VA_DIR}\Sounds\scripts” (the “\Sounds\scripts” folder - in your VoiceAttack installation directory). - -### Other Variables ### - -These variables can be used to get information about the current neutron route. -Please do not set them manually and / or from outside the StreamAttack profile. - -* `StreamAttack.Elite.jumpTarget` (string): the current jump target. +* `StreamAttack output directory`: The directory the status files are written + to. Default: "%appdata%\StreamAttack\" \ No newline at end of file diff --git a/docs/configuration/general.md b/docs/configuration/general.md index 0fd4b2c..710cf64 100644 --- a/docs/configuration/general.md +++ b/docs/configuration/general.md @@ -33,14 +33,28 @@ selected, but be preserved if you switch around. Toggles: +* `auto update check`: Automatically check Github for profiles updates. * `eddi quiet mode`: Make EDDI shut up. Disables all built-in speech responders. Other settings: * `elite paste key`: The key used to paste in conjunction with CTRL. The - physical key in your layout that would be 'V' on QWERTY. + physical key in your layout that would be 'V' on QWERTY. Default: 'v'. * `log level`: The level of detail for logging to the VoiceAttack log. Valid levels are "ERROR", "WARN", "NOTICE", "INFO" and "DEBUG". Default: "NOTICE". + Default: "NOTICE". +* `quit to desktop delay`: The delay before restarting the game after hitting + “Exit to Desktop”. Default: 10.0 seconds. (Used by the `restart from desktop` + command) + +## Note on Non-Standard Keyboard Layouts + +Because Elite’s keyboard handling is … weird you’ll have to set the key to use +for pasting text into Elite:Dangerous. If you are not using a “standard” +QWERT[YZ] layout, you will have to change it back to the key that is physically +in the place where `v` would be on QWERTY. + +To set the key, say “customize setting set elite paste key”. ## Adding Commands diff --git a/docs/general.md b/docs/general.md index 71d400d..fcfa1d4 100644 --- a/docs/general.md +++ b/docs/general.md @@ -1 +1,40 @@ -# General Commands \ No newline at end of file +# General Commands + +## Configuration + +The base profile provides voice commands for changing the profiles’ settings. +See [the configuration section](/configuration/general#settings). + +## Chat + +* `paste text`: Pastes the contents of your current clipboard. Note that this + command is supposed to be used for pasting _into Elite_ and hence uses the + configured paste key. If you’re using a non-standard layout that means that + you can _not_ use this command to paste text into other applications. + +## Updating + +* `check for profiles update`: Checks Github for a new version, and alerts you + if there is one. +* `download profiles update`: Opens the latest release on Github and the + VoiceAttack import folder where you can drop it. +* `open profiles [docs;documentation;help] [file;site;]`: Opens this + documentation, either on the web or the PDF file supplied with the installed + release. +* `open profiles change log`: Opens the CHANGELOG on Github. +* `open voiceattack [apps;import;sounds] [folder;directory]`: Opens the + respective VoiceAttack-related folder. + +## Miscellaneous + +* `generate missing key binds report`: Generates a report of missing key binds + and places it on your Desktop. Note that this currently uses bindED’s built-in + report which will output _any_ bind that does not have a keyboard key set, + including axis binds and binds that are not actually used by the profiles. +* `open EDDI options;configure EDDI`: Displays EDDI’s configuration window. +* `open elite bindings folder`: Opens Elite’s bindings folder + (`%localappdata%\Frontier Developments\Elite Dangerous\Options\Bindings`) +* `reload elite key binds`: Forces a reload of your Elite binds. Should not be + necessary. +* `shut up EDDI`: Immediately interrupts any current and pending speech on + EDDI’s end. \ No newline at end of file diff --git a/docs/images/SpanshAttack-getshiprange.png b/docs/images/SpanshAttack-getshiprange.png new file mode 100644 index 0000000..28b6407 Binary files /dev/null and b/docs/images/SpanshAttack-getshiprange.png differ diff --git a/docs/index.md b/docs/index.md index 70749dc..edb3077 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,6 +10,10 @@ to enhance my Elite experience. They give me important info, facilitate day-to-day gaming and do some special things for [Fuel Rats](https://fuelrats.com) and [Hull Seals](https://hullseals.space) work. +You can find the full +[Changelog](https://github.com/alterNERDtive/VoiceAttack-profiles/blob/release/CHANGELOG.md) +on Github. + ## Available Profiles * [EliteAttack](EliteAttack): The main Elite VA profile. Anything related to diff --git a/docs/upgrading.md b/docs/upgrading.md index 47d13a8..2db05f8 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -8,7 +8,7 @@ To upgrade to the latest version, follow these steps: 1. Restart VoiceAttack. In general, migration from old versions will be handled automatically. If there -is something you have to do manually, you will find the information below. +is something you have to do manually you will find the necessary steps below. ## 3.x.x to 4.0 @@ -20,11 +20,33 @@ If you have not … well, you will unfortunately have to take note of your settings, and recreate them after creating a custom profile and including everything. +Please do not fiddle with the configuration variables from your startup command +(or any other, really). It _should_ not break anything, but it might. And it is +entirely unnecessary since configuration will be saved to and loaded from the +profile anyway. + ### bindED If you have done anything non-standard with bindED before, it might break. The profiles now include my fork of bindED which has a lot more features, but -doesn’t support a bunch of plugin invocations that have become obsolete. +does no longer support a bunch of plugin invocations that have become obsolete. + +Please [file an issue with +bindED](https://github.com/alterNERDtive/bindED/issues/new/choose) on Github if +your use case does not work anymore. + +### EliteDangerous + +The “EliteDangerous” profile is no longer the main profile. Instead you will +_have_ to create a custom profile, and the new “base” profile that the others +require to be included in your custom profile is “alterNERDtive-base”. That way +you can use e.g. RatAttack without having to also use the general Elite profile. + +It has also been renamed to “EliteAttack” to be consistent with the others. If +you are upgrading from an older version the name will not change for you in the +profiles list. I recommend renaming your “EliteDangerous” profile to +“EliteAttack” to prevent confusion in the future, but it is not strictly +necessary to do so. ### RatAttack diff --git a/mkdocs.yml b/mkdocs.yml index 03a18de..4247bf5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,7 @@ site_name: "alterNERDtive VA profiles" site_url: https://alterNERDtive.github.io/VoiceAttack-profiles repo_url: https://github.com/alterNERDtive/VoiceAttack-profiles -edit_uri: "edit/release/docs/" +edit_uri: "edit/devel/docs/" site_description: "alterNERDtive VoiceAttack profiles for Elite: Dangerous" site_author: "alterNERDtive" remote_name: "ssh-origin" diff --git a/plugins/VoiceAttack-base/util.cs b/plugins/VoiceAttack-base/util.cs index 632e4ad..7de6946 100644 --- a/plugins/VoiceAttack-base/util.cs +++ b/plugins/VoiceAttack-base/util.cs @@ -20,10 +20,13 @@ namespace alterNERDtive.util { "alterNERDtive-base", new OptDict{ + { new Option("delays.keyPressDuration", (decimal)0.01, voiceTrigger: "key press duration", description: "The time keys will be held down for.") }, + { new Option("delays.quitToDesktop", (decimal)10.0, voiceTrigger: "quit to desktop delay", + description: "The delay before restarting the game after hitting “Exit to Desktop”.\nDefault: 10.0 seconds. (Used by the `restart from desktop` command)") }, { new Option("eddi.quietMode", true, voiceTrigger: "eddi quiet mode", description: "Make EDDI shut up. Disables all built-in speech responders.") }, - { new Option("keyPressDuration", (decimal)0.01, voiceTrigger: "key press duration", description: "The time keys will be held down for.") }, { new Option("elite.pasteKey", "v", voiceTrigger: "elite paste key", description: "The key used to paste in conjunction with CTRL. The physical key in your layout that would be 'V' on QWERTY.") }, + { new Option("enableAutoUpdateCheck", true, voiceTrigger: "auto update check", description: "Automatically check Github for profiles updates.") }, { new Option("log.logLevel", "NOTICE", voiceTrigger: "log level", validValues: new List{ "ERROR", "WARN", "NOTICE", "INFO", "DEBUG" }, description: @"The level of detail for logging to the VoiceAttack log.\nValid levels are ""ERROR"", ""WARN"", ""NOTICE"", ""INFO"" and ""DEBUG"".\nDefault: ""NOTICE"".") }, } @@ -36,18 +39,17 @@ namespace alterNERDtive.util { new Option("announceMappingCandidates", true, voiceTrigger: "mapping candidates", description: "Announce bodies worth mapping when you’ve finished scanning a system.\n(Terraformables, Water Worlds, Earth-Like Worlds and Ammonia Worlds that have not been mapped yet.)") }, { new Option("announceOutdatedStationData", true, voiceTrigger: "outdated stations", description: "Announce stations with outdated data in the online databases.") }, - { new Option("announceR2RMappingCandidates", true, voiceTrigger: "road to riches", + { new Option("announceR2RMappingCandidates", false, voiceTrigger: "road to riches", description: "Announce bodies worth scanning if you are looking for some starting cash on the Road to Riches.") }, { new Option("autoHonkAllSystems", false, voiceTrigger: "auto honk all systems", description: "Automatically honk upon entering a system, each jump without constraints.") }, { new Option("autoHonkNewSystems", true, voiceTrigger: "auto honk new systems", description: "Automatically honk upon entering as system if it is your first visit.") }, { new Option("autoRestock", true, voiceTrigger: "auto restock", description: - "Automatically restock after docking at a station.\nYou will alywas refuel, repair and enter the Station Services menu.") }, - { new Option("delays.quitToDesktop", (decimal)10.0, voiceTrigger: "quit to desktop delay", - description: "The delay before restarting the game after hitting “Exit to Desktop”.\nDefault: 10.0 seconds.") }, - { new Option("enableAutoUpdateCheck", true, voiceTrigger: "auto update check", description: "Automatically check Github for profiles updates.") }, + "Automatically restock after docking at a station.\nYou will always refuel, repair and enter the Station Services menu.") }, { new Option("flightAssistOff", false, voiceTrigger: "flight assist off", description: "Permanent Flight Assist off mode. You should really do that, it’s great.") }, - { new Option("hyperspaceDethrottle", true, voiceTrigger: "hyper space dethrottle", description: "Throttle down after a jump and when dropping from SC. Like the SC Assist module does.") }, - { new Option("outdatedStationThreshold", 365, voiceTrigger: "outdated station threshold", description: "The threshold for station data to count as “outdated”.\nDefault: 365 days.") }, + { new Option("hyperspaceDethrottle", true, voiceTrigger: "hyper space dethrottle", + description: "Throttle down after a jump and when dropping from SC. Like the SC Assist module does.") }, + { new Option("outdatedStationThreshold", 365, voiceTrigger: "outdated station threshold", + description: "The threshold for station data to count as “outdated”, in days.\nDefault: 365.") }, { new Option("scannerFireGroup", 0, voiceTrigger: "scanner fire group", description: "The fire group your discovery scanner is assigned to.\nDefault: 0 (the first one).") }, { new Option("usePrimaryFireForDiscoveryScan", false, voiceTrigger: "discovery scan on primary fire", description: "Use primary fire for honking instead of secondary.") }, } @@ -69,10 +71,11 @@ namespace alterNERDtive.util { "SpanshAttack", new OptDict{ - { new Option("announceJumpsLeft", ";1;3;5;10;15;20;30;50;75;100;", voiceTrigger: "announce jumps left") }, + { new Option("announceJumpsLeft", ";1;3;5;10;15;20;30;50;75;100;", voiceTrigger: "announce jumps left", + description: "Estimated jumps left to announce when reached.\nNEEDS to have leading and trailing “;”.") }, { new Option("announceWaypoints", true, voiceTrigger: "waypoint announcements", description: "Announce each waypoint by name.") }, { new Option("autoJumpAfterScooping", true, voiceTrigger: "auto jump after scooping", description: "Automatically accelerate and jump out when fuel scooping is complete.") }, - { new Option("autoPlot", true, voiceTrigger: "auto plot", description: "Automatically plot to the next waypoint after super charging.") }, + { new Option("autoPlot", true, voiceTrigger: "auto plot", description: "Automatically plot to the next waypoint after supercharging.") }, { new Option("clearOnShutdown", true, voiceTrigger: "clear neutron route on shutdown", description: "Clear an active neutron route when the game is shut down.") }, { new Option("copyWaypointToClipboard", false, voiceTrigger: "copy neutron waypoints to clipboard", description: "Copy each neutron waypoint into the Windows clipboard.") }, { new Option("defaultToLadenRange", false, voiceTrigger: "default to laden range",