Inheritance: Codebreak.Service.World.Network.MessageDispatcher
Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="member"></param>
        public void TaxCollectorLeave(GuildMember member)
        {
            if (member.TaxCollectorJoinedId == -1)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            var collector = m_taxCollectors.Find(taxCollector => taxCollector.Id == member.TaxCollectorJoinedId);

            if (collector == null)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            member.TaxCollectorJoinedId = -1;

            collector.AddMessage(() => collector.DefenderLeft(member));

            m_taxCollectorDispatcher.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_DEFENDER_LEAVE(collector.Id, member.Id));
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="member"></param>
        public void AddTaxCollectorListener(GuildMember member)
        {
            foreach (var taxCollector in m_taxCollectors)
            {
                taxCollector.AddMessage(() =>
                {
                    if (taxCollector.HasGameAction(Action.GameActionTypeEnum.FIGHT))
                    {
                        var fight = taxCollector.Fight as TaxCollectorFight;
                        if (fight.State == FightStateEnum.STATE_PLACEMENT)
                        {
                            member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_ATTACKER_JOIN(taxCollector.Id, fight.Team0.Fighters.ToArray()));
                            if (taxCollector.Defenders.Count > 0)
                            {
                                member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_DEFENDER_JOIN(taxCollector.Id, taxCollector.Defenders.ToArray()));
                            }
                        }
                    }
                });
            }

            m_taxCollectorDispatcher.AddHandler(member.Dispatch);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="member"></param>
        /// <param name="spellId"></param>
        public void BoostSpell(GuildMember member, int spellId)
        {
            if (!member.HasRight(GuildRightEnum.MANAGE_BOOST))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!Statistics.Spells.HasSpell(spellId))
            {
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Unknow spellId"));
                return;
            }

            if (BoostPoint < 5)
            {
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Not enough point to boost this spell."));
                return;
            }

            BoostPoint -= 5;
            Statistics.Spells.LevelUpSpell(spellId);
            SendBoostInformations(member);
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void SendTaxCollectorsList(GuildMember member)
 {
     if (m_taxCollectors.Count > 0)
     {
         member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_LIST(m_taxCollectors));
     }
     else
     {
         member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
     }
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void SendGeneralInformations(GuildMember member)
 {
     member.Dispatch(WorldMessage.GUILD_GENERAL_INFORMATIONS(IsActive, Level, ExperienceFloorCurrent, ExperienceFloorNext, Experience));
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void RemoveTaxCollectorListener(GuildMember member)
 {
     m_taxCollectorDispatcher.RemoveHandler(member.Dispatch);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void RemoveMember(GuildMember member)
 {
     IsActive = m_members.Count > 0;
     m_members.Remove(member);
     RemoveHandler(member.Dispatch);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="kickedMemberName"></param>
        public void MemberKick(GuildMember member, string kickedMemberName)
        {
            if (kickedMemberName != member.Name && !member.HasRight(GuildRightEnum.BAN))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            var kickedMember = m_members.Find(m => m.Name == kickedMemberName);
            if (kickedMember == null)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            if (kickedMember.Rank == GuildRankEnum.BOSS)
            {
                if (kickedMemberName != member.Name)
                {
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("The boss cannot be kicked by a pig."));
                    return;
                }
            }

            member.Dispatch(WorldMessage.GUIL_KICK_SUCCESS(member.Name, kickedMemberName));

            if (member.Name != kickedMemberName)
                kickedMember.Dispatch(WorldMessage.GUIL_KICK_SUCCESS(member.Name, kickedMemberName));

            RemoveMember(kickedMember);

            kickedMember.GuildLeave();

            base.Dispatch(WorldMessage.GUILD_MEMBER_REMOVE(kickedMember.Id));

            CheckIntegrity();
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="character"></param>
 public void MemberBoss(CharacterEntity character)
 {
     var member = new GuildMember(this, character.DatabaseRecord)
     {
         GuildId = Id
     };
     member.SetBoss();
     member.CharacterConnected(character);
     member.SendGuildStats();
     character.RefreshOnMap();
     AddMember(member);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="taxCollector"></param>
        public void FarmTaxCollector(GuildMember member, TaxCollectorEntity taxCollector)
        {
            taxCollector.Map.SubArea.TaxCollector = null;
            taxCollector.StopAction(GameActionTypeEnum.MAP);

            AddMessage(() =>
            {
                RemoveTaxCollector(taxCollector);

                AddExperience(taxCollector.ExperienceGathered);

                SafeDispatch(WorldMessage.GUILD_TAXCOLLECTOR_FARMED(taxCollector, member.Name));
            });
        }
Example #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="member"></param>
 public void AddMember(GuildMember member)
 {
     IsActive = m_members.Count > 0;
     m_members.Add(member);
     AddHandler(member.Dispatch);
 }
Example #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="member"></param>
        /// <param name="profilId"></param>
        /// <param name="rank"></param>
        /// <param name="percent"></param>
        /// <param name="power"></param>
        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));
        }
Example #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="member"></param>
        /// <param name="statId"></param>
        public void BoostStats(GuildMember member, char statId)
        {
            if (!member.HasRight(GuildRightEnum.MANAGE_BOOST))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (BoostPoint < 1)
            {
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("You don't have any boost point."));
                return;
            }

            switch (statId)
            {
            case 'o':
                if (Statistics.BaseStatistics.GetTotal(EffectEnum.AddPods) >= 5000)
                {
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your taxcollector has already reached the max Pods."));
                    return;
                }

                Statistics.BaseStatistics.AddBase(EffectEnum.AddPods, 20);
                BoostPoint--;
                break;

            case 'x':
                if (Statistics.BaseStatistics.GetTotal(EffectEnum.AddWisdom) >= 400)
                {
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your taxcollector has already reached the max Wisdom."));
                    return;
                }

                Statistics.BaseStatistics.AddBase(EffectEnum.AddWisdom, 1);
                BoostPoint--;
                break;

            case 'p':
                if (Statistics.BaseStatistics.GetTotal(EffectEnum.AddProspection) >= 500)
                {
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your taxcollector has already reached the max Prospection."));
                    return;
                }

                Statistics.BaseStatistics.AddBase(EffectEnum.AddProspection, 1);
                BoostPoint--;
                break;

            case 'k':
                if (BoostPoint < 10)
                {
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("You don't have enough boost point."));
                    return;
                }
                if (Statistics.MaxTaxcollector >= 50)
                {
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your guild has already reached the maximum Taxcollector count."));
                    return;
                }

                Statistics.MaxTaxcollector++;
                BoostPoint -= 10;
                break;

            default:
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Unknow boost statId"));
                return;
            }

            SendBoostInformations(member);
        }
