state("Ryse") { string8 Area: 0x0225B668, 0x519C; // changes only on chapter change int menu: 0x02F59AA0, 0x8, 0x120, 0x648; // 0 for not menu, 1 for menu, not best address but works for now int xp: 0x02275DB8, 0x0, 0x20, 0x0; // total xp int Health: 0x02262168, 0x0, 0x0, 0x20, 0x30; // current player health int Combo: 0x02275DB8, 0x0, 0x90, 0x30; // current combo int HiddenSecrets: 0x022952B0, 0x0, 0x110, 0x160, 0x8F8; // total Hidden Secrets int Vistas: 0x022952B0, 0x0, 0x110, 0x160, 0xB68; // total Vistas int DogTags: 0x022952B0, 0x0, 0x110, 0x160, 0x328; // total Dog Tags /* extra stuff need to test or may use or need to find find boss health address if people want to split on boss fights find a objective address to split on objectives maybe instead of chapters */ } startup { // TextComponent stuff. var lcCache = new Dictionary(); vars.SetTextComponent = (Action)((key, text1, text2) => { LiveSplit.UI.Components.ILayoutComponent lc; if (!lcCache.TryGetValue(key, out lc)) { lc = timer.Layout.LayoutComponents.Cast() .FirstOrDefault(llc => Path.GetFileName(llc.Path) == "LiveSplit.Text.dll" && llc.Component.Settings.Text1 == text1) ?? LiveSplit.UI.Components.ComponentManager.LoadLayoutComponent("LiveSplit.Text.dll", timer); lcCache.Add(key, lc); } if (!timer.Layout.LayoutComponents.Contains(lc)) timer.Layout.LayoutComponents.Add(lc); dynamic tc = lc.Component; tc.Settings.Text1 = text1; tc.Settings.Text2 = text2.ToString(); }); vars.RemoveTextComponent = (Action)(key => { LiveSplit.UI.Components.ILayoutComponent lc; if (lcCache.TryGetValue(key, out lc)) { timer.Layout.LayoutComponents.Remove(lc); lcCache.Remove(key); } }); vars.RemoveAllTextComponents = (Action)(() => { foreach (var lc in lcCache.Values) timer.Layout.LayoutComponents.Remove(lc); lcCache.Clear(); }); settings.Add("texts-area", false, "Show Current Area as a text component"); settings.Add("texts-remove", true, "Remove text components on exit/shutdown if they were added"); } init { vars.ShowTextIfEnabled = (Action)((key, text1, text2) => { if (settings[key]) { vars.SetTextComponent(key, text1, text2); } else if (settings["texts-remove"]) { vars.RemoveTextComponent(key); } }); } update { vars.ShowTextIfEnabled("texts-area", "Area:", current.Area); } start { if (current.menu == 0 && old.menu == 1) { return true; } } split { if (current.Area == "forum" && old.Area == "palace") //chapter 1 { return true; } else if (current.Area == "dover" && old.Area == "forum") // chapter 2 { return true; } else if (current.Area == "oswald" && old.Area == "dover") // chapter 3 { return true; } else if (current.Area == "glott" && old.Area == "oswald") // chapter 4 { return true; } else if (current.Area == "york" && old.Area == "glott") //chapter 5 { return true; } else if (current.Area == "colosseum" && old.Area == "york") // chapter 6 { return true; } else if (current.Area == "rome" && old.Area == "colosseum") // chapter 7 { return true; } else if(current.Area == "rome" && old.Combo > 40 && current.Combo == 0) // chapter 8 final split { return true; } } exit { if (settings["texts-remove"]) { vars.RemoveAllTextComponents(); } } shutdown { if (settings["texts-remove"]) { vars.RemoveAllTextComponents(); } } /* area names: palace forum dover oswald glott york colosseum rome */