Beispiel #1
0
    public void DoSkill(int times)
    {
        if (m_skill == null)
        {
            return;
        }
        SoldierSkill skill      = m_skill as SoldierSkill;
        List <Life>  targetlist = new List <Life>();
        LifeMCamp    camp       = m_parent.m_Core.m_Camp == LifeMCamp.ATTACK?LifeMCamp.DEFENSE : LifeMCamp.ATTACK;

        targetlist = GetRangeAttackList(MapGrid.GetMG(m_parent.m_Pos), skill, camp, null);
        if (skill.m_actiontype == 0)
        {
            StatusSelfBuff(m_parent, m_skill);
            for (int i = 0; i < targetlist.Count; i++)
            {
                if (!targetlist[i].InBoat)
                {
                    continue;
                }
                SkillReleaseInfo info = Life.CalcDamage(m_parent, targetlist[i], null, m_skill);
                if (skill.m_attckmodeid > 0)
                {
                    float power = skill.GetAttackPower(times);
                    info.m_Damage = (int)(info.m_Damage * power);
                }
                Transform attackT = m_parent.m_thisT;
                targetlist[i].ApplyDamage(info, attackT);
            }
            //Debug.Log(str);
        }
        else if (skill.m_actiontype == 1)
        {
            StatusSelfBuff(m_parent, m_skill);
            for (int i = 0; i < targetlist.Count; i++)
            {
                if (!targetlist[i].InBoat)
                {
                    continue;
                }
                SkillReleaseInfo info = Life.CalcDamage(m_parent, targetlist[i], null, m_skill);
                Debug.Log("doskill  " + m_skill.m_name + "," + info.m_Damage);
                if (skill.m_attckmodeid > 0)
                {
                    float power = skill.GetAttackPower(times);
                    info.m_Damage = (int)(info.m_Damage * power);
                }
                Transform attackT = m_parent.m_thisT;
                targetlist[i].ApplyDamage(info, attackT);
            }
            //Debug.Log(str);
        }
    }