From 8d57a9bf9f4bef8e701e668dc5ee47905988b0df Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 28 十一月 2025 15:14:53 +0800
Subject: [PATCH] 125 战斗 复活技能
---
Main/System/Battle/BattleField/BattleField.cs | 21 ----------
Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs | 1
Main/System/Battle/BattleConst.cs | 30 ++++++++++++++-
Main/System/Battle/Skill/SkillFactory.cs | 3 +
Main/System/Battle/StoryBossBattleWin.cs | 4 +-
Main/System/Battle/BattleObject/BattleObject.cs | 8 ++--
Main/System/Battle/Motion/MotionBase.cs | 10 +++++
Main/System/Battle/Skill/RebornSkill.cs | 14 +++++++
Main/System/Battle/Define/BattleDmgInfo.cs | 7 +++
9 files changed, 68 insertions(+), 30 deletions(-)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs
index f5cfe3c..73c7cac 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB423_tagMCTurnFightObjReborn.cs
@@ -11,6 +11,5 @@
HB423_tagMCTurnFightObjReborn vNetData = vNetPack as HB423_tagMCTurnFightObjReborn;
BattleField battleField = BattleManager.Instance.GetBattleField(vNetPack.packUID);
- battleField?.OnObjReborn(vNetData);
}
}
diff --git a/Main/System/Battle/BattleConst.cs b/Main/System/Battle/BattleConst.cs
index 93e01e6..253ef47 100644
--- a/Main/System/Battle/BattleConst.cs
+++ b/Main/System/Battle/BattleConst.cs
@@ -1,9 +1,10 @@
-
using System;
using System.Collections.Generic;
public static class BattleConst
{
+ #region 鎴樻枟绐楀彛閰嶇疆
+
public static List<Type> BattleWindows = new List<Type>()
{
typeof(BattleWin),
@@ -29,13 +30,21 @@
{ "BoneBattleField", 3},
{ "TianziBillboradBattleField", 4 },
};
+
+ #endregion
+ #region 鎴樻枟鍩虹閰嶇疆
+
public const int BattleStartEffectID = 1001; // Example effect ID for battle start
public const int skillMotionFps = 30;
public const int BattlePointItemID = 3;//鎴橀敜ID
+
+ #endregion
+ #region 鎴樻枟缁熻绫诲瀷
+
public const int BattleTotalDamageType = 100001; // 鎬讳激瀹崇被鍨婭D
public const int BattleTotalRecoverType = 100002; // 鎬绘不鐤楃被鍨婭D
@@ -47,7 +56,11 @@
public const int BattleChaseAttack = 100005; // 杩藉嚮
public const int BattleStun = 100006; // 鍑绘檿
+
+ #endregion
+ #region 鎴樻枟灞傜骇鎺掑簭
+
// 1000~10000涔嬮棿鐨勬垬鏂楀眰绾�
// 闇�瑕佽�冭檻鏍规嵁UI 鐗规晥 鎴樻枟瑙掕壊涓夋柟鐨勫眰绾у叧绯�
// 纭珛鍩烘湰鐨勫眰绾ц寖鍥� 鍚庡線涓婄疮鍔�
@@ -189,8 +202,11 @@
return ActiveHeroActionSortingOrder + 1;
}
}
+
+ #endregion
-
+ #region Buff闄愬埗缁�
+
public const int HardControlGroup = 1;
public const int SoftControlGroup = 2;
@@ -211,4 +227,14 @@
};
public const int ShieldBuffAttackType = 1003;//鎶ょ浘鍚告敹浼ゅ绫诲瀷ID
+
+ #endregion
+
+ #region 鐗规晥ID
+
+ public const int BlockEffectID = 19999; // 鏍兼尅鐗规晥ID
+
+ public const int RebornEffectID = 20000; // 澶嶆椿鐗规晥ID
+
+ #endregion
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 122ef9e..983f2f6 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -561,27 +561,6 @@
};
}
-
- public void OnObjReborn(HB423_tagMCTurnFightObjReborn vNetData)
- {
- // 澶勭悊澶嶆椿閫昏緫
- BattleObject battleObj = battleObjMgr.GetBattleObject((int)vNetData.ObjID);
- if (battleObj != null)
- {
- battleObj.OnReborn(vNetData);
-
- // 浠庢浜″鐞嗗垪琛ㄤ腑绉婚櫎璇ヨ鑹�
- if (processingDeathObjIds.Remove(vNetData.ObjID))
- {
- Debug.Log($"OnObjReborn: 瑙掕壊澶嶆椿锛屼粠姝讳骸澶勭悊鍒楄〃绉婚櫎 ObjID={vNetData.ObjID}");
- }
- }
- else
- {
- Debug.LogError($"BattleObject with ID {vNetData.ObjID} not found for reborn.");
- }
- }
-
//鍚勪釜鎴樺満娌℃湁鍦烘櫙姒傚康锛屼笖鍙互鍏卞瓨锛屽悓鏃跺瓨鍦ㄦ垬鍦哄拰缁撶畻鐨勬儏鍐�
//鍐呴儴缁撶畻闇�瑕佸鐞嗙殑閫昏緫锛屼笉鍚玌I
protected virtual void OnSettlement(JsonData turnFightStateData)
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index ec00f22..9a493dd 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -350,7 +350,7 @@
{
if (dmgInfo.IsType(DamageType.Block))
{
- battleField.battleEffectMgr.PlayEffect(this, 19999, heroRectTrans, Camp);
+ battleField.battleEffectMgr.PlayEffect(this, BattleConst.BlockEffectID, heroRectTrans, Camp);
}
// else
// {
@@ -450,13 +450,13 @@
buffMgr.RemoveAllBuff();
}
- public void OnReborn(HB423_tagMCTurnFightObjReborn vNetData)
+ public void OnReborn(HB427_tagSCUseSkill.tagSCUseSkillHurt vNetData)
{
// 澶勭悊澶嶆椿閫昏緫
- teamHero.curHp = GeneralDefine.GetFactValue(vNetData.HP, vNetData.HPEx);
+ teamHero.curHp = GeneralDefine.GetFactValue(vNetData.CurHP, vNetData.CurHPEx);
teamHero.isDead = false;
heroGo.SetActive(true);
- motionBase.PlayAnimation(MotionName.idle, true);
+ motionBase.ResetToIdleAnimation();
}
// 浼ゅ杩樿鐪� 鏄惁闂伩 鏆村嚮 and so on 闇�瑕佹湁涓�涓狣amageType 鏈嶅姟鍣ㄥ簲璇ヤ細缁�
diff --git a/Main/System/Battle/Define/BattleDmgInfo.cs b/Main/System/Battle/Define/BattleDmgInfo.cs
index 41caa35..e85459d 100644
--- a/Main/System/Battle/Define/BattleDmgInfo.cs
+++ b/Main/System/Battle/Define/BattleDmgInfo.cs
@@ -396,6 +396,13 @@
/// </summary>
private int ValidateAndFixAttackType(int attackType)
{
+ if (IsType(DamageType.Stunned))
+ {
+ // 鐗规畩澶勭悊鍑绘檿绫诲瀷
+ // 鍘绘帀鍑绘檿绫诲瀷
+ attackType &= ~(int)DamageType.Stunned;
+ }
+
if (DamageNumConfig.Get(attackType) != null)
return attackType;
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 9539668..46a2b4e 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -542,6 +542,8 @@
public void HaveRest()
{
+ animState?.ClearTracks();
+
trackEntryCallbacks.Clear();
runningActions.Clear();
activeSkillTracks.Clear();
@@ -555,6 +557,8 @@
subSkillTrackMap.Clear();
for (int i = 1; i <= 8; i++)
availableSubTracks.Enqueue(i);
+
+ currentTrack = null;
playingSkillAnim = false;
PlayAnimation(MotionName.idle, true);
@@ -574,4 +578,10 @@
illusionShadow.Show(isVisible, color);
}
}
+
+ internal void ResetToIdleAnimation()
+ {
+ // 娓呯┖涔嬪墠鐨勭姸鎬�
+ HaveRest();
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/RebornSkill.cs b/Main/System/Battle/Skill/RebornSkill.cs
index fefbc14..6cf73d9 100644
--- a/Main/System/Battle/Skill/RebornSkill.cs
+++ b/Main/System/Battle/Skill/RebornSkill.cs
@@ -14,7 +14,21 @@
}
+ protected override void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
+ {
+ for (int i = 0; i < hitList.Count; i++)
+ {
+ var hitInfo = hitList[i];
+ BattleObject targetObj = battleField.battleObjMgr.GetBattleObject((int)hitInfo.ObjID);
+ if (targetObj != null)
+ {
+ targetObj.battleField.battleEffectMgr.PlayEffect(targetObj, BattleConst.RebornEffectID, targetObj.heroRectTrans, targetObj.Camp);
+ // B427涓� tagSCUseSkillHurt 涓哄娲荤殑鐩爣锛� HurtHP銆丠urtHPEx - 澶嶆椿鍥炶锛� CurHP銆丆urHPEx - 澶嶆椿鍚庣殑琛�閲�
+ targetObj.OnReborn(hitInfo);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillFactory.cs b/Main/System/Battle/Skill/SkillFactory.cs
index 10678d2..44be8b4 100644
--- a/Main/System/Battle/Skill/SkillFactory.cs
+++ b/Main/System/Battle/Skill/SkillFactory.cs
@@ -68,6 +68,9 @@
case 4:
skill = new DotSkill(_caster, skillConfig, vNetData, packList, battleField);
break;
+ case 8:
+ skill = new RebornSkill(_caster, skillConfig, vNetData, packList, battleField);
+ break;
case 5:
case 6:
case 14:
diff --git a/Main/System/Battle/StoryBossBattleWin.cs b/Main/System/Battle/StoryBossBattleWin.cs
index 968ee52..6106063 100644
--- a/Main/System/Battle/StoryBossBattleWin.cs
+++ b/Main/System/Battle/StoryBossBattleWin.cs
@@ -124,11 +124,11 @@
if (null == bossBattleObject)
return;
- if (bossBattleObject.teamHero.ObjID == info.battleHurtParam.hurter.hurtObj.teamHero.ObjID)
+ if (info.battleHurtParam.hurter.hurtObj != null && bossBattleObject.teamHero.ObjID == info.battleHurtParam.hurter.hurtObj.teamHero.ObjID)
{
bossLifeBar.Show((ulong)info.battleHurtParam.hurter.toHp, (ulong)bossBattleObject.teamHero.maxHp);
}
- else if (bossBattleObject.teamHero.ObjID == info.battleHurtParam.caster.casterObj.teamHero.ObjID)
+ else if (info.battleHurtParam.caster.casterObj != null && bossBattleObject.teamHero.ObjID == info.battleHurtParam.caster.casterObj.teamHero.ObjID)
{
bossLifeBar.Show((ulong)info.battleHurtParam.caster.toHp, (ulong)bossBattleObject.teamHero.maxHp);
}
--
Gitblit v1.8.0