Compare commits

...

34 commits

Author SHA1 Message Date
6f42d89ba1
README: typos 2022-08-26 21:36:29 +02:00
8fd21506b4
fixed: restart journal reader after game restart 2022-08-26 17:33:24 +02:00
bc59480ebd
Race 7: Mischief Mile 2022-08-26 17:26:50 +02:00
1afd7ce8f5
added project link to all layouts 2022-08-01 22:54:40 +02:00
a217d46721
5.0.1 2022-07-23 17:35:36 +02:00
d6ab42bb45
Chicken Run: fixed typo in splits file 2022-07-23 17:32:54 +02:00
0011d8f6fc
5.0 2022-07-23 15:52:06 +02:00
alterNERDtive
8362a8f706
Merge pull request #9 from alterNERDtive/feature/race6-chicken-run 2022-07-23 15:47:10 +02:00
614cb10fe7
fixed journal event copypasta errors 2022-07-23 15:45:31 +02:00
0d481dedf2
now using planet names for “dropped at …” 2022-07-23 15:31:43 +02:00
1b5fbca6e6
fixed missing “-” in splits file
… also made VS Code use editorconfig
2022-07-23 13:32:02 +02:00
f884e97f17
actual splitter for race 6 2022-07-23 02:16:59 +02:00
alterNERDtive
ceaea27e32
Merge pull request #10 from alterNERDtive/feature/editorconfig 2022-07-14 01:14:36 +02:00
e2968c4926
added .editorconfig 2022-07-14 01:13:35 +02:00
alterNERDtive
0ecc4fe879
Merge pull request #8 from alterNERDtive/feature/workflows 2022-07-14 00:50:25 +02:00
956c113f40
added release / auto pull request workflows 2022-07-14 00:41:17 +02:00
ab9239c810 added ko-fi / sponsors 2022-07-04 01:37:02 +02:00
2f24af4821 4.0 2022-05-07 00:35:08 +02:00
f5fc2669e5 changed markdown line breaks to work with latest github markdown rendering rules 2022-05-07 00:34:33 +02:00
b2649bd4ce README: changed order, latest race first 2022-05-07 00:32:12 +02:00
e7ec7b8c5f On the Rocks: changed fancy code to working code 2022-05-07 00:31:21 +02:00
c2d07df191 fixed c&p error for list dimensions 2022-05-06 18:20:57 +02:00
bba2ababd3 added support for race 4, On the Rocks 2022-05-04 17:58:39 +02:00
ba11903ecb 3.1.1 2022-04-19 16:21:17 +02:00
df56312323 Wiccan BeWare: fixed buy/sell events
In some cases, the `TypeLocalised` key seems to be missing from the
associated events. Reason unknown.
2022-04-19 16:20:41 +02:00
7f3b668bee 3.1 2022-04-18 01:30:16 +02:00
5a61951596 Wiccan BeWare: added auto reset option 2022-04-17 17:09:32 +02:00
8ba4e8a38c 3.0, Wiccan BeWare 2022-04-17 11:59:12 +02:00
0fca1b291e Wiccan BeWare: corrected station name 2022-04-17 11:17:51 +02:00
7e18c4df4c Wiccan BeWare: fixed jump out of Interchange Hub
Now works with SC entry and FSD jump.
2022-04-17 11:08:11 +02:00
alterNERDtive
5d1a778a2b
Merge pull request #7 from Epaphus/develop 2022-04-17 09:55:59 +02:00
David Wilkinson
b453f6335b
Updated for EDO log format 2022-04-17 03:30:20 +01:00
680eedac56 added support for race 3, Wiccan BeWare 2022-04-17 01:21:55 +02:00
b6dce4b9b6 CHANGELOG: typo 2022-03-18 22:40:20 +01:00
22 changed files with 1952 additions and 63 deletions

8
.editorconfig Normal file
View file

@ -0,0 +1,8 @@
[*]
guidelines = 80
end_of_line = lf
insert_final_newline = true
charset = utf-8-bom
[*.asl]
guidelines = 80, 120

2
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,2 @@
github: alterNERDtive
ko_fi: alterNERDtive

View file

@ -0,0 +1,20 @@
name: Pull Request on Branch Push
on:
push:
branches-ignore:
- develop
- release
jobs:
auto-pull-request:
name: Open pull request
runs-on: ubuntu-latest
steps:
- name: pull-request-action
uses: vsoch/pull-request-action@1.0.19
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_REQUEST_BRANCH: "develop"
PULL_REQUEST_DRAFT: true
PASS_IF_EXISTS: true

22
.github/workflows/create-release.yaml vendored Normal file
View file

@ -0,0 +1,22 @@
name: Create release on tag push
on:
push:
tags:
- 'release/*'
jobs:
build:
name: Create draft release
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v2
- name: Draft release
uses: ncipollo/release-action@v1
with:
bodyFile: "CHANGELOG.md"
draft: true
token: ${{ secrets.RELEASE_TOKEN }}

View file

@ -77,10 +77,10 @@ startup {
}
// Executes when LiveSplit detects the game process (see “state” at the top of the file).
// In our case the journal and netlog files are unique to every execution of the game, so we need to prepare them here.
// We also need to check if file logging is enabled (the setting is not available in `startup`) and create/open our log file.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-initialization-game-start
init {
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
}
// Executes as long as the game process is running, by default 60 times per second.

View file

@ -62,6 +62,27 @@
<TextAlignment>0</TextAlignment>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Text.dll</Path>
<Settings>
<Version>1.4</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<TimeColor>FFFFFFFF</TimeColor>
<OverrideTimeColor>False</OverrideTimeColor>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>00FFFFFF</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<Text1>https://git.alternerd.tv/8ball</Text1>
<Text2>
</Text2>
<Font1><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font1>
<Font2><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font2>
<OverrideFont1>False</OverrideFont1>
<OverrideFont2>False</OverrideFont2>
<Display2Rows>False</Display2Rows>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Subsplits.dll</Path>
<Settings>
@ -187,4 +208,4 @@
</Settings>
</Component>
</Components>
</Layout>
</Layout>

View file

