129 【战斗】战斗系统-服务端(韩遂技能;增加效果6016-对护盾造成伤害加成)
3个文件已修改
1个文件已添加
63 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6016.py 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4068,6 +4068,7 @@
PassiveEff_AddFinalDamPer = 6013 # 增加最终增伤(根据属性转化)
PassiveEff_AddSkillRate = 6014 # 增加技能概率
PassiveEff_AddRicochetCnt = 6015 # 增加弹射次数
PassiveEff_AddShieldHurtPer = 6016 # 对护盾造成伤害加成
# 被动效果ID有触发值时就返回的
PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/TurnFight.py
@@ -159,7 +159,7 @@
def __doAddBuff(curPlayer, msgList):
    faction = msgList[1] if len(msgList) > 1 else 2
    posNum = msgList[2] if len(msgList) > 2 else 1
    skillID = msgList[3] if len(msgList) > 3 else 0
    skillIDList = msgList[3:]
    if faction not in FactionList:
        GameWorld.DebugAnswer(curPlayer, "阵营: 1-左边;2-右边")
        return
@@ -181,11 +181,12 @@
        GameWorld.DebugAnswer(curPlayer, "对象已阵亡:阵营:%s,位置:%s" % (faction, posNum))
        return
    
    addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID)
    if addBuff:
        GameWorld.DebugAnswer(curPlayer, "添加buff成功! buffID=%s" % addBuff.GetBuffID())
    else:
        GameWorld.DebugAnswer(curPlayer, "添加buff失败")
    for skillID in skillIDList:
        addBuff = TurnBuff.DoAddBuffBySkillID(turnFight, batObj, skillID)
        if addBuff:
            GameWorld.DebugAnswer(curPlayer, "添加buff成功!skillID=%s,buffID=%s" % (skillID, addBuff.GetBuffID()))
        else:
            GameWorld.DebugAnswer(curPlayer, "添加buff失败!skillID=%s" % (skillID))
    return
def __printInfo(curPlayer, msgList):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6016.py
New file
@@ -0,0 +1,19 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_6016
#
# @todo:对护盾造成伤害加成
# @author hxp
# @date 2025-10-28
# @version 1.0
#
# 详细描述: 对护盾造成伤害加成
#
#-------------------------------------------------------------------------------
#"""Version = 2025-10-28 18:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1592,7 +1592,7 @@
    
    # 减伤盾减伤, 会改变 hurtValue
    hurtValue = max(0, hurtValue)
    # 承伤盾承伤,剩余时间短的优先承伤,承伤不影响输出,相当于额外的HP,仅用于抵扣掉血,仅 改变 realHurtHP
    realHurtHP = hurtValue
    shieldBuffList = []
@@ -1605,27 +1605,35 @@
        shieldBuffList.append([remainTime, buffValue, buff])
        
    if shieldBuffList:
        #可能需要同步盾伤跟实际扣血值给前端,具体看前端护盾怎么处理再优化
        shieldHurtPer = 10000 # 对护盾伤害比
        shieldHurtPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddShieldHurtPer, curSkill)
        shieldHurtPer /= 10000.0
        shieldHurtValue = int(hurtValue * shieldHurtPer)  # 对护盾伤害
        GameWorld.DebugLog("    对护盾总伤害: shieldHurtValue=%s,shieldHurtPer=%s,hurtValue=%s" % (shieldHurtValue, shieldHurtPer, hurtValue))
        shieldBuffList.sort()
        for _, buffValue, buff in shieldBuffList:
            if realHurtHP <= 0:
            if shieldHurtValue <= 0:
                break
            buffID = buff.GetBuffID()
            if realHurtHP < buffValue:
                damageShieldValue = realHurtHP
            if shieldHurtValue < buffValue:
                decShieldValue = shieldHurtValue
            else:
                damageShieldValue = buffValue
            GameWorld.DebugLog("    承伤盾: buffID=%s,buffValue=%s,realHurtHP=%s,damageShieldValue=%s" % (buffID, buffValue, realHurtHP, damageShieldValue))
            realHurtHP -= damageShieldValue # 承伤值
            if damageShieldValue >= buffValue:
                GameWorld.DebugLog("        删除盾: buffID=%s,realHurtHP=%s" % (buffID, realHurtHP))
                decShieldValue = buffValue
            GameWorld.DebugLog("    承伤盾抵扣: buffID=%s,buffValue=%s,剩余盾伤=%s,扣除盾值=%s" % (buffID, buffValue, shieldHurtValue, decShieldValue))
            shieldHurtValue -= decShieldValue # 承伤值
            if decShieldValue >= buffValue:
                GameWorld.DebugLog("        删除盾: buffID=%s,剩余盾伤=%s" % (buffID, shieldHurtValue))
                TurnBuff.DoBuffDel(turnFight, defObj, buff, relatedSkill=curSkill, afterLogic=True, tagObj=atkObj)
            else:
                updShieldValue = buffValue - damageShieldValue
                GameWorld.DebugLog("        更新盾值: updShieldValue=%s,realHurtHP=%s" % (updShieldValue, realHurtHP))
                updShieldValue = buffValue - decShieldValue
                GameWorld.DebugLog("        更新盾: updShieldValue=%s,剩余盾伤=%s" % (updShieldValue, shieldHurtValue))
                buff.SetValue1(updShieldValue % ChConfig.Def_PerPointValue)
                buff.SetValue2(updShieldValue / ChConfig.Def_PerPointValue)
                curSkill.AddAfterLogic(ChConfig.AfterLogic_SyncBuff, [defObj, buff, atkObj, "ReduceShieldValue"])
                
        realHurtHP = int(shieldHurtValue / shieldHurtPer)
        GameWorld.DebugLog("        承伤后剩余伤血: realHurtHP=%s" % (realHurtHP))
    return hurtValue, max(0, realHurtHP), hurtTypes
def CalcBounceHP(turnFight, atkObj, defObj, hurtObj, curSkill):