From 78a9b0e3a368d2b59fd6559a2be1f50d32040ea0 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 18 十一月 2025 18:14:49 +0800
Subject: [PATCH] 125 战斗 tagAim=6的支持 持续buff层级永远在最前
---
Main/System/Battle/SkillEffect/NormalSkillEffect.cs | 6 +-
Main/System/Battle/SkillEffect/NoEffect.cs | 6 +-
Main/System/Battle/Skill/SkillFactory.cs | 3 +
Main/System/Battle/BattleUtility.cs | 7 +++
Main/System/Battle/Skill/SkillBase.cs | 16 ++++---
Main/System/Battle/SkillEffect/DotSkillEffect.cs | 4 +-
Main/System/Battle/SkillEffect/SkillEffect.cs | 4 +
Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs | 8 ++--
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 4 +-
Main/Component/UI/Effect/BattleEffectPlayer.cs | 2
Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs | 5 ++
Main/System/Battle/SkillEffect/SkillEffectFactory.cs | 13 +++---
12 files changed, 47 insertions(+), 31 deletions(-)
diff --git a/Main/Component/UI/Effect/BattleEffectPlayer.cs b/Main/Component/UI/Effect/BattleEffectPlayer.cs
index 8dbbc57..2867856 100644
--- a/Main/Component/UI/Effect/BattleEffectPlayer.cs
+++ b/Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -222,7 +222,7 @@
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);
diff --git a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
index 142b60f..6c423ae 100644
--- a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -7,7 +7,7 @@
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)
@@ -53,14 +53,14 @@
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();
diff --git a/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
index 0b40886..d1eb653 100644
--- a/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
@@ -29,6 +29,11 @@
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)
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 091b9fe..1305c3e 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -150,7 +150,7 @@
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;
// 鏍规嵁鏁屾柟琛�閲忛樀钀� 瀛樻椿浜烘暟鏉ラ�夋嫨
@@ -272,6 +272,11 @@
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("鏆傛椂涓嶆敮鎸佸叾浠栫殑鏂瑰紡閫夋嫨涓荤洰鏍� 鏈夐渶姹傝鑱旂郴绛栧垝 鎶�鑳絠d:" + skillConfig.SkillID + " TagAim " + skillConfig.TagAim);
returnIndex = 0;
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 08a3515..be236e3 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -17,18 +17,18 @@
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;
@@ -219,7 +219,7 @@
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);
@@ -340,17 +340,19 @@
{
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);
}
@@ -881,7 +883,7 @@
if (pack is CustomHB426CombinePack combinePack && combinePack.startTag.Tag.StartsWith("Skill_"))
{
var otherSkillAction = combinePack.CreateSkillAction();
- otherSkillAction.fromSkillId = skillConfig.SkillID;
+ otherSkillAction.fromSkill = this;
otherSkillAction.ForceFinish();
}
else
@@ -962,7 +964,7 @@
{
BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag);
var otherSkillAction = combinePack.CreateSkillAction();
- otherSkillAction.fromSkillId = skillConfig.SkillID;
+ otherSkillAction.fromSkill = this;
otherSkillActionList.Add(otherSkillAction);
return false;
}
diff --git a/Main/System/Battle/Skill/SkillFactory.cs b/Main/System/Battle/Skill/SkillFactory.cs
index 185e2bb..10678d2 100644
--- a/Main/System/Battle/Skill/SkillFactory.cs
+++ b/Main/System/Battle/Skill/SkillFactory.cs
@@ -71,10 +71,11 @@
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;
}
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index 4d8362e..603fff8 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -18,8 +18,8 @@
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)
{
}
diff --git a/Main/System/Battle/SkillEffect/DotSkillEffect.cs b/Main/System/Battle/SkillEffect/DotSkillEffect.cs
index 5cd0fdd..e1a860c 100644
--- a/Main/System/Battle/SkillEffect/DotSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/DotSkillEffect.cs
@@ -13,8 +13,8 @@
// 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)
{
}
diff --git a/Main/System/Battle/SkillEffect/NoEffect.cs b/Main/System/Battle/SkillEffect/NoEffect.cs
index d86a4a7..6f0c5c2 100644
--- a/Main/System/Battle/SkillEffect/NoEffect.cs
+++ b/Main/System/Battle/SkillEffect/NoEffect.cs
@@ -13,8 +13,8 @@
// 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)
{
}
@@ -22,7 +22,7 @@
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();
diff --git a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
index 172d5f6..ae1fa16 100644
--- a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
@@ -11,8 +11,8 @@
// 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)
{
}
@@ -21,7 +21,7 @@
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();
diff --git a/Main/System/Battle/SkillEffect/SkillEffect.cs b/Main/System/Battle/SkillEffect/SkillEffect.cs
index 6932b1c..f588b5b 100644
--- a/Main/System/Battle/SkillEffect/SkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -4,6 +4,7 @@
public class SkillEffect
{
+ protected SkillBase skillBase;
protected SkillConfig skillConfig;
protected BattleObject caster;
protected HB427_tagSCUseSkill tagUseSkillAttack;// 鐩爣鍒楄〃
@@ -14,8 +15,9 @@
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;
diff --git a/Main/System/Battle/SkillEffect/SkillEffectFactory.cs b/Main/System/Battle/SkillEffect/SkillEffectFactory.cs
index 1a79c8c..65ac7ad 100644
--- a/Main/System/Battle/SkillEffect/SkillEffectFactory.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffectFactory.cs
@@ -4,26 +4,27 @@
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;
--
Gitblit v1.8.0