示例#1
0
        /// <summary> 增加武将Buff</summary>
        /// <param name="role">武将</param>
        /// <param name="round">影响回合数</param>
        /// <param name="type">技能类型</param>
        /// <param name="values">技能效果值</param>
        /// <param name="flag">true:增加 false:减少</param>
        private void AddRoleBuff(FightRole role, int round, int type, double values, bool flag)
        {
            if (round < 0)
            {
                return;
            }
            switch (round)
            {
            case 0:
            {
                var roleAtt = new FightRoleBuff {
                    id = role.id, round = 0, type = type, values = -values, state = 0
                };
                list_buff.Add(roleAtt); break;
            }

            case 99999: { role.foreverBuffVos.Add(new BuffVo {
                        type = type, buffValue = values
                    }); return; }

            default:
            {
                var roleAtt = new FightRoleBuff {
                    id = role.id, round = Round + (round - 1), type = type, values = -values, state = 0
                };
                list_buff.Add(roleAtt); break;
            }
            }
            role.buffVos2.Add(new BuffVo {
                type = type, buffValue = flag ? values : -values
            });
#if DEBUG
            XTrace.WriteLine(string.Format("{0} {1} {2} - {3}", "增加  武将 " + role.id + " BUFF ", " 类型 " + type, " 过期回合数 " + (Round + (round - 1)), " 效果值 " + values));
#endif
        }
示例#2
0
        /// <summary>不加气力普通攻击操作</summary>
        /// <param name="attackrole">当前攻击武将</param>
        /// <param name="flag">范围类型:true 全体 false:单体</param>
        private void Attack(FightRole attackrole, bool flag)
        {
            var movesvo = move.CloneDeepEntity();

            if (attackrole == null)
            {
                return;
            }
            var list = GetRoleOrRoleAll(GetMatrix(false), flag);

            if (!list.Any())
            {
                return;
            }

            foreach (var item in list)
            {
                var iscrit = false;

                if (!IsTrue(attackrole.IgnoreDuck))
                {
                    if (IsDuck(item))
                    {
                        continue;
                    }
                }
                else
                {
#if DEBUG
                    XTrace.WriteLine(string.Format("{0} {1} {2}", "技能成功--> 被打方Id", item.id, "无视闪避触发成功 直接不计算闪避率进行攻击"));
#endif
                }
                var number = DamageCount(attackrole, item, ref iscrit);
                if (flag)
                {
                    number = Convert.ToInt64(number * 0.3);                        //群攻增加0.3系数
                }
                item.hp = item.hp - number;
                movesvo.hitIds.Add(Convert.ToDouble(item.id));                     //普通受击武将
                if (iscrit)
                {
                    var roleAtt = new FightRoleBuff {
                        id = item.id, round = 0, type = (int)FightingSkillType.CRIT, values = 0, state = 0
                    };
                    list_buff.Add(roleAtt);
                    item.buffVos2.Add(new BuffVo {
                        type = (int)FightingSkillType.CRIT, buffValue = -number
                    });
                }
                else
                {
                    item.damage = number;
                }
            }
            BuildMovesVo(movesvo, (int)SkillType.COMMON);
        }
示例#3
0
        /// <summary> 对相应的武将进行影响 </summary>
        /// <param name="attackrole">攻击武将</param>
        /// <param name="defenserole">防守武将</param>
        /// <param name="number">造成的伤害</param>
        /// <param name="flag">是否暴击</param>
        private void ByEffect(FightRole attackrole, FightRole defenserole, Int64 number, bool flag)
        {
            var movesvo = move.CloneDeepEntity();

            movesvo.hitIds.Add(Convert.ToDouble(defenserole.id));                         //防守武将id加入受击武将id
            defenserole.hp = defenserole.hp - number;                                     //修改防守方属性
            if (flag)
            {
                var roleAtt = new FightRoleBuff {
                    id = defenserole.id, round = 0, type = (int)FightingSkillType.CRIT, values = 0, state = 0
                };
                list_buff.Add(roleAtt);
                defenserole.buffVos2.Add(new BuffVo {
                    type = (int)FightingSkillType.CRIT, buffValue = -number
                });
            }
            else
            {
                defenserole.damage = number;
            }
            BuildMovesVo(movesvo, (int)SkillType.COMMON);
        }
示例#4
0
        /// <summary>是否闪避 </summary>
        private bool IsDuck(FightRole defenserole)
        {
            if (!IsTrue(defenserole.dodgeProbability))
            {
                return(false);
            }
            var movesvo = move.CloneDeepEntity();
            var roleAtt = new FightRoleBuff {
                id = defenserole.id, round = 0, type = (int)FightingSkillType.DODGE, values = 0, state = 0
            };

            list_buff.Add(roleAtt);
            defenserole.buffVos2.Add(new BuffVo {
                type = (int)FightingSkillType.DODGE
            });
            movesvo.hitIds.Add(defenserole.id);
            BuildMovesVo(movesvo, (int)SkillType.COMMON);
#if DEBUG
            XTrace.WriteLine(string.Format("{0} {1}  {2}", "被打方Id", defenserole.id, "触发闪避 "));
#endif
            return(true);
        }