hxp
2025-12-20 3dee41c5518723e67433f7cf185c9df35955847f
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -781,22 +781,24 @@
            addPer = addPerMax
        GameWorld.DebugLogEx("司马懿特殊潜能技能额外增加比例: frozenCnt=%s,addPer=%s" % (frozenCnt, addPer))
        
    addBatDamPer = TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddBatDamPerByLayer, useSkill)
    # 计算伤害
    calcHurtResults = []
    for tagBatObj in useSkill.GetTagObjList():
        hurtValue, hurtTypes, immuneHurt = __calcSkillHurt(turnFight, curBatObj, tagBatObj, useSkill, addPer)
        hurtValue, hurtTypes, immuneHurt = __calcSkillHurt(turnFight, curBatObj, tagBatObj, useSkill, addPer, addBatDamPer)
        calcHurtResults.append([tagBatObj, hurtValue, hurtTypes, immuneHurt])
        
    DoSkillHurtHP(turnFight, curBatObj, useSkill, calcHurtResults)        
    return
def __calcSkillHurt(turnFight, atkObj, defObj, curSkill, addPer=0):
def __calcSkillHurt(turnFight, atkObj, defObj, curSkill, addPer=0, addBatDamPer=0):
    ## 计算技能伤害,只计算值,不做实际处理
    # @param addPer: 外部指定增加的比例
    # @return: hurtValue, hurtTypes, immuneHurt
    atkSkillPer = curSkill.GetSkillPer() + addPer
    atkSkillValue = curSkill.GetSkillValue()
    hurtValue, hurtTypes = CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer)
    hurtValue, hurtTypes = CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, addBatDamPer)
    hurtValue, hurtTypes, immuneHurt = CalcHurtWithBuff(turnFight, atkObj, defObj, hurtValue, hurtTypes)
    return hurtValue, hurtTypes, immuneHurt
@@ -1296,7 +1298,7 @@
    @param timeBuff: 持续结算的buff,如持续攻击、持续治疗等
    '''
    
    #curID = curObj.GetID()
    curID = curObj.GetID()
    isUseSkill = False if timeBuff else True # buff的视为持续性的,否则为直接使用技能的攻击结果
    isTurnNormalSkill = SkillCommon.isTurnNormalSkill(useSkill)
    isAngerSkill = SkillCommon.isAngerSkill(useSkill)
@@ -1552,7 +1554,9 @@
                if isAttackDirect:
                    if not triggerOne:
                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendAttackOverDirectOne, tagObj, connSkill=useSkill, byFriendObj=curObj)
                        if curID != lineupObj.GetID():
                            TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendAttackOverDirectOneNoSelf, tagObj, connSkill=useSkill, byFriendObj=curObj)
                # 连击
                if batType == ChConfig.TurnBattleType_Combo:
                    TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendCombo, tagObj, connSkill=useSkill, byFriendObj=curObj)
@@ -1872,7 +1876,7 @@
    elif tagAim == ChConfig.SkillTagAim_MainSkillFriend:
        if "byFriendObj" not in kwargs:
            return
        byFriendObj = kwargs["byFriendObj"]
        byFriendObj = kwargs.pop("byFriendObj") # 触发即移除,防止一直传递引发其他问题,如触发的技能再触发其他技能会被视为也是有byFriendObj
        passiveTagObjList = [byFriendObj]
        GameWorld.DebugLogEx("被动触发技能,针对来源友军! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s,byFriendID=%s", 
                             effSkillID, effectID, passiveSkillID, bySkillID, byFriendObj.GetID())
@@ -1883,7 +1887,7 @@
        
    return isOK
def CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, **kwargs):
def CalcFormatHurt(turnFight, atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, addBatDamPer=0, **kwargs):
    '''按公式计算伤害,默认按攻击计算
    '''
    
@@ -1998,6 +2002,7 @@
    aBatDamPer, dBatDamPerDef = 0, 0 # 战斗增减伤
    aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_BatDamPer, curSkill)
    aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddBatDamPerByTagLostHP, curSkill)
    aBatDamPer += addBatDamPer
    
    # 物法增减伤
    if pmType == IPY_GameWorld.ghtMag: # 法伤