public static void AssemblySetup() { var PodTypes = Assembly.GetExecutingAssembly().GetTypes().Where(type => !type.IsAbstract && type.IsSubclassOf(typeof(PodBase))); int podAmount = 0; foreach (var podType in PodTypes) { PodBase podBase = (PodBase)Activator.CreateInstance(podType); if (ValidatePod(instance.Config, podBase)) { podBase.Init(instance.Config); _logger.LogMessage("Added pod for " + podBase.BodyName); podAmount++; } } _logger.LogMessage($"Amount of pod types added: " + podAmount); var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab("EnforcerBody")); if (survivorDef) { _logger.LogMessage("Enforcer is loaded, setting him up."); //Enfucker.Init(survivorDef); return; } }
// Token: 0x060023A6 RID: 9126 RVA: 0x0009B8F8 File Offset: 0x00099AF8 private Row(LoadoutPanelController owner, int bodyIndex, string titleToken) { this.owner = owner; this.userProfile = owner.currentDisplayData.userProfile; this.rowPanelTransform = (RectTransform)UnityEngine.Object.Instantiate <GameObject>(LoadoutPanelController.rowPrefab, owner.rowContainer).transform; this.buttonContainerTransform = (RectTransform)this.rowPanelTransform.Find("ButtonContainer"); this.choiceHighlightRect = (RectTransform)this.rowPanelTransform.Find("ChoiceHighlightRect"); UserProfile.onLoadoutChangedGlobal += this.OnLoadoutChangedGlobal; SurvivorDef survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.GetBodyPrefab(bodyIndex)); if (survivorDef != null) { this.primaryColor = survivorDef.primaryColor; } float num; float s; float v; Color.RGBToHSV(this.primaryColor, out num, out s, out v); num += 0.5f; if (num > 1f) { num -= 1f; } this.complementaryColor = Color.HSVToRGB(num, s, v); RectTransform rectTransform = (RectTransform)this.rowPanelTransform.Find("SlotLabel"); rectTransform.GetComponent <LanguageTextMeshController>().token = titleToken; rectTransform.GetComponent <HGTextMeshProUGUI>().color = this.primaryColor; this.choiceHighlightRect.GetComponent <Image>().color = this.complementaryColor; }
// Token: 0x060020F0 RID: 8432 RVA: 0x0009AB60 File Offset: 0x00098D60 private SurvivorIndex GetSelectedSurvivorIndexFromBodyPreference() { if (this.networkUser) { SurvivorDef survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.GetBodyPrefab(this.networkUser.bodyIndexPreference)); if (survivorDef != null && survivorDef.survivorIndex != SurvivorIndex.None) { return(survivorDef.survivorIndex); } } return(SurvivorIndex.Commando); }
public bool SkinsAreApplicable(GameObject body) { if (SurvivorCatalog.FindSurvivorDefFromBody(body).survivorIndex > SurvivorIndex.Count) { //is a custom survivor. if (!body.CompareTag("Player")) { return(false); } } return(true); }
/// <summary> /// A helper to easily set up and initialize an pod from your pod classes if the user has it enabled in their configuration files. /// </summary> /// <param name="configFile">The configuration file from the main plugin."</param> /// <param name="podBase">A new instance of an PodBase class."</param> public static bool ValidatePod(BepInEx.Configuration.ConfigFile configFile, PodBase podBase) { var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab(podBase.BodyName)); if (survivorDef != null) { var enabled = configFile.Bind <bool>(podBase.ConfigCategory, "Enable Pod Modification?", true, "[Server] Should this body's pod get modified?").Value; if (enabled) { return(true); } } return(false); }
Color GetColorForHero(CharacterMaster master) { var survivor = SurvivorCatalog.FindSurvivorDefFromBody(master.bodyPrefab); Color survivorColor; if (survivor != null) { survivorColor = survivor.primaryColor; } else { survivorColor = Color.red; } return(Darken(survivorColor, .2f)); }
private static void SaveFile(RunReport report, WeeklyRun run) { String time = ((Int32)Math.Ceiling((Double)report.runStopwatchValue / 1000.0)).ToString(); var cycle = WeeklyRun.GetCurrentSeedCycle(); var cycleStart = WeeklyRun.GetSeedCycleStartDateTime(WeeklyRun.GetCurrentSeedCycle()); String cycleDate = cycleStart.ToShortDateString(); var body = BodyCatalog.GetBodyPrefab(NetworkUser.readOnlyLocalPlayersList[0].bodyIndexPreference); if (body == null) { instance.Logger.LogError("Invalid body selected"); return; } var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(body); if (survivorDef == null) { instance.Logger.LogError("Selected body is not in survivorcatalog"); return; } String character = Language.GetString(survivorDef.displayNameToken); instance.Logger.LogMessage("Your character was: " + character); instance.Logger.LogMessage("Your time was: " + time); instance.Logger.LogMessage("Score send aborted, saving run report to disk instead."); instance.Logger.LogMessage("In the future, there may be a leaderboard set up such that you can upload the file to submit a run"); String directory = "\\ModdedTrials\\" + cycleStart + "\\" + character + "\\"; String directoryGlobal = getRunReportsFolder() + directory; System.IO.Directory.CreateDirectory(directoryGlobal); String fileBaseName = time; Int32 i = 0; while (System.IO.File.Exists(directoryGlobal + fileBaseName + (i != 0 ? "(" + i + ")" : String.Empty))) { ++i; } RunReport.Save(report, directory + fileBaseName); }
public static bool TryGetSurvivorIndexByBodyPrefabName(string bodyPrefabName, out SurvivorIndex index) { index = SurvivorIndex.None; GameObject bodyPrefab = BodyCatalog.FindBodyPrefab(bodyPrefabName); if (bodyPrefab == null) { return(false); } SurvivorDef def = SurvivorCatalog.FindSurvivorDefFromBody(bodyPrefab); if (def == null) { return(false); } index = def.survivorIndex; return(true); }
public static GameObject CreateDisplay(string bodyPrefabName, Vector3 position, Vector3 rotation, Transform parent = null) { var bodyPrefab = GetBodyPrefab(bodyPrefabName); SurvivorDef survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(bodyPrefab); GameObject displayPrefab = survivorDef.displayPrefab; var gameObject = UnityEngine.Object.Instantiate <GameObject>(displayPrefab, position, Quaternion.Euler(rotation), parent); switch (bodyPrefabName) { case "Croco": gameObject.transform.Find("mdlCroco")?.transform.Find("Spawn")?.transform.Find("FloorMesh")?.gameObject.SetActive(false); break; case "RobEnforcer": break; case "HANDOverclocked": GameObject.Find("HANDTeaser").SetActive(false); break; } return(gameObject); }
public static void CacheDisplays() { foreach (var survivor in SurvivorCatalog.allSurvivorDefs) { var bodyPrefab = survivor.bodyPrefab; SurvivorDef survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(bodyPrefab); if (survivorDef != null) { continue; } GameObject displayPrefab = survivorDef.displayPrefab; displayPrefabs.Add(displayPrefab); for (int i = 0; i < displayPrefab.transform.childCount; i++) { var child = displayPrefab.transform.GetChild(i); if (child.gameObject.name.Substring(0, 3).ToLower() == "mdl") { runtimeAnimatorControllers.Add(child.GetComponent <Animator>().runtimeAnimatorController); } } } }
public virtual void AssignPodPrefab() { var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab(BodyName)); survivorDef.bodyPrefab.GetComponent <CharacterBody>().preferredPodPrefab = CreatePod(); }
// Token: 0x060020F1 RID: 8433 RVA: 0x0009ABA4 File Offset: 0x00098DA4 private void Update() { this.SetEventSystem(this.eventSystemLocator.eventSystem); if (this.previousSurvivorIndex != this.selectedSurvivorIndex) { this.RebuildLocal(); this.previousSurvivorIndex = this.selectedSurvivorIndex; } if (this.characterDisplayPads.Length != 0) { for (int i = 0; i < this.characterDisplayPads.Length; i++) { CharacterSelectController.CharacterPad characterPad = this.characterDisplayPads[i]; NetworkUser networkUser = null; List <NetworkUser> list = new List <NetworkUser>(NetworkUser.readOnlyInstancesList.Count); list.AddRange(NetworkUser.readOnlyLocalPlayersList); for (int j = 0; j < NetworkUser.readOnlyInstancesList.Count; j++) { NetworkUser item = NetworkUser.readOnlyInstancesList[j]; if (!list.Contains(item)) { list.Add(item); } } if (i < list.Count) { networkUser = list[i]; } if (networkUser) { GameObject bodyPrefab = BodyCatalog.GetBodyPrefab(networkUser.bodyIndexPreference); SurvivorDef survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(bodyPrefab); if (survivorDef != null) { SurvivorDef survivorDef2 = SurvivorCatalog.GetSurvivorDef(characterPad.displaySurvivorIndex); bool flag = true; if (survivorDef2 != null && survivorDef2.bodyPrefab == bodyPrefab) { flag = false; } if (flag) { GameObject displayPrefab = survivorDef.displayPrefab; this.ClearPadDisplay(characterPad); if (displayPrefab) { characterPad.displayInstance = UnityEngine.Object.Instantiate <GameObject>(displayPrefab, characterPad.padTransform.position, characterPad.padTransform.rotation, characterPad.padTransform); } characterPad.displaySurvivorIndex = survivorDef.survivorIndex; } } else { this.ClearPadDisplay(characterPad); } } else { this.ClearPadDisplay(characterPad); } if (!characterPad.padTransform) { return; } this.characterDisplayPads[i] = characterPad; if (this.characterDisplayPads[i].padTransform) { this.characterDisplayPads[i].padTransform.gameObject.SetActive(this.characterDisplayPads[i].displayInstance != null); } } } if (!RoR2Application.isInSinglePlayer) { bool flag2 = this.IsClientReady(); this.readyButton.gameObject.SetActive(!flag2); this.unreadyButton.gameObject.SetActive(flag2); } }
// Token: 0x06002219 RID: 8729 RVA: 0x000936D8 File Offset: 0x000918D8 private void Update() { this.SetEventSystem(this.eventSystemLocator.eventSystem); if (this.previousSurvivorIndex != this.selectedSurvivorIndex) { this.RebuildLocal(); this.previousSurvivorIndex = this.selectedSurvivorIndex; } if (this.characterDisplayPads.Length != 0) { List <NetworkUser> sortedNetworkUsersList = this.GetSortedNetworkUsersList(); for (int i = 0; i < this.characterDisplayPads.Length; i++) { ref CharacterSelectController.CharacterPad ptr = ref this.characterDisplayPads[i]; NetworkUser networkUser = null; if (i < sortedNetworkUsersList.Count) { networkUser = sortedNetworkUsersList[i]; } if (networkUser) { GameObject bodyPrefab = BodyCatalog.GetBodyPrefab(networkUser.bodyIndexPreference); SurvivorDef survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(bodyPrefab); if (survivorDef != null) { SurvivorDef survivorDef2 = SurvivorCatalog.GetSurvivorDef(ptr.displaySurvivorIndex); bool flag = true; if (survivorDef2 != null && survivorDef2.bodyPrefab == bodyPrefab) { flag = false; } if (flag) { GameObject displayPrefab = survivorDef.displayPrefab; this.ClearPadDisplay(ptr); if (displayPrefab) { ptr.displayInstance = UnityEngine.Object.Instantiate <GameObject>(displayPrefab, ptr.padTransform.position, ptr.padTransform.rotation, ptr.padTransform); } ptr.displaySurvivorIndex = survivorDef.survivorIndex; this.OnNetworkUserLoadoutChanged(networkUser); } } else { this.ClearPadDisplay(ptr); } } else { this.ClearPadDisplay(ptr); } if (!ptr.padTransform) { return; } if (this.characterDisplayPads[i].padTransform) { this.characterDisplayPads[i].padTransform.gameObject.SetActive(this.characterDisplayPads[i].displayInstance != null); } } }
internal static void Init() { On.RoR2.Console.Awake += (orig, self) => { CommandHelper.AddToConsoleWhenReady(); orig(self); }; On.RoR2.HuntressTracker.Awake += (orig, self) => { orig(self); Variables.DefaultHuntressTrackingDistance = self.maxTrackingDistance; }; On.RoR2.CharacterBody.OnInventoryChanged += (orig, self) => { orig(self); if (self.isPlayerControlled && Variables.MyCharacterIndex == 6) { self.GetComponent <HuntressTracker>().maxTrackingDistance = Variables.DefaultHuntressTrackingDistance + (15 * self.inventory.GetItemCount(Assets.MagnifingGlassItemDef.itemIndex)); } if (self.isPlayerControlled && Variables.MyCharacterIndex == 0) { SkillLocator locator = self.GetComponent <SkillLocator>(); locator.primary.SetBonusStockFromBody((self.inventory.GetItemCount(Assets.ExtendedMagItemDef.itemIndex))); locator.primary.stock = locator.primary.maxStock; } }; On.RoR2.Run.Start += (orig, self) => { foreach (var playerCharacterMasterControllerInstance in PlayerCharacterMasterController.instances) { if (playerCharacterMasterControllerInstance.isLocalPlayer) { Variables.MyBody = playerCharacterMasterControllerInstance.master.bodyPrefab.GetComponent <CharacterBody>(); break; } } orig(self); }; On.RoR2.Run.BuildDropTable += (orig, self) => { if (!Variables.HasHuntress) { self.availableItems.Remove(Assets.MagnifingGlassItemDef.itemIndex); } if (!Variables.HasBandit) { self.availableItems.Remove(Assets.ExtendedMagItemDef.itemIndex); } orig(self); }; On.RoR2.GenericPickupController.GetInteractability += (orig, self, activator) => { if (PickupCatalog.GetPickupDef(self.pickupIndex).itemIndex == Assets.MagnifingGlassItemDef.itemIndex && Variables.MyCharacterIndex != 6) { return(Interactability.ConditionsNotMet); } if (PickupCatalog.GetPickupDef(self.pickupIndex).itemIndex == Assets.ExtendedMagItemDef.itemIndex && Variables.MyCharacterIndex != 0) { return(Interactability.ConditionsNotMet); } return(orig(self, activator)); }; On.RoR2.GenericPickupController.OnTriggerStay += (orig, self, other) => { if (PickupCatalog.GetPickupDef(self.pickupIndex).itemIndex == Assets.MagnifingGlassItemDef.itemIndex && Variables.MyCharacterIndex != 6) { return; } if (PickupCatalog.GetPickupDef(self.pickupIndex).itemIndex == Assets.ExtendedMagItemDef.itemIndex && Variables.MyCharacterIndex != 0) { return; } orig(self, other); }; On.RoR2.SceneDirector.PopulateScene += (orig, self) => { self.interactableCredit = (int)(self.interactableCredit * Variables.interactableMultiplier.Value); orig(self); }; On.RoR2.CharacterMaster.GiveMoney += (orig, self, amount) => { amount = (uint)(amount * Variables.moneyMultiplier.Value); orig(self, amount); }; On.RoR2.PreGameController.StartRun += (orig, self) => { int count = NetworkUser.readOnlyInstancesList.Count; for (int i = 0; i < count; i++) { var body = BodyCatalog.GetBodyPrefab(NetworkUser.readOnlyInstancesList[i].bodyIndexPreference); int index = (int)SurvivorCatalog.FindSurvivorDefFromBody(body).survivorIndex; //Stores your survivor index if (i == 0) { Variables.MyCharacterIndex = index; } if (index == 0) { Variables.HasBandit = true; } if (index == 6) { Variables.HasHuntress = true; } } orig(self); }; }