private bool OnEquipItem(On.Humanoid.orig_EquipItem orig, Humanoid self, ItemDrop.ItemData item, bool triggerEquipEffects) { bool result = orig(self, item, triggerEquipEffects); if (Player.m_localPlayer && result && item != null && item.m_shared.m_name == BlueprintRunePrefab.BlueprintRuneItemName) { originalPlaceDistance = Math.Max(Player.m_localPlayer.m_maxPlaceDistance, 8f); Player.m_localPlayer.m_maxPlaceDistance = rayDistanceConfig.Value; Jotunn.Logger.LogDebug("Setting placeDistance to " + Player.m_localPlayer.m_maxPlaceDistance); } return(result); }
private static bool Humanoid_EquipItem(On.Humanoid.orig_EquipItem orig, Humanoid self, ItemDrop.ItemData item, bool triggerEquipEffects) { try { if (!self.IsPlayer() || item.m_equiped) { return(orig(self, item, triggerEquipEffects)); } BepInEx.Configuration.ConfigEntry <int> conf = null; foreach (var i in Config.GeneralSettings.Keys) { if (itemLookup.ContainsKey(item.m_shared.m_name) && i.Key.Equals(itemLookup[item.m_shared.m_name].name)) { Config.GeneralSettings.TryGetEntry(i, out conf); } } if (conf != null) { if (Enum.TryParse <Skills.SkillType>(conf.Definition.Section, out Skills.SkillType type)) { var skill = self.GetSkills().m_skillData[type]; Main.log.LogDebug($"Found LevelGate of {conf.Value} for {itemLookup[item.m_shared.m_name].name} checked against player's {type} level: {skill.m_level}"); if (conf.Value > skill.m_level) { self.Message(MessageHud.MessageType.Center, $"Your {type} skill prevents you from equipping the {Localization.instance.Localize(item.m_shared.m_name)}. Min skill required: {conf.Value}"); return(true); } } } return(orig(self, item, triggerEquipEffects)); } catch (Exception ex) { Main.log.LogError(ex); return(orig(self, item, triggerEquipEffects)); } }