mirror of
https://github.com/runuo/runuo
synced 2026-08-11 22:26:04 -04:00
95 lines
No EOL
2.9 KiB
C#
95 lines
No EOL
2.9 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Guilds;
|
|
using Server.Targeting;
|
|
using Server.Factions;
|
|
|
|
namespace Server.Gumps
|
|
{
|
|
public class GuildRecruitTarget : Target
|
|
{
|
|
private Mobile m_Mobile;
|
|
private Guild m_Guild;
|
|
|
|
public GuildRecruitTarget( Mobile m, Guild guild ) : base( 10, false, TargetFlags.None )
|
|
{
|
|
m_Mobile = m;
|
|
m_Guild = guild;
|
|
}
|
|
|
|
protected override void OnTarget( Mobile from, object targeted )
|
|
{
|
|
if ( GuildGump.BadMember( m_Mobile, m_Guild ) )
|
|
return;
|
|
|
|
if ( targeted is Mobile )
|
|
{
|
|
Mobile m = (Mobile)targeted;
|
|
|
|
PlayerState guildState = PlayerState.Find( m_Guild.Leader );
|
|
PlayerState targetState = PlayerState.Find( m );
|
|
|
|
Faction guildFaction = ( guildState == null ? null : guildState.Faction );
|
|
Faction targetFaction = ( targetState == null ? null : targetState.Faction );
|
|
|
|
if ( !m.Player )
|
|
{
|
|
m_Mobile.SendLocalizedMessage( 501161 ); // You may only recruit players into the guild.
|
|
}
|
|
else if ( !m.Alive )
|
|
{
|
|
m_Mobile.SendLocalizedMessage( 501162 ); // Only the living may be recruited.
|
|
}
|
|
else if ( m_Guild.IsMember( m ) )
|
|
{
|
|
m_Mobile.SendLocalizedMessage( 501163 ); // They are already a guildmember!
|
|
}
|
|
else if ( m_Guild.Candidates.Contains( m ) )
|
|
{
|
|
m_Mobile.SendLocalizedMessage( 501164 ); // They are already a candidate.
|
|
}
|
|
else if ( m_Guild.Accepted.Contains( m ) )
|
|
{
|
|
m_Mobile.SendLocalizedMessage( 501165 ); // They have already been accepted for membership, and merely need to use the Guildstone to gain full membership.
|
|
}
|
|
else if ( m.Guild != null )
|
|
{
|
|
m_Mobile.SendLocalizedMessage( 501166 ); // You can only recruit candidates who are not already in a guild.
|
|
}
|
|
#region Factions
|
|
else if ( guildFaction != targetFaction )
|
|
{
|
|
if ( guildFaction == null )
|
|
m_Mobile.SendLocalizedMessage( 1013027 ); // That player cannot join a non-faction guild.
|
|
else if ( targetFaction == null )
|
|
m_Mobile.SendLocalizedMessage( 1013026 ); // That player must be in a faction before joining this guild.
|
|
else
|
|
m_Mobile.SendLocalizedMessage( 1013028 ); // That person has a different faction affiliation.
|
|
}
|
|
else if ( targetState != null && targetState.IsLeaving )
|
|
{
|
|
// OSI does this quite strangely, so we'll just do it this way
|
|
m_Mobile.SendMessage( "That person is quitting their faction and so you may not recruit them." );
|
|
}
|
|
#endregion
|
|
else if ( m_Mobile.AccessLevel >= AccessLevel.GameMaster || m_Guild.Leader == m_Mobile )
|
|
{
|
|
m_Guild.Accepted.Add( m );
|
|
}
|
|
else
|
|
{
|
|
m_Guild.Candidates.Add( m );
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnTargetFinish( Mobile from )
|
|
{
|
|
if ( GuildGump.BadMember( m_Mobile, m_Guild ) )
|
|
return;
|
|
|
|
GuildGump.EnsureClosed( m_Mobile );
|
|
m_Mobile.SendGump( new GuildGump( m_Mobile, m_Guild ) );
|
|
}
|
|
}
|
|
} |