-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLiveSplit.IWBTGG.asl
More file actions
117 lines (99 loc) · 3.12 KB
/
LiveSplit.IWBTGG.asl
File metadata and controls
117 lines (99 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// 𝙈𝙖𝙙𝙚 𝘽𝙮 𝘼𝘾𝙧𝙤𝙬𝙄𝘼𝙢 (v1.1.1)
state("iwbtgg")
{
int start: "iwbtgg.exe", 0x2A49EBC, 0xF48;
int reset: "iwbtgg.exe", 0x2A1C4F4, 0xDF4;
int stage1: "iwbtgg.exe", 0x2AE87B4, 0x2DC;
int stage3: "iwbtgg.exe", 0x2AE8A18, 0x619;
}
startup
{
// Settings creation
settings.Add("splittiminggroup", true, "Split Timing");
settings.Add("splittiming1", true, "Boss Door Entry", "splittiminggroup");
settings.Add("splittiming2", false, "Forth Beep", "splittiminggroup");
settings.Add("splittiming3", false, "Completion Time", "splittiminggroup");
settings.Add("splittiming4", false, "World Map", "splittiminggroup");
settings.Add("bugswarning1", true, "[WIP] - Bugs with splitting. Use at your own risk.");
}
init
{
vars.lastSplitTime = 0.0;
vars.stage1SplitDelay = 0.0;
vars.stage3SplitDelay = 0.0;
vars.splitTiming = 0000.0;
}
update
{
// Setting toggle logic
if (settings["splittiming1"]) {
vars.splitTiming = 0081;
}
else if (settings["splittiming2"]) {
vars.splitTiming = 2012;
}
else if (settings["splittiming3"]) {
vars.splitTiming = 3967;
}
else if (settings["splittiming4"]) {
vars.splitTiming = 9167;
}
else {
vars.splitTiming = 0081;
}
// Debug
// print("Split Timing: " + vars.splitTiming.ToString());
}
start
{
return old.start != 1 && current.start == 1;
}
split
{
double currentTime = timer.CurrentTime.RealTime.GetValueOrDefault().TotalMilliseconds;
if (currentTime < (vars.lastSplitTime + 500.0))
{
return false;
}
if (timer.CurrentSplitIndex == 0)
{
if (old.stage1 != 1 && current.stage1 == 1)
{
vars.stage1SplitDelay = currentTime;
return false;
}
if (current.stage1 == 1 && vars.stage1SplitDelay > 0 && currentTime >= vars.stage1SplitDelay + 2012.0) // Adjust the time after the "+" to change the splits timing.
{
vars.stage1SplitDelay = 0.0;
vars.lastSplitTime = currentTime;
return true;
}
if (current.stage1 != 1 && vars.stage1SplitDelay > 0)
{
vars.stage1SplitDelay = 0.0;
}
}
if (timer.CurrentSplitIndex == 1)
{
if (old.stage3 != 1 && current.stage3 == 1)
{
vars.stage3SplitDelay = currentTime;
return false;
}
if (current.stage3 == 1 && vars.stage3SplitDelay > 0 && currentTime >= vars.stage3SplitDelay + 0988.0) // Leave this time alone as the run should always end after around 1.065 seconds.
{
vars.stage3SplitDelay = 0.0;
vars.lastSplitTime = currentTime;
return true;
}
if (current.stage3 != 1 && vars.stage3SplitDelay > 0)
{
vars.stage3SplitDelay = 0.0;
}
}
return false;
}
reset
{
return old.reset != 1 && current.reset == 1;
}