コード例 #1
0
        /*public void shift_up() {
         *  vertical_tile_offset++;
         *  Debug.Log(vertical_tile_offset);
         * }
         * public void shift_down() {
         *  vertical_tile_offset--;
         *  Debug.Log(vertical_tile_offset);
         * }
         * public void shift_left() {
         *  tile_size -= 0.5f;
         *  Debug.Log(tile_size);
         * }
         * public void shift_right() {
         *  tile_size += 0.5f;
         *  Debug.Log(tile_size);
         * }*/

        public void RegisterOffer(int ItemListLocation, CharacterBody CB)
        {
            // LocalUser User = LocalUserManager.GetFirstLocalUser();

            // Chat.AddMessage($"Item Loc: {ItemListLocation}, Item List: {InvData.Count}, {InvData[ItemListLocation].item_index}");

            ItemIndex item = InvData[ItemListLocation].item_index;

            Transform UserTransform = CB.transform;

            // Debug.Log(firstLocalUser.userProfile.name);
            CB.inventory.RemoveItem(item, 1);
            float player_rot = 0;

            Vector3 mod_rot = new Vector3((float)(Math.Cos(player_rot)) * 10, 20, (float)(Math.Sin(player_rot)) * 10);

            PickupDropletController.CreatePickupDroplet(
                new PickupIndex(item), UserTransform.position, mod_rot);

            string color_tag = "#" + ColorCatalog.GetColorHexString(ItemCatalog.GetItemDef(item).colorIndex);

            // Chat.AddMessage($"{CB.name} has dropped <color={color_tag}> {Language.GetString(ItemCatalog.GetItemDef(item).nameToken)} </color>");
            sendChatMessage($"{CB.GetUserName()} has dropped <color={color_tag}> {Language.GetString(ItemCatalog.GetItemDef(item).nameToken)} </color>");


            InvData[ItemListLocation].count -= 1;
            if (InvData[ItemListLocation].count <= 0)
            {
                InvData.RemoveAt(ItemListLocation);
                Destroy(TileList[TileList.Count - 1]);
                TileList.RemoveAt(TileList.Count - 1);
            }
        }
コード例 #2
0
        public EquipmentList() : base(equipmentList)
        {
            if (UmbraMenu.characterCollected)
            {
                int           buttonPlacement = 1;
                List <Button> buttons         = new List <Button>();
                for (int i = 0; i < UmbraMenu.equipment.Count; i++)
                {
                    var equipmentIndex = UmbraMenu.equipment[i];
                    if (equipmentIndex != EquipmentIndex.None && equipmentIndex != EquipmentCatalog.FindEquipmentIndex("AffixYellow"))
                    {
                        void ButtonAction() => GiveEquipment(equipmentIndex);

                        Color32 equipColor    = ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex);
                        string  equipmentName = Util.GenerateColoredString(Language.GetString(EquipmentCatalog.GetEquipmentDef(equipmentIndex).nameToken), ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex));
                        Button  button        = new Button(new NormalButton(this, buttonPlacement, equipmentName, ButtonAction));
                        buttons.Add(button);
                        buttonPlacement++;
                    }
                    else
                    {
                        void ButtonAction() => GiveEquipment(equipmentIndex);

                        string equipmentName = Util.GenerateColoredString(equipmentIndex.ToString(), ColorCatalog.GetColor(ColorCatalog.ColorIndex.Equipment));
                        Button button        = new Button(new NormalButton(this, buttonPlacement, equipmentName, ButtonAction));
                        buttons.Add(button);
                        buttonPlacement++;
                    }
                }
                AddButtons(buttons);
                SetActivatingButton(Utility.FindButtonById(3, 4));
                SetPrevMenuId(3);
            }
        }
コード例 #3
0
ファイル: Fragment.cs プロジェクト: harbingerofme/R2Mods
        private void MaybeAwardLoot(On.RoR2.CharacterBody.orig_OnInventoryChanged orig, CharacterBody self)
        {
            orig(self);
            var amount = self.inventory.GetItemCount(Definition.itemIndex);

            if (amount > 0 && amount % 3 == 0)
            {
                self.inventory.RemoveItem(Definition.itemIndex, 3);
                PickupIndex loot;
                if (Util.CheckRoll(5, self.master))
                {
                    loot = Run.instance.treasureRng.NextElementUniform(Run.instance.availableTier3DropList);
                }
                else
                {
                    loot = Run.instance.treasureRng.NextElementUniform(Run.instance.availableTier2DropList);
                }
                if (self.isPlayerControlled)
                {
                    PickupDropletController.CreatePickupDroplet(loot, self.corePosition, Vector3.up * 5);
                }
                else
                {
                    PickupDef def = PickupCatalog.GetPickupDef(loot);
                    self.inventory.GiveItem(def.itemIndex);
                    var lootCount = self.inventory.GetItemCount(def.itemIndex);
                    Chat.AddPickupMessage(self, def.nameToken, ColorCatalog.GetColor(ItemCatalog.GetItemDef(def.itemIndex).colorIndex), (uint)lootCount);
                }
            }
        }
コード例 #4
0
        public static void DrawItemMenu(float x, float y, float widthSize, int mulY, GUIStyle BGstyle, GUIStyle buttonStyle, GUIStyle LabelStyle)
        {
            int heightMul = 15;

            if (Main.lowResolutionMonitor)
            {
                heightMul = 10;
            }
            GUI.Box(new Rect(x + 0f, y + 0f, widthSize + 20, 50f + 45 * heightMul), "", BGstyle);
            GUI.Label(new Rect(x + 5f, y + 5f, widthSize + 10, 85f), "I T E M S   L I S T", LabelStyle);

            itemSpawnerScrollPosition = GUI.BeginScrollView(new Rect(x + 0f, y + 0f, widthSize + 10, 50f + 45 * heightMul), itemSpawnerScrollPosition, new Rect(x + 0f, y + 0f, widthSize + 10, 50f + 45 * mulY), false, true);
            int buttonPlacement = 1;

            foreach (var itemIndex in Main.items)
            {
                Color32 itemColor = ColorCatalog.GetColor(ItemCatalog.GetItemDef(itemIndex).colorIndex);
                if (itemColor.r <= 105 && itemColor.g <= 105 && itemColor.b <= 105)
                {
                    string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), new Color32(255, 255, 255, 255));
                    DrawButton(buttonPlacement, "itemSpawner", itemName, buttonStyle);
                    buttonPlacement++;
                }
                else
                {
                    string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), itemColor);
                    DrawButton(buttonPlacement, "itemSpawner", itemName, buttonStyle);
                    buttonPlacement++;
                }
            }
            GUI.EndScrollView();
        }
