Пример #1
0
        /// <summary>
        /// Adds an enemy guild.
        /// </summary>
        /// <param name="guild">The guild to add as an enemy.</param>
        /// <returns>True if the enemy was added.</returns>
        public bool AddEnemy(Guild guild)
        {
            if (_enemies.Count >= 5)
            {
                return(false);
            }

            var association = new Database.Models.DbGuildAssociation
            {
                GuildId            = Guild.Id,
                AssociationGuildId = guild.Id,
                AssociationType    = "Enemy"
            };

            if (association.Create() && _enemies.TryAdd(guild.Id, guild))
            {
                var enemyPacket = new Models.Packets.Guilds.GuildPacket
                {
                    Data   = (uint)guild.Id,
                    Action = Enums.GuildAction.SetEnemy
                };

                SendMessageFormat("NEW_ENEMY", Enums.GuildMessageType.Red, guild.DbGuild.Name);

                foreach (var member in GetMembers())
                {
                    if (member.Online)
                    {
                        member.Player.ClientSocket.Send(enemyPacket);
                    }
                }
            }

            return(true);
        }
Пример #2
0
        /// <summary>
        /// Removes an allie from the guild.
        /// </summary>
        /// <param name="guild">The guild to remove.</param>
        /// <param name="associationsDeleted">A boolean determining whether the association has been deleted.</param>
        public void RemoveAllie(Guild guild, bool associationsDeleted = false)
        {
            Guild removedAllie;

            if (_allies.TryRemove(guild.Id, out removedAllie))
            {
                if (!associationsDeleted)
                {
                    Database.Dal.Guilds.DeleteAssociation(Guild.Id, guild.Id);
                    Database.Dal.Guilds.DeleteAssociation(guild.Id, Guild.Id);

                    guild.RemoveAllie(Guild, true);
                }

                var clearAllyPacket = new Models.Packets.Guilds.GuildPacket
                {
                    Data   = (uint)guild.Id,
                    Action = Enums.GuildAction.ClearAlly
                };

                foreach (var member in GetMembers())
                {
                    if (member.Online)
                    {
                        member.Player.ClientSocket.Send(clearAllyPacket);
                    }
                }
            }
        }
Пример #3
0
        public static bool HandleDischarge(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            if (player.Guild != null && player.GuildMember.Rank == Enums.GuildRank.GuildLeader)
            {
                player.Guild.RemoveMember(packet.Strings.FirstOrDefault(), true);
            }

            return(true);
        }
Пример #4
0
        public static bool QueryAttribute(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            if (player.Guild != null)
            {
                player.UpdateClientGuild();
            }

            return(true);
        }
Пример #5
0
        public static bool Handle(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            if (player.Guild != null && player.GuildMember.Rank == Enums.GuildRank.GuildLeader)
            {
                player.AddActionLog("SetGuildAnnouncement", packet.Announcement);
                player.Guild.SetAnnouncement(packet.Announcement);
            }

            return(true);
        }
Пример #6
0
        public static bool HandleCPs(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            if (player.Guild != null)
            {
                if (!player.Guild.DonateCPs(player, packet.Data))
                {
                    player.SendSystemMessage("LOW_CPS_DONATE_GUILD");
                }
            }

            return(true);
        }
Пример #7
0
        public static bool HandleLeaveSyndicate(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            if (player.Battle != null)
            {
                return(true);
            }

            if (player.Guild != null && player.GuildMember.Rank != Enums.GuildRank.GuildLeader)
            {
                player.Guild.RemoveMember(player.Name, false);
            }

            return(true);
        }
Пример #8
0
        public static bool QueryName(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            Models.Guilds.Guild guild;
            if (Collections.GuildCollection.TryGetGuild((int)packet.Data, out guild))
            {
                player.ClientSocket.Send(new Models.Packets.Misc.StringPacket
                {
                    Action = Enums.StringAction.Guild,
                    Data   = packet.Data,
                    String = guild.StringInfo
                });
                return(true);
            }

            return(false);
        }
