Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion EpicLoot/MagicItemEffects/AddLifeSteal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public static void CheckAndDoLifeSteal(HitData hit)
return;

var lifeStealMultiplier = 0f;
ModifyWithLowHealth.Apply(player, MagicEffectType.LifeSteal, effect => lifeStealMultiplier += MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, weapon, effect, 0.01f));
ModifyWithLowHealth.Apply(player, MagicEffectType.LifeSteal, effect => lifeStealMultiplier += MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, weapon, effect, 0.01f, true));

if (lifeStealMultiplier == 0)
return;
Expand Down
2 changes: 1 addition & 1 deletion EpicLoot/MagicItemEffects/Executioner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public static float ReadExecutionerValue(Player player)
{
float totalMagicEffect;
if (Attack_Patch.ActiveAttack != null)
totalMagicEffect = MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, Attack_Patch.ActiveAttack.m_weapon, MagicEffectType.Executioner, 0.01f);
totalMagicEffect = MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, Attack_Patch.ActiveAttack.m_weapon, MagicEffectType.Executioner, 0.01f, true);
else
totalMagicEffect = player.GetTotalActiveMagicEffectValue(MagicEffectType.Executioner, 0.01f);
return 1 + totalMagicEffect;
Expand Down
24 changes: 19 additions & 5 deletions EpicLoot/MagicItemEffects/MagicEffectsHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,20 +41,34 @@ private static bool IsWeapon(ItemDrop.ItemData itemData)
}
}

private static ItemDrop.ItemData GetIgnoreWeapon(Player player, ItemDrop.ItemData equippedWeapon)
private static bool IsTorch(ItemDrop.ItemData itemData)
{
if (player.m_rightItem == equippedWeapon && IsWeapon(player.m_leftItem))
if (itemData == null)
return false;

switch (itemData.m_shared.m_itemType)
{
case ItemDrop.ItemData.ItemType.Torch:
return true;
default:
return false;
}
}

private static ItemDrop.ItemData GetIgnoreWeapon(Player player, ItemDrop.ItemData equippedWeapon, bool excludeTorch = false)
{
if (player.m_rightItem == equippedWeapon && IsWeapon(player.m_leftItem) && (!excludeTorch || !IsTorch(player.m_leftItem)))
return player.m_leftItem;
if (player.m_leftItem == equippedWeapon && IsWeapon(player.m_rightItem))
if (player.m_leftItem == equippedWeapon && IsWeapon(player.m_rightItem) && (!excludeTorch || !IsTorch(player.m_rightItem)))
return player.m_rightItem;

return null;
}

public static float GetTotalActiveMagicEffectValueForWeapon(Player player, ItemDrop.ItemData itemData, string effectType, float scale = 1.0f)
public static float GetTotalActiveMagicEffectValueForWeapon(Player player, ItemDrop.ItemData itemData, string effectType, float scale = 1.0f, bool addOffhandTorchEffects = false)
{
if (player != null)
return player.GetTotalActiveMagicEffectValue(effectType, scale, GetIgnoreWeapon(player, itemData));
return player.GetTotalActiveMagicEffectValue(effectType, scale, GetIgnoreWeapon(player, itemData, addOffhandTorchEffects));
if (itemData.IsMagic(out var magicItem))
return magicItem.GetTotalEffectValue(effectType, scale);
return 0;
Expand Down
2 changes: 1 addition & 1 deletion EpicLoot/MagicItemEffects/ModifyBackstab.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public static bool DoPrefix(Attack __instance)
Override = true;
OriginalValue = weapon.m_shared.m_backstabBonus;

var totalBackstabMod = MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance.m_weapon, MagicEffectType.ModifyBackstab, 0.01f);
var totalBackstabMod = MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance.m_weapon, MagicEffectType.ModifyBackstab, 0.01f, true);
weapon.m_shared.m_backstabBonus *= 1.0f + totalBackstabMod;
}

Expand Down
18 changes: 9 additions & 9 deletions EpicLoot/MagicItemEffects/ModifyDamage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,18 @@ public static void Postfix(ItemDrop.ItemData __instance, ref HitData.DamageTypes
var player = PlayerExtensions.GetPlayerWithEquippedItem(__instance);

// Add damages first
__result.m_blunt += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddBluntDamage);
__result.m_slash += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddSlashingDamage);
__result.m_pierce += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddPiercingDamage);
__result.m_fire += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddFireDamage);
__result.m_frost += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddFrostDamage);
__result.m_lightning += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddLightningDamage);
__result.m_poison += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddPoisonDamage);
__result.m_spirit += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddSpiritDamage);
__result.m_blunt += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddBluntDamage, 1.0f, true);
__result.m_slash += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddSlashingDamage, 1.0f, true);
__result.m_pierce += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddPiercingDamage, 1.0f, true);
__result.m_fire += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddFireDamage, 1.0f, true);
__result.m_frost += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddFrostDamage, 1.0f, true);
__result.m_lightning += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddLightningDamage, 1.0f, true);
__result.m_poison += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddPoisonDamage, 1.0f, true);
__result.m_spirit += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddSpiritDamage, 1.0f, true);

if (magicItemskillType == Skills.SkillType.Axes)
{
__result.m_chop += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddSlashingDamage);
__result.m_chop += totalDamage * MagicEffectsHelper.GetTotalActiveMagicEffectValueForWeapon(player, __instance, MagicEffectType.AddSlashingDamage, 1.0f, true);
}
else if (magicItemskillType == Skills.SkillType.Pickaxes)
{
Expand Down