Пример #1
0
        public override void OnDoubleClick(Mobile from)
        {
            if (from is TeiravonMobile)
            {
                TeiravonMobile m_Player = (TeiravonMobile)from;

                if (m_Player.IsShifted() && m_Player.Shapeshifted)
                {
                    m_Player.SendMessage("You cannot apply bandages while shapeshifted.");
                    return;
                }
            }

            if (from.InRange(GetWorldLocation(), Core.AOS ? 2 : 1))
            {
                from.RevealingAction();

                from.SendLocalizedMessage(500948);                   // Who will you use the bandages on?

                from.Target = new InternalTarget(this);
            }
            else
            {
                from.SendLocalizedMessage(500295);                   // You are too far away to do that.
            }
        }
Пример #2
0
        public override void OnResponse(Server.Network.NetState sender, RelayInfo info)
        {
            switch (info.ButtonID)
            {
            case (int)Buttons.CAdd1: AddTransformation(1);
                break;

            case (int)Buttons.CAdd2: AddTransformation(2);
                break;

            case (int)Buttons.CAdd3: AddTransformation(3);
                break;

            case (int)Buttons.CAdd4: AddTransformation(4);
                break;

            case (int)Buttons.CAdd5: AddTransformation(5);
                break;

            case (int)Buttons.CAdd6: AddTransformation(6);
                break;

            case (int)Buttons.CAdd7: AddTransformation(7);
                break;

            case (int)Buttons.CDelete1: DeleteSlot(1, m_Player);
                break;

            case (int)Buttons.CDelete2: DeleteSlot(2, m_Player);
                break;

            case (int)Buttons.CDelete3: DeleteSlot(3, m_Player);
                break;

            case (int)Buttons.CDelete4: DeleteSlot(4, m_Player);
                break;

            case (int)Buttons.CDelete5: DeleteSlot(5, m_Player);
                break;

            case (int)Buttons.CDelete6: DeleteSlot(6, m_Player);
                break;

            case (int)Buttons.CDelete7: DeleteSlot(7, m_Player);
                break;

            case (int)Buttons.Information:

                m_Player.SendMessage("Target a creature.");
                m_Player.Target = new TransformationInformation(m_Player);
                break;

            case (int)Buttons.CTransform1:
                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 1);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 1, m_Player);
                }

                break;

            case (int)Buttons.CTransform2:

                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 2);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 2, m_Player);
                }

                break;

            case (int)Buttons.CTransform3:

                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 3);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 3, m_Player);
                }

                break;

            case (int)Buttons.CTransform4:

                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 4);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 4, m_Player);
                }

                break;

            case (int)Buttons.CTransform5:

                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 5);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 5, m_Player);
                }

                break;

            case (int)Buttons.CTransform6:

                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 6);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 6, m_Player);
                }

                break;

            case (int)Buttons.CTransform7:

                if (m_Player.IsShifted() || m_Player.Shapeshifted)
                {
                    NoTransform(m_Player, 7);
                }
                else if (NextTransform(m_Player))
                {
                    break;
                }
                else
                {
                    ShapeshiftFunctions(true, 7, m_Player);
                }

                break;

            case (int)Buttons.Cancel:
                ShapeshiftFunctions(false, 1, m_Player);
                break;

            default:
                break;
            }
        }
