コード例 #1
0
            bool SetEquipmentInternal(On.RoR2.Inventory.orig_SetEquipmentInternal orig, RoR2.Inventory inventory, EquipmentState equipmentState, uint slot)
            {
                bool equipmentChanged = orig(inventory, equipmentState, slot);

                if (Data.modEnabled)
                {
                    if (Data.mode == DataShop.mode)
                    {
                        if (inventoryLocal != null)
                        {
                            if (inventoryLocal == inventory)
                            {
                                int stageClearCountNew = Run.instance.stageClearCount;
                                if (stageClearCountOld != stageClearCountNew)
                                {
                                    stageClearCountOld = stageClearCountNew;
                                    equipmentFoundThisStage.Clear();
                                    equipmentFoundThisStageTwice.Clear();
                                    foreach (EquipmentState equipmentStateOlder in latestEquipment)
                                    {
                                        if (equipmentStateOlder.equipmentIndex != EquipmentIndex.None && !equipmentFoundThisStage.Contains(equipmentStateOlder.equipmentIndex))
                                        {
                                            equipmentFoundThisStage.Add(equipmentStateOlder.equipmentIndex);
                                        }
                                    }
                                }
                                int slotAdjusted = (int)slot;
                                if (slotAdjusted + 1 > latestEquipment.Count)
                                {
                                    for (int appendIndex = 0; appendIndex < slotAdjusted + 1 - latestEquipment.Count; appendIndex++)
                                    {
                                        latestEquipment.Add(new EquipmentState(EquipmentIndex.None, new Run.FixedTimeStamp(), 0));
                                    }
                                }
                                EquipmentState equipmentStateOld = latestEquipment[slotAdjusted];
                                if (!EquipmentState.Equals(equipmentStateOld, equipmentState))
                                {
                                    latestEquipment[slotAdjusted] = equipmentState;
                                    if (!equipmentFoundThisStage.Contains(latestEquipment[slotAdjusted].equipmentIndex))
                                    {
                                        if (Data.allEquipmentIndexes.ContainsKey(equipmentState.equipmentIndex))
                                        {
                                            if (DataShop.AddScrap(characterBody, Data.GetItemTier(Data.allEquipmentIndexes[equipmentState.equipmentIndex])))
                                            {
                                                equipmentFoundThisStage.Add(equipmentState.equipmentIndex);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                return(equipmentChanged);
            }
コード例 #2
0
ファイル: Hooks.cs プロジェクト: tung362/RoR2PVP
        static bool EnforceBannedEquipments(On.RoR2.Inventory.orig_SetEquipmentInternal orig, Inventory self, EquipmentState equipmentState, uint slot)
        {
            EquipmentState equipment = equipmentState;

            if (NetworkServer.active)
            {
                //Ban check
                bool isBanned = Settings.BannedEquipments.ContainsKey(equipment.equipmentIndex) ? true : false;

                //Reroll if banned
                if (isBanned)
                {
                    Chat.SendBroadcastChat(new Chat.SimpleChatMessage
                    {
                        baseToken = Util.GenerateColoredString("Banned equipment detected! rerolling...", new Color32(255, 106, 0, 255))
                    });

                    bool assigned = false;
                    if (equipment.equipmentDef != null)
                    {
                        if (equipment.equipmentDef.isLunar)
                        {
                            if (Run.instance.availableLunarEquipmentDropList.Count != 0)
                            {
                                EquipmentIndex equipmentIndex = Tools.TryGetRandomEquipment(Run.instance.availableLunarEquipmentDropList, Run.instance.treasureRng);
                                equipment = new EquipmentState(equipmentIndex, equipment.chargeFinishTime, equipment.charges);
                                assigned  = true;
                            }
                        }
                        else
                        {
                            if (Run.instance.availableNormalEquipmentDropList.Count != 0)
                            {
                                EquipmentIndex equipmentIndex = Tools.TryGetRandomEquipment(Run.instance.availableNormalEquipmentDropList, Run.instance.treasureRng);
                                equipment = new EquipmentState(equipmentIndex, equipment.chargeFinishTime, equipment.charges);
                                assigned  = true;
                            }
                        }
                    }
                    if (!assigned)
                    {
                        equipment = EquipmentState.empty;
                    }
                }
            }
            return(orig(self, equipment, slot));
        }