コード例 #5
0
        public ItemList() : base(itemsList)
        {
            if (UmbraMenu.characterCollected)
            {
                int           buttonPlacement = 1;
                List <Button> buttons         = new List <Button>();
                for (int i = 0; i < UmbraMenu.items.Count; i++)
                {
                    ItemIndex itemIndex = UmbraMenu.items[i];
                    void ButtonAction() => GiveItem(itemIndex);

                    Color32 itemColor = ColorCatalog.GetColor(ItemCatalog.GetItemDef(itemIndex).colorIndex);
                    if (itemColor.r <= 105 && itemColor.g <= 105 && itemColor.b <= 105)
                    {
                        string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), new Color32(255, 255, 255, 255));
                        Button button   = new Button(new NormalButton(this, buttonPlacement, itemName, ButtonAction));
                        buttons.Add(button);
                        buttonPlacement++;
                    }
                    else
                    {
                        string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), itemColor);
                        Button button   = new Button(new NormalButton(this, buttonPlacement, itemName, ButtonAction));
                        buttons.Add(button);
                        buttonPlacement++;
                    }
                }
                AddButtons(buttons);
                SetActivatingButton(Utility.FindButtonById(3, 3));
                SetPrevMenuId(3);
            }
        }
コード例 #6
0
        ////// Hooks //////

        private string CharacterBody_GetDisplayName(On.RoR2.CharacterBody.orig_GetDisplayName orig, CharacterBody self)
        {
            var retv = orig(self);

            if (self.name == "ItemDroneBody(Clone)")
            {
                var ward = self.GetComponent <ItemWard>();
                if (!ward || ward.itemcounts.Count == 0)
                {
                    return(retv);
                }
                var idef = ItemCatalog.GetItemDef(ward.itemcounts.First().Key);
                if (idef == null)
                {
                    return(retv);
                }

                var color = "FFFFFF";
                var itd   = ItemTierCatalog.GetItemTierDef(idef.tier);
                if (itd)
                {
                    color = ColorCatalog.GetColorHexString(itd.colorIndex);
                }
                return($"{retv} (<color=#{color}>{Language.GetString(idef.nameToken)}</color>)");
            }
            return(retv);
        }
コード例 #7
0
        public static List <EquipmentIndex> GetEquipment()
        {
            List <EquipmentIndex> equipment = new List <EquipmentIndex>();

            List <EquipmentIndex> equip = new List <EquipmentIndex>();
            List <EquipmentIndex> lunar = new List <EquipmentIndex>();
            List <EquipmentIndex> other = new List <EquipmentIndex>();

            Color32 equipColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Equipment);
            Color32 lunarColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.LunarItem);

            foreach (EquipmentIndex equipmentIndex in EquipmentCatalog.allEquipment)
            {
                Color32 currentEquipColor = ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex);
                if (currentEquipColor.Equals(equipColor)) // equipment
                {
                    equip.Add(equipmentIndex);
                }
                else if (currentEquipColor.Equals(lunarColor)) // lunar equipment
                {
                    lunar.Add(equipmentIndex);
                }
                else // other
                {
                    other.Add(equipmentIndex);
                }
            }
            UmbraMenu.unreleasedEquipment = other;
            var result = equipment.Concat(lunar).Concat(equip).Concat(other).ToList();

            return(result);
        }
コード例 #8
0
ファイル: Utils.cs プロジェクト: Unordinal/UnosRoR2Mods
        public static string TierToHexString(ItemTier tier)
        {
            switch (tier)
            {
            case ItemTier.Tier1:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier1Item));

            case ItemTier.Tier2:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier2Item));

            case ItemTier.Tier3:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier3Item));

            case ItemTier.Lunar:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.LunarItem));

            case ItemTier.Boss:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.BossItem));

            case ItemTier.NoTier:
                return(ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Unaffordable));

            default:
                return("FFF");
            }
        }
コード例 #9
0
            public void UpdateTextMeshPros()
            {
                Vector4 percents = Vector4.zero;

                float max = (self.equipmentWeight + self.failureWeight + self.tier1Weight + self.tier2Weight + self.tier3Weight) / 100;

                for (int i = 0; i < 5; i++)
                {
                    string outputText;
                    Color  outputColor = Color.black;

                    float tierWeight = 0f;

                    switch (i)
                    {
                    case 0:
                        outputColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier3Item);
                        tierWeight  = self.tier3Weight;
                        break;

                    case 1:
                        outputColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier2Item);
                        tierWeight  = self.tier2Weight;
                        break;

                    case 2:
                        outputColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1Item);
                        tierWeight  = self.tier1Weight;
                        break;

                    case 3:
                        outputColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Equipment);
                        tierWeight  = self.equipmentWeight;
                        break;

                    case 4:
                        outputColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.LunarItemDark);
                        tierWeight  = self.failureWeight;
                        break;
                    }
                    GameObject canvas = textMeshPros[i].gameObject;


                    outputText = (int)(tierWeight / max) + "%";

                    textMeshPros[i].color        = outputColor;
                    textMeshPros[i].text         = outputText;
                    textMeshPros[i].overflowMode = TextOverflowModes.Overflow;

                    if (i != 4)
                    {
                        percents[i] = (tierWeight / max);
                    }
                    else
                    {
                        SendUpdateShrineCanvas(self.netId, percents);
                    }
                }
            }
コード例 #10
0
 // Token: 0x060022CA RID: 8906 RVA: 0x000A4486 File Offset: 0x000A2686
 public Color GetColor()
 {
     if (MPEventSystem.activeCount <= 1)
     {
         return(Color.white);
     }
     return(ColorCatalog.GetMultiplayerColor(this.playerSlot));
 }
