Пример #1
0
        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);
        }