Exemplo n.º 1
0
        public static string GetMovementModifier(ItemDrop.ItemData item, MagicItem magicItem, out bool magicMovement, out bool removePenalty)
        {
            magicMovement = magicItem.HasEffect(MagicEffectType.ModifyMovementSpeed);
            removePenalty = magicItem.HasEffect(MagicEffectType.RemoveSpeedPenalty);

            var itemMovementModifier = removePenalty ? 0 : item.m_shared.m_movementModifier * 100f;

            if (magicMovement)
            {
                itemMovementModifier += magicItem.GetTotalEffectValue(MagicEffectType.ModifyMovementSpeed);
            }

            return((itemMovementModifier == 0) ? "0%" : $"{itemMovementModifier:+0;-0}%");
        }
Exemplo n.º 2
0
 public static void AddDebugMagicEffects(MagicItem item)
 {
     if (!string.IsNullOrEmpty(ForcedMagicEffect) && !item.HasEffect(ForcedMagicEffect))
     {
         EpicLoot.Log($"AddDebugMagicEffect {ForcedMagicEffect}");
         item.Effects.Add(RollEffect(MagicItemEffectDefinitions.Get(ForcedMagicEffect), item.Rarity));
     }
 }
        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);
        }
        public static string GetDamageTooltipString(MagicItem item, HitData.DamageTypes instance, Skills.SkillType skillType, string magicColor)
        {
            if (Player.m_localPlayer == null)
            {
                return("");
            }

            var allMagic       = item.HasEffect(MagicEffectType.ModifyDamage);
            var physMagic      = item.HasEffect(MagicEffectType.ModifyPhysicalDamage);
            var elemMagic      = item.HasEffect(MagicEffectType.ModifyElementalDamage);
            var bluntMagic     = item.HasEffect(MagicEffectType.AddBluntDamage);
            var slashMagic     = item.HasEffect(MagicEffectType.AddSlashingDamage);
            var pierceMagic    = item.HasEffect(MagicEffectType.AddPiercingDamage);
            var fireMagic      = item.HasEffect(MagicEffectType.AddFireDamage);
            var frostMagic     = item.HasEffect(MagicEffectType.AddFrostDamage);
            var lightningMagic = item.HasEffect(MagicEffectType.AddLightningDamage);
            var poisonMagic    = item.HasEffect(MagicEffectType.AddPoisonDamage);
            var spiritMagic    = item.HasEffect(MagicEffectType.AddSpiritDamage);

            Player.m_localPlayer.GetSkills().GetRandomSkillRange(out var min, out var max, skillType);
            var str = "";

            if (instance.m_damage != 0.0)
            {
                str = str + "\n$inventory_damage: " + DamageRange(instance.m_damage, min, max, allMagic, magicColor);
            }
            if (instance.m_blunt != 0.0)
            {
                var magic = allMagic || physMagic || bluntMagic;
                str = str + "\n$inventory_blunt: " + DamageRange(instance.m_blunt, min, max, magic, magicColor);
            }
            if (instance.m_slash != 0.0)
            {
                var magic = allMagic || physMagic || slashMagic;
                str = str + "\n$inventory_slash: " + DamageRange(instance.m_slash, min, max, magic, magicColor);
            }
            if (instance.m_pierce != 0.0)
            {
                var magic = allMagic || physMagic || pierceMagic;
                str = str + "\n$inventory_pierce: " + DamageRange(instance.m_pierce, min, max, magic, magicColor);
            }
            if (instance.m_fire != 0.0)
            {
                var magic = allMagic || elemMagic || fireMagic;
                str = str + "\n$inventory_fire: " + DamageRange(instance.m_fire, min, max, magic, magicColor);
            }
            if (instance.m_frost != 0.0)
            {
                var magic = allMagic || elemMagic || frostMagic;
                str = str + "\n$inventory_frost: " + DamageRange(instance.m_frost, min, max, magic, magicColor);
            }
            if (instance.m_lightning != 0.0)
            {
                var magic = allMagic || elemMagic || lightningMagic;
                str = str + "\n$inventory_lightning: " + DamageRange(instance.m_lightning, min, max, magic, magicColor);
            }
            if (instance.m_poison != 0.0)
            {
                var magic = allMagic || elemMagic || poisonMagic;
                str = str + "\n$inventory_poison: " + DamageRange(instance.m_poison, min, max, magic, magicColor);
            }
            if (instance.m_spirit != 0.0)
            {
                var magic = allMagic || elemMagic || spiritMagic;
                str = str + "\n$inventory_spirit: " + DamageRange(instance.m_spirit, min, max, magic, magicColor);
            }
            return(str);
        }