-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathLiveSplit.SearchParty.asl
136 lines (116 loc) · 4.54 KB
/
LiveSplit.SearchParty.asl
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
state("SEARCH PARTY DIRECTORS CUT")
{
long IGT: "UnityPlayer.dll", 0x10B2500, 0x1C, 0x8, 0x18, 0x2C8, 0x688;
string255 Ending: "mono.dll", 0x02048E8, 0x4C;
}
startup
{
Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity");
vars.Helper.GameName = "Search Party";
vars.Helper.LoadSceneManager = true;
vars.Helper.AlertLoadless();
settings.Add("SP", true, "Search Party");
settings.Add("LS", true, "Location Splits", "SP");
settings.Add("First Floor", true, "Split on Entering the House", "LS");
settings.Add("Second Floor", true, "Split on reaching the Second Floor", "LS");
settings.Add("Third Floor", true, "Split on reaching the Third Floor", "LS");
settings.Add("Attic", true, "Split on reaching the Attic", "LS");
settings.Add("Basement", true, "Split on reaching the Basement", "LS");
settings.Add("Outside", true, "Split on Exiting the Basement to the Outside", "LS");
settings.Add("First Floor2", true, "Split on reaching the First Floor after Boss Fight", "LS");
settings.Add("???", true, "Split after entering the Blue Door Painting", "LS");
settings.Add("UFO", true, "Split on reaching the UFO", "LS");
settings.Add("ES", true, "Ending Splits", "SP");
settings.Add("endinga", true, "Split on reaching Ending A", "ES");
settings.Add("endingb", true, "Split on reaching Ending B", "ES");
settings.Add("endingc", true, "Split on reaching Ending C", "ES");
settings.Add("endingd", true, "Split on reaching Ending D", "ES");
settings.Add("endinge", true, "Split on reaching Ending E", "ES");
}
init
{
vars.Splits = new HashSet<string>();
vars.Helper.TryLoad = (Func<dynamic, bool>)(mono =>
{
vars.Helper["nextRoom"] = mono.MakeString("GameController", "instance", 0x14);
//vars.Helper["Ending"] = mono.MakeString("UIManager", "instance");
return true;
});
}
update
{
if(current.nextRoom != old.nextRoom)
{
print("Current: |" + current.nextRoom + "| Old: |" + old.nextRoom + "|");
}
}
start
{
return current.IGT < old.IGT || current.IGT >= 0 && old.IGT != current.IGT;
}
gameTime
{
return TimeSpan.FromSeconds(current.IGT);
}
split
{
if(current.nextRoom == "First Floor" && old.nextRoom == "Outside" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "Second Floor" && old.nextRoom == "First Floor" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "Third Floor" && old.nextRoom == "Second Floor" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "Attic" && old.nextRoom == "Third Floor" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "Basement" && old.nextRoom == "First Floor" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "Outside" && old.nextRoom == "Basement" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "First Floor" && old.nextRoom == "Basement" && !vars.Splits.Contains(current.nextRoom+"2"))
{
vars.Splits.Add(current.nextRoom+"2");
return settings[current.nextRoom+"2"];
}
if(current.nextRoom == "???" && old.nextRoom == "Second Floor" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.nextRoom == "UFO" && old.nextRoom == "Outside" && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if(current.Ending != old.Ending)
{
vars.Splits.Add(current.Ending);
return settings[current.Ending];
}
}
onReset
{
vars.Splits.Clear();
}
exit
{
timer.IsGameTimePaused = true;
vars.Splits.Clear();
}