コード例 #11
0
 // Token: 0x060021C1 RID: 8641 RVA: 0x0009F738 File Offset: 0x0009D938
 public static Color GetCriticallyHurtColor()
 {
     if (Mathf.FloorToInt(Time.fixedTime * 10f) % 2 != 0)
     {
         return(ColorCatalog.GetColor(ColorCatalog.ColorIndex.Teleporter));
     }
     return(Color.white);
 }
コード例 #12
0
        public static void DrawChestItemMenu(float x, float y, float widthSize, int mulY, GUIStyle BGstyle, GUIStyle buttonStyle, GUIStyle LabelStyle)
        {
            int heightMul = 15;

            if (Main.lowResolutionMonitor)
            {
                heightMul = 10;
            }
            GUI.Box(new Rect(x + 0f, y + 0f, widthSize + 20, 50f + 45 * heightMul), "", BGstyle);
            GUI.Label(new Rect(x + 5f, y + 5f, widthSize + 10, 85f), "C H A N G E   C H E S T   L I S T", LabelStyle);

            chestItemChangerScrollPosition = GUI.BeginScrollView(new Rect(x + 0f, y + 0f, widthSize + 10, 50f + 45 * heightMul), chestItemChangerScrollPosition, new Rect(x + 0f, y + 0f, widthSize + 10, 50f + 45 * mulY), false, true);
            int buttonPlacement = 1;

            if (Chests.IsClosestChestEquip())
            {
                foreach (var equipmentIndex in Main.equipment)
                {
                    if (equipmentIndex != EquipmentIndex.None)
                    {
                        Color32 equipColor = ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex);
                        if (equipColor.r <= 105 && equipColor.g <= 105 && equipColor.b <= 105)
                        {
                            string equipmentName = Util.GenerateColoredString(Language.GetString(EquipmentCatalog.GetEquipmentDef(equipmentIndex).nameToken), new Color32(255, 255, 255, 255));
                            DrawButton(buttonPlacement, "chestItemChanger", equipmentName, buttonStyle);
                            buttonPlacement++;
                        }
                        else
                        {
                            string equipmentName = Util.GenerateColoredString(Language.GetString(EquipmentCatalog.GetEquipmentDef(equipmentIndex).nameToken), ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex));
                            DrawButton(buttonPlacement, "chestItemChanger", equipmentName, buttonStyle);
                            buttonPlacement++;
                        }
                    }
                }
            }
            else
            {
                foreach (var itemIndex in Main.items)
                {
                    Color32 itemColor = ColorCatalog.GetColor(ItemCatalog.GetItemDef(itemIndex).colorIndex);
                    if (itemColor.r <= 105 && itemColor.g <= 105 && itemColor.b <= 105)
                    {
                        string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), new Color32(255, 255, 255, 255));
                        DrawButton(buttonPlacement, "chestItemChanger", itemName, buttonStyle);
                        buttonPlacement++;
                    }
                    else
                    {
                        string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), itemColor);
                        DrawButton(buttonPlacement, "chestItemChanger", itemName, buttonStyle);
                        buttonPlacement++;
                    }
                }
            }
            GUI.EndScrollView();
        }
コード例 #13
0
ファイル: PingPainter.cs プロジェクト: pixeldesu/Cloudburst
        /// <summary>
        /// Method to get the interactable tier color from a ping target
        /// </summary>
        /// <param name="gameObject">The ping target</param>
        /// <returns>An Color instance of the tier color</returns>
        private Color GetTargetTierColor(GameObject gameObject)
        {
            Color color = Color.black;

            ShopTerminalBehavior shopTerminal = gameObject.GetComponent <ShopTerminalBehavior>();

            if (shopTerminal)
            {
                PickupIndex pickupIndex = shopTerminal.CurrentPickupIndex();
                PickupDef   pickup      = PickupCatalog.GetPickupDef(pickupIndex);

                if (pickup != null)
                {
                    color = pickup.baseColor;
                }
            }

            GenericPickupController pickupController = gameObject.GetComponent <GenericPickupController>();

            if (pickupController)
            {
                PickupDef pickup = PickupCatalog.GetPickupDef(pickupController.pickupIndex);

                if (pickup != null)
                {
                    color = pickup.baseColor;
                }
            }

            PurchaseInteraction purchaseInteraction = gameObject.GetComponent <PurchaseInteraction>();

            if (purchaseInteraction)
            {
                CostTypeDef costType = CostTypeCatalog.GetCostTypeDef(purchaseInteraction.costType);
                color = ColorCatalog.GetColor(costType.colorIndex);
            }

            PickupIndexNetworker pickupIndexNetworker = gameObject.GetComponent <PickupIndexNetworker>();

            if (pickupIndexNetworker)
            {
                PickupDef pickup = PickupCatalog.GetPickupDef(pickupIndexNetworker.NetworkpickupIndex);

                if (pickup != null)
                {
                    color = pickup.baseColor;
                }
            }

            if (color == Color.black)
            {
                color = _colors["InteractablePingColor"];
            }

            return(color);
        }
コード例 #14
0
        // Token: 0x060021B3 RID: 8627 RVA: 0x0009EE18 File Offset: 0x0009D018
        public void SetItem(ItemIndex itemIndex)
        {
            ItemDef itemDef = ItemCatalog.GetItemDef(itemIndex);

            this.titleText.token       = itemDef.nameToken;
            this.descriptionText.token = itemDef.pickupToken;
            if (itemDef.pickupIconPath != null)
            {
                this.iconImage.texture = Resources.Load <Texture>(itemDef.pickupIconPath);
            }
            this.titleTMP.color = ColorCatalog.GetColor(itemDef.colorIndex);
        }