Пример #9
0
        /// <summary>
        /// Adds an allie to the guild.
        /// </summary>
        /// <param name="guild">The guild to allie.</param>
        /// <param name="isAllie">A boolean determining whether the guild is an allie.</param>
        /// <returns>True if the allie was added.</returns>
        public bool AddAllie(Guild guild, bool isAllie = false)
        {
            if (_allies.Count >= 5)
            {
                return(false);
            }

            var association = new Database.Models.DbGuildAssociation
            {
                GuildId            = Guild.Id,
                AssociationGuildId = guild.Id,
                AssociationType    = "Allie"
            };

            if (!isAllie && guild.AddAllie(Guild, true) && association.Create() && _allies.TryAdd(guild.Id, guild) ||
                isAllie && association.Create() && _allies.TryAdd(guild.Id, guild))
            {
                var alliePacket = new Models.Packets.Guilds.GuildPacket
                {
                    Data   = (uint)guild.Id,
                    Action = Enums.GuildAction.SetAlly
                };

                SendMessageFormat("NEW_ALLIE", Enums.GuildMessageType.Green, guild.DbGuild.Name);

                foreach (var member in GetMembers())
                {
                    if (member.Online)
                    {
                        member.Player.ClientSocket.Send(alliePacket);
                    }
                }
            }

            return(true);
        }
Пример #10
0
        /// <summary>
        /// Updates the client of a player with the guild's associations.
        /// </summary>
        /// <param name="player">The player.</param>
        public void UpdateClientGuildAssociation(Models.Entities.Player player)
        {
            foreach (var allie in _allies.Values)
            {
                var alliePacket = new Models.Packets.Guilds.GuildPacket
                {
                    Data   = (uint)allie.Id,
                    Action = Enums.GuildAction.SetAlly
                };

                player.ClientSocket.Send(alliePacket);
            }

            foreach (var enemy in _enemies.Values)
            {
                var enemyPacket = new Models.Packets.Guilds.GuildPacket
                {
                    Data   = (uint)enemy.Id,
                    Action = Enums.GuildAction.SetEnemy
                };

                player.ClientSocket.Send(enemyPacket);
            }
        }
Пример #11
0
        /// <summary>
        /// Removes an enemy.
        /// </summary>
        /// <param name="guild">The guild to remove.</param>
        public void RemoveEnemy(Guild guild)
        {
            Guild removedEnemy;

            if (_enemies.TryRemove(guild.Id, out removedEnemy))
            {
                Database.Dal.Guilds.DeleteAssociation(Guild.Id, guild.Id);
                Database.Dal.Guilds.DeleteAssociation(guild.Id, Guild.Id);

                var clearEnemyPacket = new Models.Packets.Guilds.GuildPacket
                {
                    Data   = (uint)guild.Id,
                    Action = Enums.GuildAction.ClearEnemy
                };

                foreach (var member in GetMembers())
                {
                    if (member.Online)
                    {
                        member.Player.ClientSocket.Send(clearEnemyPacket);
                    }
                }
            }
        }
Пример #12
0
        public static bool HandleApplyJoin(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
        {
            if (player.Battle != null)
            {
                return(true);
            }

            if (packet.Data == player.ClientId)
            {
                return(false);
            }

            if (player.Guild != null)
            {
                return(false);
            }

            Models.Maps.IMapObject mapObject = null;

            if (player.ApplyGuildMemberClientId == 0)
            {
                if (player.GetFromScreen(packet.Data, out mapObject))
                {
                    var requestPlayer = mapObject as Models.Entities.Player;
                    if (requestPlayer != null)
                    {
                        if (requestPlayer.Guild != null && (
                                requestPlayer.GuildMember.Rank == Enums.GuildRank.GuildLeader ||
                                requestPlayer.GuildMember.Rank == Enums.GuildRank.DeputyLeader
                                ))
                        {
                            requestPlayer.ApplyGuildMemberClientId = player.ClientId;

                            requestPlayer.ClientSocket.Send(new Models.Packets.Guilds.GuildPacket
                            {
                                Action = Enums.GuildAction.ApplyJoin,
                                Data   = player.ClientId
                            });
                        }
                    }
                }

                return(true);
            }

            if (player.ApplyGuildMemberClientId != packet.Data)
            {
                return(true);
            }

            player.ApplyGuildMemberClientId = 0;

            if (player.GetFromScreen(packet.Data, out mapObject))
            {
                var invitePlayer = mapObject as Models.Entities.Player;
                if (invitePlayer != null)
                {
                    if (invitePlayer.Guild != null && (
                            invitePlayer.GuildMember.Rank == Enums.GuildRank.GuildLeader ||
                            invitePlayer.GuildMember.Rank == Enums.GuildRank.DeputyLeader
                            ))
                    {
                        invitePlayer.Guild.AddMember(player, Enums.GuildRank.Member);
                    }
                }
            }

            return(true);
        }
Пример #13
0
 public static bool HandleKick(Models.Entities.Player player, Models.Packets.Guilds.GuildPacket packet)
 {
     return(HandleDischarge(player, packet));
 }