public void MemberProfilUpdate(GuildMember member, long profilId, int rank, int percent, int power)
{
var himSelf = member.Id == profilId;
var targetMember = GetMember(profilId);
if (targetMember == null)
{
member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
return;
}
var rankChanged = rank != (int)targetMember.Rank;
var powerChanged = power != targetMember.Power;
var xpShareChanged = percent != targetMember.XPSharePercent;
var canManageOwnExp = member.HasRight(GuildRightEnum.MANAGE_OWN_EXP_PERCENT);
var canManageOthersExp = member.HasRight(GuildRightEnum.MANAGE_EXP_PERCENT);
var canManageRank = member.HasRight(GuildRightEnum.MANAGE_RANK);
var canManagePower = member.HasRight(GuildRightEnum.MANAGE_POWER);
if (!canManageOwnExp && !canManageOthersExp && !canManageRank && !canManagePower)
{
member.SendHasNotEnoughRights();
return;
}
if (!himSelf && !canManageOthersExp && xpShareChanged)
{
member.SendHasNotEnoughRights();
return;
}
if (!canManagePower && powerChanged)
{
member.SendHasNotEnoughRights();
return;
}
if (!canManageRank && rankChanged)
{
member.SendHasNotEnoughRights();
return;
}
if (!canManageOwnExp && himSelf && xpShareChanged)
{
member.SendHasNotEnoughRights();
return;
}
if (rankChanged && (GuildRankEnum)rank == GuildRankEnum.BOSS)
{
if (member.Rank == GuildRankEnum.BOSS && targetMember.Rank != GuildRankEnum.BOSS)
{
targetMember.SetBoss();
MemberProfilUpdate(targetMember, member.Id, (int)GuildRankEnum.SECOND_IN_COMMAND, 0, 0);
member.Dispatch(WorldMessage.GUILD_MEMBERS_INFORMATIONS(member));
}
}
else
{
targetMember.Power = power;
targetMember.Rank = (GuildRankEnum)rank;
}
targetMember.XPSharePercent = percent;
// update profil
member.Dispatch(WorldMessage.GUILD_MEMBERS_INFORMATIONS(targetMember));
targetMember.Dispatch(WorldMessage.GUILD_STATS(this, power));
}