Beispiel #1
0
        public override void OnDeath(Container c)
        {
            base.OnDeath(c);
            SilverSerpentVenom ingut = new SilverSerpentVenom();

            ingut.Amount = Utility.RandomMinMax(1, 5);
            c.DropItem(ingut);
        }
Beispiel #2
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            if (m_Item.Deleted)
            {
                return;
            }

            Mobile    from  = sender.Mobile;
            int       id    = info.ButtonID;
            GameBoard board = m_Item.Board;

            switch (id)
            {
            case 5:                     // move up
            {
                if (m_SelectedRow == -1)
                {
                    return;
                }

                board.GamePanel.MoveUp(m_SelectedRow);
                board.CurrentMovements++;

                from.PlaySound(0xFA);
                from.SendGump(new PuzzleBoardGump(m_Item, m_SelectedRow));

                break;
            }

            case 6:                     // move down
            {
                if (m_SelectedRow == -1)
                {
                    return;
                }

                board.GamePanel.MoveDown(m_SelectedRow);
                board.CurrentMovements++;

                from.PlaySound(0xFA);
                from.SendGump(new PuzzleBoardGump(m_Item, m_SelectedRow));

                break;
            }

            case 7:                     // apply
            {
                if (board.IsCorrect())
                {
                    from.LocalOverheadMessage(MessageType.Regular, 0x3B2, true, "Correct Code Entered. Crystal Lock Disengaged.");
                    from.PlaySound(0xF7);

                    m_Item.Delete();

                    Item reward;

                    switch (Utility.Random(10))
                    {
                    default:
                    case 0: reward = new VoidEssence(30); break;

                    case 1: reward = new SilverSerpentVenom(30); break;

                    case 2: reward = new ScouringToxin(30); break;

                    case 3: reward = new ToxicVenomSac(30); break;

                    case 4: reward = new KneadingBowl(); break;

                    case 5: reward = new TotemPole(); break;

                    case 6: reward = new DustyPillow(); break;

                    case 7: reward = new Plinth(); break;

                    case 8: reward = new FlouredBreadBoard(); break;

                    case 9: reward = new LuckyCoin(); break;
                    }

                    from.PlaceInBackpack(reward);

                    PlayerMobile pm = from as PlayerMobile;

                    if (pm != null && !Misc.TestCenter.Enabled)
                    {
                        pm.NextPuzzleAttempt = DateTime.UtcNow + TimeSpan.FromDays(1.0);
                    }
                }
                else
                {
                    m_Item.PublicOverheadMessage(MessageType.Regular, 0x3B2, true, "Incorrect Code Sequence. Access Denied");
                    from.PlaySound(0xFD);
                }

                break;
            }

            case 8:                     // cancel
            {
                board.Reset();

                from.PlaySound(0xFB);
                from.SendGump(new PuzzleBoardGump(m_Item, -1));

                break;
            }

            default:
            {
                if (id >= 1 && id <= 4)
                {
                    from.SendGump(new PuzzleBoardGump(m_Item, id - 1));
                }

                break;
            }
            }
        }