@ -1,14 +1,74 @@
# 6.0 (2022-08-26)
# Added
* Support for race 7, Mischief Mile.
# Fixed
* Now correctly loads the next journal file after restarting the game.
-----
# 5.0.1 (2022-07-03)
## Fixed
* Typo in Chicken Run splits file.
-----
# 5.0 (2022-07-23)
## Added
* Support for race 6, Chicken Run: Crash Harder.
-----
# 4.0 (2022-05-07)
## Added
* Support for race 4, On the Rocks
-----
# 3.1.1 (2022-04-19)
## Fixed
* Wiccan BeWare: should now consistently detect buy/sell events.
-----
# 3.1 (2022-04-18)
## Added
* Wiccan BeWare: automatic reset option for accidental refuels / repairs.
-----
# 3.0 (2022-04-17)
## Added
* Support for race 3, Wiccan BeWare
-----
# 2.0 (2022-03-18)
## Changed
* Splits for Race 2 (The Aquarian Job) now include the SC drop timing at all
stops.
* Splits for Race 2 (The Aquarian Job) now include the SC drop timing at all stops.
## Fixed
* Auto splitters can now cope with the new file name format for journal files
introducd for Odyssey patch 11. (#6)
* Auto splitters can now cope with the new file name format for journal files introduced for Odyssey patch 11. (#6)
-----
# 1.2 (2022-03-15)
@ -18,9 +78,9 @@
## Fixed
* No longer freezes for 15s on `init`. Instead watches the journal folder for
new journal files and loads the latest one automatically. Should fix some
edge cases too. (#5)
* No longer freezes for 15s on `init`. Instead watches the journal folder for new journal files and loads the latest one automatically. Should fix some edge cases too. (#5)
-----
# 1.1 (2022-02-18)
@ -31,8 +91,7 @@ AutoSplitter). You can keep your personal splits.
## Added
* `Automatically stop the timer after death` option: stops the timer should you
meet an untimely demise. Disabled by default. (#4)
* `Automatically stop the timer after death` option: stops the timer should you meet an untimely demise. Disabled by default. (#4)
## Changed
@ -41,12 +100,11 @@ AutoSplitter). You can keep your personal splits.
## Fixed
* The layout now forces timing mode to game time. On real time the hack to stop
the timer after the first dock past the time limit does not work. (#2)
* The layout now forces timing mode to game time. On real time the hack to stop the timer after the first dock past the time limit does not work. (#2)
* Now works with Odysseys `Docked`/`Undocked` events. (#1)
-----
# 1.0 (2022-02-17)
LiveSplit files and AutoSplitter for the “Back to Pareco” race.
LiveSplit files and AutoSplitter for the “Back to Pareco” race.

View file

@ -0,0 +1,153 @@
// Defines the process to monitor. We are not reading anything from the games memory, so its empty.
// We still need it though, LiveSplit will only run the auto splitter if the corresponding process is present.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#state-descriptors
state("EliteDangerous64") {}
// Executes when LiveSplit (re-)loads the auto splitter. Does general setup tasks.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-startup
startup {
// Relevant journal entries
vars.journalReader = null;
vars.journalEntries = new List<System.Text.RegularExpressions.Regex>(26);
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Undocked"", ""StationName"":""Noriega Station"", ""StationType"":""Coriolis"", ""MarketID"":3228508416(, ""Taxi"":(true|false), ""Multicrew"":(true|false))? \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Bento"", ""SystemAddress"":633675420370, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Bento"", ""SystemAddress"":633675420370, ""Body"":""Snow Moon"", ""BodyID"":5, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Snow Moon"", ""StationType"":""Orbis""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Bento"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketBuy"", ""MarketID"":128059402, ""Type"":""crystallinespheres""(, ""Type_Localised"":""Crystalline Spheres"")?, ""Count"":\d+, ""BuyPrice"":\d+, ""TotalCost"":\d+ \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Okinura"", ""SystemAddress"":7505556017866, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Okinura"", ""SystemAddress"":7505556017866, ""Body"":""Okinura 8 c"", ""BodyID"":26, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Korniyenko Terminal"", ""StationType"":""CraterOutpost""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Okinura"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Blatrimpe"", ""SystemAddress"":7505623126738, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Blatrimpe"", ""SystemAddress"":7505623126738, ""Body"":""Blatrimpe 7"", ""BodyID"":13, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Koch Beacon"", ""StationType"":""CraterPort""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Blatrimpe"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Shoujeman"", ""SystemAddress"":4820840745323, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Shoujeman"", ""SystemAddress"":4820840745323, ""Body"":""Shoujeman 5"", ""BodyID"":6, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Baffin Plant"", ""StationType"":""CraterOutpost""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Shoujeman"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Wolf 562"", ""SystemAddress"":670954497457, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Wolf 562"", ""SystemAddress"":670954497457, ""Body"":""Laila's Memory"", ""BodyID"":3, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""King's Inheritance"", ""StationType"":""CraterPort""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Wolf 562"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""5 G. Capricorni"", ""SystemAddress"":1733119972058, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""5 G. Capricorni"", ""SystemAddress"":1733119972058, ""Body"":""5 G. Capricorni 3"", ""BodyID"":9, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Moore Beacon"", ""StationType"":""CraterOutpost""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""5 G. Capricorni"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Ross 905"", ""SystemAddress"":11666070840737, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Ross 905"", ""SystemAddress"":11666070840737, ""Body"":""Robert Kelley"", ""BodyID"":6, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Weber Legacy"", ""StationType"":""CraterOutpost""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Ross 905"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""LTT 2151"", ""SystemAddress"":2282942894802, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""LTT 2151"", ""SystemAddress"":2282942894802, ""Body"":""Noriega Station"", ""BodyID"":17, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Noriega Station"", ""StationType"":""Coriolis""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""LTT 2151"", .*\}"));
// Journal file handling
vars.journalPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"Saved Games",
"Frontier Developments",
"Elite Dangerous"
);
vars.currentJournal = "none";
vars.updateJournalReader = (Action)delegate() {
FileInfo journalFile = new DirectoryInfo(vars.journalPath).GetFiles("journal.*.log").OrderByDescending(file => file.LastWriteTime).First();
print("Current journal file: " + vars.currentJournal + ", latest journal file: " + journalFile.Name);
if (journalFile.Name != vars.currentJournal) {
vars.journalReader = new StreamReader(new FileStream(journalFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
vars.currentJournal = journalFile.Name;
}
};
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
// Watch for new files
FileSystemWatcher journalWatcher = new FileSystemWatcher(vars.journalPath);
journalWatcher.Created += (object sender, FileSystemEventArgs eventArgs) => {
vars.updateJournalReader();
};
journalWatcher.EnableRaisingEvents = true;
// Initialize split counter
vars.currentSplit = 0;
}
// Executes when LiveSplit detects the game process (see “state” at the top of the file).
// In our case the journal and netlog files are unique to every execution of the game, so we need to prepare them here.
// We also need to check if file logging is enabled (the setting is not available in `startup`) and create/open our log file.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-initialization-game-start
init {
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
}
// Executes as long as the game process is running, by default 60 times per second.
// Unless explicitly returning `false`, `start`, `split` and `reset` are executed right after.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#generic-update
update {
current.journalString = vars.journalReader.ReadToEnd();
}
// Executes every `update`. Starts the timer if the first journal event is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-timer-start-1
start {
bool start = false;
if (vars.journalEntries[0].Match(current.journalString).Success) {
start = true;
vars.currentSplit = 1;
}
return start;
}
// Executes every `update`. Triggers a split if the journal event triggering the next split is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-splits-1
split {
bool split = false;
if (!String.IsNullOrEmpty(current.journalString)) {
if (vars.journalEntries[vars.currentSplit].Match(current.journalString).Success) {
split = true;
vars.currentSplit++;
}
}
return split;
}
// Executes when the game process is shut down.
// In our case were going to close the files we opened in `init`.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#game-exit
exit {
vars.journalReader.Close();
}
// Executes when LiveScript shuts the auto splitter down, e.g. on reloading it.
// When reloading the splitter with the game running, LiveSplit does **not** execute `exit`, but it does execute `shutdown`.
// see https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-shutdown
shutdown {
if (vars.journalReader != null) {
vars.journalReader.Close();
}
}

View file

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<Layout version="1.6.1">
<Mode>Vertical</Mode>
<X>51</X>
<Y>53</Y>
<VerticalWidth>286</VerticalWidth>
<VerticalHeight>386</VerticalHeight>
<HorizontalWidth>-1</HorizontalWidth>
<HorizontalHeight>-1</HorizontalHeight>
<Settings>
<TextColor>FFFFFFFF</TextColor>
<BackgroundColor>FF0F0F0F</BackgroundColor>
<BackgroundColor2>00000000</BackgroundColor2>
<ThinSeparatorsColor>03FFFFFF</ThinSeparatorsColor>
<SeparatorsColor>24FFFFFF</SeparatorsColor>
<PersonalBestColor>FF16A6FF</PersonalBestColor>
<AheadGainingTimeColor>FF00CC36</AheadGainingTimeColor>
<AheadLosingTimeColor>FF52CC73</AheadLosingTimeColor>
<BehindGainingTimeColor>FFCC5C52</BehindGainingTimeColor>
<BehindLosingTimeColor>FFCC1200</BehindLosingTimeColor>
<BestSegmentColor>FFD8AF1F</BestSegmentColor>
<UseRainbowColor>False</UseRainbowColor>
<NotRunningColor>FFACACAC</NotRunningColor>
<PausedColor>FF7A7A7A</PausedColor>
<TextOutlineColor>00000000</TextOutlineColor>
<ShadowsColor>80000000</ShadowsColor>
<TimesFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TimesFont>
<TimerFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAA5DZW50dXJ5IEdvdGhpYwAAL0IF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TimerFont>
<TextFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TextFont>
<AlwaysOnTop>True</AlwaysOnTop>
<ShowBestSegments>True</ShowBestSegments>
<AntiAliasing>True</AntiAliasing>
<DropShadows>True</DropShadows>
<BackgroundType>SolidColor</BackgroundType>
<BackgroundImage />
<ImageOpacity>1</ImageOpacity>
<ImageBlur>0</ImageBlur>
<Opacity>1</Opacity>
<MousePassThroughWhileRunning>False</MousePassThroughWhileRunning>
</Settings>
<Components>
<Component>
<Path>LiveSplit.Title.dll</Path>
<Settings>
<Version>1.7.3</Version>
<ShowGameName>True</ShowGameName>
<ShowCategoryName>True</ShowCategoryName>
<ShowAttemptCount>False</ShowAttemptCount>
<ShowFinishedRunsCount>False</ShowFinishedRunsCount>
<OverrideTitleFont>False</OverrideTitleFont>
<OverrideTitleColor>False</OverrideTitleColor>
<TitleFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TitleFont>
<SingleLine>False</SingleLine>
<TitleColor>FFFFFFFF</TitleColor>
<BackgroundColor>FF2A2A2A</BackgroundColor>
<BackgroundColor2>FF131313</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DisplayGameIcon>True</DisplayGameIcon>
<ShowRegion>False</ShowRegion>
<ShowPlatform>False</ShowPlatform>
<ShowVariables>True</ShowVariables>
<TextAlignment>0</TextAlignment>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Text.dll</Path>
<Settings>
<Version>1.4</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<TimeColor>FFFFFFFF</TimeColor>
<OverrideTimeColor>False</OverrideTimeColor>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>00FFFFFF</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<Text1>https://git.alternerd.tv/8ball</Text1>
<Text2>
</Text2>
<Font1><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font1>
<Font2><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font2>
<OverrideFont1>False</OverrideFont1>
<OverrideFont2>False</OverrideFont2>
<Display2Rows>False</Display2Rows>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Subsplits.dll</Path>
<Settings>
<Version>1.7</Version>
<CurrentSplitTopColor>FF3373F4</CurrentSplitTopColor>
<CurrentSplitBottomColor>FF153574</CurrentSplitBottomColor>
<VisualSplitCount>11</VisualSplitCount>
<SplitPreviewCount>1</SplitPreviewCount>
<MinimumMajorSplits>0</MinimumMajorSplits>
<DisplayIcons>True</DisplayIcons>
<ShowThinSeparators>False</ShowThinSeparators>
<AlwaysShowLastSplit>True</AlwaysShowLastSplit>
<SplitWidth>20</SplitWidth>
<SplitTimesAccuracy>Seconds</SplitTimesAccuracy>
<BeforeNamesColor>FFFFFFFF</BeforeNamesColor>
<CurrentNamesColor>FFFFFFFF</CurrentNamesColor>
<AfterNamesColor>FFFFFFFF</AfterNamesColor>
<OverrideTextColor>False</OverrideTextColor>
<BeforeTimesColor>FFFFFFFF</BeforeTimesColor>
<CurrentTimesColor>FFFFFFFF</CurrentTimesColor>
<AfterTimesColor>FFFFFFFF</AfterTimesColor>
<OverrideTimesColor>False</OverrideTimesColor>
<LockLastSplit>False</LockLastSplit>
<IconSize>24</IconSize>
<IconShadows>True</IconShadows>
<SplitHeight>6</SplitHeight>
<CurrentSplitGradient>Vertical</CurrentSplitGradient>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>01FFFFFF</BackgroundColor2>
<BackgroundGradient>Alternating</BackgroundGradient>
<SeparatorLastSplit>True</SeparatorLastSplit>
<DeltasAccuracy>Tenths</DeltasAccuracy>
<DropDecimals>True</DropDecimals>
<OverrideDeltasColor>False</OverrideDeltasColor>
<DeltasColor>FFFFFFFF</DeltasColor>
<HeaderComparison>Current Comparison</HeaderComparison>
<HeaderTimingMethod>Current Timing Method</HeaderTimingMethod>
<Display2Rows>False</Display2Rows>
<IndentBlankIcons>True</IndentBlankIcons>
<IndentSubsplits>True</IndentSubsplits>
<HideSubsplits>False</HideSubsplits>
<ShowSubsplits>False</ShowSubsplits>
<CurrentSectionOnly>False</CurrentSectionOnly>
<OverrideSubsplitColor>False</OverrideSubsplitColor>
<SubsplitGradient>Plain</SubsplitGradient>
<ShowHeader>True</ShowHeader>
<IndentSectionSplit>True</IndentSectionSplit>
<ShowIconSectionSplit>True</ShowIconSectionSplit>
<ShowSectionIcon>True</ShowSectionIcon>
<HeaderGradient>Vertical</HeaderGradient>
<OverrideHeaderColor>False</OverrideHeaderColor>
<HeaderText>True</HeaderText>
<HeaderTimes>True</HeaderTimes>
<HeaderAccuracy>Tenths</HeaderAccuracy>
<SectionTimer>True</SectionTimer>
<SectionTimerGradient>True</SectionTimerGradient>
<SectionTimerAccuracy>Tenths</SectionTimerAccuracy>
<SubsplitTopColor>8D000000</SubsplitTopColor>
<SubsplitBottomColor>00FFFFFF</SubsplitBottomColor>
<HeaderTopColor>2BFFFFFF</HeaderTopColor>
<HeaderBottomColor>D8000000</HeaderBottomColor>
<HeaderTextColor>FFFFFFFF</HeaderTextColor>
<HeaderTimesColor>FFFFFFFF</HeaderTimesColor>
<SectionTimerColor>FF777777</SectionTimerColor>
<ShowColumnLabels>False</ShowColumnLabels>
<LabelsColor>FFFFFFFF</LabelsColor>
<Columns>
<Settings>
<Version>1.5</Version>
<Name>+/-</Name>
<Type>Delta</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
<Settings>
<Version>1.5</Version>
<Name>Time</Name>
<Type>SplitTime</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
</Columns>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Timer.dll</Path>
<Settings>
<Version>1.5</Version>
<TimerHeight>69</TimerHeight>
<TimerWidth>225</TimerWidth>
<TimerFormat>1.23</TimerFormat>
<OverrideSplitColors>False</OverrideSplitColors>
<ShowGradient>True</ShowGradient>
<TimerColor>FFAAAAAA</TimerColor>
<BackgroundColor>00000000</BackgroundColor>
<BackgroundColor2>FF222222</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<CenterTimer>False</CenterTimer>
<TimingMethod>Current Timing Method</TimingMethod>
<DecimalsSize>35</DecimalsSize>
</Settings>
</Component>
<Component>
<Path>LiveSplit.PreviousSegment.dll</Path>
<Settings>
<Version>1.6</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<BackgroundColor>FF1C1C1C</BackgroundColor>
<BackgroundColor2>FF0D0D0D</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DeltaAccuracy>Seconds</DeltaAccuracy>
<DropDecimals>True</DropDecimals>
<Comparison>Personal Best</Comparison>
<Display2Rows>False</Display2Rows>
<ShowPossibleTimeSave>False</ShowPossibleTimeSave>
<TimeSaveAccuracy>Tenths</TimeSaveAccuracy>
</Settings>
</Component>
<Component>
<Path>LiveSplit.ScriptableAutoSplit.dll</Path>
<Settings>
</Settings>
</Component>
</Components>
</Layout>

View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<Run version="1.7.0">
<GameIcon />
<GameName>Elite Dangerous</GameName>
<CategoryName>Chicken Run: Crash Harder</CategoryName>
<LayoutPath>
</LayoutPath>
<Metadata>
<Run id="" />
<Platform usesEmulator="False">
</Platform>
<Region>
</Region>
<Variables />
</Metadata>
<Offset>00:00:00</Offset>
<AttemptCount>0</AttemptCount>
<Segments>
<Segment>
<Name>-Jump to Bento</Name>
</Segment>
<Segment>
<Name>-Drop at Snow Moon</Name>
</Segment>
<Segment>
<Name>-Dock at Snow Moon</Name>
</Segment>
<Segment>
<Name>{Bento}Buy Crystalline Spheres</Name>
</Segment>
<Segment>
<Name>-Jump to Okinura</Name>
</Segment>
<Segment>
<Name>-Drop at Okinura 8 C</Name>
</Segment>
<Segment>
<Name>{Okinura}Dock at Korniyenko Terminal</Name>
</Segment>
<Segment>
<Name>-Jump to Blatrimpe</Name>
</Segment>
<Segment>
<Name>-Drop at Blatrimpe 7</Name>
</Segment>
<Segment>
<Name>{Blatrimpe}Dock at Koch Beacon</Name>
</Segment>
<Segment>
<Name>-Jump to Shoujeman</Name>
</Segment>
<Segment>
<Name>-Drop at Shoujeman 5</Name>
</Segment>
<Segment>
<Name>{Shoujeman}Dock at Baffin Plant</Name>
</Segment>
<Segment>
<Name>-Jump to Wolf 562</Name>
</Segment>
<Segment>
<Name>-Drop at Lailas Memory</Name>
</Segment>
<Segment>
<Name>{Wolf 562}Dock at Kings Inheritance</Name>
</Segment>
<Segment>
<Name>-Jump to 5 G. Capricorni</Name>
</Segment>
<Segment>
<Name>-Drop at 5 G. Capricorni 3</Name>
</Segment>
<Segment>
<Name>{5 G. Capricorni}Dock at Moore Beacon</Name>
</Segment>
<Segment>
<Name>-Jump to Ross 905</Name>
</Segment>
<Segment>
<Name>-Drop at Robert Kelley</Name>
</Segment>
<Segment>
<Name>{Ross 905}Dock at Weber Legacy</Name>
</Segment>
<Segment>
<Name>-Jump to LTT 2151</Name>
</Segment>
<Segment>
<Name>-Drop at Noriega Station</Name>
</Segment>
<Segment>
<Name>{LTT 2151}Dock at Noriega Station</Name>
</Segment>
</Segments>
<AutoSplitterSettings />
</Run>

129
Mischief Mile.asl Normal file
View file

@ -0,0 +1,129 @@
// Defines the process to monitor. We are not reading anything from the games memory, so its empty.
// We still need it though, LiveSplit will only run the auto splitter if the corresponding process is present.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#state-descriptors
state("EliteDangerous64") {}
// Executes when LiveSplit (re-)loads the auto splitter. Does general setup tasks.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-startup
startup {
// Relevant journal entries
vars.journalReader = null;
vars.startingConditions = new List<System.Text.RegularExpressions.Regex>(2);
vars.startingConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Undocked"", ""StationName"":""Hooke Hub"", ""StationType"":""Ocellus"", ""MarketID"":3230060800(, ""Taxi"":(true|false), ""Multicrew"":(true|false))? \}"));
vars.startingConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Undocked"", ""StationName"":""Ocampo Station"", ""StationType"":""Coriolis"", ""MarketID"":3226909696(, ""Taxi"":(true|false), ""Multicrew"":(true|false))? \}"));
vars.journalEntries = new List<System.Text.RegularExpressions.Regex>(11);
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""NLTT 48288"", ""SystemAddress"":670149125569, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""LHS 3719"", ""SystemAddress"":5069269312953, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Fuelum"", ""SystemAddress"":5031721931482, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Fuelum"", ""SystemAddress"":5031721931482, ""Body"":""Wollheim Vision"", ""BodyID"":24, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Wollheim Vision"", ""StationType"":""Coriolis""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Fuelum"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Mirateje"", ""SystemAddress"":9429432931034, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Mirateje"", ""SystemAddress"":9429432931034, ""Body"":""Ocampo Station"", ""BodyID"":40, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Ocampo Station"", ""StationType"":""Coriolis""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Mirateje"", .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Tepech"", ""SystemAddress"":11668218324393, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Tepech"", ""SystemAddress"":11668218324393, ""Body"":""Hooke Hub"", ""BodyID"":38, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Hooke Hub"", ""StationType"":""Ocellus""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Tepech"", .*\}"));
// Journal file handling
vars.journalPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"Saved Games",
"Frontier Developments",
"Elite Dangerous"
);
vars.currentJournal = "none";
vars.updateJournalReader = (Action)delegate() {
FileInfo journalFile = new DirectoryInfo(vars.journalPath).GetFiles("journal.*.log").OrderByDescending(file => file.LastWriteTime).First();
print("Current journal file: " + vars.currentJournal + ", latest journal file: " + journalFile.Name);
if (journalFile.Name != vars.currentJournal) {
vars.journalReader = new StreamReader(new FileStream(journalFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
vars.currentJournal = journalFile.Name;
}
};
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
// Watch for new files
FileSystemWatcher journalWatcher = new FileSystemWatcher(vars.journalPath);
journalWatcher.Created += (object sender, FileSystemEventArgs eventArgs) => {
vars.updateJournalReader();
};
journalWatcher.EnableRaisingEvents = true;
}
// Executes when LiveSplit detects the game process (see “state” at the top of the file).
// In our case the journal and netlog files are unique to every execution of the game, so we need to prepare them here.
// We also need to check if file logging is enabled (the setting is not available in `startup`) and create/open our log file.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-initialization-game-start
init {
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
}
// Executes as long as the game process is running, by default 60 times per second.
// Unless explicitly returning `false`, `start`, `split` and `reset` are executed right after.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#generic-update
update {
current.journalString = vars.journalReader.ReadToEnd();
}
// Executes every `update`. Starts the timer if the first journal event is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-timer-start-1
start {
bool start = false;
if (!String.IsNullOrEmpty(current.journalString)) {
foreach (System.Text.RegularExpressions.Regex condition in vars.startingConditions) {
if (condition.Match(current.journalString).Success) {
start = true;
}
}
}
return start;
}
// Executes every `update`. Triggers a split if the journal event triggering the next split is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-splits-1
split {
bool split = false;
if (!String.IsNullOrEmpty(current.journalString)) {
foreach (System.Text.RegularExpressions.Regex entry in vars.journalEntries) {
if (entry.Match(current.journalString).Success) {
split = true;
}
}
}
return split;
}
// Executes when the game process is shut down.
// In our case were going to close the files we opened in `init`.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#game-exit
exit {
vars.journalReader.Close();
}
// Executes when LiveScript shuts the auto splitter down, e.g. on reloading it.
// When reloading the splitter with the game running, LiveSplit does **not** execute `exit`, but it does execute `shutdown`.
// see https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-shutdown
shutdown {
if (vars.journalReader != null) {
vars.journalReader.Close();
}
}

211
Mischief Mile.lsl Normal file
View file

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<Layout version="1.6.1">
<Mode>Vertical</Mode>
<X>51</X>
<Y>53</Y>
<VerticalWidth>286</VerticalWidth>
<VerticalHeight>386</VerticalHeight>
<HorizontalWidth>-1</HorizontalWidth>
<HorizontalHeight>-1</HorizontalHeight>
<Settings>
<TextColor>FFFFFFFF</TextColor>
<BackgroundColor>FF0F0F0F</BackgroundColor>
<BackgroundColor2>00000000</BackgroundColor2>
<ThinSeparatorsColor>03FFFFFF</ThinSeparatorsColor>
<SeparatorsColor>24FFFFFF</SeparatorsColor>
<PersonalBestColor>FF16A6FF</PersonalBestColor>
<AheadGainingTimeColor>FF00CC36</AheadGainingTimeColor>
<AheadLosingTimeColor>FF52CC73</AheadLosingTimeColor>
<BehindGainingTimeColor>FFCC5C52</BehindGainingTimeColor>
<BehindLosingTimeColor>FFCC1200</BehindLosingTimeColor>
<BestSegmentColor>FFD8AF1F</BestSegmentColor>
<UseRainbowColor>False</UseRainbowColor>
<NotRunningColor>FFACACAC</NotRunningColor>
<PausedColor>FF7A7A7A</PausedColor>
<TextOutlineColor>00000000</TextOutlineColor>
<ShadowsColor>80000000</ShadowsColor>
<TimesFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TimesFont>
<TimerFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAA5DZW50dXJ5IEdvdGhpYwAAL0IF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TimerFont>
<TextFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TextFont>
<AlwaysOnTop>True</AlwaysOnTop>
<ShowBestSegments>True</ShowBestSegments>
<AntiAliasing>True</AntiAliasing>
<DropShadows>True</DropShadows>
<BackgroundType>SolidColor</BackgroundType>
<BackgroundImage />
<ImageOpacity>1</ImageOpacity>
<ImageBlur>0</ImageBlur>
<Opacity>1</Opacity>
<MousePassThroughWhileRunning>False</MousePassThroughWhileRunning>
</Settings>
<Components>
<Component>
<Path>LiveSplit.Title.dll</Path>
<Settings>
<Version>1.7.3</Version>
<ShowGameName>True</ShowGameName>
<ShowCategoryName>True</ShowCategoryName>
<ShowAttemptCount>False</ShowAttemptCount>
<ShowFinishedRunsCount>False</ShowFinishedRunsCount>
<OverrideTitleFont>False</OverrideTitleFont>
<OverrideTitleColor>False</OverrideTitleColor>
<TitleFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TitleFont>
<SingleLine>False</SingleLine>
<TitleColor>FFFFFFFF</TitleColor>
<BackgroundColor>FF2A2A2A</BackgroundColor>
<BackgroundColor2>FF131313</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DisplayGameIcon>True</DisplayGameIcon>
<ShowRegion>False</ShowRegion>
<ShowPlatform>False</ShowPlatform>
<ShowVariables>True</ShowVariables>
<TextAlignment>0</TextAlignment>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Text.dll</Path>
<Settings>
<Version>1.4</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<TimeColor>FFFFFFFF</TimeColor>
<OverrideTimeColor>False</OverrideTimeColor>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>00FFFFFF</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<Text1>https://git.alternerd.tv/8ball</Text1>
<Text2>
</Text2>
<Font1><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font1>
<Font2><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font2>
<OverrideFont1>False</OverrideFont1>
<OverrideFont2>False</OverrideFont2>
<Display2Rows>False</Display2Rows>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Subsplits.dll</Path>
<Settings>
<Version>1.7</Version>
<CurrentSplitTopColor>FF3373F4</CurrentSplitTopColor>
<CurrentSplitBottomColor>FF153574</CurrentSplitBottomColor>
<VisualSplitCount>11</VisualSplitCount>
<SplitPreviewCount>1</SplitPreviewCount>
<MinimumMajorSplits>0</MinimumMajorSplits>
<DisplayIcons>True</DisplayIcons>
<ShowThinSeparators>False</ShowThinSeparators>
<AlwaysShowLastSplit>True</AlwaysShowLastSplit>
<SplitWidth>20</SplitWidth>
<SplitTimesAccuracy>Seconds</SplitTimesAccuracy>
<BeforeNamesColor>FFFFFFFF</BeforeNamesColor>
<CurrentNamesColor>FFFFFFFF</CurrentNamesColor>
<AfterNamesColor>FFFFFFFF</AfterNamesColor>
<OverrideTextColor>False</OverrideTextColor>
<BeforeTimesColor>FFFFFFFF</BeforeTimesColor>
<CurrentTimesColor>FFFFFFFF</CurrentTimesColor>
<AfterTimesColor>FFFFFFFF</AfterTimesColor>
<OverrideTimesColor>False</OverrideTimesColor>
<LockLastSplit>False</LockLastSplit>
<IconSize>24</IconSize>
<IconShadows>True</IconShadows>
<SplitHeight>6</SplitHeight>
<CurrentSplitGradient>Vertical</CurrentSplitGradient>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>01FFFFFF</BackgroundColor2>
<BackgroundGradient>Alternating</BackgroundGradient>
<SeparatorLastSplit>True</SeparatorLastSplit>
<DeltasAccuracy>Tenths</DeltasAccuracy>
<DropDecimals>True</DropDecimals>
<OverrideDeltasColor>False</OverrideDeltasColor>
<DeltasColor>FFFFFFFF</DeltasColor>
<HeaderComparison>Current Comparison</HeaderComparison>
<HeaderTimingMethod>Current Timing Method</HeaderTimingMethod>
<Display2Rows>False</Display2Rows>
<IndentBlankIcons>True</IndentBlankIcons>
<IndentSubsplits>True</IndentSubsplits>
<HideSubsplits>False</HideSubsplits>
<ShowSubsplits>False</ShowSubsplits>
<CurrentSectionOnly>False</CurrentSectionOnly>
<OverrideSubsplitColor>False</OverrideSubsplitColor>
<SubsplitGradient>Plain</SubsplitGradient>
<ShowHeader>True</ShowHeader>
<IndentSectionSplit>True</IndentSectionSplit>
<ShowIconSectionSplit>True</ShowIconSectionSplit>
<ShowSectionIcon>True</ShowSectionIcon>
<HeaderGradient>Vertical</HeaderGradient>
<OverrideHeaderColor>False</OverrideHeaderColor>
<HeaderText>True</HeaderText>
<HeaderTimes>True</HeaderTimes>
<HeaderAccuracy>Tenths</HeaderAccuracy>
<SectionTimer>True</SectionTimer>
<SectionTimerGradient>True</SectionTimerGradient>
<SectionTimerAccuracy>Tenths</SectionTimerAccuracy>
<SubsplitTopColor>8D000000</SubsplitTopColor>
<SubsplitBottomColor>00FFFFFF</SubsplitBottomColor>
<HeaderTopColor>2BFFFFFF</HeaderTopColor>
<HeaderBottomColor>D8000000</HeaderBottomColor>
<HeaderTextColor>FFFFFFFF</HeaderTextColor>
<HeaderTimesColor>FFFFFFFF</HeaderTimesColor>
<SectionTimerColor>FF777777</SectionTimerColor>
<ShowColumnLabels>False</ShowColumnLabels>
<LabelsColor>FFFFFFFF</LabelsColor>
<Columns>
<Settings>
<Version>1.5</Version>
<Name>+/-</Name>
<Type>Delta</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
<Settings>
<Version>1.5</Version>
<Name>Time</Name>
<Type>SplitTime</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
</Columns>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Timer.dll</Path>
<Settings>
<Version>1.5</Version>
<TimerHeight>69</TimerHeight>
<TimerWidth>225</TimerWidth>
<TimerFormat>1.23</TimerFormat>
<OverrideSplitColors>False</OverrideSplitColors>
<ShowGradient>True</ShowGradient>
<TimerColor>FFAAAAAA</TimerColor>
<BackgroundColor>00000000</BackgroundColor>
<BackgroundColor2>FF222222</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<CenterTimer>False</CenterTimer>
<TimingMethod>Current Timing Method</TimingMethod>
<DecimalsSize>35</DecimalsSize>
</Settings>
</Component>
<Component>
<Path>LiveSplit.PreviousSegment.dll</Path>
<Settings>
<Version>1.6</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<BackgroundColor>FF1C1C1C</BackgroundColor>
<BackgroundColor2>FF0D0D0D</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DeltaAccuracy>Seconds</DeltaAccuracy>
<DropDecimals>True</DropDecimals>
<Comparison>Personal Best</Comparison>
<Display2Rows>False</Display2Rows>
<ShowPossibleTimeSave>False</ShowPossibleTimeSave>
<TimeSaveAccuracy>Tenths</TimeSaveAccuracy>
</Settings>
</Component>
<Component>
<Path>LiveSplit.ScriptableAutoSplit.dll</Path>
<Settings>
</Settings>
</Component>
</Components>
</Layout>

78
Mischief Mile.lss Normal file
View file

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Run version="1.7.0">
<GameIcon />
<GameName>Elite Dangerous</GameName>
<CategoryName>Mischief Mile</CategoryName>
<LayoutPath>
</LayoutPath>
<Metadata>
<Run id="" />
<Platform usesEmulator="False">
</Platform>
<Region>
</Region>
<Variables />
</Metadata>
<Offset>00:00:00</Offset>
<AttemptCount>0</AttemptCount>
<Segments>
<!-- start waypoints -->
<!-- move those around to your liking (keep the sections from each “start XXX” to “end XXX” comment together) -->
<!-- start NLTT 48288 -->
<Segment>
<Name>NLTT 48288</Name>
</Segment>
<!-- end NLTT 48288 -->
<!-- start LHS 3719 -->
<Segment>
<Name>LHS 3719</Name>
</Segment>
<!-- end LHS 3719 -->
<!-- start Fuelum -->
<Segment>
<Name>-Jump to Fuelum</Name>
</Segment>
<Segment>
<Name>-Drop at Wollheim Vision</Name>
</Segment>
<Segment>
<Name>{Fuelum}Dock at Wollheim Vision</Name>
</Segment>
<!-- end Fuelum -->
<!-- end waypoints -->
<!-- start target station -->
<!-- if you fly from Mirateje to Tepech instead of the other way around, you will have to delete the entire Mirateje section (from the “start Mirateje” line to the “end Mirateje” line) and remove the “start Tepech” and “end Tepech” comment lines -->
<!-- start Mirateje -->
<Segment>
<Name>-Jump to Mirateje</Name>
</Segment>
<Segment>
<Name>-Drop at Ocampo Station</Name>
</Segment>
<Segment>
<Name>{Mirateje}Dock at Ocampo Station</Name>
</Segment>
<!-- end Mirateje -->
<!-- start Tepech
<Segment>
<Name>-Jump to Tepech</Name>
</Segment>
<Segment>
<Name>-Drop at Hooke Hub</Name>
</Segment>
<Segment>
<Name>{Tepech}Dock at Hooke Hub</Name>
</Segment>
end Tepech -->
<!-- end target station -->
</Segments>
<AutoSplitterSettings />
</Run>

128
On the Rocks.asl Normal file
View file

@ -0,0 +1,128 @@
// Defines the process to monitor. We are not reading anything from the games memory, so its empty.
// We still need it though, LiveSplit will only run the auto splitter if the corresponding process is present.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#state-descriptors
state("EliteDangerous64") {}
// Executes when LiveSplit (re-)loads the auto splitter. Does general setup tasks.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-startup
startup {
// Relevant journal entries
vars.journalReader = null;
vars.journalEntries = new List<System.Text.RegularExpressions.Regex>(19);
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Undocked"", ""StationName"":""Rebuy Prospect"", ""StationType"":"".*"", ""MarketID"":\d+(, ""Taxi"":(true|false), ""Multicrew"":(true|false))? \}"));
for (int i=0; i<5; i++) {
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""(Andhrimi|Artemis|Felkan|Nu Tauri|Othime)"", ""SystemAddress"":\d+, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""(Andhrimi|Artemis|Felkan|Nu Tauri|Othime)"", ""SystemAddress"":\d+, ""Body"":""(Big Pappa's Base|Freeholm|Jack's Town|Simbad's Refuge|Lone Rock)"", ""BodyID"":\d+, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketSell"", ""MarketID"":\d+, ""Type"":"".*""(, ""Type_Localised"":"".*"")?, ""Count"":\d+, ""SellPrice"":\d+, ""TotalSale"":\d+, ""AvgPricePaid"":\d+ \}"));
}
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Fullerene C60"", ""SystemAddress"":4030566762835, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Fullerene C60"", ""SystemAddress"":4030566762835, ""Body"":""Rebuy Prospect"", ""BodyID"":\d+, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Docked"", ""StationName"":""Rebuy Prospect"", ""StationType"":"".*""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Fullerene C60"", .*\}"));
// Reset conditions
vars.resetConditions = new List<System.Text.RegularExpressions.Regex>();
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Repair"", .*\}"));
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""RepairAll"", ""Cost"":\d+ \}"));
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""RefuelAll"", ""Cost"":\d+, ""Amount"":\d+\.\d+ \}"));
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""RefuelPartial"", ""Cost"":\d+, ""Amount"":\d+\.\d+ \}"));
// Journal file handling
vars.journalPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"Saved Games",
"Frontier Developments",
"Elite Dangerous"
);
vars.currentJournal = "none";
vars.updateJournalReader = (Action)delegate() {
FileInfo journalFile = new DirectoryInfo(vars.journalPath).GetFiles("journal.*.log").OrderByDescending(file => file.LastWriteTime).First();
print("Current journal file: " + vars.currentJournal + ", latest journal file: " + journalFile.Name);
if (journalFile.Name != vars.currentJournal) {
vars.journalReader = new StreamReader(new FileStream(journalFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
vars.currentJournal = journalFile.Name;
}
};
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
// Watch for new files
FileSystemWatcher journalWatcher = new FileSystemWatcher(vars.journalPath);
journalWatcher.Created += (object sender, FileSystemEventArgs eventArgs) => {
vars.updateJournalReader();
};
journalWatcher.EnableRaisingEvents = true;
// Initialize split counter
vars.currentSplit = 0;
}
// Executes when LiveSplit detects the game process (see “state” at the top of the file).
// In our case the journal and netlog files are unique to every execution of the game, so we need to prepare them here.
// We also need to check if file logging is enabled (the setting is not available in `startup`) and create/open our log file.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-initialization-game-start
init {
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
}
// Executes as long as the game process is running, by default 60 times per second.
// Unless explicitly returning `false`, `start`, `split` and `reset` are executed right after.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#generic-update
update {
current.journalString = vars.journalReader.ReadToEnd();
}
// Executes every `update`. Starts the timer if the first journal event is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-timer-start-1
start {
bool start = false;
if (vars.journalEntries[0].Match(current.journalString).Success) {
start = true;
vars.currentSplit = 1;
}
return start;
}
// Executes every `update`. Triggers a split if the journal event triggering the next split is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-splits-1
split {
bool split = false;
if (!String.IsNullOrEmpty(current.journalString)) {
if (vars.journalEntries[vars.currentSplit].Match(current.journalString).Success) {
split = true;
vars.currentSplit++;
}
}
return split;
}
// Executes when the game process is shut down.
// In our case were going to close the files we opened in `init`.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#game-exit
exit {
vars.journalReader.Close();
}
// Executes when LiveScript shuts the auto splitter down, e.g. on reloading it.
// When reloading the splitter with the game running, LiveSplit does **not** execute `exit`, but it does execute `shutdown`.
// see https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-shutdown
shutdown {
if (vars.journalReader != null) {
vars.journalReader.Close();
}
}

211
On the Rocks.lsl Normal file
View file

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<Layout version="1.6.1">
<Mode>Vertical</Mode>
<X>51</X>
<Y>53</Y>
<VerticalWidth>286</VerticalWidth>
<VerticalHeight>386</VerticalHeight>
<HorizontalWidth>-1</HorizontalWidth>
<HorizontalHeight>-1</HorizontalHeight>
<Settings>
<TextColor>FFFFFFFF</TextColor>
<BackgroundColor>FF0F0F0F</BackgroundColor>
<BackgroundColor2>00000000</BackgroundColor2>
<ThinSeparatorsColor>03FFFFFF</ThinSeparatorsColor>
<SeparatorsColor>24FFFFFF</SeparatorsColor>
<PersonalBestColor>FF16A6FF</PersonalBestColor>
<AheadGainingTimeColor>FF00CC36</AheadGainingTimeColor>
<AheadLosingTimeColor>FF52CC73</AheadLosingTimeColor>
<BehindGainingTimeColor>FFCC5C52</BehindGainingTimeColor>
<BehindLosingTimeColor>FFCC1200</BehindLosingTimeColor>
<BestSegmentColor>FFD8AF1F</BestSegmentColor>
<UseRainbowColor>False</UseRainbowColor>
<NotRunningColor>FFACACAC</NotRunningColor>
<PausedColor>FF7A7A7A</PausedColor>
<TextOutlineColor>00000000</TextOutlineColor>
<ShadowsColor>80000000</ShadowsColor>
<TimesFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TimesFont>
<TimerFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAA5DZW50dXJ5IEdvdGhpYwAAL0IF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TimerFont>
<TextFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TextFont>
<AlwaysOnTop>True</AlwaysOnTop>
<ShowBestSegments>True</ShowBestSegments>
<AntiAliasing>True</AntiAliasing>
<DropShadows>True</DropShadows>
<BackgroundType>SolidColor</BackgroundType>
<BackgroundImage />
<ImageOpacity>1</ImageOpacity>
<ImageBlur>0</ImageBlur>
<Opacity>1</Opacity>
<MousePassThroughWhileRunning>False</MousePassThroughWhileRunning>
</Settings>
<Components>
<Component>
<Path>LiveSplit.Title.dll</Path>
<Settings>
<Version>1.7.3</Version>
<ShowGameName>True</ShowGameName>
<ShowCategoryName>True</ShowCategoryName>
<ShowAttemptCount>False</ShowAttemptCount>
<ShowFinishedRunsCount>False</ShowFinishedRunsCount>
<OverrideTitleFont>False</OverrideTitleFont>
<OverrideTitleColor>False</OverrideTitleColor>
<TitleFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TitleFont>
<SingleLine>False</SingleLine>
<TitleColor>FFFFFFFF</TitleColor>
<BackgroundColor>FF2A2A2A</BackgroundColor>
<BackgroundColor2>FF131313</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DisplayGameIcon>True</DisplayGameIcon>
<ShowRegion>False</ShowRegion>
<ShowPlatform>False</ShowPlatform>
<ShowVariables>True</ShowVariables>
<TextAlignment>0</TextAlignment>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Text.dll</Path>
<Settings>
<Version>1.4</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<TimeColor>FFFFFFFF</TimeColor>
<OverrideTimeColor>False</OverrideTimeColor>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>00FFFFFF</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<Text1>https://git.alternerd.tv/8ball</Text1>
<Text2>
</Text2>
<Font1><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font1>
<Font2><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font2>
<OverrideFont1>False</OverrideFont1>
<OverrideFont2>False</OverrideFont2>
<Display2Rows>False</Display2Rows>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Subsplits.dll</Path>
<Settings>
<Version>1.7</Version>
<CurrentSplitTopColor>FF3373F4</CurrentSplitTopColor>
<CurrentSplitBottomColor>FF153574</CurrentSplitBottomColor>
<VisualSplitCount>11</VisualSplitCount>
<SplitPreviewCount>1</SplitPreviewCount>
<MinimumMajorSplits>0</MinimumMajorSplits>
<DisplayIcons>True</DisplayIcons>
<ShowThinSeparators>False</ShowThinSeparators>
<AlwaysShowLastSplit>True</AlwaysShowLastSplit>
<SplitWidth>20</SplitWidth>
<SplitTimesAccuracy>Seconds</SplitTimesAccuracy>
<BeforeNamesColor>FFFFFFFF</BeforeNamesColor>
<CurrentNamesColor>FFFFFFFF</CurrentNamesColor>
<AfterNamesColor>FFFFFFFF</AfterNamesColor>
<OverrideTextColor>False</OverrideTextColor>
<BeforeTimesColor>FFFFFFFF</BeforeTimesColor>
<CurrentTimesColor>FFFFFFFF</CurrentTimesColor>
<AfterTimesColor>FFFFFFFF</AfterTimesColor>
<OverrideTimesColor>False</OverrideTimesColor>
<LockLastSplit>False</LockLastSplit>
<IconSize>24</IconSize>
<IconShadows>True</IconShadows>
<SplitHeight>6</SplitHeight>
<CurrentSplitGradient>Vertical</CurrentSplitGradient>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>01FFFFFF</BackgroundColor2>
<BackgroundGradient>Alternating</BackgroundGradient>
<SeparatorLastSplit>True</SeparatorLastSplit>
<DeltasAccuracy>Tenths</DeltasAccuracy>
<DropDecimals>True</DropDecimals>
<OverrideDeltasColor>False</OverrideDeltasColor>
<DeltasColor>FFFFFFFF</DeltasColor>
<HeaderComparison>Current Comparison</HeaderComparison>
<HeaderTimingMethod>Current Timing Method</HeaderTimingMethod>
<Display2Rows>False</Display2Rows>
<IndentBlankIcons>True</IndentBlankIcons>
<IndentSubsplits>True</IndentSubsplits>
<HideSubsplits>False</HideSubsplits>
<ShowSubsplits>False</ShowSubsplits>
<CurrentSectionOnly>False</CurrentSectionOnly>
<OverrideSubsplitColor>False</OverrideSubsplitColor>
<SubsplitGradient>Plain</SubsplitGradient>
<ShowHeader>True</ShowHeader>
<IndentSectionSplit>True</IndentSectionSplit>
<ShowIconSectionSplit>True</ShowIconSectionSplit>
<ShowSectionIcon>True</ShowSectionIcon>
<HeaderGradient>Vertical</HeaderGradient>
<OverrideHeaderColor>False</OverrideHeaderColor>
<HeaderText>True</HeaderText>
<HeaderTimes>True</HeaderTimes>
<HeaderAccuracy>Tenths</HeaderAccuracy>
<SectionTimer>True</SectionTimer>
<SectionTimerGradient>True</SectionTimerGradient>
<SectionTimerAccuracy>Tenths</SectionTimerAccuracy>
<SubsplitTopColor>8D000000</SubsplitTopColor>
<SubsplitBottomColor>00FFFFFF</SubsplitBottomColor>
<HeaderTopColor>2BFFFFFF</HeaderTopColor>
<HeaderBottomColor>D8000000</HeaderBottomColor>
<HeaderTextColor>FFFFFFFF</HeaderTextColor>
<HeaderTimesColor>FFFFFFFF</HeaderTimesColor>
<SectionTimerColor>FF777777</SectionTimerColor>
<ShowColumnLabels>False</ShowColumnLabels>
<LabelsColor>FFFFFFFF</LabelsColor>
<Columns>
<Settings>
<Version>1.5</Version>
<Name>+/-</Name>
<Type>Delta</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
<Settings>
<Version>1.5</Version>
<Name>Time</Name>
<Type>SplitTime</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
</Columns>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Timer.dll</Path>
<Settings>
<Version>1.5</Version>
<TimerHeight>69</TimerHeight>
<TimerWidth>225</TimerWidth>
<TimerFormat>1.23</TimerFormat>
<OverrideSplitColors>False</OverrideSplitColors>
<ShowGradient>True</ShowGradient>
<TimerColor>FFAAAAAA</TimerColor>
<BackgroundColor>00000000</BackgroundColor>
<BackgroundColor2>FF222222</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<CenterTimer>False</CenterTimer>
<TimingMethod>Current Timing Method</TimingMethod>
<DecimalsSize>35</DecimalsSize>
</Settings>
</Component>
<Component>
<Path>LiveSplit.PreviousSegment.dll</Path>
<Settings>
<Version>1.6</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<BackgroundColor>FF1C1C1C</BackgroundColor>
<BackgroundColor2>FF0D0D0D</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DeltaAccuracy>Seconds</DeltaAccuracy>
<DropDecimals>True</DropDecimals>
<Comparison>Personal Best</Comparison>
<Display2Rows>False</Display2Rows>
<ShowPossibleTimeSave>False</ShowPossibleTimeSave>
<TimeSaveAccuracy>Tenths</TimeSaveAccuracy>
</Settings>
</Component>
<Component>
<Path>LiveSplit.ScriptableAutoSplit.dll</Path>
<Settings>
</Settings>
</Component>
</Components>
</Layout>

75
On the Rocks.lss Normal file
View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<Run version="1.7.0">
<GameIcon />
<GameName>Elite Dangerous</GameName>
<CategoryName>On the Rocks</CategoryName>
<LayoutPath>
</LayoutPath>
<Metadata>
<Run id="" />
<Platform usesEmulator="False">
</Platform>
<Region>
</Region>
<Variables />
</Metadata>
<Offset>00:00:00</Offset>
<AttemptCount>0</AttemptCount>
<Segments>
<Segment>
<Name>-Jump to first stop</Name>
</Segment>
<Segment>
<Name>-Drop at first stop</Name>
</Segment>
<Segment>
<Name>{First stop}Sell at first stop</Name>
</Segment>
<Segment>
<Name>-Jump to second stop</Name>
</Segment>
<Segment>
<Name>-Drop at second stop</Name>
</Segment>
<Segment>
<Name>{Second stop}Sell at second stop</Name>
</Segment>
<Segment>
<Name>-Jump to third stop</Name>
</Segment>
<Segment>
<Name>-Drop at third stop</Name>
</Segment>
<Segment>
<Name>{Third stop}Sell at third stop</Name>
</Segment>
<Segment>
<Name>-Jump to fourth stop</Name>
</Segment>
<Segment>
<Name>-Drop at fourth stop</Name>
</Segment>
<Segment>
<Name>{Fourth stop}Sell at fourth stop</Name>
</Segment>
<Segment>
<Name>-Jump to fifth stop</Name>
</Segment>
<Segment>
<Name>-Drop at fifth stop</Name>
</Segment>
<Segment>
<Name>{Fifth stop}Sell at fifth stop</Name>
</Segment>
<Segment>
<Name>-Jump to Fullerene C60</Name>
</Segment>
<Segment>
<Name>-Drop at Rebuy Prospect</Name>
</Segment>
<Segment>
<Name>{Return to Rebuy Prospect}Dock at Rebuy Prospect</Name>
</Segment>
</Segments>
<AutoSplitterSettings />
</Run>

107
README.md
View file

@ -1,68 +1,87 @@
# LiveSplit files for the Magic 8-Ball Championship
LiveSplit files and AutoSplitters for the Magic 8-Ball Championship organized by
the Buckyball Racing Club:
https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-the-magic-8-ball-championship.596981/
LiveSplit files and AutoSplitters for the Magic 8-Ball Championship organized by the Buckyball Racing Club: <https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-the-magic-8-ball-championship.596981/>
Dont know what [“LiveSplit”](https://livesplit.org) is? It allows you to time
speedruns of your favourite games!
Dont know what [“LiveSplit”](https://livesplit.org) is? It allows you to time speedruns of your favourite games!
You are organizing one of the Magic 8-Ball races and want yours to be added to
the collection? Just ask.
You are organizing one of the Magic 8-Ball races and want yours to be added to the collection? Just ask.
[![GitHub Sponsors](https://img.shields.io/github/sponsors/alterNERDtive?style=for-the-badge)](https://github.com/sponsors/alterNERDtive)
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/S6S1DLYBS)
## Setup
1. Download LiveSplit from https://livesplit.org/downloads/ and unzip it to a
directory of your choosing.
2. Download this repository (green button in the top right of the repostory
view → “Download ZIP”) and extract it to a directory of your choosing.
Alternatively, clone the git repository.
1. Download LiveSplit from <https://livesplit.org/downloads/> and unzip it to a directory of your choosing.
2. Download this repository (green button in the top right of the repostory view → “Download ZIP”) and extract it to a directory of your choosing. Alternatively, clone the git repository.
3. Launch LiveSplit and do the following:
- Right click, Open Splits, select `[name of the race].lss`.
- Right click, Open Layout, select `[name of the race].lsl`.
- Right click, Edit Layout, Layout Settings, then in “Scriptable Auto
Splitter”, set `[name of the race].asl` as the script path.
4. Right click, Save Layout As…, save to wherever. This means your changes in
the layout (e.g. changing colours) and associating the auto splitter will not
be lost on updates.
5. Right click, Save Splits As…, save to wherever. This ensures that your
personal times will not be lost on updates.
- Right click, Edit Layout, Layout Settings, then in “Scriptable Auto Splitter”, set `[name of the race].asl` as the script path.
4. Right click, Save Layout As…, save to wherever. This means your changes in the layout (e.g. changing colours) and associating the auto splitter will not be lost on updates.
5. Right click, Save Splits As…, save to wherever. This ensures that your personal times will not be lost on updates.
## Races
### Race 1 Back to Pareco
### Race 7 Mischief Mile
https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-back-to-pareco-magic-8-ball-championship-race-1.598760/
<https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-mischief-mile-rebooted-magic-8-ball-championship-race-7.606269/>
The AutoSplitter will start the timer once you undock from Garden Ring. It will
enforce docking at the races stations in the correct order. After 20 minutes
you get one last stop, then the timer will pause and reset once you dock back at
Garden Ring.
The AutoSplitter will start the timer once you undock from Hooke Hub _or_ Ocampo Station.
There are two settings:
It will not enforce an order to the waypoints; this also means that if you e.g. jump into NLTT 48288 twice, it will split twice. It will not account for any of the extra rules of the race, e.g. it will not reset if you fuel scoop and it will not detect the Snickers bonus stuff.
* `Write the number of stops to a file, e.g. for a stream overlay`: Does exactly
that. You can find the file in `My Documents`, the full path will be in the
tooltip. Disabled by default.
* `Automatically reset when docking back at Garden Ring`: Automatically reset
when you have finished a run and dock back at Garden Ring. Enabled by default.
* `Automatically stop the timer after death`: Automatically stop the timer
should you meet an untimely demise. Disabled by default.
As the race has no set order for the systems to be visited in, you will have to edit the splits to reorder the systems for your personal route. You can do that from the LiveSplit UI, but I would recommend editing the splits file directly in the text editor of your choosing. It contains comments to help with that task. If you are planning to fly the “default” order it comes with you will not have to edit anything.
**Note**: If your _next stop is Garden Ring_ when the time limit is reached,
you will either have to reset LiveSplit manually after docking there or re-dock
to have the AutoSplitter reset it for you.
There are no settings.
### Race 2 The Aquarian Job
### Race 6 Chicken Run: Crash Harder
https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-the-aquarian-job-magic-8-ball-championship-race-2.599829/
<https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-chicken-run-crash-harder-magic-8-ball-championship-race-6.605441/>
The AutoSplitter will start the timer once you undock from London Relay. It will
enforce doing all steps in the corret order. There is no sane way to check for
the distance requirements around Cooper Arena; as long as you land/take off
within ~50km of the settlement, you will get a split.
The AutoSplitter will start the timer once you undock from Noriega Station. it will **not** account for ending the race prematurely and returning to LTT 2151 before visiting _all_ other stops.
There are no settings.
### Race 4 On the Rocks
<https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-on-the-rocks-7th-15th-may-3307-magic-8-ball-championship-race-4.602955/>
The AutoSplitter will start the timer once you undock from Rebuy Prospect. It will **not** enforce selling 1t of beer mats (split will trigger at selling _anything_), and **not** check if youre buying water at Jacks Town.
Since the order in which you visit the races stops is up to you, the splits do not have a specific order and instead just list the `n`th stop.
There are no settings.
### Race 3 Wiccan BeWare
<https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-the-wiccan-beware-race-magic-8-ball-championship-race-3.602128/>
The AutoSplitter will start the timer once you undock from Dublin Citadel. It will **not** enforce buying the correct cargo, and **not** check the system you buy it in. It can also not detect if/when you fly through the tunnel at Gateway Interchange Hub, nor enforce the speed requirement.
There is one settings:
* `Automatically reset when refuelling or repairing`: Automatically reset when
you Refuel or repair, since that is against the rules. Disabled by default.
- `Automatically reset when refuelling or repairing`: Automatically reset when you Refuel or repair, since that is against the rules. Disabled by default.
### Race 2 The Aquarian Job
<https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-the-aquarian-job-magic-8-ball-championship-race-2.599829/>
The AutoSplitter will start the timer once you undock from London Relay. It will enforce doing all steps in the corret order. There is no sane way to check for the distance requirements around Cooper Arena; as long as you land/take off within ~50km of the settlement, you will get a split.
There is one settings:
- `Automatically reset when refuelling or repairing`: Automatically reset when you Refuel or repair, since that is against the rules. Disabled by default.
### Race 1 Back to Pareco
<https://forums.frontier.co.uk/threads/the-buckyball-racing-club-presents-back-to-pareco-magic-8-ball-championship-race-1.598760/>
The AutoSplitter will start the timer once you undock from Garden Ring. It will enforce docking at the races stations in the correct order. After 20 minutes you get one last stop, then the timer will pause and reset once you dock back at Garden Ring.
There are three settings:
- `Write the number of stops to a file, e.g. for a stream overlay`: Does exactly that. You can find the file in `My Documents`, the full path will be in the tooltip. Disabled by default.
- `Automatically reset when docking back at Garden Ring`: Automatically reset when you have finished a run and dock back at Garden Ring. Enabled by default.
- `Automatically stop the timer after death`: Automatically stop the timer should you meet an untimely demise. Disabled by default.
**Note**: If your _next stop is Garden Ring_ when the time limit is reached, you will either have to reset LiveSplit manually after docking there or re-dock to have the AutoSplitter reset it for you.

View file

@ -8,7 +8,7 @@ state("EliteDangerous64") {}
startup {
// Relevant journal entries
vars.journalReader = null;
vars.journalEntries = new List<System.Text.RegularExpressions.Regex>(9);
vars.journalEntries = new List<System.Text.RegularExpressions.Regex>(12);
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Undocked"", ""StationName"":""London Relay"", ""StationType"":"".*"", ""MarketID"":\d+(, ""Taxi"":(true|false), ""Multicrew"":(true|false))? \}"));
vars.journalEntries.Add(
@ -80,10 +80,10 @@ startup {
}
// Executes when LiveSplit detects the game process (see “state” at the top of the file).
// In our case the journal and netlog files are unique to every execution of the game, so we need to prepare them here.
// We also need to check if file logging is enabled (the setting is not available in `startup`) and create/open our log file.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-initialization-game-start
init {
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
}
// Executes as long as the game process is running, by default 60 times per second.

View file

@ -62,6 +62,27 @@
<TextAlignment>0</TextAlignment>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Text.dll</Path>
<Settings>
<Version>1.4</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<TimeColor>FFFFFFFF</TimeColor>
<OverrideTimeColor>False</OverrideTimeColor>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>00FFFFFF</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<Text1>https://git.alternerd.tv/8ball</Text1>
<Text2>
</Text2>
<Font1><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font1>
<Font2><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font2>
<OverrideFont1>False</OverrideFont1>
<OverrideFont2>False</OverrideFont2>
<Display2Rows>False</Display2Rows>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Subsplits.dll</Path>
<Settings>
@ -187,4 +208,4 @@
</Settings>
</Component>
</Components>
</Layout>
</Layout>

158
Wiccan BeWare.asl Normal file
View file

@ -0,0 +1,158 @@
// Defines the process to monitor. We are not reading anything from the games memory, so its empty.
// We still need it though, LiveSplit will only run the auto splitter if the corresponding process is present.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#state-descriptors
state("EliteDangerous64") {}
// Executes when LiveSplit (re-)loads the auto splitter. Does general setup tasks.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-startup
startup {
// Relevant journal entries
vars.journalReader = null;
vars.journalEntries = new List<System.Text.RegularExpressions.Regex>(13);
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Undocked"", ""StationName"":""Dublin Citadel"", ""StationType"":"".*"", ""MarketID"":\d+(, ""Taxi"":(true|false), ""Multicrew"":(true|false))? \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketBuy"", ""MarketID"":\d+, ""Type"":"".*""(, ""Type_Localised"":"".*"")?, ""Count"":\d+, ""BuyPrice"":\d+, ""TotalCost"":\d+ \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Soholia"", ""SystemAddress"":670686389665, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketSell"", ""MarketID"":\d+, ""Type"":"".*""(, ""Type_Localised"":"".*"")?, ""Count"":\d+, ""SellPrice"":\d+, ""TotalSale"":\d+, ""AvgPricePaid"":\d+ \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Gateway"", ""SystemAddress"":2832631665362, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Gateway"", ""SystemAddress"":2832631665362, ""Body"":""Dublin Citadel"", ""BodyID"":11, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketSell"", ""MarketID"":128104440, ""Type"":"".*""(, ""Type_Localised"":"".*"")?, ""Count"":\d+, ""SellPrice"":\d+, ""TotalSale"":\d+, ""AvgPricePaid"":\d+ \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Gateway"", ""SystemAddress"":2832631665362, ""Body"":""Hope"", ""BodyID"":1, ""BodyType"":""Planet"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""(SupercruiseEntry""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""Gateway"", ""SystemAddress"":2832631665362|StartJump"", ""JumpType"":""Hyperspace"", ""StarSystem"":"".*"", ""SystemAddress"":\d+, ""StarClass"":"".*"") \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketBuy"", ""MarketID"":\d+, ""Type"":"".*""(, ""Type_Localised"":"".*"")?, ""Count"":\d+, ""BuyPrice"":\d+, ""TotalCost"":\d+ \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""FSDJump""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""LP 131-66"", ""SystemAddress"":2869441078689, .*\}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""SupercruiseExit""(, ""Taxi"":(true|false), ""Multicrew"":(true|false))?, ""StarSystem"":""LP 131-66"", ""SystemAddress"":2869441078689, ""Body"":""Vasilyev Vision"", ""BodyID"":1, ""BodyType"":""Station"" \}"));
vars.journalEntries.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""MarketSell"", ""MarketID"":\d+, ""Type"":"".*""(, ""Type_Localised"":"".*"")?, ""Count"":\d+, ""SellPrice"":\d+, ""TotalSale"":\d+, ""AvgPricePaid"":\d+ \}"));
// Reset conditions
vars.resetConditions = new List<System.Text.RegularExpressions.Regex>(4);
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""Repair"", .*\}"));
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""RepairAll"", ""Cost"":\d+ \}"));
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""RefuelAll"", ""Cost"":\d+, ""Amount"":\d+\.\d+ \}"));
vars.resetConditions.Add(
new System.Text.RegularExpressions.Regex(@"\{ ""timestamp"":""(?<timestamp>.*)"", ""event"":""RefuelPartial"", ""Cost"":\d+, ""Amount"":\d+\.\d+ \}"));
// Journal file handling
vars.journalPath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"Saved Games",
"Frontier Developments",
"Elite Dangerous"
);
vars.currentJournal = "none";
vars.updateJournalReader = (Action)delegate() {
FileInfo journalFile = new DirectoryInfo(vars.journalPath).GetFiles("journal.*.log").OrderByDescending(file => file.LastWriteTime).First();
print("Current journal file: " + vars.currentJournal + ", latest journal file: " + journalFile.Name);
if (journalFile.Name != vars.currentJournal) {
vars.journalReader = new StreamReader(new FileStream(journalFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
vars.currentJournal = journalFile.Name;
}
};
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
// Watch for new files
FileSystemWatcher journalWatcher = new FileSystemWatcher(vars.journalPath);
journalWatcher.Created += (object sender, FileSystemEventArgs eventArgs) => {
vars.updateJournalReader();
};
journalWatcher.EnableRaisingEvents = true;
// Initialize split counter
vars.currentSplit = 0;
// Initialize settings
settings.Add("autoReset", false, "Automatically reset when refuelling or repairing");
}
// Executes when LiveSplit detects the game process (see “state” at the top of the file).
// In our case the journal and netlog files are unique to every execution of the game, so we need to prepare them here.
// We also need to check if file logging is enabled (the setting is not available in `startup`) and create/open our log file.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-initialization-game-start
init {
vars.updateJournalReader();
vars.journalReader.ReadToEnd();
}
// Executes as long as the game process is running, by default 60 times per second.
// Unless explicitly returning `false`, `start`, `split` and `reset` are executed right after.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#generic-update
update {
current.journalString = vars.journalReader.ReadToEnd();
}
// Executes every `update`. Starts the timer if the first journal event is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-timer-start-1
start {
bool start = false;
if (vars.journalEntries[0].Match(current.journalString).Success) {
start = true;
vars.currentSplit = 1;
}
return start;
}
// Executes every `update`. Triggers a split if the journal event triggering the next split is detected.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-splits-1
split {
bool split = false;
if (!String.IsNullOrEmpty(current.journalString)) {
if (vars.journalEntries[vars.currentSplit].Match(current.journalString).Success) {
split = true;
vars.currentSplit++;
}
}
return split;
}
// Executes every `update`. Triggers a reset if a reset condition is met.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#automatic-resets-1
reset {
bool reset = false;
if (settings["autoReset"] && !String.IsNullOrEmpty(current.journalString)) {
foreach (System.Text.RegularExpressions.Regex condition in vars.resetConditions)
{
if (condition.Match(current.journalString).Success) {
reset = true;
}
}
}
return reset;
}
// Executes when the game process is shut down.
// In our case were going to close the files we opened in `init`.
// See https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#game-exit
exit {
vars.journalReader.Close();
}
// Executes when LiveScript shuts the auto splitter down, e.g. on reloading it.
// When reloading the splitter with the game running, LiveSplit does **not** execute `exit`, but it does execute `shutdown`.
// see https://github.com/LiveSplit/LiveSplit.AutoSplitters/blob/master/README.md#script-shutdown
shutdown {
if (vars.journalReader != null) {
vars.journalReader.Close();
}
}

211
Wiccan BeWare.lsl Normal file
View file

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="UTF-8"?>
<Layout version="1.6.1">
<Mode>Vertical</Mode>
<X>51</X>
<Y>53</Y>
<VerticalWidth>286</VerticalWidth>
<VerticalHeight>386</VerticalHeight>
<HorizontalWidth>-1</HorizontalWidth>
<HorizontalHeight>-1</HorizontalHeight>
<Settings>
<TextColor>FFFFFFFF</TextColor>
<BackgroundColor>FF0F0F0F</BackgroundColor>
<BackgroundColor2>00000000</BackgroundColor2>
<ThinSeparatorsColor>03FFFFFF</ThinSeparatorsColor>
<SeparatorsColor>24FFFFFF</SeparatorsColor>
<PersonalBestColor>FF16A6FF</PersonalBestColor>
<AheadGainingTimeColor>FF00CC36</AheadGainingTimeColor>
<AheadLosingTimeColor>FF52CC73</AheadLosingTimeColor>
<BehindGainingTimeColor>FFCC5C52</BehindGainingTimeColor>
<BehindLosingTimeColor>FFCC1200</BehindLosingTimeColor>
<BestSegmentColor>FFD8AF1F</BestSegmentColor>
<UseRainbowColor>False</UseRainbowColor>
<NotRunningColor>FFACACAC</NotRunningColor>
<PausedColor>FF7A7A7A</PausedColor>
<TextOutlineColor>00000000</TextOutlineColor>
<ShadowsColor>80000000</ShadowsColor>
<TimesFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TimesFont>
<TimerFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAA5DZW50dXJ5IEdvdGhpYwAAL0IF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAABAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TimerFont>
<TextFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhPcmJpdHJvbgAAQEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAwAAAAs=]]></TextFont>
<AlwaysOnTop>True</AlwaysOnTop>
<ShowBestSegments>True</ShowBestSegments>
<AntiAliasing>True</AntiAliasing>
<DropShadows>True</DropShadows>
<BackgroundType>SolidColor</BackgroundType>
<BackgroundImage />
<ImageOpacity>1</ImageOpacity>
<ImageBlur>0</ImageBlur>
<Opacity>1</Opacity>
<MousePassThroughWhileRunning>False</MousePassThroughWhileRunning>
</Settings>
<Components>
<Component>
<Path>LiveSplit.Title.dll</Path>
<Settings>
<Version>1.7.3</Version>
<ShowGameName>True</ShowGameName>
<ShowCategoryName>True</ShowCategoryName>
<ShowAttemptCount>False</ShowAttemptCount>
<ShowFinishedRunsCount>False</ShowFinishedRunsCount>
<OverrideTitleFont>False</OverrideTitleFont>
<OverrideTitleColor>False</OverrideTitleColor>
<TitleFont><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></TitleFont>
<SingleLine>False</SingleLine>
<TitleColor>FFFFFFFF</TitleColor>
<BackgroundColor>FF2A2A2A</BackgroundColor>
<BackgroundColor2>FF131313</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DisplayGameIcon>True</DisplayGameIcon>
<ShowRegion>False</ShowRegion>
<ShowPlatform>False</ShowPlatform>
<ShowVariables>True</ShowVariables>
<TextAlignment>0</TextAlignment>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Text.dll</Path>
<Settings>
<Version>1.4</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<TimeColor>FFFFFFFF</TimeColor>
<OverrideTimeColor>False</OverrideTimeColor>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>00FFFFFF</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<Text1>https://git.alternerd.tv/8ball</Text1>
<Text2>
</Text2>
<Font1><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font1>
<Font2><![CDATA[AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABNTeXN0ZW0uRHJhd2luZy5Gb250BAAAAAROYW1lBFNpemUFU3R5bGUEVW5pdAEABAQLGFN5c3RlbS5EcmF3aW5nLkZvbnRTdHlsZQIAAAAbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AgAAAAIAAAAGAwAAAAhTZWdvZSBVSQAAUEEF/P///xhTeXN0ZW0uRHJhd2luZy5Gb250U3R5bGUBAAAAB3ZhbHVlX18ACAIAAAAAAAAABfv///8bU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NVbml0AQAAAAd2YWx1ZV9fAAgCAAAAAgAAAAs=]]></Font2>
<OverrideFont1>False</OverrideFont1>
<OverrideFont2>False</OverrideFont2>
<Display2Rows>False</Display2Rows>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Subsplits.dll</Path>
<Settings>
<Version>1.7</Version>
<CurrentSplitTopColor>FF3373F4</CurrentSplitTopColor>
<CurrentSplitBottomColor>FF153574</CurrentSplitBottomColor>
<VisualSplitCount>11</VisualSplitCount>
<SplitPreviewCount>1</SplitPreviewCount>
<MinimumMajorSplits>0</MinimumMajorSplits>
<DisplayIcons>True</DisplayIcons>
<ShowThinSeparators>False</ShowThinSeparators>
<AlwaysShowLastSplit>True</AlwaysShowLastSplit>
<SplitWidth>20</SplitWidth>
<SplitTimesAccuracy>Seconds</SplitTimesAccuracy>
<BeforeNamesColor>FFFFFFFF</BeforeNamesColor>
<CurrentNamesColor>FFFFFFFF</CurrentNamesColor>
<AfterNamesColor>FFFFFFFF</AfterNamesColor>
<OverrideTextColor>False</OverrideTextColor>
<BeforeTimesColor>FFFFFFFF</BeforeTimesColor>
<CurrentTimesColor>FFFFFFFF</CurrentTimesColor>
<AfterTimesColor>FFFFFFFF</AfterTimesColor>
<OverrideTimesColor>False</OverrideTimesColor>
<LockLastSplit>False</LockLastSplit>
<IconSize>24</IconSize>
<IconShadows>True</IconShadows>
<SplitHeight>6</SplitHeight>
<CurrentSplitGradient>Vertical</CurrentSplitGradient>
<BackgroundColor>00FFFFFF</BackgroundColor>
<BackgroundColor2>01FFFFFF</BackgroundColor2>
<BackgroundGradient>Alternating</BackgroundGradient>
<SeparatorLastSplit>True</SeparatorLastSplit>
<DeltasAccuracy>Tenths</DeltasAccuracy>
<DropDecimals>True</DropDecimals>
<OverrideDeltasColor>False</OverrideDeltasColor>
<DeltasColor>FFFFFFFF</DeltasColor>
<HeaderComparison>Current Comparison</HeaderComparison>
<HeaderTimingMethod>Current Timing Method</HeaderTimingMethod>
<Display2Rows>False</Display2Rows>
<IndentBlankIcons>True</IndentBlankIcons>
<IndentSubsplits>True</IndentSubsplits>
<HideSubsplits>False</HideSubsplits>
<ShowSubsplits>False</ShowSubsplits>
<CurrentSectionOnly>False</CurrentSectionOnly>
<OverrideSubsplitColor>False</OverrideSubsplitColor>
<SubsplitGradient>Plain</SubsplitGradient>
<ShowHeader>True</ShowHeader>
<IndentSectionSplit>True</IndentSectionSplit>
<ShowIconSectionSplit>True</ShowIconSectionSplit>
<ShowSectionIcon>True</ShowSectionIcon>
<HeaderGradient>Vertical</HeaderGradient>
<OverrideHeaderColor>False</OverrideHeaderColor>
<HeaderText>True</HeaderText>
<HeaderTimes>True</HeaderTimes>
<HeaderAccuracy>Tenths</HeaderAccuracy>
<SectionTimer>True</SectionTimer>
<SectionTimerGradient>True</SectionTimerGradient>
<SectionTimerAccuracy>Tenths</SectionTimerAccuracy>
<SubsplitTopColor>8D000000</SubsplitTopColor>
<SubsplitBottomColor>00FFFFFF</SubsplitBottomColor>
<HeaderTopColor>2BFFFFFF</HeaderTopColor>
<HeaderBottomColor>D8000000</HeaderBottomColor>
<HeaderTextColor>FFFFFFFF</HeaderTextColor>
<HeaderTimesColor>FFFFFFFF</HeaderTimesColor>
<SectionTimerColor>FF777777</SectionTimerColor>
<ShowColumnLabels>False</ShowColumnLabels>
<LabelsColor>FFFFFFFF</LabelsColor>
<Columns>
<Settings>
<Version>1.5</Version>
<Name>+/-</Name>
<Type>Delta</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
<Settings>
<Version>1.5</Version>
<Name>Time</Name>
<Type>SplitTime</Type>
<Comparison>Personal Best</Comparison>
<TimingMethod>Real Time</TimingMethod>
</Settings>
</Columns>
</Settings>
</Component>
<Component>
<Path>LiveSplit.Timer.dll</Path>
<Settings>
<Version>1.5</Version>
<TimerHeight>69</TimerHeight>
<TimerWidth>225</TimerWidth>
<TimerFormat>1.23</TimerFormat>
<OverrideSplitColors>False</OverrideSplitColors>
<ShowGradient>True</ShowGradient>
<TimerColor>FFAAAAAA</TimerColor>
<BackgroundColor>00000000</BackgroundColor>
<BackgroundColor2>FF222222</BackgroundColor2>
<BackgroundGradient>Plain</BackgroundGradient>
<CenterTimer>False</CenterTimer>
<TimingMethod>Current Timing Method</TimingMethod>
<DecimalsSize>35</DecimalsSize>
</Settings>
</Component>
<Component>
<Path>LiveSplit.PreviousSegment.dll</Path>
<Settings>
<Version>1.6</Version>
<TextColor>FFFFFFFF</TextColor>
<OverrideTextColor>False</OverrideTextColor>
<BackgroundColor>FF1C1C1C</BackgroundColor>
<BackgroundColor2>FF0D0D0D</BackgroundColor2>
<BackgroundGradient>Vertical</BackgroundGradient>
<DeltaAccuracy>Seconds</DeltaAccuracy>
<DropDecimals>True</DropDecimals>
<Comparison>Personal Best</Comparison>
<Display2Rows>False</Display2Rows>
<ShowPossibleTimeSave>False</ShowPossibleTimeSave>
<TimeSaveAccuracy>Tenths</TimeSaveAccuracy>
</Settings>
</Component>
<Component>
<Path>LiveSplit.ScriptableAutoSplit.dll</Path>
<Settings>
</Settings>
</Component>
</Components>
</Layout>

57
Wiccan BeWare.lss Normal file
View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<Run version="1.7.0">
<GameIcon />
<GameName>Elite Dangerous</GameName>
<CategoryName>Wiccan BeWare</CategoryName>
<LayoutPath>
</LayoutPath>
<Metadata>
<Run id="" />
<Platform usesEmulator="False">
</Platform>
<Region>
</Region>
<Variables />
</Metadata>
<Offset>00:00:00</Offset>
<AttemptCount>0</AttemptCount>
<Segments>
<Segment>
<Name>-Buy Cargo</Name>
</Segment>
<Segment>
<Name>-Jump to Soholia</Name>
</Segment>
<Segment>
<Name>{Soholia}Sell in Soholia</Name>
</Segment>
<Segment>
<Name>-Jump to Gateway</Name>
</Segment>
<Segment>
<Name>-Drop at Dublin Citadel</Name>
</Segment>
<Segment>
<Name>{Dublin Citadel}Sell at Dublin Citadel</Name>
</Segment>
<Segment>
<Name>-Drop at Gateway Interchange Hub</Name>
</Segment>
<Segment>
<Name>{Gateway Interchange Hub}Jump out of Gateway Interchange Hub</Name>
</Segment>
<Segment>
<Name>-Buy Domestic Appliances</Name>
</Segment>
<Segment>
<Name>-Jump to LP 131-66</Name>
</Segment>
<Segment>
<Name>-Drop at Vasilyev Vision</Name>
</Segment>
<Segment>
<Name>{Vasilyev Vision}Sell at Vasilyev Vision</Name>
</Segment>
</Segments>
<AutoSplitterSettings />
</Run>