コード例 #15
0
        public static void UpdateChestListMenu()
        {
            List <Button> buttons = new List <Button>();

            if (isClosestChestEquip)
            {
                for (int i = 0; i < UmbraMenu.equipment.Count; i++)
                {
                    var equipmentIndex = UmbraMenu.equipment[i];
                    if (equipmentIndex != EquipmentIndex.None)
                    {
                        void ButtonAction() => SetChestEquipment(equipmentIndex);

                        if (equipmentIndex != EquipmentCatalog.FindEquipmentIndex("AffixYellow"))
                        {
                            Color32 equipColor    = ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex);
                            string  equipmentName = Util.GenerateColoredString(Language.GetString(EquipmentCatalog.GetEquipmentDef(equipmentIndex).nameToken), ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex));
                            Button  button        = new Button(new NormalButton(UmbraMenu.chestItemListMenu, i + 1, equipmentName, ButtonAction));
                            buttons.Add(button);
                        }
                        else
                        {
                            string equipmentName = Util.GenerateColoredString(equipmentIndex.ToString(), ColorCatalog.GetColor(ColorCatalog.ColorIndex.Equipment));
                            Button button        = new Button(new NormalButton(UmbraMenu.chestItemListMenu, i + 1, equipmentName, ButtonAction));
                            buttons.Add(button);
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < UmbraMenu.items.Count; i++)
                {
                    var itemIndex = UmbraMenu.items[i];
                    void ButtonAction() => SetChestItem(itemIndex);

                    Color32 itemColor = ColorCatalog.GetColor(ItemCatalog.GetItemDef(itemIndex).colorIndex);
                    if (itemColor.r <= 105 && itemColor.g <= 105 && itemColor.b <= 105)
                    {
                        string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), new Color32(0, 0, 0, 255));
                        Button button   = new Button(new NormalButton(UmbraMenu.chestItemListMenu, i + 1, itemName, ButtonAction));
                        buttons.Add(button);
                    }
                    else
                    {
                        string itemName = Util.GenerateColoredString(Language.GetString(ItemCatalog.GetItemDef(itemIndex).nameToken), itemColor);
                        Button button   = new Button(new NormalButton(UmbraMenu.chestItemListMenu, i + 1, itemName, ButtonAction));
                        buttons.Add(button);
                    }
                }
            }
            UmbraMenu.chestItemListMenu.AddButtons(buttons);
        }
コード例 #16
0
        private string GetStylizedPickupName(PickupDef pickup)
        {
            var(nameToken, colorIndex) = pickup switch
            {
                PickupDef _ when EquipmentCatalog.GetEquipmentDef(pickup.equipmentIndex) is EquipmentDef def => (def.nameToken, def.colorIndex),
                PickupDef _ when ItemCatalog.GetItemDef(pickup.itemIndex) is ItemDef def => (def.nameToken, def.colorIndex),
                _ => ("", ColorCatalog.ColorIndex.None),
            };

            var color = ColorCatalog.GetColorHexString(colorIndex);
            return($"<color=#{color}>{Language.GetString(nameToken)}</color>");
        }
コード例 #17
0
        // Token: 0x060021B4 RID: 8628 RVA: 0x0009EE88 File Offset: 0x0009D088
        public void SetEquipment(EquipmentIndex equipmentIndex)
        {
            EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(equipmentIndex);

            this.titleText.token       = equipmentDef.nameToken;
            this.descriptionText.token = equipmentDef.pickupToken;
            if (equipmentDef.pickupIconPath != null)
            {
                this.iconImage.texture = Resources.Load <Texture>(equipmentDef.pickupIconPath);
            }
            this.titleTMP.color = ColorCatalog.GetColor(equipmentDef.colorIndex);
        }
コード例 #18
0
        public static List <ItemIndex> GetItems()
        {
            List <ItemIndex> items = new List <ItemIndex>();

            List <ItemIndex> boss  = new List <ItemIndex>();
            List <ItemIndex> tier3 = new List <ItemIndex>();
            List <ItemIndex> tier2 = new List <ItemIndex>();
            List <ItemIndex> tier1 = new List <ItemIndex>();
            List <ItemIndex> lunar = new List <ItemIndex>();
            List <ItemIndex> other = new List <ItemIndex>();

            Color32 bossColor  = ColorCatalog.GetColor(ColorCatalog.ColorIndex.BossItem);
            Color32 tier3Color = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier3Item);
            Color32 tier2Color = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier2Item);
            Color32 tier1Color = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1Item);
            Color32 lunarColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.LunarItem);

            foreach (ItemIndex itemIndex in ItemCatalog.allItems)
            {
                Color32 itemColor = ColorCatalog.GetColor(ItemCatalog.GetItemDef(itemIndex).colorIndex);
                if (itemColor.Equals(bossColor)) // boss
                {
                    boss.Add(itemIndex);
                }
                else if (itemColor.Equals(tier3Color)) // tier 3
                {
                    tier3.Add(itemIndex);
                }
                else if (itemColor.Equals(tier2Color)) // tier 2
                {
                    tier2.Add(itemIndex);
                }
                else if (itemColor.Equals(tier1Color)) // tier 1
                {
                    tier1.Add(itemIndex);
                }
                else if (itemColor.Equals(lunarColor)) // lunar
                {
                    lunar.Add(itemIndex);
                }
                else // Other
                {
                    other.Add(itemIndex);
                }
            }

            UmbraMenu.bossItems       = boss;
            UmbraMenu.unreleasedItems = other;
            var result = items.Concat(boss).Concat(tier3).Concat(tier2).Concat(tier1).Concat(lunar).Concat(other).ToList();

            return(result);
        }
コード例 #19
0
        // Token: 0x06001D49 RID: 7497 RVA: 0x00088840 File Offset: 0x00086A40
        private void Start()
        {
            ItemDef itemDef = ItemCatalog.GetItemDef((ItemIndex)(base.GetComponent <EffectComponent>().effectData.genericUInt - 1u));

            ColorCatalog.ColorIndex colorIndex = ColorCatalog.ColorIndex.Error;
            Sprite sprite = null;

            if (itemDef != null)
            {
                colorIndex = itemDef.colorIndex;
                sprite     = itemDef.pickupIconSprite;
            }
            this.trailToColor.endColor     = (this.trailToColor.startColor = ColorCatalog.GetColor(colorIndex));
            this.iconSpriteRenderer.sprite = sprite;
        }
