コード例 #1
0
        public static void OnGrantEquipment()
        {
            On.RoR2.GenericPickupController.GrantEquipment += (orig, self, body, inventory) =>
            {
                var equip = self.pickupIndex.equipmentIndex;

                if (!ShareSuite.GetEquipmentBlackList().Contains((int)equip) &&
                    NetworkServer.active &&
                    IsValidEquipmentPickup(self.pickupIndex) &&
                    IsMultiplayer() &&
                    ShareSuite.ModIsEnabled.Value)
                {
                    foreach (var player in PlayerCharacterMasterController.instances.Select(p => p.master)
                             .Where(p => p.alive || ShareSuite.DeadPlayersGetItems.Value))
                    {
                        SyncToolbotEquip(player, ref equip);

                        // Sync Mul-T Equipment, but perform primary equipment pickup only for clients
                        if (player.inventory == inventory)
                        {
                            continue;
                        }

                        player.inventory.SetEquipmentIndex(equip);
                        self.NetworkpickupIndex = new PickupIndex(player.inventory.currentEquipmentIndex);

                        /*SendPickupMessage.Invoke(inventory.GetComponent<CharacterMaster>(),
                         *  new object[] {player, new PickupIndex(equip)});*/
                    }
                }

                orig(self, body, inventory);
            };
        }
コード例 #2
0
        private static void InitSettings()
        {
            //Build list of settings that can be controlled in the UI
            _availableSettings = new List <object>();

            _availableSettings.Add(ShareSuite.MoneyIsShared);
            _availableSettings.Add(ShareSuite.WhiteItemsShared);
            _availableSettings.Add(ShareSuite.GreenItemsShared);
            _availableSettings.Add(ShareSuite.RedItemsShared);
            _availableSettings.Add(ShareSuite.EquipmentShared);
            _availableSettings.Add(ShareSuite.LunarItemsShared);
            _availableSettings.Add(ShareSuite.BossItemsShared);
            _availableSettings.Add(ShareSuite.QueensGlandsShared);
            _availableSettings.Add(ShareSuite.PrinterCauldronFixEnabled);
            _availableSettings.Add(ShareSuite.DeadPlayersGetItems);
            _availableSettings.Add(ShareSuite.OverridePlayerScalingEnabled);
            _availableSettings.Add(ShareSuite.InteractablesCredit);
            _availableSettings.Add(ShareSuite.OverrideBossLootScalingEnabled);
            _availableSettings.Add(ShareSuite.BossLootCredit);
            _availableSettings.Add(ShareSuite.MoneyScalarEnabled);
            _availableSettings.Add(ShareSuite.MoneyScalar);
            _availableSettings.Add(ShareSuite.ItemBlacklist);
            _availableSettings.Add(ShareSuite.EquipmentBlacklist);

            _bannedItems     = ShareSuite.GetItemBlackList();
            _bannedEquipment = ShareSuite.GetEquipmentBlackList();
        }
コード例 #3
0
        private static void OnGrantEquipment(On.RoR2.GenericPickupController.orig_GrantEquipment orig, GenericPickupController self, CharacterBody body, Inventory inventory)
        {
            #region Sharedequipment

            var equip = PickupCatalog.GetPickupDef(self.pickupIndex).equipmentIndex;

            if (!ShareSuite.GetEquipmentBlackList().Contains((int)equip) &&
                NetworkServer.active &&
                IsValidEquipmentPickup(self.pickupIndex) &&
                GeneralHooks.IsMultiplayer())
            {
                foreach (var player in PlayerCharacterMasterController.instances.Select(p => p.master)
                         .Where(p => p.alive || ShareSuite.DeadPlayersGetItems.Value))
                {
                    SyncToolbotEquip(player, ref equip);

                    // Sync Mul-T Equipment, but perform primary equipment pickup only for clients
                    if (player.inventory == inventory)
                    {
                        continue;
                    }

                    player.inventory.SetEquipmentIndex(equip);
                    self.NetworkpickupIndex = PickupCatalog.FindPickupIndex(equip);
                }
            }

            orig(self, body, inventory);

            #endregion
        }