Ejemplo n.º 1
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (!this.m_Context.Registered)
                {
                    return;
                }

                int index = this.m_Index;

                if (index < 0 || index >= this.m_Participant.Players.Length)
                {
                    return;
                }

                Mobile mob = targeted as Mobile;

                if (mob == null)
                {
                    from.SendMessage("That is not a player.");
                }
                else if (!mob.Player)
                {
                    if (mob.Body.IsHuman)
                    {
                        mob.SayTo(from, 1005443); // Nay, I would rather stay here and watch a nail rust.
                    }
                    else
                    {
                        mob.SayTo(from, 1005444); // The creature ignores your offer.
                    }
                }
                else if (AcceptDuelGump.IsIgnored(mob, from) || mob.Blessed)
                {
                    from.SendMessage("They ignore your offer.");
                }
                else
                {
                    PlayerMobile pm = mob as PlayerMobile;

                    if (pm == null)
                    {
                        return;
                    }

                    if (pm.DuelContext != null)
                    {
                        from.SendMessage("{0} cannot fight because they are already assigned to another duel.", pm.Name);
                    }
                    else if (DuelContext.CheckCombat(pm))
                    {
                        from.SendMessage("{0} cannot fight because they have recently been in combat with another player.", pm.Name);
                    }
                    else if (mob.HasGump(typeof(AcceptDuelGump)))
                    {
                        from.SendMessage("{0} has already been offered a duel.");
                    }
                    else
                    {
                        from.SendMessage("You send {0} to {1}.", this.m_Participant.Find(from) == null ? "a challenge" : "an invitation", mob.Name);
                        mob.SendGump(new AcceptDuelGump(from, mob, this.m_Context, this.m_Participant, this.m_Index));
                    }
                }
            }
Ejemplo n.º 2
0
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            var from = m_From;
            var mob  = m_Requested;

            if (info.ButtonID != 1 || !m_Active)
            {
                return;
            }

            m_Active = false;

            if (info.IsSwitched(1))
            {
                if (!(mob is PlayerMobile pm))
                {
                    return;
                }

                if (AcceptDuelGump.IsIgnored(mob, from) || mob.Blessed)
                {
                    m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                    m_Registrar?.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        "They ignore your invitation.",
                        from.NetState
                        );
                }
                else if (pm.DuelContext != null)
                {
                    m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                    m_Registrar?.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        "They are already assigned to another duel.",
                        from.NetState
                        );
                }
                else if (m_Players.Contains(mob))
                {
                    m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                    m_Registrar?.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        "You have already named them as a team member.",
                        from.NetState
                        );
                }
                else if (m_Tournament.HasParticipant(mob))
                {
                    m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                    m_Registrar?.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        "They have already entered this tournament.",
                        from.NetState
                        );
                }
                else if (m_Players.Count >= m_Tournament.PlayersPerParticipant)
                {
                    m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                    m_Registrar?.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        "Your team is full.",
                        from.NetState
                        );
                }
                else
                {
                    m_Players.Add(mob);

                    m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                    if (m_Registrar != null)
                    {
                        m_Registrar.PrivateOverheadMessage(
                            MessageType.Regular,
                            0x59,
                            false,
                            $"{mob.Name} has accepted your offer of partnership.",
                            from.NetState
                            );

                        m_Registrar.PrivateOverheadMessage(
                            MessageType.Regular,
                            0x59,
                            false,
                            $"You have accepted the partnership with {from.Name}.",
                            mob.NetState
                            );
                    }
                }
            }
            else
            {
                if (info.IsSwitched(3))
                {
                    AcceptDuelGump.BeginIgnore(m_Requested, m_From);
                }

                m_From.SendGump(new ConfirmSignupGump(m_From, m_Registrar, m_Tournament, m_Players));

                if (m_Registrar != null)
                {
                    m_Registrar.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        $"{mob.Name} has declined your offer of partnership.",
                        from.NetState
                        );

                    m_Registrar.PrivateOverheadMessage(
                        MessageType.Regular,
                        0x22,
                        false,
                        $"You have declined the partnership with {from.Name}.",
                        mob.NetState
                        );
                }
            }
        }