| | |
| | | /// </summary> |
| | | /// <param name="enemy"></param> |
| | | /// <param name="attributeId">子弹的属性id</param> |
| | | public void DealDamage(Targetable enemy, bool isEnhancedBullet = false) |
| | | public void DealDamage(Targetable enemy, Damager damager = null) |
| | | { |
| | | switch ((enemy as Agent).AgentType) |
| | | { |
| | | case SpawnAgentType.Normal: |
| | | HandleNormal(enemy, isEnhancedBullet); |
| | | HandleNormal(enemy, damager); |
| | | break; |
| | | case SpawnAgentType.BubbleBomb: |
| | | HandleBubbleBomb(enemy); |
| | |
| | | /// 处理普通小怪和boss收到的伤害 |
| | | /// </summary> |
| | | /// <param name="enemy"></param> |
| | | private void HandleNormal(Targetable enemy, bool isEnhancedBullet) |
| | | private void HandleNormal(Targetable enemy, Damager damager) |
| | | { |
| | | // 保证强化子弹只会击退一个不会击退多个 |
| | | if (TowerPtr != null && damager.IsEnhancedBullet && damager.IsRepeled) return; |
| | | |
| | | // 基础伤害 = elf_info 基础攻击力 * elf_upgrade 攻击比率 / 1000f |
| | | float basicDamage = ElfInfoData.GetBasicDamage(TowerPtr.ElfId, TowerPtr.currentLevel); |
| | | elf_info info = ElfInfoData.GetDataById(TowerPtr.ElfId); |
| | |
| | | } |
| | | |
| | | // 玉米强化子弹10倍伤害 |
| | | if (isEnhancedBullet) |
| | | if (damager.IsEnhancedBullet) |
| | | basicDamage *= 10f; |
| | | |
| | | bool needFrost = HandleWaterFrost(TowerPtr.ElfId, (enemy as Agent), ref basicDamage); |
| | |
| | | (enemy as Agent).PlayOnHit(); |
| | | |
| | | // 如果是玉米强化子弹的攻击,要处理击退的效果 |
| | | if (TowerPtr != null && isEnhancedBullet) |
| | | if (TowerPtr != null && damager.IsEnhancedBullet && !damager.IsRepeled) |
| | | { |
| | | damager.IsRepeled = true; |
| | | (enemy as Agent).AgentBeRepelled(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 处理水精灵冰冻 |