-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathLiveSplit.LakeHavenChrysalis.asl
100 lines (83 loc) · 2.59 KB
/
LiveSplit.LakeHavenChrysalis.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
state("Lake Haven - Chrysalis") {}
startup
{
Assembly.Load(File.ReadAllBytes("Components/asl-help")).CreateInstance("Unity");
vars.Helper.GameName = "Lake Haven - Chrysalis";
vars.Helper.LoadSceneManager = true;
vars.Helper.AlertLoadless();
settings.Add("Farmhouse_Interior_1F", false, "Entering the House");
settings.Add("WayToBasement", false, "Entering the Basement Passage");
settings.Add("safe", false, "Leaving the Attic");
settings.Add("Office", false, "Entering the Office");
settings.Add("Well2", false, "Entering the Well's Depths");
settings.Add("Basement", false, "Entering the Basement Door");
settings.Add("end", false, "Ending");
}
init
{
vars.Splits = new HashSet<string>();
vars.Helper.TryLoad = (Func<dynamic, bool>)(mono =>
{
vars.Helper["nextRoom"] = mono.MakeString("SceneChangeManager", "Instance", "nextRoom");
vars.Helper["igt"] = mono.Make<float>("SavedDataManager", "IGT");
vars.Helper["autosplitHook"] = mono.Make<int>("SavedDataManager", "AutoSplitLevelHook");
vars.Helper["gameTimeStarted"] = mono.Make<bool>("SavedDataManager", "globalSaveData", "gameTimeStarted");
return true;
});
}
update
{
current.activeScene = vars.Helper.Scenes.Active.Name ?? old.activeScene;
current.loadingScene = vars.Helper.Scenes.Loaded[0].Name ?? old.loadingScene;
if (old.nextRoom != current.nextRoom)
{
vars.Log("NextRoom changed: " + old.nextRoom + " -> " + current.nextRoom);
}
if (old.autosplitHook != current.autosplitHook)
{
vars.Log("Room int changed: " + old.autosplitHook + " -> " + current.autosplitHook);
}
}
start
{
return current.activeScene == "FarmHouse_Exterior" && old.igt == 0f && current.igt > 0f;
}
reset
{
return current.activeScene == "MainMenu" || current.loadingScene == "WarningScreen";
}
gameTime
{
return TimeSpan.FromSeconds(current.igt);
}
split
{
if (current.nextRoom != old.nextRoom && !vars.Splits.Contains(current.nextRoom))
{
vars.Splits.Add(current.nextRoom);
return settings[current.nextRoom];
}
if (current.nextRoom == "Farmhouse_Interior_2F" && old.nextRoom == "Farmhouse_Attic" && !vars.Splits.Contains("safe"))
{
vars.Splits.Add("safe");
return settings["safe"];
}
if (!current.gameTimeStarted && old.gameTimeStarted && !vars.Splits.Contains("end"))
{
vars.Splits.Add("end");
return settings["end"];
}
}
isLoading
{
return true;
}
onReset
{
vars.Splits.Clear();
}
exit
{
timer.IsGameTimePaused = true;
vars.Splits.Clear();
}