From 1c3d649735e61a65087d9c281729912831f95fce Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Tue, 24 Nov 2020 10:55:11 +0800 Subject: [PATCH] 修改技能为右侧充能释放 --- Assets/Scripts/TowerDefense/Level/AgentInsManager.cs | 80 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 80 insertions(+), 0 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs b/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs index 0cbe3fa..3630a15 100644 --- a/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs +++ b/Assets/Scripts/TowerDefense/Level/AgentInsManager.cs @@ -799,6 +799,86 @@ EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessOneTimeKillCount, deathCount); } + + /// <summary> + /// 处理战场上的兵线伤害,以兵线为单位对怪物进行伤害---所有兵线 + /// </summary> + /// <param name="waveline"></param> + /// <param name="sid"></param> + /// <param name="slevel"></param> + /// <param name="opponent"></param> + public void ExecAllWavelineAttack(int sid, int slevel, bool opponent) + { + skilllevelinfo slinfo = JsonDataCenter.GetSkillLevelInfo(sid, slevel + 1); + if (slinfo == null) return; + + WaveLineAgentInsMgr wavelineIns; + if (opponent) + { + for (int i = 0; i < oppoAgentWaveLineArray.Length; i++) + { + wavelineIns = oppoAgentWaveLineArray[i]; + CalculateWavelineAttack(slinfo, wavelineIns, sid, slevel); + } + } + else + { + for (int i = 0; i < agentWaveLineArray.Length; i++) + { + wavelineIns = agentWaveLineArray[i]; + CalculateWavelineAttack(slinfo, wavelineIns, sid, slevel); + } + } + + } + + private void CalculateWavelineAttack(skilllevelinfo slinfo, WaveLineAgentInsMgr wavelineIns, int sid, int slevel) + { + 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; + float damage = slinfo.skilleffect[2]; + damage += (slinfo.skilleffect[1] / 100.0f * eag.configuration.maxHealth); + damage = (float)Math.Floor(damage); + + 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); + } + + eag.PlayFireSkillHit(); + + if (eag.isDead) + ++deathCount; + } + + } + if (deathCount > 1) + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessOneTimeKillCount, deathCount); + } + /// <summary> /// 每一帧更新,更新之后获取几个刚性数据: /// 1:血量最多的AgentInstance. -- Gitblit v1.9.1