From 92192b6e318892cec3fce40188f9bc9ca8046e06 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 24 十二月 2025 16:09:49 +0800
Subject: [PATCH] 125 战斗 攻击类型被多次重新转换导致的bug问题 (焚血 免疫等)
---
Main/Core/NetworkPackage/CustomServerPack/CustomHB427_tagSCUseSkill.cs | 9 ++++
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs | 4 +-
Main/System/Battle/UIComp/BattleHeroInfoBar.cs | 9 ----
Main/System/Battle/Define/DamageType.cs | 27 +++++++------
Main/System/Battle/Define/BattleDmgInfo.cs | 15 ++++++-
5 files changed, 38 insertions(+), 26 deletions(-)
diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB427_tagSCUseSkill.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB427_tagSCUseSkill.cs
index 5e680c5..51300ec 100644
--- a/Main/Core/NetworkPackage/CustomServerPack/CustomHB427_tagSCUseSkill.cs
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB427_tagSCUseSkill.cs
@@ -41,4 +41,13 @@
return parentSkill != null;
}
}
+
+ public partial class tagSCUseSkillHurt {
+ public bool isChangedRawAttackType = false;
+ }
+
+ public partial class tagSCUseSkillHurtEx
+ {
+ public bool isChangedRawAttackType = false;
+ }
}
\ No newline at end of file
diff --git a/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs b/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs
index f5c4592..70660a4 100644
--- a/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs
+++ b/Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs
@@ -67,7 +67,7 @@
}
}
- public class tagSCUseSkillHurt {
+ public partial class tagSCUseSkillHurt {
public uint ObjID; // 鎶�鑳借嚜韬洰鏍嘔D
public uint AttackTypes; // 椋樿绫诲瀷姹囨�伙紝鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�4-鍏嶇柅锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�8-鍑绘檿锛�9-闂伩
public uint HurtHP; // 椋樿鍊硷紝姹備綑浜块儴鍒�
@@ -80,7 +80,7 @@
public tagSCUseSkillHurtEx[] HurtListEx; // 棰濆浼ゅ鐩爣鍒楄〃锛屼粎鍚庣澶氭浼ゅ鐨勬湁鏁堬紝濡傚脊灏勭殑骞虫憡浼ゅ
}
- public class tagSCUseSkillHurtEx {
+ public partial class tagSCUseSkillHurtEx {
public uint ObjID; // 棰濆鐩爣锛屽婧呭皠浼ゅ銆佸钩鎽婁激瀹崇洰鏍囷紝闈炴妧鑳借嚜韬殑涓昏鐩爣
public uint AttackTypes; // 椋樿绫诲瀷姹囨�伙紝鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�4-鍏嶇柅锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�8-鍑绘檿锛�9-闂伩
public uint HurtHP; // 椋樿鍊硷紝姹備綑浜块儴鍒�
diff --git a/Main/System/Battle/Define/BattleDmgInfo.cs b/Main/System/Battle/Define/BattleDmgInfo.cs
index 59d35b8..c4428e3 100644
--- a/Main/System/Battle/Define/BattleDmgInfo.cs
+++ b/Main/System/Battle/Define/BattleDmgInfo.cs
@@ -97,7 +97,9 @@
private void HandleDamageType()
{
- if (hurt == null) return;
+ if (hurt == null || hurt.isChangedRawAttackType) return;
+
+ hurt.isChangedRawAttackType = true;
uint originalAttackTypes = hurt.AttackTypes;
int convertedAttackTypes = 0;
@@ -301,13 +303,15 @@
long suckHp = battleHurtParam.caster.suckHpList[segmentIndex];
if (suckHp > 0)
{
+ bool isSuckReverse = IsType(DamageType.SuckHpReverse);
if (isCasterView)
{
// 鏂芥硶鑰呰瑙掞細鍚歌鏄剧ず鍦ㄨ嚜宸辫韩涓婏紙targetDamageList锛�
+
targetDamageList.Add(new BattleDmg
{
damage = suckHp,
- attackType = IsType(DamageType.SuckHpReverse) ? (int)DamageType.Damage : (int)DamageType.SuckHP
+ attackType = isSuckReverse ? (int)DamageType.Damage : (int)DamageType.SuckHP
});
}
else
@@ -316,7 +320,7 @@
casterDamageList.Add(new BattleDmg
{
damage = suckHp,
- attackType = IsType(DamageType.SuckHpReverse) ? (int)DamageType.Damage : (int)DamageType.SuckHP
+ attackType = isSuckReverse ? (int)DamageType.Damage : (int)DamageType.SuckHP
});
}
}
@@ -415,6 +419,11 @@
attackType &= ~(int)DamageType.Stunned;
}
+ if (IsType(DamageType.SuckHpReverse))
+ {
+ attackType &= ~(int)DamageType.SuckHpReverse;
+ }
+
if (DamageNumConfig.Get(attackType) != null)
return attackType;
diff --git a/Main/System/Battle/Define/DamageType.cs b/Main/System/Battle/Define/DamageType.cs
index 8430b96..4b8f65c 100644
--- a/Main/System/Battle/Define/DamageType.cs
+++ b/Main/System/Battle/Define/DamageType.cs
@@ -12,26 +12,27 @@
// 鏈嶅姟鍣ㄦ嫢鏈夌殑DamageType
public enum ServerDamageType
{
- Damage = 2,//鏅�氫激瀹�
- Recovery = 4,//娌荤枟
+ Damage = 2,//鏅�氫激瀹� (2^1 搴忓彿1)
+ Recovery = 4,//娌荤枟 (2^2 搴忓彿2)
- Reborn = 8,//澶嶆椿
+ Reborn = 8,//澶嶆椿 (2^3 搴忓彿3)
- Immune = 16,//鍏嶇柅
+ Immune = 16,//鍏嶇柅 (2^4 搴忓彿4)
- Block = 32, //鏍兼尅
+ Block = 32, //鏍兼尅 (2^5 搴忓彿5)
- Realdamage = 64, //鐪熶激
- Crit = 128, //鏆村嚮
+ Realdamage = 64, //鐪熶激/鏃犺闃蹭激 (2^6 搴忓彿6)
+ Crit = 128, //鏆村嚮 (2^7 搴忓彿7)
- Stunned = 256, //鍑绘檿
+ Stunned = 256, //鍑绘檿 (2^8 搴忓彿8)
- Dodge = 512, //闂伩
+ Dodge = 512, //闂伩 (2^9 搴忓彿9)
- DamageReverse = 1024,//娌荤枟鍙嶈浆鎴愪激瀹�
+ DamageReverse = 1024,//浼ゅ鍙樹负 (2^10 搴忓彿10)
- SuckHpReverse = 2048,//鍚歌鍙嶈浆涓轰激瀹�
- SelfHarm = 4096,//鑷畫
+ SuckHpReverse = 2048,//鍚歌姣掕嵂 (2^11 搴忓彿11)
+ SelfHarm = 4096,//鑷畫 (2^12 搴忓彿12)
+ Protected = 8192,//鏈浼ゅ鏈夊彈淇濇姢鏍囪 (2^13 搴忓彿13)
}
public enum DamageType
@@ -66,6 +67,6 @@
CritRealdamage = Crit + Realdamage, //鏆村嚮鐪熶激
- SuckHpReverse, //鍚歌鍙嶈浆涓轰激瀹�
+ SuckHpReverse = 8192, //鍚歌鍙嶈浆涓轰激瀹�
}
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index 83fbfa1..3782201 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -234,14 +234,7 @@
xpTween = sliderXp.DOValue(targetValue, 0.2f).SetAutoKill(false);
xpTween.OnComplete(() =>
{
- if (toXp >= maxXp)
- {
- maxXpGO.SetActive(true);
- }
- else
- {
- maxXpGO.SetActive(false);
- }
+ maxXpGO.SetActive(toXp >= maxXp);
});
battleObject.battleField.battleTweenMgr.OnPlayTween(xpTween);
}
--
Gitblit v1.8.0