Exemple #1
0
        /// <summary>
        /// 战斗并返回所有怪物状态
        /// </summary>
        /// <param name="FighterFrom">用户精灵</param>
        /// <param name="skill">技能</param>
        /// <param name="FighterToList"></param>
        /// <returns></returns>
        public V_xy_sp_userView UserStartFight(V_xy_sp_userView userView, string skillName, ref string batmsgAll)
        {
            V_xy_sp_userspirit    FighterFrom   = userView.Spirit;
            V_xy_sp_skill         skill         = userView.Spirit.spSkillList[0].skill;
            List <V_xy_sp_spirit> FighterToList = userView.Task.SpiritsList;

            List <V_xy_sp_spirit> FighterToResult = new List <V_xy_sp_spirit>();

            FighterFrom.SpiritMagic = FighterFrom.SpiritMagic - skill.ExpendValue;

            int maxInjuryCount = 0;

            foreach (V_xy_sp_spirit spirit in FighterToList)
            {
                if (spirit.SpiritLife <= 0)
                {
                    continue;   //生命值低于0跳过
                }
                if (skill.isGroupinjury == 1 && maxInjuryCount == FighterToList.Count)
                {
                    //如果是群攻并且攻击次数已到最大次数,不攻击
                    FighterToResult.Add(spirit);
                    continue;
                }
                else if (maxInjuryCount == 1)
                {
                    //如果非群攻,不攻击
                    FighterToResult.Add(spirit);
                    continue;
                }
                string batmsg = string.Empty;
                SkillInjury(FighterFrom, skill, spirit, ref batmsg);
                batmsgAll = batmsgAll + System.Environment.NewLine + batmsg;
                maxInjuryCount++;
                FighterToResult.Add(spirit);
                //所有怪物已阵亡
                if (spirit == FighterToList.LastOrDefault())
                {
                    if (spirit.SpiritLife <= 0)
                    {
                        xy_sp_taskBLL tkBll      = new xy_sp_taskBLL();
                        string        NextTaskID = tkBll.GetNextTaskIDByTaskID(FighterFrom.CurrentTaskID);

                        userView.Task.IsClear = "1";
                        userView.NextTask     = tkBll.getTaskContext(NextTaskID);
                    }
                }
            }


            userView.Task.SpiritsList = FighterToResult;

            return(userView);
        }
Exemple #2
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool Edit(V_xy_sp_skill model)
        {
            if (model == null)
            {
                return(false);
            }
            using (xy_sp_skillDAL dal = new xy_sp_skillDAL()){
                xy_sp_skill entitys = ModelToEntity(model);

                return(dal.Edit(entitys));
            }
        }
Exemple #3
0
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public string Add(V_xy_sp_skill model)
        {
            if (model == null)
            {
                return(string.Empty);
            }

            using (xy_sp_skillDAL dal = new xy_sp_skillDAL()){
                xy_sp_skill entity = ModelToEntity(model);
                entity.SkillID = string.IsNullOrEmpty(model.SkillID) ? Guid.NewGuid().ToString("N") : model.SkillID;

                return(dal.Add(entity));
            }
        }
Exemple #4
0
        public IHttpActionResult Post([FromBody] Request <V_xy_sp_skill> request)
        {
            V_xy_sp_skill model = request.Data as V_xy_sp_skill;

            if (string.IsNullOrEmpty(model.SkillID))
            {
                bll.Add(model);
            }
            else
            {
                bll.Edit(model);
            }

            return(Ok("ok"));
        }
        private V_xy_sp_spirit SkillInjury(V_xy_sp_userspirit FighterFrom, V_xy_sp_skill skill, V_xy_sp_spirit FighterTo, ref string batmsg)
        {
            V_xy_sp_spirit Fightersult = new V_xy_sp_spirit();

            switch (skill.SkillType)
            {
            case "1":  //物理伤害
                       //我方增加经验
                updateEnemy(FighterFrom, FighterTo, skill, ref batmsg);
                break;

            default:
                updateEnemy(FighterFrom, FighterTo, skill, ref batmsg);
                break;
            }
            Fightersult = FighterTo;
            return(Fightersult);
        }
