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)); } } }
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 ); } } }