示例#1
0
        private IResult TeachSpellSkill(Guilds guild, IMobileObject guildMaster, IMobileObject learner, string parameter)
        {
            GuildAbility skill = GlobalReference.GlobalValues.GuildAbilities.Skills[guild].FirstOrDefault(i => string.Equals(i.Abiltiy.AbilityName, parameter, StringComparison.CurrentCultureIgnoreCase));

            if (skill != null)
            {
                if (skill.Level <= learner.Level)
                {
                    return(TeachSkill((ISkill)skill.Abiltiy, guildMaster, learner));
                }
                else
                {
                    return(NotHighEnoughLevel(guildMaster, learner));
                }
            }

            GuildAbility spell = GlobalReference.GlobalValues.GuildAbilities.Spells[guild].FirstOrDefault(i => string.Equals(i.Abiltiy.AbilityName, parameter, StringComparison.CurrentCultureIgnoreCase));

            if (spell != null)
            {
                if (spell.Level <= learner.Level)
                {
                    return(TeachSpell((ISpell)spell.Abiltiy, guildMaster, learner));
                }
                else
                {
                    return(NotHighEnoughLevel(guildMaster, learner));
                }
            }

            guildMaster.EnqueueCommand(string.Format("Tell {0} I can not teach you that.", learner.KeyWords[0]));
            return(new Result("", true));
        }
示例#2
0
        /// <summary>
        /// 加载玩家公会技能加成
        /// </summary>
        public static void LoadGuildAbility(string userID)
        {
            GameUser user = new PersonalCacheStruct <GameUser>().FindKey(userID);

            if (user == null)
            {
                UserCacheGlobal.LoadOffline(userID);
                user = new PersonalCacheStruct <GameUser>().FindKey(userID);
            }
            if (!string.IsNullOrEmpty(user.MercenariesID))
            {
                UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(user.MercenariesID);
                if (guild != null && guild.AbilityInfo.Count > 0)
                {
                    if (user.PropertyInfo.Count == 0)
                    {
                        foreach (var guildAbility in guild.AbilityInfo)
                        {
                            GuildAbility ability = new GuildAbility();
                            ability.Type = guildAbility.Type;
                            ability.Num  = guildAbility.Num;
                            user.PropertyInfo.Add(ability);
                        }
                    }
                }
            }
        }
示例#3
0
 public override bool TakeAction()
 {
     if (!string.IsNullOrEmpty(ContextUser.MercenariesID))
     {
         GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);
         if (member != null && member.PostType == PostType.Member)
         {
             ErrorCode = LanguageManager.GetLang().ErrorCode;
             ErrorInfo = LanguageManager.GetLang().St6007_AuditPermissions;
             return(false);
         }
         UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(ContextUser.MercenariesID);
         if (guild != null && guild.AbilityInfo.Count > 0)
         {
             GuildAbility ability = guild.AbilityInfo.Find(m => m.ID == guildSkillID);
             if (ability != null)
             {
                 GuildAbilityLvInfo abilityLvInfo = new ShareCacheStruct <GuildAbilityLvInfo>().FindKey(ability.ID, ability.Lv);
                 if (abilityLvInfo != null && ability.Lv < 10)
                 {
                     if (abilityLvInfo.UpDonateNum > guild.CurrDonateNum)
                     {
                         ErrorCode = LanguageManager.GetLang().ErrorCode;
                         ErrorInfo = LanguageManager.GetLang().St6205_GuildMemberDonateNotEnough;
                         return(false);
                     }
                     GuildAbilityInfo abilityInfo = new ShareCacheStruct <GuildAbilityInfo>().FindKey(ability.ID);
                     if (abilityInfo != null)
                     {
                         guild.CurrDonateNum = MathUtils.Subtraction(guild.CurrDonateNum, abilityLvInfo.UpDonateNum, 0);
                         ability.Lv          = MathUtils.Addition(ability.Lv, (short)1);
                         abilityLvInfo       = new ShareCacheStruct <GuildAbilityLvInfo>().FindKey(ability.ID, ability.Lv);
                         ability.Type        = abilityInfo.GuildAbilityType;
                         ability.Num         = abilityLvInfo.EffectNum;
                         //guild.Update();
                         CombatHelper.UpGuildAbilityLv(ContextUser.MercenariesID, ability); //加载公会技能升级
                         ErrorCode = 0;
                         ErrorInfo = string.Format(LanguageManager.GetLang().St6205_GuildMemberJiNengShengJi, abilityInfo.AbilityName, ability.Lv);
                     }
                 }
             }
         }
     }
     else
     {
         ErrorCode = LanguageManager.GetLang().ErrorCode;
         ErrorInfo = LanguageManager.GetLang().St6203_GuildMemberNotEnough;
         return(false);
     }
     return(true);
 }