Exemple #6
0
        /// <summary>
        /// Model转Entity
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public xy_sp_skill ModelToEntity(V_xy_sp_skill model)
        {
            if (model != null)
            {
                xy_sp_skill entity = new xy_sp_skill()
                {
                    SkillID          = model.SkillID,
                    SkillName        = model.SkillName,
                    SkillDescription = model.SkillDescription,
                    SkillPathPrompt  = model.SkillPathPrompt,
                    SkillType        = model.SkillType,
                    SkillGainValue   = model.SkillGainValue,
                    ExpendType       = model.ExpendType,
                    ExpendValue      = model.ExpendValue,
                    isGroupinjury    = model.isGroupinjury,
                    injuryCount      = model.injuryCount,
                    NeedLevel        = model.NeedLevel,
                };

                return(entity);
            }
            return(null);
        }
Exemple #7
0
        /// <summary>
        /// Entity转Model
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public V_xy_sp_skill EntityToModel(xy_sp_skill entity)
        {
            if (entity != null)
            {
                V_xy_sp_skill model = new V_xy_sp_skill()
                {
                    SkillID          = entity.SkillID,
                    SkillName        = entity.SkillName,
                    SkillDescription = entity.SkillDescription,
                    SkillPathPrompt  = entity.SkillPathPrompt,
                    SkillType        = entity.SkillType,
                    SkillGainValue   = entity.SkillGainValue,
                    ExpendType       = entity.ExpendType,
                    ExpendValue      = entity.ExpendValue,
                    isGroupinjury    = entity.isGroupinjury,
                    injuryCount      = entity.injuryCount,
                    NeedLevel        = entity.NeedLevel,
                };

                return(model);
            }

            return(null);
        }
Exemple #8
0
        public IHttpActionResult Get(string ID)
        {
            V_xy_sp_skill model = bll.Get(p => p.SkillID == ID);

            return(Ok(model));
        }
        /// <summary>
        /// 我方对怪物的伤害杀死的情况
        /// </summary>
        /// <param name="FighterFrom"></param>
        /// <param name="FighterTo"></param>
        private void updateEnemy(V_xy_sp_userspirit FighterFrom, V_xy_sp_spirit FighterTo, V_xy_sp_skill skill, ref string batmsg)
        {
            var LifeLeftValue = FighterTo.SpiritLife - skill.SkillGainValue;

            if (LifeLeftValue <= 0)//敌人已死亡
            {
                batmsg = "\"" + FighterFrom.SpiritName + "\"使用\"" + skill.SkillName + "\"杀死了\"" + FighterTo.SpiritName;
                //更新等级和经验
                xy_sp_userspiritBLL uspBll     = new xy_sp_userspiritBLL();
                decimal             Experience = FighterTo.SpiritExperience.Value;
                batmsg += " 获得" + Experience + "点经验 ";
                FighterFrom.SpiritExperience += Experience;
                //等级
                if (FighterFrom.SpiritExperience > LevelExperience(FighterFrom.SpiritLevel.Value))
                {
                    FighterFrom.SpiritLevel = FighterFrom.SpiritLevel + 1;
                    batmsg += System.Environment.NewLine + " 恭喜你升到" + FighterFrom.SpiritLevel + "级";
                    FighterFrom.SpiritExperience = FighterFrom.SpiritExperience - LevelExperience(FighterFrom.SpiritLevel.Value);
                }
                uspBll.Edit(FighterFrom);
                //我方获取敌方装备
                xy_sp_userspiritpackageBLL spBll = new xy_sp_userspiritpackageBLL();
                foreach (var item in FighterTo.spiritEquipmentList)
                {
                    V_xy_sp_userspiritpackage packageItem = new V_xy_sp_userspiritpackage();
                    packageItem.UserSpiritID = FighterFrom.UserSpiritID;
                    packageItem.EquipmentID  = item.EquipmentID;
                    spBll.Add(packageItem);
                    batmsg += System.Environment.NewLine + " 本次战斗意外获得:" + item.EquipmentName;
                }
            }
            else
            {
                batmsg = "\"" + FighterFrom.SpiritName + "\"使用\"" + skill.SkillName + "\"攻击\"" + FighterTo.SpiritName + "\"造成\"" + skill.SkillGainValue + "\"点物理伤害";
            }
            //更新怪物生命值
            FighterTo.SpiritLife = LifeLeftValue;
        }