public static List <string> GetAllowedNamesFromListAllRequired(List <ItemNameEntry> nameEntries, ItemDrop.ItemData item, MagicItem magicItem) { var results = new List <string>(); foreach (var nameEntry in nameEntries) { var itemType = item.m_shared.m_itemType; if (nameEntry.Types.Count > 0 && !nameEntry.Types.Contains(itemType)) { continue; } if (IsValidTypeForSkillCheck(itemType) && nameEntry.Skills.Count > 0 && !nameEntry.Skills.Contains(item.m_shared.m_skillType)) { continue; } if (nameEntry.MagicEffects.Count > 0 && !magicItem.HasAnyEffect(nameEntry.MagicEffects)) { continue; } results.Add(nameEntry.Name); } return(results); }
public bool CheckRequirements(ExtendedItemData itemData, MagicItem magicItem) { if (Requirements == null) { return(true); } if (Requirements.NoRoll) { return(false); } if (Requirements.ExclusiveSelf && magicItem.HasEffect(Type)) { return(false); } if (Requirements.ExclusiveEffectTypes?.Count > 0 && magicItem.HasAnyEffect(Requirements.ExclusiveEffectTypes)) { return(false); } if (Requirements.AllowedItemTypes?.Count > 0 && !Requirements.AllowedItemTypes.Contains(itemData.m_shared.m_itemType)) { return(false); } if (Requirements.AllowedRarities?.Count > 0 && !Requirements.AllowedRarities.Contains(magicItem.Rarity)) { return(false); } if (Requirements.AllowedItemNames?.Count > 0 && !Requirements.AllowedItemNames.Contains(itemData.m_shared.m_name)) { return(false); } if (Requirements.ItemHasPhysicalDamage && itemData.m_shared.m_damages.GetTotalPhysicalDamage() <= 0) { return(false); } if (Requirements.ItemHasElementalDamage && itemData.m_shared.m_damages.GetTotalElementalDamage() <= 0) { return(false); } if (Requirements.ItemUsesDurability && !itemData.m_shared.m_useDurability) { return(false); } if (Requirements.ItemHasNegativeMovementSpeedModifier && itemData.m_shared.m_movementModifier >= 0) { return(false); } if (Requirements.ItemHasBlockPower && itemData.m_shared.m_blockPower <= 0) { return(false); } if (Requirements.ItemHasParryPower && itemData.m_shared.m_deflectionForce <= 0) { return(false); } if (Requirements.ItemHasArmor && itemData.m_shared.m_armor <= 0) { return(false); } if (Requirements.ItemHasBackstabBonus && itemData.m_shared.m_backstabBonus <= 0) { return(false); } if (Requirements.ItemUsesStaminaOnAttack && itemData.m_shared.m_attack.m_attackStamina <= 0 && itemData.m_shared.m_secondaryAttack.m_attackStamina <= 0) { return(false); } return(true); }