Example #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="member"></param>
        public void HireTaxCollector(GuildMember member)
        {
            if (member.Character == null)
            {
                return;
            }

            member.Character.AddMessage(() =>
            {
                if (member.Character.Map.SubArea.TaxCollector != null)
                {
                    member.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.ERROR, InformationEnum.ERROR_MAX_TAXCOLLECTOR_BY_SUBAREA_REACHED, 1));     // MAX COLLECTOR BY SUBAREA
                    return;
                }

                if (member.Character.Inventory.Kamas < TaxCollectorPrice)
                {
                    member.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.ERROR, InformationEnum.ERROR_NOT_ENOUGH_KAMAS, TaxCollectorPrice));
                    return;
                }

                AddMessage(() =>
                {
                    if (!member.HasRight(GuildRightEnum.HIRE_TAXCOLLECTOR))
                    {
                        member.SendHasNotEnoughRights();
                        return;
                    }

                    if (m_taxCollectors.Count >= Statistics.MaxTaxcollector)
                    {
                        member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your guild has already hired the maximum TaxCollector."));
                        return;
                    }

                    var taxCollectorDAO = new TaxCollectorDAO()
                    {
                        Id         = TaxCollectorRepository.Instance.NextTaxCollectorId,
                        GuildId    = Id,
                        OwnerId    = member.Id,
                        Name       = Util.Next(WorldConfig.TAXCOLLECTOR_MIN_NAME, WorldConfig.TAXCOLLECTOR_MAX_NAME),
                        FirstName  = Util.Next(WorldConfig.TAXCOLLECTOR_MIN_FIRSTNAME, WorldConfig.TAXCOLLECTOR_MAX_FIRSTNAME),
                        MapId      = member.Character.MapId,
                        CellId     = member.Character.CellId,
                        Skin       = WorldConfig.TAXCOLLECTOR_SKIN_BASE,
                        SkinSize   = WorldConfig.TAXCOLLECTOR_SKIN_SIZE_BASE,
                        Kamas      = 0,
                        Experience = 0,
                    };

                    TaxCollectorRepository.Instance.Created(taxCollectorDAO);

                    foreach (var spell in Statistics.Spells.GetSpells())
                    {
                        if (spell.Level > 0)
                        {
                            SpellBookEntryRepository.Instance.Create((int)EntityTypeEnum.TYPE_TAX_COLLECTOR, taxCollectorDAO.Id, spell.SpellId, spell.Level, 25);
                        }
                    }

                    var taxCollector = EntityManager.Instance.CreateTaxCollector(this, taxCollectorDAO);

                    AddTaxCollector(taxCollector);

                    member.Character.AddMessage(() =>
                    {
                        member.Character.Inventory.SubKamas(TaxCollectorPrice);
                        member.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.INFO, InformationEnum.INFO_KAMAS_LOST, TaxCollectorPrice));
                    });

                    base.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_HIRED(taxCollector, member.Character.Name));
                });
            });
        }
