public TrackData() { if (TrackFileController.DontTrackYet) { keystones = 0; spiritLight = 0; ore = 0; skills = new HashSet <String>(); upgraded = new HashSet <String>(); events = new HashSet <String>(); teleporters = new HashSet <String>(); } try { keystones = InterOp.get_keystones(); spiritLight = InterOp.get_experience(); ore = InterOp.get_ore(); skills = SaveController.SkillsFound.Select((AbilityType type) => trackName(type)).ToHashSet(); upgraded = SaveController.UpgradedWeapons.Select((AbilityType type) => $"{type.GetDescription().Replace(" ", "")}").ToHashSet(); if (SaveController.HasAbility(AbilityType.DamageUpgrade1) && SaveController.HasAbility(AbilityType.DamageUpgrade2)) { upgraded.Add(trackName(AbilityType.DamageUpgrade1)); } events = SaveController.WorldEvents.Select((QuestEventType type) => type.GetDescription()).ToHashSet(); teleporters = Teleporter.TeleporterStates.Keys.Where((TeleporterType t) => (new Teleporter(t)).Has()).Select((TeleporterType t) => t.GetDescription()).ToHashSet(); } catch (Exception e) { Randomizer.Error("TrackData()", e); } }
public static void NewGameInit() { var memory = Randomizer.Memory; if (!memory.IsLoadingGame()) { Randomizer.Log("New Game Init", false); SaveController.SetAbility(AbilityType.SpiritEdge); foreach (UberState s in DefaultUberStates) { memory.WriteUberState(s); } foreach (UberState s in Kuberstates) { memory.WriteUberState(s); } foreach (UberState s in DialogAndRumors) { memory.WriteUberState(s); } if (SeedController.KSDoorsOpen) { foreach (UberState s in KeystoneDoors) { memory.WriteUberState(s); } } if (!AHK.IniFlag("ShowShortCutscenes")) { foreach (UberState s in ShortCutscenes) { memory.WriteUberState(s); } } if (!AHK.IniFlag("ShowLongCutscenes")) { foreach (UberState s in LongCutscenes) { memory.WriteUberState(s); } } if (PsuedoLocs.GAME_START.Pickup().NonEmpty) { Randomizer.InputUnlockCallback = () => { PsuedoLocs.GAME_START.Pickup().Grant(); InterOp.magic_function(); InterOp.save(); }; } InterOp.discover_everything(); InterOp.bind_sword(); InterOp.save(); NeedsNewGameInit = false; } }
public static void OnNewGame(int slot) { // overwrite the message log TODO: save a backup maybe? File.WriteAllText(Randomizer.MessageLog, ""); SeedController.ReadSeed(); UberStateController.NeedsNewGameInit = true; AHK.OnNewGame(); SaveController.NewGame(slot); }
public static void OnNewGame(int slot) { try { // overwrite the message log TODO: save a backup maybe? File.WriteAllText(Randomizer.MessageLog, ""); SeedController.ReadSeed(); UberStateController.NeedsNewGameInit = true; UberStateController.UberStates.Clear(); UberStateController.TickingUberStates.Clear(); AHK.OnNewGame(); SaveController.NewGame(slot); BonusItemController.Refresh(); Client.Connect(); } catch (Exception e) { Randomizer.Error("OnNewGame", e); } }
public TrackData() { try { keystones = Randomizer.Memory.Keystones; spiritLight = Randomizer.Memory.Experience; ore = Randomizer.Memory.Ore; skills = SaveController.Data.SkillsFound.Select((AbilityType type) => trackName(type)).ToHashSet(); upgraded = SaveController.Data.OpherUpgraded.Keys.Select((AbilityType type) => $"{type.GetDescription().Replace(" ", "")}").ToHashSet(); if (SaveController.HasAbility(AbilityType.DamageUpgrade1) && SaveController.HasAbility(AbilityType.DamageUpgrade2)) { upgraded.Add(trackName(AbilityType.DamageUpgrade1)); } events = SaveController.Data.WorldEvents.Select((QuestEventType type) => type.GetDescription()).ToHashSet(); teleporters = Teleporter.TeleporterStates.Keys.Where((TeleporterType t) => (new Teleporter(t)).Has()).Select((TeleporterType t) => t.GetDescription()).ToHashSet(); } catch (Exception e) { Randomizer.Error("TrackData()", e); } }
static string HintFrag(this AbilityType t) { var w = SaveController.HasAbility(t) ? "$" : ""; return($"{w}{t.GetDescription()}: {SkillLocs[t]}{w}"); }
public static void NewGameInit() { if (!InterOp.is_loading_game()) { InterOp.clear_quest_messages(); Randomizer.Log($"New Game Init - {SeedController.SeedName}", false); ShopController.SetCostsAfterInit(); foreach (UberState s in DefaultUberStates) { s.Write(); } foreach (UberState s in Kuberstates) { s.Write(); } foreach (UberState s in DialogAndRumors) { s.Write(); } if (SeedController.KSDoorsOpen) { foreach (UberState s in KeystoneDoors) { s.Write(); } } if (!AHK.IniFlag("ShowShortCutscenes")) { foreach (UberState s in ShortCutscenes) { s.Write(); } } if (!AHK.IniFlag("ShowLongCutscenes")) { foreach (UberState s in LongCutscenes) { s.Write(); } } InterOp.discover_everything(); if (SeedController.Settings.LegacySeedgen && !SeedController.Flags.Contains(Flag.NOSWORD)) { SaveController.SetAbility(AbilityType.SpiritEdge); var slotRaw = AHK.IniString("Misc", "SpawnSlot"); var slot = 0; if (slotRaw != string.Empty) { slot = slotRaw.ParseToInt("Spawn Slot Ini") - 1; if (slot > 2 || slot < 0) { AHK.Print($"Ignoring invalid slot specifier {slotRaw}", toMessageLog: false); slot = 0; } } InterOp.bind(slot, 1002); } if (PsuedoLocs.GAME_START.Pickup().NonEmpty) { Randomizer.InputUnlockCallback = () => { MapController.UpdateReachable(2000); PsuedoLocs.GAME_START.OnCollect(); InterOp.save(); }; } else { MapController.UpdateReachable(); } InterOp.set_shard_slots(3); InterOp.save(); NeedsNewGameInit = false; } }