public override void OnResponse(NetState sender, RelayInfo info)
{
if (sender.Mobile is not PlayerMobile pm || !IsMember(pm, Guild) || !IsMember(m_Member, Guild))
{
return;
}
RankDefinition playerRank = pm.GuildRank;
RankDefinition targetRank = m_Member.GuildRank;
switch (info.ButtonID)
{
case 1: //Promote
{
if (playerRank.GetFlag(RankFlags.CanPromoteDemote) && ((playerRank.Rank - 1) > targetRank.Rank || (playerRank == RankDefinition.Leader && playerRank.Rank > targetRank.Rank)))
{
targetRank = RankDefinition.Ranks[targetRank.Rank + 1];
if (targetRank == RankDefinition.Leader)
{
if (m_ToLeader)
{
m_Member.GuildRank = targetRank;
pm.SendLocalizedMessage(1063156, m_Member.Name); // The guild information for ~1_val~ has been updated.
pm.SendLocalizedMessage(1063156, pm.Name); // The guild information for ~1_val~ has been updated.
Guild.Leader = m_Member;
}
else
{
pm.SendLocalizedMessage(1063144); // Are you sure you wish to make this member the new guild leader?
pm.SendGump(new GuildMemberInfoGump(Player, Guild, m_Member, false, true));
}
}
else
{
m_Member.GuildRank = targetRank;
pm.SendLocalizedMessage(1063156, m_Member.Name); // The guild information for ~1_val~ has been updated.
}
}
else
{
pm.SendLocalizedMessage(1063143); // You don't have permission to promote this member.
}
break;
}
case 2: //Demote
{
if (playerRank.GetFlag(RankFlags.CanPromoteDemote) && playerRank.Rank > targetRank.Rank)
{
if (targetRank == RankDefinition.Lowest)
{
if (RankDefinition.Lowest.Name.Number == 1062963)
{
pm.SendLocalizedMessage(1063333); // You can't demote a ronin.
}
else
{
pm.SendMessage("You can't demote a {0}.", RankDefinition.Lowest.Name);
}
}
else
{
m_Member.GuildRank = RankDefinition.Ranks[targetRank.Rank - 1];
pm.SendLocalizedMessage(1063156, m_Member.Name); // The guild information for ~1_val~ has been updated.
}
}
else
{
pm.SendLocalizedMessage(1063146); // You don't have permission to demote this member.
}
break;
}
case 3: //Set Guild title
{
if (playerRank.GetFlag(RankFlags.CanSetGuildTitle) && (playerRank.Rank > targetRank.Rank || m_Member == Player))
{
pm.SendLocalizedMessage(1011128); // Enter the new title for this guild member or 'none' to remove a title:
pm.BeginPrompt(new PromptCallback(SetTitle_Callback));
}
else if (m_Member.GuildTitle == null || m_Member.GuildTitle.Length <= 0)
{
pm.SendLocalizedMessage(1070746); // You don't have the permission to set that member's guild title.
}
else
{
pm.SendLocalizedMessage(1063148); // You don't have permission to change this member's guild title.
}
break;
}
case 4: //Vote
{
if (m_Member == pm.GuildFealty && Guild.Leader != m_Member)
{
pm.SendLocalizedMessage(1063158); // You have cleared your vote for guild leader.
}
else if (Guild.CanVote(m_Member)) //( playerRank.GetFlag( RankFlags.CanVote ) )
{
if (m_Member == Guild.Leader)
{
pm.SendLocalizedMessage(1063424); // You can't vote for the current guild leader.
}
else if (!Guild.CanBeVotedFor(m_Member))
{
pm.SendLocalizedMessage(1063425); // You can't vote for an inactive guild member.
}
else
{
pm.GuildFealty = m_Member;
pm.SendLocalizedMessage(1063159, m_Member.Name); // You cast your vote for ~1_val~ for guild leader.
}
}
else
{
pm.SendLocalizedMessage(1063149); // You don't have permission to vote.
}
break;
}
case 5: //Kick
{
if ((playerRank.GetFlag(RankFlags.RemovePlayers) && playerRank.Rank > targetRank.Rank) || (playerRank.GetFlag(RankFlags.RemoveLowestRank) && targetRank == RankDefinition.Lowest))
{
if (m_toKick)
{
Guild.RemoveMember(m_Member);
pm.SendLocalizedMessage(1063157); // The member has been removed from your guild.
}
else
{
pm.SendLocalizedMessage(1063152); // Are you sure you wish to kick this member from the guild?
pm.SendGump(new GuildMemberInfoGump(Player, Guild, m_Member, true, false));
}
}
else
{
pm.SendLocalizedMessage(1063151); // You don't have permission to remove this member.
}
break;
}
}
}