コード例 #1
0
        public static float RatioCoefficient(float fValue, SkillEnum.SkillKind skillKind, CharHandler srcCharHandler, CharHandler aimCharHandler)
        {
            bool bSameSide = srcCharHandler.m_CharData.m_eSide == aimCharHandler.m_CharData.m_eSide;

            switch (skillKind)
            {
            case SkillEnum.SkillKind.Soul:
                fValue *= 1 + srcCharHandler.m_CharData.SoulSkillAtkRatio - (bSameSide ? 0 : aimCharHandler.m_CharData.SoulSkillDefRatio);                         //(1 + 攻方魂技提升 - 防方魂技免伤)
                break;

            case SkillEnum.SkillKind.Magic:
                fValue *= 1 + srcCharHandler.m_CharData.MagicSkillAtkRatio - (bSameSide ? 0 : aimCharHandler.m_CharData.MagicSkillDefRatio);                         //(1 + 攻方法术提升 - 防方法术免伤)
                break;

            default:
                fValue *= 1 + srcCharHandler.m_CharData.ForceSkillAtkRatio - (bSameSide ? 0 : aimCharHandler.m_CharData.ForceSkillDefRatio);                         //(1 + 攻方武功提升 - 防方武功免伤)

                //计算暴击格挡
                float criticalRatio = srcCharHandler.m_CharData.CriticalRatio;
                float blockRatio    = bSameSide ? 0 : aimCharHandler.m_CharData.BlockRatio;
                if (criticalRatio + blockRatio > 1)
                {
                    criticalRatio = criticalRatio / (criticalRatio + blockRatio);
                    blockRatio    = 1 - criticalRatio;
                }

                float rand = Random.Range(0f, 1f);
                if (rand < criticalRatio)
                {
                    fValue *= 2;                                                                                                                        //暴击
                    HUDTextMgr.GetInst().NewText(string.Format(ConfigData.GetHUDText("21"), fValue), aimCharHandler, HUDTextMgr.HUDTextType.NormalHit); //"暴击{0:N0}"
                }
                else if (rand - criticalRatio < blockRatio)
                {
                    fValue = 0;                                                                                             //格挡
                    HUDTextMgr.GetInst().NewText(ConfigData.GetHUDText("22"), aimCharHandler, HUDTextMgr.HUDTextType.BUFF); //"格挡"
                }
                break;
            }

            return(fValue);
        }
コード例 #2
0
        private void SetSkillKind(string condition)
        {
            switch (m_iSkillIndex)
            {
            case 1:
                m_eSkillKind = SkillEnum.SkillKind.Soul;
                m_iNeedMP    = int.Parse(condition);
                break;

            case 2:
            case 3:
                m_eSkillKind = SkillEnum.SkillKind.Force;
                m_iCDTime    = int.Parse(condition);
                break;

            case 4:
            case 5:
                m_eSkillKind = SkillEnum.SkillKind.Magic;
                string[] triggerTime = condition.Split('|');
                m_eTriggerType  = (SkillEnum.TriggerType)Enum.Parse(typeof(SkillEnum.TriggerType), triggerTime[0]);
                m_iTriggerParam = triggerTime.Length > 1 ? int.Parse(triggerTime[1]) : 0;
                break;
            }
        }