コード例 #1
0
        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);
        }
コード例 #2
0
            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);
            }