コード例 #20
0
        public void wispShrineActivation(Interactor interactor, float monsterCredit)
        {
            combatDirector.enabled        = true;
            combatDirector.monsterCredit += monsterCredit;
            combatDirector.maximumNumberToSpawnBeforeSkipping = wispCount;
            combatDirector.monsterSpawnTimer = 0f;


            if (wispItem)
            {
                var itemColor = ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier1Item);
                if (tier == 2)
                {
                    itemColor = ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier2Item);
                }
                if (tier == 3)
                {
                    itemColor = ColorCatalog.GetColorHexString(ColorCatalog.ColorIndex.Tier3Item);
                }
                if (acceptNext)
                {
                    Chat.SendBroadcastChat(new Chat.SubjectFormatChatMessage
                    {
                        subjectAsCharacterBody = interactor.GetComponent <CharacterBody>(),
                        baseToken   = "SHRINE_WISP_ACCEPT_MESSAGE",
                        paramTokens = new string[]
                        {
                            itemColor,
                            wispItem.nameToken,
                        }
                    });
                }
                else
                {
                    Chat.SendBroadcastChat(new Chat.SubjectFormatChatMessage
                    {
                        subjectAsCharacterBody = interactor.GetComponent <CharacterBody>(),
                        baseToken   = "SHRINE_WISP_DENY_MESSAGE",
                        paramTokens = new string[]
                        {
                            itemColor,
                            wispItem.nameToken,
                        }
                    });
                }
            }
        }
コード例 #21
0
 private static TooltipContent LogBookControllerOnGetPickupTooltipContent(On.RoR2.UI.LogBook.LogBookController.orig_GetPickupTooltipContent orig, UserProfile userProfile, Entry entry, EntryStatus status)
 {
     if (IsCustomItemOrEquipment((PickupIndex)entry.extraData))
     {
         UnlockableDef  unlockableDef = UnlockableCatalog.GetUnlockableDef(((PickupIndex)entry.extraData).GetUnlockableName());
         TooltipContent result        = default;
         result.titleToken = entry.nameToken;
         result.titleColor = entry.color;
         if (unlockableDef != null)
         {
             result.overrideBodyText = unlockableDef.getUnlockedString();
         }
         result.bodyToken = "LOGBOOK_CATEGORY_ITEM";
         result.bodyColor = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Unlockable);
         return(result);
     }
     return(orig(userProfile, entry, status));
 }
コード例 #22
0
        // Token: 0x0600220F RID: 8719 RVA: 0x000A1038 File Offset: 0x0009F238
        public void SetItemIndex(ItemIndex newItemIndex, int newItemCount)
        {
            if (this.itemIndex == newItemIndex && this.itemCount == newItemCount)
            {
                return;
            }
            this.itemIndex = newItemIndex;
            this.itemCount = newItemCount;
            string  titleToken = "";
            string  bodyToken  = "";
            Color   color      = Color.white;
            Color   bodyColor  = new Color(0.6f, 0.6f, 0.6f, 1f);
            ItemDef itemDef    = ItemCatalog.GetItemDef(this.itemIndex);

            if (itemDef != null)
            {
                this.image.texture = Resources.Load <Texture>(itemDef.pickupIconPath);
                if (this.itemCount > 1)
                {
                    this.stackText.enabled = true;
                    this.stackText.text    = string.Format("x{0}", this.itemCount);
                }
                else
                {
                    this.stackText.enabled = false;
                }
                titleToken = itemDef.nameToken;
                bodyToken  = itemDef.pickupToken;
                color      = ColorCatalog.GetColor(itemDef.darkColorIndex);
            }
            if (this.glowImage)
            {
                this.glowImage.color = new Color(color.r, color.g, color.b, 0.75f);
            }
            if (this.tooltipProvider)
            {
                this.tooltipProvider.titleToken = titleToken;
                this.tooltipProvider.bodyToken  = bodyToken;
                this.tooltipProvider.titleColor = color;
                this.tooltipProvider.bodyColor  = bodyColor;
            }
        }
コード例 #23
0
        public static void DrawEquipmentMenu(float x, float y, float widthSize, int mulY, GUIStyle BGstyle, GUIStyle buttonStyle, GUIStyle LabelStyle, GUIStyle offStyle)
        {
            int heightMul = 15;

            if (Main.lowResolutionMonitor)
            {
                heightMul = 10;
            }
            GUI.Box(new Rect(x + 0f, y + 0f, widthSize + 20, 50f + 45 * heightMul), "", BGstyle);
            GUI.Label(new Rect(x + 5f, y + 5f, widthSize + 10, 85f), "E Q U I P M E N T   L I S T", LabelStyle);

            equipmentSpawnerScrollPosition = GUI.BeginScrollView(new Rect(x + 0f, y + 0f, widthSize + 10, 50f + 45 * heightMul), equipmentSpawnerScrollPosition, new Rect(x + 0f, y + 0f, widthSize + 10, 50f + 45 * mulY), false, true);
            int buttonPlacement = 1;

            foreach (var equipmentIndex in Main.equipment)
            {
                if (equipmentIndex != EquipmentIndex.None)
                {
                    Color32 equipColor = ColorCatalog.GetColor(EquipmentCatalog.GetEquipmentDef(equipmentIndex).colorIndex);
                    if (equipColor.r <= 105 && equipColor.g <= 105 && equipColor.b <= 105)
                    {
                        string equipmentName = Util.GenerateColoredString(Language.GetString(EquipmentCatalog.GetEquipmentDef(equipmentIndex).nameToken), new Color32(255, 255, 255, 255));
                        DrawButton(buttonPlacement, "equipmentSpawner", equipmentName, buttonStyle);
                        buttonPlacement++;
                    }
                    else
                    {
                        string equipmentName = Util.GenerateColoredString(Language.GetString(EquipmentCatalog.GetEquipmentDef(equipmentIndex).nameToken), equipColor);
                        DrawButton(buttonPlacement, "equipmentSpawner", equipmentName, buttonStyle);
                        buttonPlacement++;
                    }
                }
                else
                {
                    string equipmentName = "Remove Equipment";
                    DrawButton(buttonPlacement, "equipmentSpawner", equipmentName, buttonStyle);
                    buttonPlacement++;
                }
            }
            GUI.EndScrollView();
        }
