public static void UsePotion(CustomAlchemyPotion potion, Mobile from) { PlayerMobile player = from as PlayerMobile; if (player == null) { return; } if (!potion.IsChildOf(from.Backpack)) { from.SendMessage("That item must be in your pack in order to use it."); return; } if (!from.CanBeginAction(typeof(CustomAlchemyPotion)) && player.AccessLevel == AccessLevel.Player) { from.SendMessage("You must wait before using another custom alchemy potion."); return; } if (potion.PositiveEffect) { from.SendMessage("Target the creature or player to use this potion on."); } else { from.SendMessage("Target the creature to use this potion on."); } from.Target = new PotionTarget(potion, player); }
protected override void OnTarget(Mobile from, object target) { if (m_Potion == null) { return; } if (m_Potion.Deleted) { return; } if (m_Player == null) { return; } if (m_Player.Deleted || !m_Player.Alive) { return; } if (!m_Potion.IsChildOf(m_Player.Backpack)) { m_Player.SendMessage("That item must be in your pack in order to use it."); return; } Mobile mobileTarget = target as Mobile; if (mobileTarget == null) { m_Player.SendMessage("That is not a creature or player."); return; } if (m_Player.AccessLevel == AccessLevel.Player) { if (!mobileTarget.CanBeDamaged() || !mobileTarget.Alive) { m_Player.SendMessage("That target cannot be damaged."); return; } if (!mobileTarget.InLOS(m_Player) || mobileTarget.Hidden) { m_Player.SendMessage("That target is not in your line of sight."); return; } if (!m_Player.CanBeginAction(typeof(CustomAlchemyPotion))) { from.SendMessage("You must wait before using another custom alchemy potion."); return; } } if (m_Potion.PositiveEffect && m_Player.AccessLevel == AccessLevel.Player) { if (mobileTarget.NextCustomAlchemyPositiveEffectAllowed > DateTime.UtcNow) { string timeRemaining = Utility.CreateTimeRemainingString(DateTime.UtcNow, mobileTarget.NextCustomAlchemyPositiveEffectAllowed, false, true, true, true, true); if (mobileTarget == m_Player) { m_Player.SendMessage("You must wait another " + timeRemaining + " before receieving additional beneficial effects from custom alchemy."); } else { m_Player.SendMessage("That target must wait another " + timeRemaining + " before receieving additional beneficial effects from custom alchemy."); } return; } } ResolvePotion(m_Player, mobileTarget, m_Potion); }