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}%"); }
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); }