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); }; }
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(); }
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 }