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); }
/// <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); }