private static bool TestStartLocation(string start) { // could potentially add logic checks here in the future StartDef startDef = LogicManager.GetStartLocation(start); if (RandomizerMod.Instance.Settings.RandomizeStartItems) { return true; } if (RandomizerMod.Instance.Settings.RandomizeRooms) { if (startDef.roomSafe) { return true; } else return false; } if (RandomizerMod.Instance.Settings.RandomizeAreas) { if (startDef.areaSafe) { return true; } else return false; } if (startDef.itemSafe) return true; return false; }
public static void RandomizeStartingLocation() { if (RandomizerMod.Instance.Settings.RandomizeStartLocation) { List<string> startLocations = LogicManager.StartLocations.Where(start => TestStartLocation(start)).ToList(); StartName = startLocations[rand.Next(startLocations.Count)]; } else if (!LogicManager.StartLocations.Contains(RandomizerMod.Instance.Settings.StartName)) { StartName = "King's Pass"; } else StartName = RandomizerMod.Instance.Settings.StartName; Log("Setting start location as " + StartName); StartDef def = LogicManager.GetStartLocation(StartName); if (startProgression == null) { startProgression = new List<string>(); } if (!RandomizerMod.Instance.Settings.RandomizeRooms) { startProgression.Add(def.waypoint); } if (RandomizerMod.Instance.Settings.RandomizeAreas && !string.IsNullOrEmpty(def.areaTransition)) { startProgression.Add(def.areaTransition); } if (RandomizerMod.Instance.Settings.RandomizeRooms) { startProgression.Add(def.roomTransition); } }
public static void RandomizeStartingLocation() { if (RandomizerMod.Instance.Settings.RandomizeStartLocation) { MiniPM pm = new MiniPM(); pm.logicFlags["ITEMRANDO"] = !RandomizerMod.Instance.Settings.RandomizeTransitions; pm.logicFlags["AREARANDO"] = RandomizerMod.Instance.Settings.RandomizeAreas; pm.logicFlags["ROOMRANDO"] = RandomizerMod.Instance.Settings.RandomizeRooms; pm.logicFlags["MILDSKIPS"] = RandomizerMod.Instance.Settings.MildSkips; pm.logicFlags["SHADESKIPS"] = RandomizerMod.Instance.Settings.ShadeSkips; pm.logicFlags["ACIDSKIPS"] = RandomizerMod.Instance.Settings.AcidSkips; pm.logicFlags["FIREBALLSKIPS"] = RandomizerMod.Instance.Settings.FireballSkips; pm.logicFlags["SPIKETUNNELS"] = RandomizerMod.Instance.Settings.SpikeTunnels; pm.logicFlags["DARKROOMS"] = RandomizerMod.Instance.Settings.DarkRooms; pm.logicFlags["SPICYSKIPS"] = RandomizerMod.Instance.Settings.SpicySkips; pm.logicFlags["VERTICAL"] = RandomizerMod.Instance.Settings.RandomizeStartItems; pm.logicFlags["SWIM"] = !RandomizerMod.Instance.Settings.RandomizeSwim; pm.logicFlags["2MASKS"] = !RandomizerMod.Instance.Settings.CursedMasks; pm.logicFlags["NONRANDOMELEVATORS"] = !RandomizerMod.Instance.Settings.ElevatorPass; List <string> startLocations = LogicManager.StartLocations .Where(start => pm.Evaluate(LogicManager.GetStartLocation(start).logic)) .Except(new string[] { "King's Pass" }) .ToList(); StartName = startLocations[rand.Next(startLocations.Count)]; } else if (!LogicManager.StartLocations.Contains(RandomizerMod.Instance.Settings.StartName)) { StartName = "King's Pass"; } else { StartName = RandomizerMod.Instance.Settings.StartName; } Log("Setting start location as " + StartName); StartDef def = LogicManager.GetStartLocation(StartName); if (startProgression == null) { startProgression = new List <string>(); } if (!RandomizerMod.Instance.Settings.RandomizeRooms) { startProgression.Add(def.waypoint); } if (RandomizerMod.Instance.Settings.RandomizeAreas && !string.IsNullOrEmpty(def.areaTransition)) { startProgression.Add(def.areaTransition); } if (RandomizerMod.Instance.Settings.RandomizeRooms) { startProgression.Add(def.roomTransition); } }
private static bool TestStartLocation(string start) { // could potentially add logic checks here in the future StartDef startDef = LogicManager.GetStartLocation(start); if (RandomizerMod.Instance.Settings.RandomizeStartItems) { return(true); } if (RandomizerMod.Instance.Settings.RandomizeRooms) { if (startDef.roomSafe) { return(true); } else { return(false); } } if (RandomizerMod.Instance.Settings.RandomizeAreas) { if (startDef.areaSafe) { return(true); } else { return(false); } } if (startDef.sceneName == "Mines_35" && !RandomizerMod.Instance.Settings.EarlyGeo) { return(false); } if (startDef.itemSafe) { return(true); } return(false); }