CODModernWarfare2.asl 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. state("iw4sp")
  2. {
  3. //string131 MapID : 0x5DA560;
  4. bool Loader : 0x171338C; // Originally a 4byte
  5. int KnifeThrown : 0x3E3ED0;
  6. string100 SpecOpsCampMapID : 0x89C598;
  7. }
  8. init
  9. {
  10. vars.doneMaps = new List<string>(); // Adding cause of SpecOps
  11. }
  12. startup
  13. {
  14. settings.Add("acta", true, "All Acts");
  15. settings.Add("act1", true, "Act 1", "acta");
  16. settings.Add("act2", true, "Act 2", "acta");
  17. settings.Add("act3", true, "Act 3", "acta");
  18. settings.Add("end", true, "End Split", "acta");
  19. settings.SetToolTip("end", "This will split when you throw the knife at the end of the run, disabling this will cause timing issues");
  20. settings.Add("SO", true, "All Special Ops Tiers");
  21. settings.Add("Alpha", true, "Alpha", "SO");
  22. settings.Add("Bravo", true, "Bravo", "SO");
  23. settings.Add("Charlie", true, "Charlie", "SO");
  24. settings.Add("Delta", true, "Delta", "SO");
  25. settings.Add("Echo", true, "Echo", "SO");
  26. var tB = (Func<string, string, string, Tuple<string, string, string>>) ((elmt1, elmt2, elmt3) => { return Tuple.Create(elmt1, elmt2, elmt3); });
  27. var sB = new List<Tuple<string, string, string>>
  28. {
  29. //tB("act1","trainier", "S.S.D.D."),
  30. tB("act1","roadkill", "Team Player"),
  31. tB("act1","cliffhanger", "Cliffhanger"),
  32. tB("act1","airport", "No Russian"),
  33. tB("act1","favela", "Takedown"),
  34. tB("act2","invasion", "Wolverines"),
  35. tB("act2","favela_escape", "The Hornets Nest"),
  36. tB("act2","arcadia", "Exodus"),
  37. tB("act2","oilrig", "The Only Easy Day Was Yesterday"),
  38. tB("act2","gulag", "The Gulag"),
  39. tB("act2","dcburning", "Of Their Own Accord"),
  40. tB("act3","contingency", "Contingency"),
  41. tB("act3","dcemp", "Second Sun"),
  42. tB("act3","dc_whitehouse", "Whiskey Hotel"),
  43. tB("act3","estate", "Loose Ends"),
  44. tB("act3","boneyard", "The Enemy of My Enemy"),
  45. tB("act3","af_caves", "Just Like Old Times"),
  46. tB("act3","af_chase", "Endgame"),
  47. tB("act3","ending", "End"),
  48. tB("Alpha","so_killspree_trainer", "The Pit"),
  49. tB("Alpha","so_rooftop_contingency", "Sniper Fi"),
  50. tB("Alpha","so_killspree_favela", "O Cirsto Redentor"),
  51. tB("Alpha","so_forest_contingency", "Evasion"),
  52. tB("Alpha","so_crossing_so_bridge", "Suspension"),
  53. tB("Bravo","so_ac130_co_hunted", "Overwatch"),
  54. tB("Bravo","so_killspree_invasion", "Body Count"),
  55. tB("Bravo","so_defuse_favela_escape", "Bomb Squad"),
  56. tB("Bravo","so_snowrace1_cliffhanger", "Race"),
  57. tB("Bravo","so_chopper_invasion", "Big Brother"),
  58. tB("Charlie","so_hidden_so_ghillies", "Hidden"),
  59. tB("Charlie","so_showers_gulag", "Breach & Clear"),
  60. tB("Charlie","so_snowrace2_cliffhanger", "Time Trial"),
  61. tB("Charlie","so_defense_invasion", "Homeland Security"),
  62. tB("Charlie","so_intel_boneyard", "Snatch & Grab"),
  63. tB("Delta","so_download_arcadia", "Wardriving"),
  64. tB("Delta","so_demo_so_bridge", "Wreckage"),
  65. tB("Delta","so_sabotage_cliffhanger", "Acceptable Losses"),
  66. tB("Delta","so_escape_airport", "Terminal"),
  67. tB("Delta","so_takeover_estate", "Estate Takedown"),
  68. tB("Echo","so_assault_oilrig", "Wetwork"),
  69. tB("Echo","so_juggernauts_favela", "High Explosive"),
  70. tB("Echo","so_takeover_oilrig", "Armor Piercing"),
  71. };
  72. foreach (var s in sB) settings.Add(s.Item2, true, s.Item3, s.Item1);
  73. if (timer.CurrentTimingMethod == TimingMethod.RealTime) // stolen from dude simulator 3, basically asks the runner to set their livesplit to game time
  74. {
  75. var timingMessage = MessageBox.Show (
  76. "This game uses Time without Loads (Game Time) as the main timing method.\n"+
  77. "LiveSplit is currently set to show Real Time (RTA).\n"+
  78. "Would you like to set the timing method to Game Time? This will make verification easier",
  79. "LiveSplit | Call of Duty: Modern Warfare 2",
  80. MessageBoxButtons.YesNo,MessageBoxIcon.Question
  81. );
  82. if (timingMessage == DialogResult.Yes)
  83. {
  84. timer.CurrentTimingMethod = TimingMethod.GameTime;
  85. }
  86. }
  87. }
  88. split
  89. { if ((current.SpecOpsCampMapID != old.SpecOpsCampMapID) && (settings[current.SpecOpsCampMapID]) && (!vars.doneMaps.Contains(current.SpecOpsCampMapID)))
  90. {
  91. vars.doneMaps.Add(current.SpecOpsCampMapID);
  92. return true;
  93. }
  94. if ((settings["end"]) && (current.KnifeThrown == 600) && (current.SpecOpsCampMapID == "ending"))
  95. {
  96. return true;
  97. }
  98. }
  99. start
  100. {
  101. return ((current.SpecOpsCampMapID == "trainer") && (current.Loader) || ((current.SpecOpsCampMapID == "so_killspree_trainer") && (current.Loader)));
  102. }
  103. onStart
  104. {
  105. vars.doneMaps.Clear(); // Needed because checkpoints bad in game
  106. vars.doneMaps.Add(current.SpecOpsCampMapID); // Adding for the starting map because it's also bad
  107. }
  108. reset
  109. {
  110. return ((current.SpecOpsCampMapID == "ui") && (old.SpecOpsCampMapID != "ui"));
  111. }
  112. onReset
  113. {
  114. vars.doneMaps.Clear(); // Needed because checkpoints bad in game
  115. }
  116. isLoading
  117. {
  118. return (!current.Loader) || (current.SpecOpsCampMapID == "airport");
  119. }