Пример #1
0
        public void OnCasterAddBuff(CCreature caster, CCreature target = null)
        {
            if (caster == null)
            {
                return;
            }
            SkillDataCsvData dataInfo = GetSkillData();

            if (dataInfo == null)
            {
                Debug.LogError("技能数据为空,请检测配置:技能id:" + m_skillInfo.id);
                return;
            }

            int[] selfBuffList = dataInfo.casterSelfBuffList;
            if (target == null)
            {
                target = caster;
            }
            AddBuff(caster, target, selfBuffList, caster.GetPos(), m_curSkillCmd.m_endPos, m_curSkillCmd.m_dir, m_curSkillCmd.m_skillIndex);
        }
Пример #2
0
        protected override void _Load()
        {
            m_dicData.Clear();
            for (int i = 0; i < m_csv.GetRows(); i++)
            {
                SkillDataCsvData data = new SkillDataCsvData();
                data.id     = m_csv.GetIntData(i, (int)eSkillDataCsv.id);
                data.name   = m_csv.GetData(i, (int)eSkillDataCsv.name);
                data.cdType = m_csv.GetIntData(i, (int)eSkillDataCsv.cdType);
                data.cd     = m_csv.GetIntData(i, (int)eSkillDataCsv.cd);

                string casterInfo = m_csv.GetData(i, (int)eSkillDataCsv.CasterBuffValue);
                data.casterSelfBuffList = StringHelper.GetIntList(casterInfo);

                string atkInfo = m_csv.GetData(i, (int)eSkillDataCsv.AtkBuffValue);
                data.atkBuffList = StringHelper.GetIntList(atkInfo);

                string hitInfo = m_csv.GetData(i, (int)eSkillDataCsv.HitBuffValue);
                data.hitBuffList = StringHelper.GetIntList(hitInfo);

                m_dicData.Add(data.id, data);
            }
        }
Пример #3
0
        public CSkillInfo(CCreature creature, int index, int skillId, int lv, bool subSkill = false, CSkillInfo mainSkill = null)
        {
            m_creature   = creature;
            m_skillId    = skillId;
            m_skillIndex = index;
            SkillCsv skill = CsvManager.Inst.GetCsv <SkillCsv>((int)eAllCSV.eAC_Skill);

            m_skillInfo = skill.GetData(skillId);
            m_skillLv   = lv;

            int skillDataId = skill.GetSkillDataIdByLv(skillId, lv);

            SkillDataCsv dataCsv = CsvManager.Inst.GetCsv <SkillDataCsv>((int)eAllCSV.eAC_SkillData);

            m_skillDataInfo = dataCsv.GetData(skillDataId);
            if (m_skillDataInfo == null)
            {
                return;
            }
            if (GetCDType() == (int)eSkillCdType.Time)
            {
                m_curCdTime = m_skillDataInfo.cd;
            }
            // 技能附加击中BUFF
            for (int i = 0; i < m_skillDataInfo.atkBuffList.Length; i++)
            {
                if (m_skillDataInfo.atkBuffList[i] == 0)
                {
                    continue;
                }
                BuffBase buff = SkillBase.AddBuff(m_creature, m_creature, m_skillDataInfo.atkBuffList[i], Vector2d.zero, Vector2d.zero, Vector2d.zero, index);
                if (buff != null)
                {
                    buff.m_dieDestroy = false;
                    m_buffList.Add(buff);
                }
            }
            // 技能附加受击BUFF
            for (int i = 0; i < m_skillDataInfo.hitBuffList.Length; i++)
            {
                if (m_skillDataInfo.hitBuffList[i] == 0)
                {
                    continue;
                }
                BuffBase buff = SkillBase.AddBuff(m_creature, m_creature, m_skillDataInfo.hitBuffList[i], Vector2d.zero, Vector2d.zero, Vector2d.zero, index);
                if (buff != null)
                {
                    buff.m_dieDestroy = false;
                    m_buffList.Add(buff);
                }
            }

            #region 包含子技能的部分
            m_mainSkill = mainSkill;
            if (subSkill)
            {
                return;
            }
            if (m_skillInfo.subSkill != null &&
                m_skillInfo.subSkill.Length > 0 &&
                m_skillInfo.subSkill[0] != 0)
            {
                m_bCondiSubSkill = true;
                m_nearCommon     = new CSkillInfo[m_skillInfo.subSkill.Length];
                for (int i = 0; i < m_skillInfo.subSkill.Length; i++)
                {
                    int        sSkillId = m_skillInfo.subSkill[i];
                    CSkillInfo info     = new CSkillInfo(m_creature, index, sSkillId, 1, true, this);
                    m_nearCommon[i] = info;
                }
            }
            #endregion
        }