Example #15
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="member"></param>
 public void RemoveTaxCollectorListener(GuildMember member)
 {
     m_taxCollectorDispatcher.RemoveHandler(member.Dispatch);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        public void TaxCollectorLeave(GuildMember member)
        {
            if (member.TaxCollectorJoinedId == -1)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            var collector = m_taxCollectors.Find(taxCollector => taxCollector.Id == member.TaxCollectorJoinedId);
            if (collector == null)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            member.TaxCollectorJoinedId = -1;

            collector.AddMessage(() => collector.DefenderLeft(member));

            m_taxCollectorDispatcher.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_DEFENDER_LEAVE(collector.Id, member.Id));
        }
Example #17
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="member"></param>
 public void RemoveMember(GuildMember member)
 {
     IsActive = m_members.Count > 0;
     m_members.Remove(member);
     RemoveHandler(member.Dispatch);
 }
Example #18
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="member"></param>
 public void SendMembersInformations(GuildMember member)
 {
     member.Dispatch(WorldMessage.GUILD_MEMBERS_INFORMATIONS(m_members));
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        public void HireTaxCollector(GuildMember member)
        {
            if (member.Character == null)
                return;

            member.Character.AddMessage(() =>
                {
                    if (member.Character.Map.SubArea.TaxCollector != null)
                    {
                        member.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.ERROR, InformationEnum.ERROR_MAX_TAXCOLLECTOR_BY_SUBAREA_REACHED, 1)); // MAX COLLECTOR BY SUBAREA
                        return;
                    }

                    if (member.Character.Inventory.Kamas < TaxCollectorPrice)
                    {
                        member.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.ERROR, InformationEnum.ERROR_NOT_ENOUGH_KAMAS, TaxCollectorPrice));
                        return;
                    }

                    AddMessage(() =>
                        {
                            if (!member.HasRight(GuildRightEnum.HIRE_TAXCOLLECTOR))
                            {
                                member.SendHasNotEnoughRights();
                                return;
                            }

                            if (m_taxCollectors.Count >= Statistics.MaxTaxcollector)
                            {
                                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your guild has already hired the maximum TaxCollector."));
                                return;
                            }

                            var taxCollectorDAO = new TaxCollectorDAO()
                            {
                                Id = TaxCollectorRepository.Instance.NextTaxCollectorId,
                                GuildId = Id,
                                OwnerId = member.Id,
                                Name = Util.Next(WorldConfig.TAXCOLLECTOR_MIN_NAME, WorldConfig.TAXCOLLECTOR_MAX_NAME),
                                FirstName = Util.Next(WorldConfig.TAXCOLLECTOR_MIN_FIRSTNAME, WorldConfig.TAXCOLLECTOR_MAX_FIRSTNAME),
                                MapId = member.Character.MapId,
                                CellId = member.Character.CellId,
                                Skin = WorldConfig.TAXCOLLECTOR_SKIN_BASE,
                                SkinSize = WorldConfig.TAXCOLLECTOR_SKIN_SIZE_BASE,
                                Kamas = 0,
                                Experience = 0,
                            };

                            TaxCollectorRepository.Instance.Created(taxCollectorDAO);

                            foreach (var spell in Statistics.Spells.GetSpells())
                                if(spell.Level > 0)
                                    SpellBookEntryRepository.Instance.Create((int)EntityTypeEnum.TYPE_TAX_COLLECTOR, taxCollectorDAO.Id, spell.SpellId, spell.Level, 25);

                            var taxCollector = EntityManager.Instance.CreateTaxCollector(this, taxCollectorDAO);

                            AddTaxCollector(taxCollector);

                            member.Character.AddMessage(() =>
                                {
                                    member.Character.Inventory.SubKamas(TaxCollectorPrice);
                                    member.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.INFO, InformationEnum.INFO_KAMAS_LOST, TaxCollectorPrice));
                                });

                            base.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_HIRED(taxCollector, member.Character.Name));
                        });
                });
        }