コード例 #24
0
        private void GiveRandomRed(On.RoR2.CharacterBody.orig_OnInventoryChanged orig, CharacterBody self) //ripped from harbcrate, i did credit though.
        {
            orig(self);
            var amount = GetCount(self);

            if (amount > 1)
            {
                self.inventory.RemoveItem(catalogIndex);
                PickupIndex loot = Run.instance.treasureRng.NextElementUniform(Run.instance.availableTier3DropList);
                if (self.isPlayerControlled)
                {
                    PickupDropletController.CreatePickupDroplet(loot, self.corePosition, Vector3.up * 5);
                }
                else
                {
                    PickupDef def = PickupCatalog.GetPickupDef(loot);
                    self.inventory.GiveItem(def.itemIndex);
                    var lootCount = self.inventory.GetItemCount(def.itemIndex);
                    Chat.AddPickupMessage(self, def.nameToken, ColorCatalog.GetColor(ItemCatalog.GetItemDef(def.itemIndex).colorIndex), (uint)lootCount);
                }
            }
        }
コード例 #25
0
        private void GenericNotification_SetItem(On.RoR2.UI.GenericNotification.orig_SetItem orig, GenericNotification self, ItemDef itemDef)
        {
            if (itemDef.itemIndex != catalogIndex)
            {
                orig(self, itemDef);
                return;
            }
            var clearCount = Run.instance.stageClearCount;
            var StageCount = Mathf.Max(clearCount + 1, 1);

            string numberString      = HelperUtil.NumbertoOrdinal(StageCount);
            string numberCapitalized = char.ToUpper(numberString[0]) + numberString.Substring(1);
            string descString        = adjustedDesc[Mathf.Clamp(StageCount, 0, adjustedDesc.Length - 1)];

            //https://www.dotnetperls.com/uppercase-first-letter

            //string output2 = numberCapitalized + " Chamber" +
            //"\nThis " + descString + " artifact indicates mastery of the " + numberString + " chamber."; TODO: REMOVE WHEN KNOW IT WORKS
            string output = string.Format(itemPickupDescToken, numberCapitalized, descString, numberString);

            if (bannedStages.Contains(SceneCatalog.mostRecentSceneDef.baseSceneName))
            {
                output = itemPickupDescBannedToken;
            }

            self.titleText.token       = itemDef.nameToken;
            self.titleTMP.color        = ColorCatalog.GetColor(itemDef.colorIndex);
            self.descriptionText.token = output;

            if (itemDef.pickupIconSprite != null)
            {
                self.iconImage.texture = itemDef.pickupIconTexture;
                //var index = Mathf.Max(clearCount, textures.Count-1);
                //self.iconImage.texture = Resources.Load<Texture>(filePaths[index]);
                //self.iconImage.texture = textures[index];
            }
        }
コード例 #26
0
 public static Color32 GetItemColor(ItemIndex index)
 {
     if (IsWhiteItem(index))
     {
         return(ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1Item));
     }
     if (IsGreenItem(index))
     {
         return(ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier2Item));
     }
     if (IsRedItem(index))
     {
         return(ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier3Item));
     }
     if (IsLunarItem(index))
     {
         return(ColorCatalog.GetColor(ColorCatalog.ColorIndex.LunarItem));
     }
     if (IsBossItem(index))
     {
         return(ColorCatalog.GetColor(ColorCatalog.ColorIndex.BossItem));
     }
     return(Color.white);
 }
コード例 #27
0
ファイル: ChatMessage.cs プロジェクト: xiaoxiao921/R2API
 public static void SendColored(string?message, ColorCatalog.ColorIndex color, string?messageFrom)
 {
     SendColored(message, ColorCatalog.GetColorHexString(color), messageFrom);
 }
コード例 #28
0
        public void Awake()
        {
            // lets not ruin peoples save files
            On.RoR2.UserProfile.Save += (orig, self, blocking) =>
            {
                return(true);
            };

            // just incase they do add the artifacts we dont want duplicates in the unlockableDefTable and
            // since they dont check for those we will do that for them
            On.RoR2.UnlockableCatalog.RegisterUnlockable += (orig, name, unlockableDef) =>
            {
                if (UnlockableCatalog.GetUnlockableDef(name) != null)
                {
                    return;
                }

                orig(name, unlockableDef);
            };

            // add artifacts to unlocks
            On.RoR2.UnlockableCatalog.Init += (orig) =>
            {
                for (var artifactIdx = ArtifactIndex.Command; artifactIdx < ArtifactIndex.Count; artifactIdx++)
                {
                    var artifactDef = ArtifactCatalog.GetArtifactDef(artifactIdx);
                    if (artifactDef?.unlockableName.Length < 0)
                    {
                        continue;
                    }

                    Reflection.InvokeMethod(typeof(UnlockableCatalog), "RegisterUnlockable",
                                            artifactDef.unlockableName, new UnlockableDef
                    {
                        hidden = true,
                    });
                }

                orig();
            };

            // set neat colors and tooltips for artifacts that have none
            On.RoR2.RuleDef.FromArtifact += (orig, artifactIdx) =>
            {
                var tooltipClr  = ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier3ItemDark);
                var artifactDef = ArtifactCatalog.GetArtifactDef(artifactIdx);

                var ruleDef = new RuleDef("Artifacts." + artifactIdx.ToString(), artifactDef.nameToken);
                {
                    var ruleChoiceDef1 = ruleDef.AddChoice("On", null, false);
                    ruleChoiceDef1.spritePath       = artifactDef.smallIconSelectedPath;
                    ruleChoiceDef1.tooltipNameColor = tooltipClr;
                    ruleChoiceDef1.unlockableName   = artifactDef.unlockableName;
                    ruleChoiceDef1.artifactIndex    = artifactIdx;

                    var ruleChoiceDef2 = ruleDef.AddChoice("Off", null, false);
                    ruleChoiceDef2.spritePath       = artifactDef.smallIconDeselectedPath;
                    ruleChoiceDef2.tooltipNameColor = tooltipClr;
                    ruleChoiceDef2.materialPath     = "Materials/UI/matRuleChoiceOff";
                    ruleChoiceDef2.tooltipBodyToken = null;

                    switch (artifactIdx)
                    {
                    case ArtifactIndex.Bomb:
                        ruleChoiceDef1.tooltipNameToken = "Spite";
                        ruleChoiceDef2.tooltipNameToken = ruleChoiceDef1.tooltipNameToken;
                        ruleChoiceDef1.tooltipBodyToken = "Makes monsters explode on death";
                        ruleChoiceDef2.tooltipBodyToken = ruleChoiceDef1.tooltipBodyToken;
                        break;

                    case ArtifactIndex.Spirit:
                        ruleChoiceDef1.tooltipNameToken = "Spirit";
                        ruleChoiceDef2.tooltipNameToken = ruleChoiceDef1.tooltipNameToken;
                        ruleChoiceDef1.tooltipBodyToken = "Makes you and monsters move faster at low health";
                        ruleChoiceDef2.tooltipBodyToken = ruleChoiceDef1.tooltipBodyToken;
                        break;

                    case ArtifactIndex.Enigma:
                        ruleChoiceDef1.tooltipNameToken = "Enigma";
                        ruleChoiceDef2.tooltipNameToken = ruleChoiceDef1.tooltipNameToken;
                        ruleChoiceDef1.tooltipBodyToken = "Give you a special use item that triggers a random effect on use";
                        ruleChoiceDef2.tooltipBodyToken = ruleChoiceDef1.tooltipBodyToken;
                        break;

                    default:
                        ruleChoiceDef1.tooltipNameToken = "Work in Progress";
                        ruleChoiceDef2.tooltipNameToken = ruleChoiceDef1.tooltipNameToken;
                        ruleChoiceDef1.tooltipBodyToken = "This artifact does not do anything yet";
                        ruleChoiceDef2.tooltipBodyToken = ruleChoiceDef1.tooltipBodyToken;
                        break;
                    }
                }

                ruleDef.MakeNewestChoiceDefault();

                return(ruleDef);
            };

            // unlock artifacts for the current user
            LocalUserManager.onUserSignIn += (user) =>
            {
                for (var artifactIdx = ArtifactIndex.Command; artifactIdx < ArtifactIndex.Count; artifactIdx++)
                {
                    var artifactDef = ArtifactCatalog.GetArtifactDef(artifactIdx);
                    if (artifactDef?.unlockableName.Length < 0)
                    {
                        continue;
                    }

                    var unlockableDef = UnlockableCatalog.GetUnlockableDef(artifactDef.unlockableName);
                    if (unlockableDef is null)
                    {
                        Logger.LogError($"Could not unlock artifact {artifactDef.nameToken}, " +
                                        "UnlockableDef does not exist");
                        continue;
                    }

                    user.userProfile.GrantUnlockable(unlockableDef);
                }
            };
        }
