diff --git a/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs b/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs index 586c6a40d..24f954913 100644 --- a/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs +++ b/Projects/UOContent/Items/Skill Items/Magical/Potions/Explosion Potions/BaseExplosionPotion.cs @@ -295,7 +295,13 @@ public abstract partial class BaseExplosionPotion : BasePotion var parent = _potion.FindParent(_from); - if (RemainingCount == 0) + if (RemainingCount > 3) + { + return; + } + + // Remaining decrements after OnTick so it is off by 1 + if (RemainingCount <= 1) { Point3D loc; Map map; @@ -317,16 +323,13 @@ public abstract partial class BaseExplosionPotion : BasePotion _potion.Explode(_from, true, loc, map); } - else if (RemainingCount <= 3) + else if (parent is Item item) { - if (parent is Item item) - { - item.PublicOverheadMessage(MessageType.Regular, 0x22, false, RemainingCount.ToString()); - } - else if (parent is Mobile mobile) - { - mobile.PublicOverheadMessage(MessageType.Regular, 0x22, false, RemainingCount.ToString()); - } + item.PublicOverheadMessage(MessageType.Regular, 0x22, false, RemainingCount.ToString()); + } + else if (parent is Mobile mobile) + { + mobile.PublicOverheadMessage(MessageType.Regular, 0x22, false, RemainingCount.ToString()); } } } diff --git a/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs b/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs index 290ae42b0..a7e59dfd9 100644 --- a/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs +++ b/Projects/UOContent/Mobiles/Abilities/MonsterAbilitySingleTargetDoT.cs @@ -62,14 +62,15 @@ public abstract class MonsterAbilitySingleTargetDoT : MonsterAbilitySingleTarget protected override void OnTick() { - var delay = RemainingCount == 0 + var delay = RemainingCount <= 1 ? TimeSpan.MinValue : Utility.RandomMinMax(_ability.MinDelay, _ability.MaxDelay); _ability.EffectTick(_source, _defender, ref delay); Interval = delay; - if (RemainingCount == 0) + // Remaining decrements after OnTick so it is off by 1 + if (RemainingCount <= 1) { _ability.RemoveEffect(_source, _defender); _ability.OnEffectExpired(_source, _defender);