示例#4
0
        /// <summary>
        /// 公会技能加成效果
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="abilityType"></param>
        /// <returns></returns>
        public static decimal GetGuildAbilityNum(string userID, GuildAbilityType abilityType)
        {
            decimal  effectNum = 0;
            GameUser user      = new PersonalCacheStruct <GameUser>().FindKey(userID);

            if (user != null && user.PropertyInfo != null && user.PropertyInfo.Count > 0)
            {
                var          abilitiesList = user.PropertyInfo;
                GuildAbility ability       = abilitiesList.Find(m => m.Type == abilityType);
                if (ability != null)
                {
                    effectNum = MathUtils.Addition(effectNum, ability.Num, decimal.MaxValue);
                }
            }
            effectNum = MathUtils.Addition(effectNum, 1, decimal.MaxValue);
            return(effectNum);
        }
示例#5
0
        /// <summary>
        /// 公会技能升级
        /// </summary>
        public static void UpGuildAbilityLv(string guildID, GuildAbility ability)
        {
            var memberArray = new ShareCacheStruct <GuildMember>().FindAll(m => m.GuildID == guildID);

            foreach (GuildMember member in memberArray)
            {
                GameUser user = new PersonalCacheStruct <GameUser>().FindKey(member.UserID);
                if (user == null)
                {
                    user = UserCacheGlobal.CheckLoadUser(member.UserID);
                }
                if (user != null && !string.IsNullOrEmpty(user.MercenariesID))
                {
                    UserGuild guild = new ShareCacheStruct <UserGuild>().FindKey(user.MercenariesID);
                    if (guild != null && guild.AbilityInfo.Count > 0)
                    {
                        LoadGuildAbility(member.UserID);
                        if (user.PropertyInfo != null && user.PropertyInfo.Count > 0)
                        {
                            GuildAbility guildAbility = user.PropertyInfo.Find(m => m.Type == ability.Type);
                            if (guildAbility != null)
                            {
                                guildAbility.Num = ability.Num;
                            }
                            else
                            {
                                guildAbility      = new GuildAbility();
                                guildAbility.Type = ability.Type;
                                guildAbility.Num  = ability.Num;
                                user.PropertyInfo.Add(guildAbility);
                            }
                        }
                    }
                }
            }
        }
示例#6
0
        public void Setup()
        {
            GlobalReference.GlobalValues = new GlobalValues();

            defaultValues = new Mock <IDefaultValues>();
            tagwrapper    = new Mock <ITagWrapper>();
            defaultValues.Setup(e => e.ReduceValues(1, 2)).Returns(new Dice(1, 2));
            GlobalReference.GlobalValues.DefaultValues = defaultValues.Object;
            GlobalReference.GlobalValues.TagWrapper    = tagwrapper.Object;

            magicUser   = new Objects.Personality.MagicUser();
            npc         = new Mock <INonPlayerCharacter>();
            guild       = new Mock <IGuild>();
            damageSpell = new DamageSpell("damageSpell", 1, 2, Objects.Damage.Damage.DamageType.Cold, 10);
            cureSpell   = new CureSpell("cureSpell", 1, 2, 10);
            GuildAbility guildAbility  = new GuildAbility();
            GuildAbility guildAbility2 = new GuildAbility();

            spellBook = new Dictionary <string, ISpell>();

            npc.Setup(e => e.Level).Returns(5);
            npc.Setup(e => e.SpellBook).Returns(spellBook);
            npc.Setup(e => e.Health).Returns(90);
            npc.Setup(e => e.MaxHealth).Returns(100);
            npc.Setup(e => e.Mana).Returns(100);
            guildAbility.Level    = 2;
            guildAbility2.Level   = 2;
            guildAbility.Abiltiy  = damageSpell;
            guildAbility2.Abiltiy = cureSpell;
            guild.Setup(e => e.Spells).Returns(new List <GuildAbility>()
            {
                guildAbility, guildAbility2
            });

            GlobalReference.GlobalValues.TickCounter = 5;
        }