Example #20
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="member"></param>
 public void SendBoostInformations(GuildMember member)
 {
     member.Dispatch(WorldMessage.GUILD_BOOST_INFORMATIONS(BoostPoint, TaxCollectorPrice, Statistics));
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="character"></param>
 public void MemberJoin(CharacterEntity character)
 {
     var member = new GuildMember(this, character.DatabaseRecord);
     member.GuildId = Id;
     member.Rank = GuildRankEnum.ON_TRIAL; // a l'essai
     member.CharacterConnected(character);
     member.SendGuildStats();
     character.RefreshOnMap();
     AddMember(member);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void DefenderJoin(GuildMember member)
 {
     Defenders.Add(member);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="profilId"></param>
        /// <param name="rank"></param>
        /// <param name="percent"></param>
        /// <param name="power"></param>
        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));
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void DefenderLeft(GuildMember member)
 {
     Defenders.Remove(member);
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="taxCollector"></param>
        public void RemoveTaxCollector(GuildMember member, TaxCollectorEntity taxCollector)
        {
            if (taxCollector.Guild != this)
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!member.HasRight(GuildRightEnum.COLLECT_TAXCOLLECTOR))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            taxCollector.AddMessage(() =>
                {
                    if (!taxCollector.HasGameAction(GameActionTypeEnum.MAP))
                    {
                        member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                        return;
                    }

                    taxCollector.Map.SubArea.TaxCollector = null;
                    taxCollector.StopAction(GameActionTypeEnum.MAP);

                    AddMessage(() =>
                        {
                            RemoveTaxCollector(taxCollector);

                            SafeDispatch(WorldMessage.GUILD_TAXCOLLECTOR_REMOVED(taxCollector, member.Name));
                        });
                });
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void AddMember(GuildMember member)
 {
     IsActive = m_members.Count > 0;
     m_members.Add(member);
     AddHandler(member.Dispatch);
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void SendBoostInformations(GuildMember member)
 {
     member.Dispatch(WorldMessage.GUILD_BOOST_INFORMATIONS(BoostPoint, TaxCollectorPrice, Statistics));
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        public void AddTaxCollectorListener(GuildMember member)
        {
            foreach (var taxCollector in m_taxCollectors)
            {
                taxCollector.AddMessage(() =>
                {
                    if (taxCollector.HasGameAction(Action.GameActionTypeEnum.FIGHT))
                    {
                        var fight = taxCollector.Fight as TaxCollectorFight;
                        if (fight.State == FightStateEnum.STATE_PLACEMENT)
                        {
                            member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_ATTACKER_JOIN(taxCollector.Id, fight.Team0.Fighters.ToArray()));
                            if (taxCollector.Defenders.Count > 0)
                                member.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_DEFENDER_JOIN(taxCollector.Id, taxCollector.Defenders.ToArray()));
                        }
                    }
                });
            }

            m_taxCollectorDispatcher.AddHandler(member.Dispatch);
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="member"></param>
 public void SendMembersInformations(GuildMember member)
 {
     member.Dispatch(WorldMessage.GUILD_MEMBERS_INFORMATIONS(m_members));
 }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="spellId"></param>
        public void BoostSpell(GuildMember member, int spellId)
        {
            if (!member.HasRight(GuildRightEnum.MANAGE_BOOST))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (!Statistics.Spells.HasSpell(spellId))
            {
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Unknow spellId"));
                return;
            }

            if (BoostPoint < 5)
            {
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Not enough point to boost this spell."));
                return;
            }

            BoostPoint -= 5;
            Statistics.Spells.LevelUpSpell(spellId);
            SendBoostInformations(member);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="taxCollectorId"></param>
        public void TaxCollectorJoin(GuildMember member, long taxCollectorId)
        {
            var collector = m_taxCollectors.Find(taxCollector => taxCollector.Id == taxCollectorId);
            if (collector == null)
            {
                member.Dispatch(WorldMessage.BASIC_NO_OPERATION());
                return;
            }

            var character = member.Character;
            if (character == null)
                return;

            character.AddMessage(() =>
            {
                if (!character.CanGameAction(GameActionTypeEnum.TAXCOLLECTOR_AGGRESSION))
                {
                    character.Dispatch(WorldMessage.INFORMATION_MESSAGE(InformationTypeEnum.ERROR, InformationEnum.ERROR_YOU_ARE_AWAY));
                    return;
                }

                character.DefendTaxCollector();

                collector.AddMessage(() =>
                    {
                        if (!collector.CanDefend)
                        {
                            character.AddMessage(() => character.StopAction(GameActionTypeEnum.TAXCOLLECTOR_AGGRESSION));
                            return;
                        }

                        collector.DefenderJoin(member);

                        // switch back to guild context
                        AddMessage(() =>
                        {
                            member.TaxCollectorJoinedId = taxCollectorId;
                            m_taxCollectorDispatcher.Dispatch(WorldMessage.GUILD_TAXCOLLECTOR_DEFENDER_JOIN(taxCollectorId, member));
                        });
                    });
            });
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="member"></param>
        /// <param name="statId"></param>
        public void BoostStats(GuildMember member, char statId)
        {
            if (!member.HasRight(GuildRightEnum.MANAGE_BOOST))
            {
                member.SendHasNotEnoughRights();
                return;
            }

            if (BoostPoint < 1)
            {
                member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("You don't have any boost point."));
                return;
            }

            switch (statId)
            {
                case 'o':
                    if (Statistics.BaseStatistics.GetTotal(EffectEnum.AddPods) >= 5000)
                    {
                        member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your taxcollector has already reached the max Pods."));
                        return;
                    }

                    Statistics.BaseStatistics.AddBase(EffectEnum.AddPods, 20);
                    BoostPoint--;
                    break;

                case 'x':
                    if (Statistics.BaseStatistics.GetTotal(EffectEnum.AddWisdom) >= 400)
                    {
                        member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your taxcollector has already reached the max Wisdom."));
                        return;
                    }

                    Statistics.BaseStatistics.AddBase(EffectEnum.AddWisdom, 1);
                    BoostPoint--;
                    break;

                case 'p':
                    if (Statistics.BaseStatistics.GetTotal(EffectEnum.AddProspection) >= 500)
                    {
                        member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your taxcollector has already reached the max Prospection."));
                        return;
                    }

                    Statistics.BaseStatistics.AddBase(EffectEnum.AddProspection, 1);
                    BoostPoint--;
                    break;

                case 'k':
                    if (BoostPoint < 10)
                    {
                        member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("You don't have enough boost point."));
                        return;
                    }
                    if (Statistics.MaxTaxcollector >= 50)
                    {
                        member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Your guild has already reached the maximum Taxcollector count."));
                        return;
                    }

                    Statistics.MaxTaxcollector++;
                    BoostPoint -= 10;
                    break;

                default:
                    member.Dispatch(WorldMessage.SERVER_ERROR_MESSAGE("Unknow boost statId"));
                    return;
            }

            SendBoostInformations(member);
        }
 /// <summary>
 /// 
 /// </summary>
 public void SetCharacterGuild(GuildMember characterGuild)
 {
     GuildMember = characterGuild;
     if (GuildMember != null)
         m_guildDisplayInfos = GuildMember.Guild.Name + ";" + GuildMember.Guild.DisplayEmblem;
     else
         m_guildDisplayInfos = null;
 }
Example #34
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="member"></param>
 public void SendGeneralInformations(GuildMember member)
 {
     member.Dispatch(WorldMessage.GUILD_GENERAL_INFORMATIONS(IsActive, Level, ExperienceFloorCurrent, ExperienceFloorNext, Experience));
 }