public void CalculateGuildmaster()
{
Dictionary<Mobile, int> votes = new Dictionary<Mobile, int>();
int votingMembers = 0;
for ( int i = 0; m_Members != null && i < m_Members.Count; ++i )
{
Mobile memb = m_Members[i];
if ( !CanVote( memb ) )
continue;
Mobile m = memb.GuildFealty;
if( !CanBeVotedFor( m ) )
{
if ( m_Leader != null && !m_Leader.Deleted && m_Leader.Guild == this )
m = m_Leader;
else
m = memb;
}
if ( m == null )
continue;
int v;
if( !votes.TryGetValue( m, out v ) )
votes[m] = 1;
else
votes[m] = v + 1;
votingMembers++;
}
Mobile winner = null;
int highVotes = 0;
foreach ( KeyValuePair<Mobile, int> kvp in votes )
{
Mobile m = (Mobile)kvp.Key;
int val = (int)kvp.Value;
if ( winner == null || val > highVotes )
{
winner = m;
highVotes = val;
}
}
if ( m_Leader != winner && winner != null )
GuildMessage( 1018015, true, winner.Name ); // Guild Message: Guildmaster changed to:
Leader = winner;
m_LastFealty = DateTime.Now;
}