state("LikeADragonPirates", "Steam 1.10") { bool LoadScreens: 0x385D1C0; bool NGStarter: 0x387D520, 0x58, 0x60, 0xC4; bool NGPlusStarter: 0x48835A0, 0x764; int BlackFades: 0x385D258, 0x1D0, 0x138, 0x48, 0x124; int ChapterSavePrompt: 0x38930A0, 0xC4; int BossHealth: 0x3856140, 0x30, 0x10, 0x0, 0x10, 0xC0, 0x0, 0x190; } state("LikeADragonPirates", "Steam 1.11") { bool LoadScreens: 0x385E980; bool NGStarter: 0x387ECE0, 0x58, 0x60, 0xC4; bool NGPlusStarter: 0x4884D60, 0x764; int BlackFades: 0x385EA18, 0x1D0, 0x138, 0x48, 0x124; int ChapterSavePrompt: 0x3894860, 0xCC; int BossHealth: 0x3857900, 0x30, 0x10, 0x0, 0x10, 0xC0, 0x0, 0x190; } state("LikeADragonPirates", "Steam 1.12") { bool LoadScreens: 0x3862980; bool NGStarter: 0x387ECE0, 0x58, 0x60, 0xC4; bool NGPlusStarter: 0x4888D60, 0x764; int BlackFades: 0x3862A18, 0x1D0, 0x138, 0x48, 0x124; int ChapterSavePrompt: 0x3898860, 0xCC; int BossHealth: 0x385B900, 0x30, 0x10, 0x0, 0x10, 0xC0, 0x0, 0x190; } state("LikeADragonPirates", "Steam 1.13") { bool LoadScreens: 0x3862980; bool NGStarter: 0x387ECE0, 0x58, 0x60, 0xC4; bool NGPlusStarter: 0x4888D60, 0x764; int BlackFades: 0x3862A18, 0x1D0, 0x138, 0x48, 0x124; int ChapterSavePrompt: 0x3898860, 0xCC; int BossHealth: 0x385B900, 0x30, 0x10, 0x0, 0x10, 0xC0, 0x0, 0x190; } state("LikeADragonPirates", "Steam 1.14") { bool LoadScreens: 0x3862980; bool NGStarter: 0x3882CE0, 0x58, 0x60, 0xC4; bool NGPlusStarter: 0x4888D60, 0x764; int BlackFades: 0x3862A18, 0x1D0, 0x138, 0x48, 0x124; int ChapterSavePrompt: 0x3898860, 0xCC; int BossHealth: 0x385B900, 0x30, 0x10, 0x0, 0x10, 0xC0, 0x0, 0x190; } init { string MD5Hash; using (var md5 = System.Security.Cryptography.MD5.Create()) using (var s = File.Open(modules.First().FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) MD5Hash = md5.ComputeHash(s).Select(x => x.ToString("X2")).Aggregate((a, b) => a + b); print("Hash is: " + MD5Hash); switch (MD5Hash) { case "57C71A81A1FDF4FD2B2C0B566712EFB9": version = "Steam 1.10"; break; case "AAA8CF6DE893628546FB626C8567DC8E": version = "Steam 1.11"; break; case "1A520982E9FA47744C330ADCBAB3F6AB": version = "Steam 1.12"; break; case "23DCFE9BA640B9AB1A55A08CC518ED58": version = "Steam 1.13"; break; case "D4AA289CF4294F507BF20D3CE2FAEB16": version = "Steam 1.14"; break; default: version = "Unknown"; break; } vars.EndofChapter = 0; vars.Splits = new HashSet<string>(); vars.BossName = new HashSet<string>(); } startup { if (timer.CurrentTimingMethod == TimingMethod.RealTime) { var timingMessage = MessageBox.Show ( "This game uses Time without Loads (Game Time) as the main timing method.\n"+ "LiveSplit is currently set to show Real Time (RTA).\n"+ "Would you like to set the timing method to Game Time?", "LiveSplit | Like a Dragon Gaiden: Pirate Yakuza in Hawaii", MessageBoxButtons.YesNo, MessageBoxIcon.Question ); if (timingMessage == DialogResult.Yes) timer.CurrentTimingMethod = TimingMethod.GameTime; } settings.Add("LADPY", true, "Like a Dragon: Pirate Yakuza in Hawaii"); settings.Add("CHAPTERS", true, "End of Chapter Splits", "LADPY"); settings.Add("Chapter1", true, "Chapter 1: Shipwrecked", "CHAPTERS"); settings.Add("Chapter2", true, "Chapter 2: Heart of Darkness", "CHAPTERS"); settings.Add("Chapter3", true, "Chapter 3: The Old Man and the Sea", "CHAPTERS"); settings.Add("Chapter4", true, "Chapter 4: Treasure Island", "CHAPTERS"); settings.Add("Chapter5", true, "Final Chapter: White Whale", "CHAPTERS"); } isLoading { return current.LoadScreens || current.BlackFades != 0; } update { if(current.ChapterSavePrompt == 0 && old.ChapterSavePrompt == 1 && current.BlackFades != 0) { vars.EndofChapter++; } if(current.BossHealth == 90000) { vars.BossName.Add("Raymond"); } } start { return current.NGStarter || current.NGPlusStarter; } onStart { vars.Splits.Clear(); vars.BossName.Clear(); vars.EndofChapter = 0; timer.IsGameTimePaused = true; } split { if(current.ChapterSavePrompt == 0 && old.ChapterSavePrompt == 1 && current.BlackFades != 0 && !vars.Splits.Contains("Chapter"+vars.EndofChapter)) { return settings["Chapter" + vars.EndofChapter] && vars.Splits.Add("Chapter" + vars.EndofChapter); } if(current.BossHealth == 0 && old.BossHealth > 0 && vars.BossName.Contains("Raymond") && current.BlackFades == 0 && !vars.Splits.Contains("Chapter5")) { return settings["Chapter5"] && vars.Splits.Add("Chapter5"); } } exit { timer.IsGameTimePaused = true; }