Пример #1
0
        public double GetMerlinInjurePercent(IObject attacker, IObject defender, EMerlinSecretAttrType eType)
        {
            double val = 0.0;

            try
            {
                switch (eType)
                {
                case EMerlinSecretAttrType.EMSAT_FrozenP:
                    val += RoleAlgorithm.GetFrozenPercent(attacker);
                    break;

                case EMerlinSecretAttrType.EMSAT_PalsyP:
                    val += RoleAlgorithm.GetPalsyPercent(attacker);
                    break;

                case EMerlinSecretAttrType.EMSAT_SpeedDownP:
                    val += RoleAlgorithm.GetSpeedDownPercent(attacker);
                    break;

                case EMerlinSecretAttrType.EMSAT_BlowP:
                    val += RoleAlgorithm.GetBlowPercent(attacker);
                    break;
                }
                if (defender is Robot || defender is GameClient)
                {
                    switch (eType)
                    {
                    case EMerlinSecretAttrType.EMSAT_FrozenP:
                        val -= ((defender is GameClient) ? RoleAlgorithm.GetExtProp(defender as GameClient, 97) : (defender as Robot).DeFrozenPercent);
                        break;

                    case EMerlinSecretAttrType.EMSAT_PalsyP:
                        val -= ((defender is GameClient) ? RoleAlgorithm.GetExtProp(defender as GameClient, 98) : (defender as Robot).DePalsyPercent);
                        break;

                    case EMerlinSecretAttrType.EMSAT_SpeedDownP:
                        val -= ((defender is GameClient) ? RoleAlgorithm.GetExtProp(defender as GameClient, 99) : (defender as Robot).DeSpeedDownPercent);
                        break;

                    case EMerlinSecretAttrType.EMSAT_BlowP:
                        val -= ((defender is GameClient) ? RoleAlgorithm.GetExtProp(defender as GameClient, 100) : (defender as Robot).DeBlowPercent);
                        break;
                    }
                }
                return((val > 0.0) ? val : 0.0);
            }
            catch (Exception ex)
            {
                if (attacker is GameClient)
                {
                    GameClient client = attacker as GameClient;
                    if (null != client)
                    {
                        DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false);
                    }
                }
            }
            return((val > 0.0) ? val : 0.0);
        }
Пример #2
0
        /// <summary>
        /// 获取伤害概率
        /// </summary>
        /// <param name="attacker">攻击者</param>
        /// <param name="eType">伤害类型</param>
        /// <returns></returns>
        public double GetMerlinInjurePercent(IObject attacker, EMerlinSecretAttrType eType)
        {
            double val = 0.0;

            try
            {
                // 根据类型获取角色伤害概率
                switch (eType)
                {
                case EMerlinSecretAttrType.EMSAT_FrozenP:     // 冰冻
                    val += RoleAlgorithm.GetFrozenPercent(attacker);
                    break;

                case EMerlinSecretAttrType.EMSAT_SpeedDownP:     // 减速
                    val += RoleAlgorithm.GetSpeedDownPercent(attacker);
                    break;

                case EMerlinSecretAttrType.EMSAT_PalsyP:     // 麻痹
                    val += RoleAlgorithm.GetPalsyPercent(attacker);
                    break;

                case EMerlinSecretAttrType.EMSAT_BlowP:     // 重击
                    val += RoleAlgorithm.GetBlowPercent(attacker);
                    break;
                }
                return(val);
            }
            catch (Exception ex)
            {
                if (attacker is GameClient)
                {
                    GameClient client = attacker as GameClient;
                    if (null != client)
                    {
                        DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false);
                    }
                }
            }
            return(val);
        }