/// <summary> /// Allow the model to update any model specific things about changing professions /// <param name="character">The character who the defaults are for.</param> /// </summary> public virtual void UpdateProfessions(Character character) { #region Buffs related to Professions to Force Enable // Miners should always have this buff activated, others shouldn't have this buff if (character.HasProfession(Profession.Mining) & !character.ActiveBuffsContains("Toughness")) { character.ActiveBuffsAdd("Toughness"); } else if (character.ActiveBuffsContains("Toughness") && !character.HasProfession(Profession.Mining)) { character.ActiveBuffs.Remove(Buff.GetBuffByName("Toughness")); } // Skinners should always have this buff activated, others shouldn't have this buff if (character.HasProfession(Profession.Skinning) & !character.ActiveBuffsContains("Master of Anatomy")) { character.ActiveBuffsAdd("Master of Anatomy"); } else if (character.ActiveBuffsContains("Master of Anatomy") && !character.HasProfession(Profession.Skinning)) { character.ActiveBuffs.Remove(Buff.GetBuffByName("Master of Anatomy")); } // Herbalists should always have this buff activated, others shouldn't have this buff if (character.HasProfession(Profession.Herbalism) & !character.ActiveBuffsContains("Lifeblood")) { character.ActiveBuffsAdd("Lifeblood"); } else if (character.ActiveBuffsContains("Lifeblood") && !character.HasProfession(Profession.Herbalism)) { character.ActiveBuffs.Remove(Buff.GetBuffByName("Lifeblood")); } // Engineers should always have this buff activated IF the Primary is if (character.HasProfession(Profession.Engineering)) { List<String> list = new List<string>() { "Runic Mana Injector", "Runic Healing Injector", }; foreach (String name in list) { if (character.ActiveBuffs.Contains(Buff.GetBuffByName(name)) && !character.ActiveBuffs.Contains(Buff.GetBuffByName(name + " (Engineer Bonus)"))) { character.ActiveBuffs.Add(Buff.GetBuffByName(name + " (Engineer Bonus)")); } } } // NOTE: Might do this again for Alchemy and Mixology but // there could be conflicts for different specialties, // need to investigate first #endregion for (int i = 0; i < character.CurrentGemmingTemplates.Count; i++) { if (character.CurrentGemmingTemplates[i].Group.Contains("Jewelcrafter")) { character.CurrentGemmingTemplates[i].Enabled = character.HasProfession(Profession.Jewelcrafting); } else if (character.CurrentGemmingTemplates[i].Group.Contains("Engineer")) { character.CurrentGemmingTemplates[i].Enabled = character.HasProfession(Profession.Engineering); } } }
/// <summary> /// Hide an enchant that is tie to a profession when: /// <para>- You have the Option active in the General Settings</para> /// <para>- You do not have the profession</para> /// <para>Otherwise, this function returns true so that non-profession enchants are not affected.</para> /// <para>NOTE: There is no reason to override this function</para> /// </summary> /// <param name="enchant">The Enchant to check</param> /// <returns>Whether the Enchant should be hidden, defaults to true unless specific conditions are met.</returns> public virtual bool IsProfEnchantRelevant(Enchant enchant, Character character) { try { #region Enchants related to Professions to Hide/Show string name = enchant.Name; if (Rawr.Properties.GeneralSettings.Default.HideProfEnchants) { if (!character.HasProfession(Profession.Enchanting)) { if (enchant.Slot == ItemSlot.Finger) { return false; } } if (!character.HasProfession(Profession.Engineering)) { if (name.Contains("Frag Belt") || name.Contains("Mind Amplification Dish") || name.Contains("Flexweave Underlay") || name.Contains("Hyperspeed Accelerators") || name.Contains("Reticulated Armor Webbing") || name.Contains("Nitro Boosts") || name.Contains("Springy Arachnoweave") || name.Contains("Hand-Mounted") || name.Contains("Grounded Plasma Shield") || name.Contains("Quickflip Deflection Plates") || name.Contains("Spinal Healing Injector") || name.Contains("Synapse Springs") || name.Contains("Tazik Shocker") || name.Contains("Z50 Mana Gulper") ) { return false; } } if (!character.HasProfession(Profession.Inscription)) { if ((name.Contains("Master's") && !name.Contains("Spellthread")) || name.Contains("Felfire Inscription") || name.Contains("Inscription of the Earth Prince") || name.Contains("Lionsmane Inscription") || name.Contains("Swiftsteel Inscription")) { return false; } } if (!character.HasProfession(Profession.Leatherworking)) { if (name.Contains("Fur Lining") || name.Contains("Nerubian Leg Reinforcements") || name.Contains("Draconic Embossment") || name.Contains("Charscale Leg Reinforcements") || name.Contains("Dragonbone Leg Reinforcements") || name.Contains("Drakehide Leg Reinforcements")) { return false; } } if (!character.HasProfession(Profession.Tailoring)) { if (name.Contains("Embroidery") || name.Contains("Sanctified Spellthread") || name.Contains("Master's Spellthread")) { return false; } } } #endregion return true; } catch (Exception) { return true; } }
/// <summary> /// Hide a tinkering that is tied to a profession when: /// <para>- You have the Option active in the General Settings</para> /// <para>- You do not have the profession</para> /// <para>Otherwise, this function returns true so that non-profession tinkerings are not affected.</para> /// <para>NOTE: There is no reason to override this function</para> /// </summary> /// <param name="enchant">The Tinkering to check</param> /// <returns>Whether the Tinkering should be hidden, defaults to true unless specific conditions are met.</returns> public virtual bool IsProfTinkeringRelevant(Tinkering tinkering, Character character) { try { #region Tinkerings related to Professions to Hide/Show if (Rawr.Properties.GeneralSettings.Default.HideProfEnchants) { if (!character.HasProfession(Profession.Engineering)) { return false; } } #endregion return true; } catch (Exception) { return true; } }
public virtual bool IsBuffRelevant(Buff buff, Character character) { try { // Profession Restrictions Enforcement if (character != null && Rawr.Properties.GeneralSettings.Default.HideProfEnchants && !character.HasProfession(buff.Professions)) return false; // Class Restrictions Enforcement else if (character != null && !buff.AllowedClasses.Contains(character.Class)) return false; // if it's a set bonus and class matches treat it as relevant if (!string.IsNullOrEmpty(buff.SetName) && buff.AllowedClasses.Contains(character.Class)) return true; return HasRelevantStats(buff.GetTotalStats()); } catch (Exception) { return false; } }