chenxin
2020-11-20 424feadd6adf57195da00db43caced2ede6884e9
Assets/Scripts/TowerDefense/Level/AgentInsManager.cs
@@ -676,6 +676,7 @@
        if (slinfo.atcmod.Count < 2) return;
        float radius = slinfo.atcmod[1];
        int deathCount = 0;
        for (int ti = 0; ti < mgrList.Length; ti++)
        {
@@ -683,6 +684,7 @@
            for (int idx = 0; idx < mgr.listAgent.Count; idx++)
            {
                Agent eag = mgr.listAgent[idx];
                bool isDeath = eag.isDead;
                if (eag.AgentType == SpawnAgentType.BubbleBomb)
                {
@@ -714,6 +716,9 @@
                            EndlessGameUI.instance.generateBloodText(fpos, damage, false, false);
                    }
                    if (!isDeath && eag.isDead)
                        ++deathCount;
                    if (eag.isDead)
                        continue;
                    else
@@ -722,6 +727,8 @@
            }
        }
        if (deathCount > 1)
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessOneTimeKillCount, deathCount);
        return;
    }
@@ -749,13 +756,21 @@
        if (wavelineIns == null) return;
        List<Agent> listAg = wavelineIns.listAgent;
        // 统计被火技能直接烧死的数量
        int deathCount = 0;
        for (int ti = listAg.Count - 1; ti >= 0; ti--)
        {
            Agent eag = listAg[ti];
            if (eag.isDead) continue;
            if (eag.AgentType == SpawnAgentType.BubbleBomb)
            {
                EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessFireSkillKillBubbleBomb, (eag as BubbleBombAgent).Id);
                // 泡泡炸弹是直接就被火技能秒杀的
                ++deathCount;
            }
            else
            {
                Vector3 fpos = eag.transform.position;
@@ -771,8 +786,16 @@
                    else if (EndlessGameUI.instanceExists)
                        EndlessGameUI.instance.generateBloodText(fpos, damage, false, false);
                }
                eag.PlayFireSkillHit();
                if (eag.isDead)
                    ++deathCount;
            }
        }
        if (deathCount > 1)
            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessOneTimeKillCount, deathCount);
    }
    /// <summary>
@@ -823,7 +846,7 @@
    /// 对当前Agent同一列内一定区域内的怪物进行攻击:
    /// </summary>
    /// <param name="ag"></param>
    public void StartExplodeAttack(Agent ag, float damage)
    public int StartExplodeAttack(Agent ag, float damage)
    {
        WaveLineAgentInsMgr tmgr;
        if (!ag.opponentAgent)
@@ -831,30 +854,45 @@
        else
            tmgr = this.oppoAgentWaveLineArray[ag.waveLineID];
        if (tmgr.getAgentInsNum() <= 1) return;
        if (tmgr.getAgentInsNum() <= 1) return 0;
        List<Agent> listAg = tmgr.listAgent;
        Vector3 tpos = ag.transform.position;
        int deathCount = 0;
        for (int ti = listAg.Count - 1; ti >= 0; ti--)
        {
            Agent eag = listAg[ti];
            if (eag == ag) continue;
            Vector3 fpos = eag.transform.position;
            tpos.y = 0;
            fpos.y = 0;
            if (Vector3.Distance(tpos, fpos) < 8)
            if (eag.AgentType == SpawnAgentType.BubbleBomb)
            {
                eag.TakeDamage(damage, fpos, null);
                if (!eag.opponentAgent)
                EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessBossSkillBubbleBombGetHit, (eag as BubbleBombAgent).Id);
            }
            else
            {
                Vector3 fpos = eag.transform.position;
                tpos.y = 0;
                fpos.y = 0;
                if (Vector3.Distance(tpos, fpos) < 8)
                {
                    if (GameUI.instanceExists)
                        GameUI.instance.generateBloodText(fpos, damage, false, false);
                    else if (EndlessGameUI.instanceExists)
                        EndlessGameUI.instance.generateBloodText(fpos, damage, false, false);
                    eag.TakeDamage(damage, fpos, null);
                    if (!eag.opponentAgent)
                    {
                        if (GameUI.instanceExists)
                            GameUI.instance.generateBloodText(fpos, damage, false, false);
                        else if (EndlessGameUI.instanceExists)
                            EndlessGameUI.instance.generateBloodText(fpos, damage, false, false);
                    }
                    if (eag.isDead)
                        ++deathCount;
                }
            }
        }
        return deathCount;
        /*        foreach (Agent eag in listAg)
                {
                    if (eag == ag) continue;
@@ -910,6 +948,7 @@
        // 每一个被链式攻击的怪物,飘血.
        foreach (Agent ag in listBlood)
        {
            if (ag.AgentType != SpawnAgentType.Normal) continue;
            int tid = ag.liveID;
            Damager damager = ag.GetComponent<Damager>();
            ag.TakeDamage(chainAttackHurt, ag.position, alignment);