diff options
Diffstat (limited to 'Lingo.asl')
| -rw-r--r-- | Lingo.asl | 50 |
1 files changed, 31 insertions, 19 deletions
| diff --git a/Lingo.asl b/Lingo.asl index f53eee9..2916ad9 100644 --- a/Lingo.asl +++ b/Lingo.asl | |||
| @@ -13,12 +13,15 @@ startup | |||
| 13 | print("[Lingo ASL] " + logLine); | 13 | print("[Lingo ASL] " + logLine); |
| 14 | }); | 14 | }); |
| 15 | 15 | ||
| 16 | settings.Add("every",false,"Split on every panel solve"); | ||
| 16 | settings.Add("end", false, "Split on The End"); | 17 | settings.Add("end", false, "Split on The End"); |
| 17 | settings.Add("unchallenged", false, "Split on The Unchallenged"); | 18 | settings.Add("unchallenged", false, "Split on The Unchallenged"); |
| 18 | settings.Add("master", false, "Split on The Master"); | 19 | settings.Add("master", false, "Split on The Master"); |
| 19 | settings.Add("pilgrimage", false, "Split on Pilgrimage"); | 20 | settings.Add("pilgrimage", false, "Split on Pilgrimage"); |
| 20 | settings.Add("showLastPanel",false, "Override first text component with the name of the most recently solved panel"); | 21 | settings.Add("showLastPanel",false, "Override first text component with the name of the most recently solved panel"); |
| 21 | 22 | ||
| 23 | vars.prevPanel = ""; | ||
| 24 | |||
| 22 | vars.log("Autosplitter loaded"); | 25 | vars.log("Autosplitter loaded"); |
| 23 | } | 26 | } |
| 24 | 27 | ||
| @@ -40,7 +43,7 @@ init | |||
| 40 | throw new Exception("Could not find magic autosplitter array!"); | 43 | throw new Exception("Could not find magic autosplitter array!"); |
| 41 | } | 44 | } |
| 42 | vars.firstInput = new MemoryWatcher<byte>(ptr + 8); | 45 | vars.firstInput = new MemoryWatcher<byte>(ptr + 8); |
| 43 | vars.lastPanel = new StringWatcher(ptr + 9, 32); | 46 | vars.panel = new StringWatcher(ptr + 9, 32); |
| 44 | 47 | ||
| 45 | vars.log(String.Format("Magic autosplitter array: {0}", ptr.ToString("X"))); | 48 | vars.log(String.Format("Magic autosplitter array: {0}", ptr.ToString("X"))); |
| 46 | 49 | ||
| @@ -61,10 +64,10 @@ init | |||
| 61 | update | 64 | update |
| 62 | { | 65 | { |
| 63 | vars.firstInput.Update(game); | 66 | vars.firstInput.Update(game); |
| 64 | vars.lastPanel.Update(game); | 67 | vars.panel.Update(game); |
| 65 | 68 | ||
| 66 | if (settings["showLastPanel"] && vars.updateText && vars.lastPanel.Old != vars.lastPanel.Current) { | 69 | if (settings["showLastPanel"] && vars.updateText && vars.panel.Old != vars.panel.Current) { |
| 67 | vars.tcs.Text2 = vars.lastPanel.Current; | 70 | vars.tcs.Text2 = vars.panel.Current; |
| 68 | } | 71 | } |
| 69 | } | 72 | } |
| 70 | 73 | ||
| @@ -75,6 +78,8 @@ start | |||
| 75 | 78 | ||
| 76 | onStart | 79 | onStart |
| 77 | { | 80 | { |
| 81 | vars.prevPanel = vars.panel.Current; | ||
| 82 | |||
| 78 | if (settings["showLastPanel"] && vars.updateText) { | 83 | if (settings["showLastPanel"] && vars.updateText) { |
| 79 | vars.tcs.Text1 = "Last Panel:"; | 84 | vars.tcs.Text1 = "Last Panel:"; |
| 80 | vars.tcs.Text2 = ""; | 85 | vars.tcs.Text2 = ""; |
| @@ -83,20 +88,27 @@ onStart | |||
| 83 | 88 | ||
| 84 | split | 89 | split |
| 85 | { | 90 | { |
| 86 | if (settings["end"] && vars.lastPanel.Old != "Panel_end_end" && vars.lastPanel.Current == "Panel_end_end") { | 91 | if (vars.panel.Current != vars.prevPanel) { |
| 87 | vars.log("Split on The End"); | 92 | string action = "NO SPLIT"; |
| 88 | return true; | 93 | |
| 89 | } | 94 | if (settings["every"]) { |
| 90 | if (settings["unchallenged"] && vars.lastPanel.Old == "Panel_challenged_unchallenged" && vars.lastPanel.Current == "Panel_challenged_unchallenged") { | 95 | action = "SPLIT"; |
| 91 | vars.log("Split on The Unchallenged"); | 96 | vars.log("Split on any panel: " + vars.panel.Current); |
| 92 | return true; | 97 | } else if (settings["end"] && vars.panel.Current == "Panel_end_end") { |
| 93 | } | 98 | action = "SPLIT"; |
| 94 | if (settings["master"] && vars.lastPanel.Old == "Panel_master_master" && vars.lastPanel.Current == "Panel_master_master") { | 99 | vars.log("Split on The End"); |
| 95 | vars.log("Split on The Master"); | 100 | } else if (settings["unchallenged"] && vars.panel.Current == "Panel_challenged_unchallenged") { |
| 96 | return true; | 101 | action = "SPLIT"; |
| 97 | } | 102 | vars.log("Split on The Unchallenged"); |
| 98 | if (settings["pilgrimage"] && vars.lastPanel.Old == "Panel_pilgrim" && vars.lastPanel.Current == "Panel_pilgrim") { | 103 | } else if (settings["master"] && vars.panel.Current == "Panel_master_master") { |
| 99 | vars.log("Split on Pilgrimage"); | 104 | action = "SPLIT"; |
| 100 | return true; | 105 | vars.log("Split on The Master"); |
| 106 | } else if (settings["pilgrimage"] && vars.panel.Current == "Panel_pilgrim") { | ||
| 107 | action = "SPLIT"; | ||
| 108 | vars.log("Split on Pilgrimage"); | ||
| 109 | } | ||
| 110 | |||
| 111 | vars.prevPanel = vars.panel.Current; | ||
| 112 | return action.StartsWith("SPLIT"); | ||
| 101 | } | 113 | } |
| 102 | } | 114 | } |
