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;
            }
        }
Exemplo n.º 2
0
            // 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;
            }
Exemplo n.º 3
0
 // 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);
        }
Exemplo n.º 6
0
        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));
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
                    }
                }
            }
        }
Exemplo n.º 11
0
        public virtual void AssignPodPrefab()
        {
            var survivorDef = SurvivorCatalog.FindSurvivorDefFromBody(BodyCatalog.FindBodyPrefab(BodyName));

            survivorDef.bodyPrefab.GetComponent <CharacterBody>().preferredPodPrefab = CreatePod();
        }
Exemplo n.º 12
0
 // 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);
             }
         }
     }
Exemplo n.º 14
0
        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);
            };
        }