コード例 #29
0
        public void PickupPickerPanel_OnCreateButton(On.RoR2.UI.PickupPickerPanel.orig_OnCreateButton orig, RoR2.UI.PickupPickerPanel self, int index, MPButton button)
        {
            orig(self, optionMap[0] >= 0 ? optionMap[index] : index, button);

            if (mod.config.CommandTooltipsShow.Value || mod.config.CommandCountersShow.Value)
            {
                CharacterMaster master    = LocalUserManager.GetFirstLocalUser().cachedMasterController.master;
                PickupDef       pickupDef = PickupCatalog.GetPickupDef(self.pickerController.options[optionMap[0] >= 0 ? optionMap[index] : index].pickupIndex);

                if (pickupDef.itemIndex != ItemIndex.None && mod.config.CommandCountersShow.Value)
                {
                    int count = master.inventory.itemStacks[(int)pickupDef.itemIndex];
                    if (!mod.config.CommandCountersHideOnZero.Value || count > 0)
                    {
                        GameObject textGameObject = new GameObject("StackText");
                        textGameObject.transform.SetParent(button.transform);
                        textGameObject.layer = 5;

                        RectTransform counterRect = textGameObject.AddComponent <RectTransform>();

                        HGTextMeshProUGUI counterText = textGameObject.AddComponent <HGTextMeshProUGUI>();
                        counterText.enableWordWrapping = false;
                        counterText.alignment          = mod.config.CommandCountersTextAlignmentOption;
                        counterText.fontSize           = mod.config.CommandCountersFontSize.Value;
                        counterText.faceColor          = Color.white;
                        counterText.outlineWidth       = 0.2f;
                        counterText.text = mod.config.CommandCountersPrefix.Value + count;

                        counterRect.localPosition    = Vector3.zero;
                        counterRect.anchorMin        = Vector2.zero;
                        counterRect.anchorMax        = Vector2.one;
                        counterRect.localScale       = Vector3.one;
                        counterRect.sizeDelta        = new Vector2(-10, -4);
                        counterRect.anchoredPosition = Vector2.zero;
                    }
                }

                if (mod.config.CommandTooltipsShow.Value)
                {
                    TooltipProvider tooltipProvider = button.gameObject.AddComponent <TooltipProvider>();

                    if (pickupDef.itemIndex != ItemIndex.None)
                    {
                        ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex);

                        if (mod.ItemStatsModIntegration)
                        {
                            int    count    = master.inventory.itemStacks[(int)pickupDef.itemIndex];
                            string bodyText = Language.GetString(itemDef.descriptionToken);
                            if (self.pickerController.contextString == "ARTIFACT_COMMAND_CUBE_INTERACTION_PROMPT" && mod.config.CommandTooltipsItemStatsBeforeAfter.Value && count > 0)
                            {
                                bodyText += String.Format("\n\n<align=left>Before ({0} Stack" + (count > 1 ? "s" : "") + "):", count);
                                String[] descLines = ModCompat.statsFromItemStats(itemDef.itemIndex, count, master).Split(new String[] { "\n", "<br>" }, StringSplitOptions.None);
                                bodyText += String.Join("\n", descLines.Take(descLines.Length - 1).Skip(1));
                                bodyText += String.Format("\n\n<align=left>After ({0} Stacks):", count + 1);
                                descLines = ModCompat.statsFromItemStats(itemDef.itemIndex, count + 1, master).Split(new String[] { "\n", "<br>" }, StringSplitOptions.None);
                                bodyText += String.Join("\n", descLines.Take(descLines.Length - 1).Skip(1));
                            }
                            else
                            {
                                if (self.pickerController.contextString == "ARTIFACT_COMMAND_CUBE_INTERACTION_PROMPT")
                                {
                                    count += 1;
                                }
                                bodyText += ModCompat.statsFromItemStats(itemDef.itemIndex, count, master);
                            }

                            tooltipProvider.overrideBodyText = bodyText;
                        }
                        else
                        {
                            tooltipProvider.bodyToken = itemDef.descriptionToken;
                        }

                        tooltipProvider.titleToken = itemDef.nameToken;
                        tooltipProvider.titleColor = ColorCatalog.GetColor(itemDef.darkColorIndex);;
                        tooltipProvider.bodyColor  = new Color(0.6f, 0.6f, 0.6f, 1f);
                    }
                    else if (pickupDef.equipmentIndex != EquipmentIndex.None)
                    {
                        EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(pickupDef.equipmentIndex);

                        tooltipProvider.titleToken = equipmentDef.nameToken;
                        tooltipProvider.bodyToken  = equipmentDef.descriptionToken;
                        tooltipProvider.titleColor = ColorCatalog.GetColor(equipmentDef.colorIndex);
                        tooltipProvider.bodyColor  = Color.gray;
                    }
                }
            }
        }
