public static void AddRandomCurse(bool doPopup = false) { List <CurseData> refinedData = new List <CurseData>(); refinedData.AddRange(CursePrefabs); if (CurrentActiveCurses.Count > 0) { for (int i = (refinedData.Count - 1); i >= 0; i--) { if (CurseManager.CurseIsActive(refinedData[i].curseName)) { refinedData.RemoveAt(i); } else if (cursesLastFloor != null && cursesLastFloor.Contains(refinedData[i].curseName)) { refinedData.RemoveAt(i); } else if (bannedCursesThisRun != null && bannedCursesThisRun.Contains(refinedData[i].curseName)) { refinedData.RemoveAt(i); } } } if (refinedData.Count > 0) { CurseData pickedCurse = BraveUtility.RandomElement(refinedData); AddCurse(pickedCurse.curseName, doPopup); } }
public static void Init() { CurrentActiveCurses = new List <CurseData>(); CursePrefabs = new List <CurseData>(); FloorAndGenerationToolbox.OnFloorEntered += LevelLoaded; FloorAndGenerationToolbox.OnNewGame += OnNewRun; VFXScapegoat = new GameObject("CurseVFXScapegoat"); VFXScapegoat.gameObject.SetActive(false); UnityEngine.Object.DontDestroyOnLoad(VFXScapegoat); CurseIconCollection = SpriteBuilder.ConstructCollection(VFXScapegoat, "CurseIcon_Collection"); UnityEngine.Object.DontDestroyOnLoad(CurseIconCollection); //ETGModConsole.Log("Hook Passed"); #region SetUpCurses CurseData curseOfInfestation = new CurseData(); curseOfInfestation.curseName = "Curse of Infestation"; curseOfInfestation.curseSubtitle = "They crawl beneath the surface"; curseOfInfestation.curseIconId = SpriteBuilder.AddSpriteToCollection("NevernamedsItems/Resources/CurseIcons/infestation_icon", CurseIconCollection); CursePrefabs.Add(curseOfInfestation); CurseData curseOfSludge = new CurseData(); curseOfSludge.curseName = "Curse of Sludge"; curseOfSludge.curseSubtitle = "You. Will. Love. My... Toxic love"; curseOfSludge.curseIconId = SpriteBuilder.AddSpriteToCollection("NevernamedsItems/Resources/CurseIcons/sludge_icon", CurseIconCollection); CursePrefabs.Add(curseOfSludge); CurseData curseOfTheHive = new CurseData(); curseOfTheHive.curseName = "Curse of The Hive"; curseOfTheHive.curseSubtitle = "You hear a faint buzzing"; curseOfTheHive.curseIconId = SpriteBuilder.AddSpriteToCollection("NevernamedsItems/Resources/CurseIcons/hive_icon", CurseIconCollection); CursePrefabs.Add(curseOfTheHive); CurseData curseOfTheFlames = new CurseData(); curseOfTheFlames.curseName = "Curse of The Flames"; curseOfTheFlames.curseSubtitle = "Cannot live with me."; curseOfTheFlames.curseIconId = SpriteBuilder.AddSpriteToCollection("NevernamedsItems/Resources/CurseIcons/flames_icon", CurseIconCollection); CursePrefabs.Add(curseOfTheFlames); CurseData curseOfButterfingers = new CurseData(); curseOfButterfingers.curseName = "Curse of Butterfingers"; curseOfButterfingers.curseSubtitle = "Be careful not to slip up"; curseOfButterfingers.curseIconId = SpriteBuilder.AddSpriteToCollection("NevernamedsItems/Resources/CurseIcons/butterfingers_icon", CurseIconCollection); CursePrefabs.Add(curseOfButterfingers); CurseData curseOfDarkness = new CurseData(); curseOfDarkness.curseName = "Curse of Darkness"; curseOfDarkness.curseSubtitle = "Spirit of the Night"; curseOfDarkness.curseIconId = SpriteBuilder.AddSpriteToCollection("NevernamedsItems/Resources/CurseIcons/darkness_icon", CurseIconCollection); CursePrefabs.Add(curseOfDarkness); #endregion }
public static void AddCurse(string CurseName, bool dopopup = false) { if (CurseManager.CurseIsActive(CurseName)) { Debug.LogWarning("Attempted to Add Curse (" + CurseName + ") but it was already active!"); return; } CurseData newCurse = null; foreach (CurseData data in CursePrefabs) { if (data.curseName == CurseName) { newCurse = data; } } if (!(GameManager.Instance.AnyPlayerHasPickupID(HoleyWater.HoleyWaterID) && !GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))) { CurrentActiveCurses.Add(newCurse); if (previousCursesThisRun == null) { previousCursesThisRun = new List <string>(); } if (previousCursesThisRun.Contains(newCurse.curseName)) { if (bannedCursesThisRun == null) { bannedCursesThisRun = new List <string>(); } bannedCursesThisRun.Add(newCurse.curseName); } else { previousCursesThisRun.Add(newCurse.curseName); } Debug.Log("Added New Curse: " + newCurse.curseName + " (Popup: " + dopopup + ")"); if (dopopup) { DoSpecificCursePopup(CurseName, newCurse.curseSubtitle, newCurse.curseIconId); } } InherentPostLevelCurseProcessing(); }