Пример #3
0
        public NewShapeshiftGump(TeiravonMobile from)
            : base(0, 0)
        {
            m_Player = from;
            max      = 1 + m_Player.PlayerLevel / (m_Player.IsShapeshifter()? 4 : 7);
            if (max > 7)
            {
                max = 7;
            }

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;

            m_Player = (TeiravonMobile)from;
            m_Player.CloseGump(typeof(NewShapeshiftGump));
            this.AddPage(0);
            AddBackground(312, 10, 30 + (max * 98), 140, 9260);
            //this.AddImage(328, -5, 30061);
            //this.AddImage(328, 55 + (max * 82), 30077);

            //AddLabel(355,  115, 2930, @"Evaluate creature");
            AddButton(330, 120, 22153, 22155, (int)Buttons.Information, GumpButtonType.Reply, 0);

            if (m_Player.IsShifted() && m_Player.Shapeshifted)
            {
                //AddLabel(401, 487, 2930, @"Undo transformation");
                AddButton(276 + ((30 + (max * 98))), 112, 5052, 5053, (int)Buttons.Cancel, GumpButtonType.Reply, 0);
            }

            bool DeleteTime = false;

            if (m_Player.ShapeshiftSlotDelete <= DateTime.Now)
            {
                DeleteTime = true;
            }

            switch (max)
            {
            case 1:
                if (FilledSlot(1, m_Player))
                {
                    FullSlot((int)Buttons.CTransform1, 1, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete1, 1);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd1, 1);
                }

                break;

            case 2:

                if (FilledSlot(2, m_Player))
                {
                    FullSlot((int)Buttons.CTransform2, 2, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete2, 2);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd2, 2);
                }

                goto case 1;

            case 3:
                if (FilledSlot(3, m_Player))
                {
                    FullSlot((int)Buttons.CTransform3, 3, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete3, 3);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd3, 3);
                }

                goto case 2;

            case 4:
                if (FilledSlot(4, m_Player))
                {
                    FullSlot((int)Buttons.CTransform4, 4, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete4, 4);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd4, 4);
                }

                goto case 3;

            case 5:

                if (FilledSlot(5, m_Player))
                {
                    FullSlot((int)Buttons.CTransform5, 5, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete5, 5);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd5, 5);
                }

                goto case 4;

            case 6:

                if (FilledSlot(6, m_Player))
                {
                    FullSlot((int)Buttons.CTransform6, 6, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete6, 6);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd6, 6);
                }

                goto case 5;

            case 7:

                if (FilledSlot(7, m_Player))
                {
                    FullSlot((int)Buttons.CTransform7, 7, m_Player);

                    if (DeleteTime)
                    {
                        DeleteButton((int)Buttons.CDelete7, 7);
                    }
                }
                else
                {
                    EmptySlot((int)Buttons.CAdd7, 7);
                }

                goto case 6;

            default: break;
            }
        }
Пример #4
0
        public static int ComputeLevelFor(Mobile from)
        {
            if (m_LevelOverride > int.MinValue)
            {
                return(m_LevelOverride);
            }

            bool teiravon     = false;
            bool drow         = false;
            bool lowlight     = false;
            bool shapeshifted = false;

            if (from is TeiravonMobile)
            {
                teiravon = true;

                TeiravonMobile m_Player = (TeiravonMobile)from;

                if (m_Player.IsDrow())
                {
                    drow = true;
                }

                else if (m_Player.IsElf() || m_Player.IsDwarf() || m_Player.IsDuergar() || m_Player.IsOrc() || m_Player.IsHalfElf() || m_Player.IsGoblin() || m_Player.IsGnome())
                {
                    lowlight = true;
                }

                else if (m_Player.IsShifted() && m_Player.Shapeshifted)
                {
                    shapeshifted = true;
                }
            }

            int hours, minutes;

            Server.Items.Clock.GetTime(from.Map, from.X, from.Y, out hours, out minutes);

            /* OSI times:
             *
             * Midnight ->  3:59 AM : Night
             *  4:00 AM -> 11:59 PM : Day
             *
             * RunUO times:
             *
             * 10:00 PM -> 11:59 PM : Scale to night
             * Midnight ->  3:59 AM : Night
             *  4:00 AM ->  5:59 AM : Scale to day
             *  6:00 AM ->  9:59 PM : Day
             *
             * Drow times:
             *
             * 10:00 PM -> 11:59 PM : Scale to day
             * Midnight ->  3:59 AM : Day
             *  4:00 AM ->  5:59 AM : Scale to night
             *  6:00 AM ->  9:59 PM : Night
             */

            if (!teiravon)
            {
                if (hours < 4)
                {
                    return(NightLevel);
                }

                if (hours < 6)
                {
                    return(NightLevel + (((((hours - 4) * 60) + minutes) * (DayLevel - NightLevel)) / 120));
                }

                if (hours < 22)
                {
                    return(DayLevel);
                }

                if (hours < 24)
                {
                    return(DayLevel + (((((hours - 22) * 60) + minutes) * (NightLevel - DayLevel)) / 120));
                }
            }
            else
            {
                if (!drow && !lowlight && !shapeshifted)
                {
                    // No Low-Light vision or Infravision
                    if (hours < 4)
                    {
                        return(NightLevel);
                    }

                    if (hours < 6)
                    {
                        return(NightLevel + (((((hours - 4) * 60) + minutes) * (DayLevel - NightLevel)) / 120));
                    }

                    if (hours < 22)
                    {
                        return(DayLevel);
                    }

                    if (hours < 24)
                    {
                        return(DayLevel + (((((hours - 22) * 60) + minutes) * (NightLevel - DayLevel)) / 120));
                    }
                }
                else if (shapeshifted && !drow)
                {
                    if (hours < 4)                       //goes from 10 to 5
                    {
                        return(10 - ((((hours * 60) + minutes) * 5) / 240));
                    }

                    if (hours < 6)                      //goes from 5 -> 0
                    {
                        return(5 - (((((hours - 4) * 60) + minutes) * 5) / 120));
                    }

                    if (hours < 22)                       //is zero during daytime
                    {
                        return(DayLevel);
                    }

                    if (hours < 24)                       //goes from 0 -> 10
                    {
                        return(DayLevel + (((((hours - 22) * 60) + minutes) * 10) / 120));
                    }
                }
                else if (lowlight)
                {
                    // Low-Light vision
                    if (hours < 4)                       //goes from 12 to 6
                    {
                        return(12 - ((((hours * 60) + minutes) * 6) / 240));
                    }

                    if (hours < 6)                       //goes from 6 to 0
                    {
                        return(6 - (((((hours - 4) * 60) + minutes) * 6) / 120));
                    }

                    if (hours < 22)                       //zero
                    {
                        return(DayLevel);
                    }

                    if (hours < 24)                       //goes from 0 to 12
                    {
                        return(DayLevel + (((((hours - 22) * 60) + minutes) * 12) / 120));
                    }
                }
                else
                {
                    // Simulate Drow infravision
                    int light = 0;

                    if (hours < 4)
                    {
                        return(DayLevel);
                    }

                    if (hours < 6)
                    {
                        light = DayLevel + (((((hours - 4) * 60) + minutes) * (NightLevel - DayLevel)) / 120);
                        return(((light > DungeonLevel) || (light < 0)) ? DungeonLevel : light);
                    }

                    if (hours < 22)
                    {
                        return(NightLevel);
                    }

                    if (hours < 24)
                    {
                        light = NightLevel + (((((hours - 22) * 60) + minutes) * (DayLevel - NightLevel)) / 120);
                        return(((light > DungeonLevel) || (light < 0)) ? DungeonLevel : light);
                    }
                }
            }

            return(NightLevel);            // should never be
        }
