125 战斗 tagAim=6的支持 持续buff层级永远在最前
| | |
| | | bool isHeroFront = funcIsHeroFront(); |
| | | |
| | | int finalSortingOrder = isHeroFront ? |
| | | (isEffectFront ? BattleConst.ActiveHeroActionSortingOrder : BattleConst.ActiveHeroBackSortingOrder) : (isEffectFront ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder); |
| | | (isEffectFront ? BattleConst.ActiveHeroActionSortingOrder + 1 : BattleConst.ActiveHeroBackSortingOrder) : (isEffectFront ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder); |
| | | |
| | | |
| | | blocker.SetSortingOrder(finalSortingOrder); |
| | |
| | | |
| | | private bool isCast = false; |
| | | |
| | | public int fromSkillId = 0; |
| | | public SkillBase fromSkill = null; |
| | | |
| | | public SkillRecordAction(BattleField _battleField, BattleObject _caster, HB427_tagSCUseSkill vNetData, List<GameNetPackBasic> packList) |
| | | : base(RecordActionType.Skill, _battleField, _caster) |
| | |
| | | if (isCast) |
| | | return; |
| | | |
| | | if (fromSkillId > 0) |
| | | if (fromSkill != null) |
| | | { |
| | | BattleDebug.LogError("cast skill from skill : " + fromSkillId); |
| | | BattleDebug.LogError("cast skill from skill : " + fromSkill.skillConfig.SkillID); |
| | | } |
| | | |
| | | // Debug.LogError("cast skill id is " + skillBase.skillConfig.SkillID); |
| | | |
| | | skillBase.fromSkillId = fromSkillId; |
| | | skillBase.fromSkill = fromSkill; |
| | | |
| | | skillBase.Cast(); |
| | | |
| | |
| | | rendererAdjuster.SetSortingOrder(sortingOrder); |
| | | } |
| | | battleObj.heroInfoBar.maxXpGO.SetSortingOrder(sortingOrder + 5); |
| | | |
| | | for (int i = 0; i < effectPlayers.Count; i++) |
| | | { |
| | | effectPlayers[i]?.ApplySortingOrder(); |
| | | } |
| | | } |
| | | |
| | | public void AddEffect(BattleEffectPlayer effectPlayer) |
| | |
| | | return stringBuild.ToString(); |
| | | } |
| | | |
| | | public static int GetMainTargetPositionNum(BattleObject caster, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> targetList, SkillConfig skillConfig) |
| | | public static int GetMainTargetPositionNum(SkillBase skillBase, BattleObject caster, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> targetList, SkillConfig skillConfig) |
| | | { |
| | | int returnIndex = 0; |
| | | // 根据敌方血量阵营 存活人数来选择 |
| | |
| | | case 5: |
| | | returnIndex = caster.teamHero.positionNum; |
| | | break; |
| | | case 6: |
| | | // 跟随主技能的目标 |
| | | var fromSkill = skillBase.fromSkill; |
| | | returnIndex = GetMainTargetPositionNum(fromSkill, fromSkill.caster, fromSkill.tagUseSkillAttack.HurtList.ToList(), fromSkill.skillConfig); |
| | | break; |
| | | default: |
| | | Debug.LogError("暂时不支持其他的方式选择主目标 有需求请联系策划 技能id:" + skillConfig.SkillID + " TagAim " + skillConfig.TagAim); |
| | | returnIndex = 0; |
| | |
| | | 189f / 255f); |
| | | |
| | | protected SkillEffect skillEffect; |
| | | protected HB427_tagSCUseSkill tagUseSkillAttack; |
| | | public HB427_tagSCUseSkill tagUseSkillAttack; |
| | | public SkillConfig skillConfig; |
| | | protected bool isFinished = false; |
| | | protected BattleField battleField = null; // 战场 |
| | | protected RectTransform targetNode = null; // 目标节点 |
| | | protected BattleObject caster = null; // 施法者 |
| | | public BattleObject caster = null; // 施法者 |
| | | protected List<GameNetPackBasic> packList; |
| | | protected List<SkillRecordAction> otherSkillActionList = new List<SkillRecordAction>(); |
| | | protected List<H0704_tagRolePackRefresh> dropPackList = new List<H0704_tagRolePackRefresh>(); |
| | | protected List<HB405_tagMCAddExp> expPackList = new List<HB405_tagMCAddExp>(); |
| | | protected bool moveFinished = false; |
| | | public int fromSkillId; |
| | | public SkillBase fromSkill; |
| | | public bool isPlay = false; |
| | | |
| | | private float MoveSpeed = 750f; |
| | |
| | | return; |
| | | } |
| | | |
| | | int mainTargetPosNum = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | int mainTargetPosNum = BattleUtility.GetMainTargetPositionNum(this, caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp(); |
| | | RectTransform targetTrans = battleField.GetTeamNode(battleCamp, mainTargetPosNum); |
| | | |
| | |
| | | { |
| | | HandleDead(); |
| | | |
| | | skillEffect = SkillEffectFactory.CreateSkillEffect(caster, skillConfig, tagUseSkillAttack); |
| | | skillEffect = SkillEffectFactory.CreateSkillEffect(this, caster, skillConfig, tagUseSkillAttack); |
| | | skillEffect.Play(OnHitTargets); |
| | | foreach (var subSkillPack in tagUseSkillAttack.subSkillList) |
| | | { |
| | | SkillRecordAction recordAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, new List<GameNetPackBasic>() { subSkillPack }); |
| | | recordAction.fromSkill = this; |
| | | otherSkillActionList.Add(recordAction); |
| | | battleField.recordPlayer.ImmediatelyPlay(recordAction); |
| | | } |
| | | foreach (var subCombinePack in tagUseSkillAttack.subSkillCombinePackList) |
| | | { |
| | | SkillRecordAction recordAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, subCombinePack.packList); |
| | | recordAction.fromSkill = this; |
| | | otherSkillActionList.Add(recordAction); |
| | | battleField.recordPlayer.ImmediatelyPlay(recordAction); |
| | | } |
| | |
| | | if (pack is CustomHB426CombinePack combinePack && combinePack.startTag.Tag.StartsWith("Skill_")) |
| | | { |
| | | var otherSkillAction = combinePack.CreateSkillAction(); |
| | | otherSkillAction.fromSkillId = skillConfig.SkillID; |
| | | otherSkillAction.fromSkill = this; |
| | | otherSkillAction.ForceFinish(); |
| | | } |
| | | else |
| | |
| | | { |
| | | BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag); |
| | | var otherSkillAction = combinePack.CreateSkillAction(); |
| | | otherSkillAction.fromSkillId = skillConfig.SkillID; |
| | | otherSkillAction.fromSkill = this; |
| | | otherSkillActionList.Add(otherSkillAction); |
| | | return false; |
| | | } |
| | |
| | | case 5: |
| | | case 6: |
| | | case 14: |
| | | case 15: |
| | | skill = new MountBuffSkill(_caster, skillConfig, vNetData, packList, battleField); |
| | | break; |
| | | default: |
| | | Debug.LogError("超出了技能类型范围 请检查配置, 目前暂时只支持攻击类型的技能"); |
| | | Debug.LogError("超出了技能类型范围 请检查配置, 目前暂时只支持攻击类型的技能 " + skillConfig.SkillType); |
| | | break; |
| | | } |
| | | |
| | |
| | | private int scatterTotalTargets = 0; |
| | | |
| | | |
| | | public BulletSkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillConfig, _caster, _tagUseSkillAttack) |
| | | public BulletSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack) |
| | | { |
| | | |
| | | } |
| | |
| | | // protected BattleObject caster; |
| | | // protected List<BattleObject> targets; // 目标列表 |
| | | |
| | | public DotSkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillConfig, _caster, _tagUseSkillAttack) |
| | | public DotSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack) |
| | | { |
| | | |
| | | } |
| | |
| | | // protected BattleObject caster; |
| | | // protected List<BattleObject> targets; // 目标列表 |
| | | |
| | | public NoEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillConfig, _caster, _tagUseSkillAttack) |
| | | public NoEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack) |
| | | { |
| | | |
| | | } |
| | |
| | | |
| | | public override void OnMiddleFrameEnd(int times, int hitIndex) |
| | | { |
| | | int mainTargetIndex = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | int mainTargetIndex = BattleUtility.GetMainTargetPositionNum(skillBase, caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | |
| | | BattleCamp battleCamp = skillConfig.TagFriendly == 1 ? caster.Camp : caster.GetEnemyCamp(); |
| | | |
| | |
| | | // protected BattleObject caster; |
| | | // protected List<BattleObject> targets; // 目标列表 |
| | | |
| | | public NormalSkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillConfig, _caster, _tagUseSkillAttack) |
| | | public NormalSkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | : base(_skillBase, _skillConfig, _caster, _tagUseSkillAttack) |
| | | { |
| | | |
| | | } |
| | |
| | | public override void OnMiddleFrameEnd(int times, int hitIndex) |
| | | { |
| | | |
| | | int mainTargetIndex = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | int mainTargetIndex = BattleUtility.GetMainTargetPositionNum(skillBase, caster, tagUseSkillAttack.HurtList.ToList(), skillConfig); |
| | | |
| | | BattleCamp battleCamp = skillConfig.TagFriendly == 1 ? caster.Camp : caster.GetEnemyCamp(); |
| | | |
| | |
| | | |
| | | public class SkillEffect |
| | | { |
| | | protected SkillBase skillBase; |
| | | protected SkillConfig skillConfig; |
| | | protected BattleObject caster; |
| | | protected HB427_tagSCUseSkill tagUseSkillAttack;// 目标列表 |
| | |
| | | |
| | | protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit; |
| | | |
| | | public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | public SkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack) |
| | | { |
| | | skillBase = _skillBase; |
| | | skillConfig = _skillConfig; |
| | | caster = _caster; |
| | | tagUseSkillAttack = _tagUseSkillAttack; |
| | |
| | | |
| | | public static class SkillEffectFactory |
| | | { |
| | | public static SkillEffect CreateSkillEffect(BattleObject caster, SkillConfig skillConfig, HB427_tagSCUseSkill tagUseSkillAttack) |
| | | public static SkillEffect CreateSkillEffect(SkillBase skillBase, BattleObject caster, SkillConfig skillConfig, HB427_tagSCUseSkill tagUseSkillAttack) |
| | | { |
| | | |
| | | switch (skillConfig.effectType) |
| | | { |
| | | case SkillEffectType.Bullet: |
| | | return new BulletSkillEffect(skillConfig, caster, tagUseSkillAttack); |
| | | return new BulletSkillEffect(skillBase,skillConfig, caster, tagUseSkillAttack); |
| | | case SkillEffectType.Direct: |
| | | return new NormalSkillEffect(skillConfig, caster, tagUseSkillAttack); |
| | | return new NormalSkillEffect(skillBase, skillConfig, caster, tagUseSkillAttack); |
| | | // case SkillEffectType.BuffEffect: |
| | | // return new BuffSkillEffect(skillConfig, caster, targets); |
| | | // case SkillEffectType.StageEffect: |
| | | // return new StageSkillEffect(skillConfig, caster, targets); |
| | | case SkillEffectType.DOTEffect: |
| | | return new DotSkillEffect(skillConfig, caster, tagUseSkillAttack); |
| | | return new DotSkillEffect(skillBase,skillConfig, caster, tagUseSkillAttack); |
| | | case SkillEffectType.NoEffect: |
| | | return new NoEffect(skillConfig, caster, tagUseSkillAttack); |
| | | case SkillEffectType.None: |
| | | return new NoEffect(skillBase, skillConfig, caster, tagUseSkillAttack); |
| | | default: |
| | | UnityEngine.Debug.LogError("Unknown Skill Effect Type " + skillConfig.effectType + " skill id is " + skillConfig.SkillID); |
| | | return new NoEffect(skillConfig, caster, tagUseSkillAttack); |
| | | return new NoEffect(skillBase, skillConfig, caster, tagUseSkillAttack); |
| | | break; |
| | | } |
| | | return null; |