using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.Buff; using GameLogic.Combat.CombatTool; namespace GameLogic.Combat.Skill { /// /// 毒爆 ///后方功法击中目标后,如果目标升上有{0}层毒时对目标照成20%伤害,并对周围的敌人照成等额伤害 /// public class S2014 : SkillBasic { protected override void ProActiveSkill() { CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured); } protected override void ProDispose() { CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured); } private void HeroInjured(IEventData iEventData) { HeroInjuredEventData heroInjuredEventData = iEventData as HeroInjuredEventData; if (heroInjuredEventData.HarmReturnInfo.source == CombatHeroEntity && heroInjuredEventData.HarmReturnInfo.isHitHero) { SkillBasic skillBasic = heroInjuredEventData.HarmReturnInfo.triggerData.Source as SkillBasic; if (skillBasic != null && IsPassiveActivateSkill(skillBasic)) { CombatHeroEntity target = heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity as CombatHeroEntity; b_1003 b1003 = target.BuffControl.GetBuffBasicForType(); if (b1003 != null && b1003.buffCount >= effectValue[0]) { long harm = heroInjuredEventData.HarmReturnInfo.att; long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(harm, effectValue[1]); HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, target, v, AttType.Skill | AttType.JianJie, triggerData, wuXingType, null, HarmType.Default); long v2 = CombatCalculateTool.Instance.GetVlaueRatioForLong(v, effectValue[2]); CombatHeroEntity[] allHero = CombatController.currActiveCombat.CombatHeroController.GetHero(!CombatHeroEntity.IsEnemy); for (int i = 0; i < allHero.Length; i++) { if (allHero[i] == target) { continue; } CombatCalculateTool.Instance.Harm(CombatHeroEntity, allHero[i], v2, AttType.Skill | AttType.JianJie, triggerData, wuXingType, null, HarmType.Default); } } } } } protected override void ProUseSkill() { } } }