public ChangeAttributeFormat(ICommonSkill skill, SkillEffectTable dbData) : base(skill, dbData)
        {
            var _row = ChangeAttributeTableReader.Instance.FindDefaultUnique((ushort)dbData.EffectTableID);

            this.AttributeTable   = _row.CloneEx();
            this.OffsetAttributes = new CommonAttributeFormat(true);
        }
        public List <float> GetSkillDescriptionParameter(ushort skillID, int level)
        {
            List <float> _parameterList = new List <float>();
            var          _dbSkill       = SkillTableReader.Instance.FindDefaultUnique(skillID);
//      SKILL_CODE_NAME _codeName = _dbSkill.CodeName;
            var _skillID = _dbSkill.ID;

            switch (_skillID)
            {
//        case SKILL_CODE_NAME.Skill0:
            case 0:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float NormCp = _dataOfSkillForDisplay.NormCp;
                float NormSp = _dataOfSkillForDisplay.NormSp;
                _parameterList.Add(NormCp + NormSp * level);
                break;
            }

//        case SKILL_CODE_NAME.Skill1:
            case 1:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float ATKCp = _dataOfSkillForDisplay.ATKCp;
                float ATKSp = _dataOfSkillForDisplay.ATKSp;
                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

//        case SKILL_CODE_NAME.Skill2:
            case 2:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float ATKCp = _dataOfSkillForDisplay.ATKCp;
                float ATKSp = _dataOfSkillForDisplay.ATKSp;
                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

//        case SKILL_CODE_NAME.Skill3:
            case 3:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float ATKCp = _dataOfSkillForDisplay.ATKCp;
                float ATKSp = _dataOfSkillForDisplay.ATKSp;
                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

            case 4:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float ATKCp = _dataOfSkillForDisplay.ATKCp;
                float ATKSp = _dataOfSkillForDisplay.ATKSp;
                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

            case 5:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float VITCp = _dataOfSkillForDisplay.VITCp;
                float VITSp = _dataOfSkillForDisplay.VITSp;
                _parameterList.Add((VITCp + VITSp * level) * 100);
                break;
            }

            case 6:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float VITCp = _dataOfSkillForDisplay.VITCp;
                float VITSp = _dataOfSkillForDisplay.VITSp;
                _parameterList.Add((VITCp + VITSp * level) * 100);
                break;
            }

            case 7:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float VITCp = _dataOfSkillForDisplay.VITCp;
                float VITSp = _dataOfSkillForDisplay.VITSp;
                _parameterList.Add((VITCp + VITSp * level) * 100);
                break;
            }

            case 8:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float MAGCp = _dataOfSkillForDisplay.MAGCp;
                float MAGSp = _dataOfSkillForDisplay.MAGSp;
                _parameterList.Add((MAGCp + MAGSp * level) * 100);
                break;
            }

            case 9:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float MAGCp = _dataOfSkillForDisplay.MAGCp;
                float MAGSp = _dataOfSkillForDisplay.MAGSp;
                _parameterList.Add((MAGCp + MAGSp * level) * 100);

                var _effectDot = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.DOT);
                    });
                DotTable _dotData = DotTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float    INTCp    = _dotData.INTCp;
                float    INTSp    = _dotData.INTSp;
                _parameterList.Add((INTCp + INTSp * level) * 100);

                break;
            }

            case 10:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _skillEffect     = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });
                StandardAttackPowerTable _dataOfSkillForDisplay = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_skillEffect.EffectTableID);
                float MAGCp = _dataOfSkillForDisplay.MAGCp;
                float MAGSp = _dataOfSkillForDisplay.MAGSp;
                _parameterList.Add((MAGCp + MAGSp * level) * 100);

                var _effectDot = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.DOT);
                    });
                DotTable _dotData = DotTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float    INTCp    = _dotData.INTCp;
                float    INTSp    = _dotData.INTSp;
                _parameterList.Add((INTCp + INTSp * level) * 100);

                break;
            }

            case 11:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectDot       = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.DOT);
                    });

                DotTable _dotData = DotTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float    INTCp    = _dotData.INTCp;
                float    INTSp    = _dotData.INTSp;
                _parameterList.Add((INTCp + INTSp * level) * 100);

                break;
            }

            case 12:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectDot       = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_HP);
                    });

                ChangeHPTable _changeHPData = ChangeHPTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float         INTCp         = _changeHPData.INTCp;
                float         INTSp         = _changeHPData.INTSp;
                _parameterList.Add((INTCp + INTSp * level) * 100);

                break;
            }

            case 13:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectDot       = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_HP);
                    });

                ChangeHPTable _changeHPData = ChangeHPTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float         INTCp         = _changeHPData.INTCp;
                float         INTSp         = _changeHPData.INTSp;
                _parameterList.Add((INTCp + INTSp * level) * 100);

                break;
            }

            case 14:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectDot       = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_HP);
                    });

                ChangeHPTable _changeHPData = ChangeHPTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float         INTCp         = _changeHPData.INTCp;
                float         INTSp         = _changeHPData.INTSp;
                _parameterList.Add((INTCp + INTSp * level) * 100);

                break;
            }

            case 15:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectDot       = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.REINFORCE);
                    });

                ReinforceTable _reinforceData = ReinforceTableReader.Instance.FindDefaultFirst((ushort)_effectDot.EffectTableID);
                float          CRISp          = _reinforceData.CRISp;
                _parameterList.Add(CRISp * level);

                break;
            }

            case 16:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectChangeHP  = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_HP);
                    });

                ChangeHPTable _changeHPData = ChangeHPTableReader.Instance.FindDefaultFirst((ushort)_effectChangeHP.EffectTableID);
                float         NormCp        = _changeHPData.NormCp;
                float         NormSp        = _changeHPData.NormSp;
                _parameterList.Add(NormCp + NormSp * level);

                var _effectChangeAttribute = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_ATTRIBUTE);
                    });

                ChangeAttributeTable _changeAttributeData = ChangeAttributeTableReader.Instance.FindDefaultFirst((ushort)_effectChangeAttribute.EffectTableID);
                float ATKCp = _changeAttributeData.ATKCp;
                float ATKSp = _changeAttributeData.ATKSp;
                _parameterList.Add(ATKCp + ATKSp * level);

                float DEFCp = _changeAttributeData.DEFCp;
                float DEFSp = _changeAttributeData.DEFSp;
                _parameterList.Add(DEFCp + DEFSp * level);

                break;
            }

            case 17:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectChangeHP  = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_HP);
                    });

                ChangeHPTable _changeHPData = ChangeHPTableReader.Instance.FindDefaultFirst((ushort)_effectChangeHP.EffectTableID);
                float         NormCp        = _changeHPData.NormCp;
                float         NormSp        = _changeHPData.NormSp;
                _parameterList.Add(NormCp + NormSp * level);

                var _effectChangeAttribute = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_ATTRIBUTE);
                    });

                ChangeAttributeTable _changeAttributeData = ChangeAttributeTableReader.Instance.FindDefaultFirst((ushort)_effectChangeAttribute.EffectTableID);
                float ATKCp = _changeAttributeData.ATKCp;
                float ATKSp = _changeAttributeData.ATKSp;
                _parameterList.Add(ATKCp + ATKSp * level);

                float DEFCp = _changeAttributeData.DEFCp;
                float DEFSp = _changeAttributeData.DEFSp;
                _parameterList.Add(DEFCp + DEFSp * level);

                break;
            }

            case 18:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectChangeHP  = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_HP);
                    });

                ChangeHPTable _changeHPData = ChangeHPTableReader.Instance.FindDefaultFirst((ushort)_effectChangeHP.EffectTableID);
                float         NormCp        = _changeHPData.NormCp;
                float         NormSp        = _changeHPData.NormSp;
                _parameterList.Add(NormCp + NormSp * level);

                var _effectChangeAttribute = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_ATTRIBUTE);
                    });

                ChangeAttributeTable _changeAttributeData = ChangeAttributeTableReader.Instance.FindDefaultFirst((ushort)_effectChangeAttribute.EffectTableID);
                float ATKCp = _changeAttributeData.ATKCp;
                float ATKSp = _changeAttributeData.ATKSp;
                _parameterList.Add(ATKCp + ATKSp * level);

                float DEFCp = _changeAttributeData.DEFCp;
                float DEFSp = _changeAttributeData.DEFSp;
                _parameterList.Add(DEFCp + DEFSp * level);

                break;
            }

            case 19:
            {
                var _skillEffectList  = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectStandPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });

                var   _standAttackPowerData = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectStandPower.EffectTableID);
                float ATKCp = _standAttackPowerData.ATKCp;
                float ATKSp = _standAttackPowerData.ATKSp;
                _parameterList.Add((ATKCp + ATKSp * level) * 100);

                var _effectChangeAttribute = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_ATTRIBUTE);
                    });

                ChangeAttributeTable _changeAttributeData = ChangeAttributeTableReader.Instance.FindDefaultFirst((ushort)_effectChangeAttribute.EffectTableID);
                float ACCP = _changeAttributeData.ACCp;
                float ACSP = _changeAttributeData.ACSp;
                _parameterList.Add(ACCP + ACSP * level);

                break;
            }

            case 20:
            {
                var _skillEffectList    = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectChangeDamage = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_DAMAGE);
                    });

                var   _changeDamageData = ChangeDamageTableReader.Instance.FindDefaultFirst((ushort)_effectChangeDamage.EffectTableID);
                float NormCp            = _changeDamageData.NormCp;
                float NormSp            = _changeDamageData.NormSp;
                _parameterList.Add(NormCp + NormSp * level);
                break;
            }

            case 21:
            {
                var _skillEffectList    = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectChangeDamage = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_DAMAGE);
                    });

                var   _changeDamageData = ChangeDamageTableReader.Instance.FindDefaultFirst((ushort)_effectChangeDamage.EffectTableID);
                float NormCp            = _changeDamageData.NormCp;
                float NormSp            = _changeDamageData.NormSp;
                _parameterList.Add(NormCp + NormSp * level);
                break;
            }

            case 22:
            {
                var _skillEffectList            = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectLastStandAttackPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.LAST_STAND_ATTACK_POWER);
                    });

                var   _lastStandAttackData = LastStandAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectLastStandAttackPower.EffectTableID);
                float NormCp = _lastStandAttackData.NormCp;
                float NormSp = _lastStandAttackData.NormSp;
                _parameterList.Add(NormCp + NormSp * level);
                break;
            }

            case 23:
            {
                var _skillEffectList        = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectStandAttackPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });

                var   _standAttackPowerData = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectStandAttackPower.EffectTableID);
                float ATKCp = _standAttackPowerData.ATKCp;
                float ATKSp = _standAttackPowerData.ATKSp;
                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

            case 24:
            {
                var _skillEffectList        = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectStandAttackPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });

                var   _standAttackPowerData = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectStandAttackPower.EffectTableID);
                float ATKCp = _standAttackPowerData.ATKCp;
                float ATKSp = _standAttackPowerData.ATKSp;

                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

            case 25:
            {
                var _skillEffectList        = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectStandAttackPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });

                var   _standAttackPowerData = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectStandAttackPower.EffectTableID);
                float ATKCp = _standAttackPowerData.ATKCp;
                float ATKSp = _standAttackPowerData.ATKSp;

                _parameterList.Add((ATKCp + ATKSp * level) * 100);
                break;
            }

            case 26:
            {
                //FIXME: the skill is not implemented
                break;
            }

            case 27:
            {
                var _skillEffectList        = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectStandAttackPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });

                var   _standAttackPowerData = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectStandAttackPower.EffectTableID);
                float MAGCp = _standAttackPowerData.MAGCp;
                float MAGSp = _standAttackPowerData.MAGSp;

                _parameterList.Add((MAGCp + MAGSp * level) * 100);

                var _effectChangeAttribute = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_ATTRIBUTE);
                    });
                var   _changeAttributeData = ChangeAttributeTableReader.Instance.FindDefaultFirst((ushort)_effectChangeAttribute.EffectTableID);
                float AVDCp = _changeAttributeData.AVDCp;
                float AVDSp = _changeAttributeData.AVDSp;
                float HITCp = _changeAttributeData.HITCp;
                float HITSp = _changeAttributeData.HITSp;
                _parameterList.Add(AVDCp + AVDSp * level);
                _parameterList.Add(HITCp + HITSp * level);
                break;
            }

            case 28:
            {
                var _skillEffectList        = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectStandAttackPower = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.STANDARD_ATTACK_POWER);
                    });

                var   _standAttackPowerData = StandardAttackPowerTableReader.Instance.FindDefaultFirst((ushort)_effectStandAttackPower.EffectTableID);
                float MAGCp = _standAttackPowerData.MAGCp;
                float MAGSp = _standAttackPowerData.MAGSp;

                _parameterList.Add((MAGCp + MAGSp * level) * 100);

                var _effectChangeAttribute = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.CHANGE_ATTRIBUTE);
                    });
                var   _changeAttributeData = ChangeAttributeTableReader.Instance.FindDefaultFirst((ushort)_effectChangeAttribute.EffectTableID);
                float AVDCp = _changeAttributeData.AVDCp;
                float AVDSp = _changeAttributeData.AVDSp;
                float HITCp = _changeAttributeData.HITCp;
                float HITSp = _changeAttributeData.HITSp;
                float CRICp = _changeAttributeData.CRICp;
                float CRISp = _changeAttributeData.CRISp;
                _parameterList.Add(AVDCp + AVDSp * level);
                _parameterList.Add(HITCp + HITSp * level);
                _parameterList.Add(CRICp + CRISp * level);
                break;
            }

            case 29:
            {
                //FIXME : the skill is not implemented
                break;
            }

            case 30:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectReinforce = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.REINFORCE);
                    });

                var   _effectReinforceData = ReinforceTableReader.Instance.FindDefaultFirst((ushort)_effectReinforce.EffectTableID);
                float ACSp = _effectReinforceData.ACSp;

                _parameterList.Add(ACSp * level);

                break;
            }

            case 31:
            {
                var _skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _effectReinforce = _skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.REINFORCE);
                    });

                var   _effectReinforceData = ReinforceTableReader.Instance.FindDefaultFirst((ushort)_effectReinforce.EffectTableID);
                float RESSp = _effectReinforceData.RESSp;

                _parameterList.Add(RESSp * level);

                break;
            }

            case 32:
            {
                var _skillTriggerList = SkillTriggerTableReader.Instance.FindBySkillID(skillID);
                var _trigger          = _skillTriggerList.Find(row => {
                        return(row.TriggerType == SKILL_TRIGGER_TYPE.PROBABILITY);
                    });

                var   _probability = ProbabilityTableReader.Instance.FindDefaultFirst((ushort)_trigger.TriggerTableID);
                float _Cp0         = _probability.Cp_0;
                float _Cp1         = _probability.Cp_1;

                _parameterList.Add(_Cp0 + _Cp1 * level);

                break;
            }

            case 33:
            {
                var _skillTriggerList = SkillTriggerTableReader.Instance.FindBySkillID(skillID);
                var _trigger          = _skillTriggerList.Find(row => {
                        return(row.TriggerType == SKILL_TRIGGER_TYPE.PROBABILITY);
                    });

                var   _probability = ProbabilityTableReader.Instance.FindDefaultFirst((ushort)_trigger.TriggerTableID);
                float _Cp0         = _probability.Cp_0;
                float _Cp1         = _probability.Cp_1;

                _parameterList.Add(_Cp0 + _Cp1 * level);

                break;
            }

            case 34:
            {
                //FIXME : the skill is not implemented,do it late

                break;
            }

            case 35:
            {
                var _skillTriggerList = SkillTriggerTableReader.Instance.FindBySkillID(skillID);
                var _trigger          = _skillTriggerList.Find(row => {
                        return(row.TriggerType == SKILL_TRIGGER_TYPE.PROBABILITY);
                    });

                var   _probability = ProbabilityTableReader.Instance.FindDefaultFirst((ushort)_trigger.TriggerTableID);
                float _Cp0         = _probability.Cp_0;
                float _Cp1         = _probability.Cp_1;

                _parameterList.Add(_Cp0 + _Cp1 * level);

                break;
            }

            case 36:
            {
                var _skillTriggerList = SkillTriggerTableReader.Instance.FindBySkillID(skillID);
                var _trigger          = _skillTriggerList.Find(row => {
                        return(row.TriggerType == SKILL_TRIGGER_TYPE.PROBABILITY);
                    });

                var   _probability = ProbabilityTableReader.Instance.FindDefaultFirst((ushort)_trigger.TriggerTableID);
                float _Cp0         = _probability.Cp_0;
                float _Cp1         = _probability.Cp_1;

                _parameterList.Add(_Cp0 + _Cp1 * level);

                break;
            }

            case 37:
            {
                //FIXME : the skill is not implemented,do it late
                break;
            }

            case 38:
            {
                var skillEffectList = SkillEffectTableReader.Instance.FindBySkillID(skillID);
                var _reinforce      = skillEffectList.Find(row => {
                        return(row.EffectType == SKILL_EFFECT_TYPE.REINFORCE);
                    });
                var _reinforceData = ReinforceTableReader.Instance.FindDefaultFirst((ushort)_reinforce.EffectTableID);

                float _HPMaxSp = _reinforceData.HPMaxSp;

                _parameterList.Add(_HPMaxSp * level);

                break;
            }

            case 39:
            {
                var _skillTriggerList = SkillTriggerTableReader.Instance.FindBySkillID(skillID);
                var _trigger          = _skillTriggerList.Find(row => {
                        return(row.TriggerType == SKILL_TRIGGER_TYPE.PROBABILITY);
                    });

                var   _probability = ProbabilityTableReader.Instance.FindDefaultFirst((ushort)_trigger.TriggerTableID);
                float _Cp0         = _probability.Cp_0;
                float _Cp1         = _probability.Cp_1;

                _parameterList.Add(_Cp0 + _Cp1 * level);

                break;
            }

            case 40:
            {
                var _skillTriggerList = SkillTriggerTableReader.Instance.FindBySkillID(skillID);
                var _trigger          = _skillTriggerList.Find(row => {
                        return(row.TriggerType == SKILL_TRIGGER_TYPE.PROBABILITY);
                    });

                var   _probability = ProbabilityTableReader.Instance.FindDefaultFirst((ushort)_trigger.TriggerTableID);
                float _Cp0         = _probability.Cp_0;
                float _Cp1         = _probability.Cp_1;

                _parameterList.Add(_Cp0 + _Cp1 * level);

                break;
            }

            case 41:
            {
                //FIXME : the skill is not implemented,do it late

                break;
            }

            case 42:
            {
                //FIXME : the skill is not implemented,do it late

                break;
            }

            case 43:
            {
                //FIXME : the skill is not implemented,do it late
                break;
            }

            case 44:
            {
                var   _trickLearning = TrickLearningTableReader.Instance.FindDefaultFirst((ushort)0);
                float _Cp0           = _trickLearning.Cp_0;

                _parameterList.Add(_Cp0 * 100);

                break;
            }

            default:
            {
                break;
            }
            }

            return(_parameterList);
        }