123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using System.Collections.Generic;
- using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
- using Common.Combat.FxAILogic;
- using GameLogic.Combat.Buff;
- using GameLogic.Combat.CombatTool;
- using GameLogic.Combat.Hero;
- using UnityEngine;
- using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
- namespace GameLogic.Combat.Skill
- {
- /// <summary>
- /// 引雷
- /// 请求仰天施法,引导天雷,天雷在战场上随机落下,{0}%概率击中目标,每层感电额外+{1}%概率
- /// ,最多被击中{2}次,每次击中消耗一层感电额外照成{3}伤害。引雷可以击中弹道.持续{4}秒
- /// </summary>
- public class S9053 : SkillBasic
- {
- private float _currTime;
- private int _hitCount;
- private bool _isUpdate;
- private float _jianGe;
- private float _allTime;
- protected override void ProUseSkill()
- {
- _hitCount = 0;
- ballisticsCount = (int)effectValue[0];
- ActivationTimeLineData("9053");
- _isUpdate = true;
- _allTime = 0;
- }
- protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
- ITimelineFxLogic timelineFxLogic,
- TriggerData triggerData, ISkillFeatures skillFeatures)
- {
- }
- private void SetJianGe()
- {
- _jianGe = CombatCalculateTool.Instance.GetOdd(20, 100) / 100f;
- }
- protected override void ProCombatUpdate(float time)
- {
- if (!_isUpdate)
- {
- return;
- }
- _currTime += time;
- _allTime += time;
- if (_allTime > effectValue[5])
- {
- _isUpdate = false;
- return;
- }
- if (_currTime >= _jianGe)
- {
- _currTime = 0;
- SetJianGe();
- Vector3 targetPos = Vector3.zero;
- //发射一道闪电
- int odds = CombatCalculateTool.Instance.GetOdd(0, 100);
- CombatHeroEntity combatHeroEntity = CombatHeroEntity.CombatAIBasic.currFocusTarget;
- b_1018 b1018 = combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
- float addOdds = b1018 != null ? b1018.buffCount * effectValue[1] : 0;
- if (_hitCount<effectValue[2]&&odds <= effectValue[0]+addOdds)
- {
- _hitCount++;
- //击中目标
-
- targetPos = combatHeroEntity.dotPos;
- float harmBl = effectValue[3];
- // b_1018 b1018 = combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
- if (b1018 != null) //消耗一层感电,额外照成伤害
- {
- b1018.ReduceCount(1);
- harmBl += effectValue[4];
- }
- long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(
- CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
- harmBl);
- HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity,
- combatHeroEntity, v,
- AttType.Skill, triggerData,
- wuXingType, null,
- HarmType.Default);
- }
- else
- {
- List<FxAILogicBasic> allFxAi =
- CombatController.currActiveCombat.GameTimeLineParticleFactory.GetFxAILogicBasic(
- !CombatHeroEntity
- .IsEnemy);
- if (allFxAi.Count > 0)
- {
- int index = Random.Range(0, allFxAi.Count);
- FxAILogicBasic fxAILogicBasic = allFxAi[index];
- targetPos = fxAILogicBasic.gameObject.transform.position;
- FxParabolaBulletLogic fxParabolaBulletLogic = fxAILogicBasic as FxParabolaBulletLogic;
- if (fxParabolaBulletLogic != null)
- {
- fxParabolaBulletLogic.PengZhuang(GetSkillFeaturesData(), CombatHeroEntity);
- }
- }
- else
- {
- int x = Random.Range(-10, 10);
- int z = Random.Range(4, 10);
- targetPos = CombatHeroEntity.GameObject.transform.TransformPoint(new Vector3(x, 0, z));
- }
- }
- ActivationTimeLineData("9053_fashe", customizePos: new Vector3[] { targetPos });
- }
- }
- }
- }
|