コード例 #30
0
        private void Awake()
        {
            if (_instance != null && _instance != this)
            {
                Destroy(gameObject);
            }
            else
            {
                _instance = this;
            }

            lobbyRule.AddChoice(0, "None", "Enemies aggregate no items", ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1Item), ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1ItemDark));
            lobbyRule.AddChoice(1, "White", "Enemies aggregate white items every level", ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1Item), ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier1ItemDark));
            lobbyRule.AddChoice(2, "Green", "Enemies also aggregate green items, every 3 levels", ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier2Item), ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier2ItemDark));
            lobbyRule.AddChoice(3, "Red", "Enemies also aggregate red items, every 5 levels", ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier3Item), ColorCatalog.GetColor(ColorCatalog.ColorIndex.Tier3ItemDark));
            lobbyRule.AddChoice(4, "Lunar", "Enemies also aggregate lunar items, every 8 levels", ColorCatalog.GetColor(ColorCatalog.ColorIndex.LunarItem), ColorCatalog.GetColor(ColorCatalog.ColorIndex.LunarItemDark));
            lobbyRule.AddChoice(5, "Boss", "Enemies also aggregate boss items, every 10 levels", ColorCatalog.GetColor(ColorCatalog.ColorIndex.BossItem), ColorCatalog.GetColor(ColorCatalog.ColorIndex.BossItemDark));

            lobbyRule.MakeValueDefault(0);

            lobbyCategory.PushRule <int>(lobbyRule);

            On.RoR2.UI.HUD.Awake += (orig, self) =>
            {
                orig(self);


                itemInventoryDisplay = Instantiate(self.itemInventoryDisplay, self.transform);
                itemInventoryDisplay.SetFieldValue <int[]>("itemStacks", ItemCatalog.RequestItemStackArray());
                itemInventoryDisplay.SetFieldValue <ItemIndex[]>("itemOrder", ItemCatalog.RequestItemOrderBuffer());

                if (!inventory)
                {
                    inventory = itemInventoryDisplay.gameObject.AddComponent <Inventory>();
                }

                itemInventoryDisplay.SetSubscribedInventory(inventory);
            };

            RoR2.Run.onRunStartGlobal += (RoR2.Run run) =>
            {
                if (NetworkServer.active && lobbyRule.Value != null)
                {
                    levelWave = 1;

                    Debug.Log(lobbyRule.Value);


                    if (lobbyRule.Value == 1)
                    {
                        Debug.Log("Added white");

                        On.RoR2.GlobalEventManager.OnTeamLevelUp += UpdateLevelWave;
                        On.RoR2.CharacterMaster.OnBodyStart      += CopyItemsMaster;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += WhiteOnLevelUp;
                    }
                    if (lobbyRule.Value == 2)
                    {
                        Debug.Log("Added green");

                        On.RoR2.GlobalEventManager.OnTeamLevelUp += UpdateLevelWave;
                        On.RoR2.CharacterMaster.OnBodyStart      += CopyItemsMaster;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += WhiteOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += GreenOnLevelUp;
                    }
                    if (lobbyRule.Value == 3)
                    {
                        Debug.Log("Added red");


                        On.RoR2.GlobalEventManager.OnTeamLevelUp += UpdateLevelWave;
                        On.RoR2.CharacterMaster.OnBodyStart      += CopyItemsMaster;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += WhiteOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += GreenOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += RedOnLevelUp;
                    }
                    if (lobbyRule.Value == 4)
                    {
                        Debug.Log("Added lunar");



                        On.RoR2.GlobalEventManager.OnTeamLevelUp += UpdateLevelWave;
                        On.RoR2.CharacterMaster.OnBodyStart      += CopyItemsMaster;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += WhiteOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += GreenOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += RedOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += LunarOnLevelUp;
                    }
                    if (lobbyRule.Value == 5)
                    {
                        Debug.Log("Added boss");
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += UpdateLevelWave;
                        On.RoR2.CharacterMaster.OnBodyStart      += CopyItemsMaster;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += WhiteOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += GreenOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += RedOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += LunarOnLevelUp;
                        On.RoR2.GlobalEventManager.OnTeamLevelUp += BossOnLevelUp;
                    }
                }
            };

            RoR2.Run.onRunDestroyGlobal += (RoR2.Run run) =>
            {
                if (NetworkServer.active && lobbyRule.Value != null)
                {
                    levelWave = 1;

                    if (lobbyRule.Value <= 0)
                    {
                        On.RoR2.GlobalEventManager.OnTeamLevelUp -= UpdateLevelWave;
                        On.RoR2.CharacterMaster.OnBodyStart      -= CopyItemsMaster;
                    }
                    if (lobbyRule.Value <= 1)
                    {
                        On.RoR2.GlobalEventManager.OnTeamLevelUp -= WhiteOnLevelUp;
                    }
                    if (lobbyRule.Value <= 2)
                    {
                        On.RoR2.GlobalEventManager.OnTeamLevelUp -= GreenOnLevelUp;
                    }
                    if (lobbyRule.Value <= 3)
                    {
                        On.RoR2.GlobalEventManager.OnTeamLevelUp -= RedOnLevelUp;
                    }
                    if (lobbyRule.Value <= 4)
                    {
                        On.RoR2.GlobalEventManager.OnTeamLevelUp -= LunarOnLevelUp;
                    }
                    if (lobbyRule.Value <= 5)
                    {
                        On.RoR2.GlobalEventManager.OnTeamLevelUp -= BossOnLevelUp;
                    }
                }
            };
        }