Пример #5
0
        public override void OnDoubleClick(Mobile from)
        {
            //STARTMOD: Teiravon
            if (!from.CanBeginAction(typeof(BattleNet)))
            {
                from.SendMessage("You cannot do this yet.");
            }
            if (from is TeiravonMobile)
            {
                TeiravonMobile m_Player = (TeiravonMobile)from;

                if ((m_Player.IsShapeshifter() || m_Player.IsForester()) && (m_Player.Shapeshifted || m_Player.IsShifted()))
                {
                    m_Player.SendMessage("You cannot use nets while shapeshifted.");
                    return;
                }
            }

            if (IsChildOf(from.Backpack))
            {
                from.SendMessage("Who is your target?");
                from.BeginTarget(-1, true, TargetFlags.None, new TargetCallback(OnTarget));
            }

            else
            {
                from.SendLocalizedMessage(1042001);  // That must be in your pack for you to use it.
            }
        }
Пример #6
0
        public override void OnDoubleClick(Mobile from)
        {
            if (!Movable || !from.CanBeginAction(typeof(BasePotion)))
            {
                return;
            }

            if (from.InRange(this.GetWorldLocation(), 1))
            {
                //STARTMOD: Teiravon
                if (from is TeiravonMobile)
                {
                    TeiravonMobile m_Player = (TeiravonMobile)from;

                    if ((m_Player.IsShapeshifter() || m_Player.IsForester()) && (m_Player.Shapeshifted || m_Player.IsShifted()))
                    {
                        m_Player.SendMessage("You cannot use potions while shapeshifted.");
                        return;
                    }
                }
                //ENDMOD: Teiravon

                if (!RequireFreeHand || HasFreeHand(from))
                {
                    Drink(from);
                }
                else
                {
                    from.SendLocalizedMessage(502172);                       // You must have a free hand to drink a potion.
                }
            }
            else
            {
                from.SendLocalizedMessage(502138);                   // That is too far away for you to use
            }
        }