yyl
9 天以前 92192b6e318892cec3fce40188f9bc9ca8046e06
125 战斗 攻击类型被多次重新转换导致的bug问题 (焚血 免疫等)
5个文件已修改
64 ■■■■■ 已修改文件
Main/Core/NetworkPackage/CustomServerPack/CustomHB427_tagSCUseSkill.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Define/BattleDmgInfo.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Define/DamageType.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/UIComp/BattleHeroInfoBar.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}
Main/Core/NetworkPackage/ServerPack/HB4_FightDefine/HB427_tagSCUseSkill.cs
@@ -67,7 +67,7 @@
        }
    }
    public class tagSCUseSkillHurt {
    public partial class tagSCUseSkillHurt {
        public uint ObjID;        // 技能自身目标ID
        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;        // 飘血值,求余亿部分
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;
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, //吸血反转为伤害
}
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);
        }