ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -60,9 +60,6 @@
        return
    
    objID = curBatObj.GetID()
    if not curBatObj.CanAction():
        GameWorld.DebugLog("当前状态无法使用技能! objID=%s,skillID=%s" % (objID, skillID))
        return
    
    buffStateGroups = useSkill.GetBuffStateLimit()
    if buffStateGroups:
@@ -126,19 +123,19 @@
        curBatObj.SetMainTagIDList(tagIDList)
        
    useTag = ""
    if IsNeedSyncSkill(useSkill):
        # 因为可能触发连击,所以标记需带上累计使用技能次数,确保唯一
        useTag = "Skill_%s_%s_%s" % (objID, skillID, curBatObj.GetSkillUseCnt(skillID) + 1)
        clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCTurnFightTag)
        clientPack.Tag = useTag
        clientPack.Len = len(clientPack.Tag)
        clientPack.Sign = 0
        turnFight.addBatPack(clientPack)
    #这个技能是Buff
    if SkillCommon.IsBuff(useSkill):
        __doAddBuff(turnFight, curBatObj, useSkill)
    else:
        # 主技能额外触发的技能可不下发,前端视为仅释放一个主技能
        if batType != ChConfig.TurnBattleType_Enhance:
            # 因为可能触发连击,所以标记需带上累计使用技能次数,确保唯一
            useTag = "Skill_%s_%s_%s" % (objID, skillID, curBatObj.GetSkillUseCnt(skillID) + 1)
            clientPack = poolMgr.acquire(ChPyNetSendPack.tagSCTurnFightTag)
            clientPack.Tag = useTag
            clientPack.Len = len(clientPack.Tag)
            clientPack.Sign = 0
            turnFight.addBatPack(clientPack)
        __doUseSkill(turnFight, curBatObj, useSkill)
        
    DoAttackResult(turnFight, curBatObj, useSkill)
@@ -160,6 +157,10 @@
    if usePoolSkill:
        poolMgr.release(useSkill)
    return True
def IsNeedSyncSkill(useSkill):
    ## 使用需要同步B427使用技能
    return useSkill.GetSkillType() in [ChConfig.Def_SkillType_Atk, ChConfig.Def_SkillType_Cure, ChConfig.Def_SkillType_CleanBuff]
def GetSkillTags(turnFight, curBatObj, useSkill):
    ## 获取技能目标
@@ -778,11 +779,10 @@
    skillID = useSkill.GetSkillID()
    curBatObj.AddSkillUseCnt(skillID)
    if useSkill.GetCoolDownTime():
        useSkill.SetCalcTime(turnFight.getTimeline())
        useSkill.SetRemainTime(useSkill.GetCoolDownTime())
        
    # 需先技能使用 - 前端按顺序优先表现技能释放内容,前端需要动作或有伤血则通知
    if useSkill.GetSkillMotionName() or len(useSkill.GetHurtObjList()) or useSkill.GetSkillType() in [ChConfig.Def_SkillType_CleanBuff]:
    if IsNeedSyncSkill(useSkill):
        Sync_UseSkill(turnFight, curBatObj, useSkill)
        
    __doCostZhanchui(turnFight, curBatObj, useSkill)
@@ -1181,6 +1181,14 @@
    if not enhanceSkillData:
        return
    
    killObjList = useSkill.GetKillObjList()
    if killObjList:
        invalidSkillID = TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_SkillInvalid, useSkill,
                                                           triggerWay=ChConfig.TriggerWay_KillOneObj)
        if invalidSkillID and invalidSkillID == enhanceSkillID:
            GameWorld.DebugLog("有击杀目标时该技能无效! enhanceSkillID=%s" % enhanceSkillID)
            return
    # 继承主技能目标
    if enhanceSkillData.GetTagAim() == ChConfig.SkillTagAim_MainSkill:
        GameWorld.DebugLog("继承主技能目标! enhanceSkillID=%s" % enhanceSkillID)
@@ -1419,9 +1427,11 @@
        
    aAngerSkillPer, dAngerSkillPerDef = 0, 0
    if isAngerSkill:
        aAngerSkillPer = atkObj.GetBatAttrValue(ChConfig.AttrID_AngerSkillPer) # 普技增伤
        dAngerSkillPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_AngerSkillPerDef) # 普技减伤
        aAngerSkillPer = atkObj.GetBatAttrValue(ChConfig.AttrID_AngerSkillPer) # 怒技增伤
        aAngerSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddAngerSkillPerByXP, curSkill)
        dAngerSkillPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_AngerSkillPerDef) # 怒技减伤
    aAddSkillPer = 0 # 技能增伤
    aAddSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SkillPer, curSkill)
    
@@ -1459,16 +1469,16 @@
    
    if calcType != ChConfig.Def_Calc_Attack:
        aAtk = GetCalcBaseValue(calcType, atkObj, defObj, curSkill)
    GameWorld.DebugLog("伤血计算: atkID=%s,defID=%s,skillID=%s,atkSkillPer=%s,calcType=%s,aAtk=%s,dDef=%s,dHP=%s/%s,hurtTypes=%s,aAddSkillPer=%s"
                       % (atkID, defID, skillID, atkSkillPer, calcType, aAtk, dDef, dHP, dMaxHP, hurtTypes, aAddSkillPer))
    GameWorld.DebugLog("伤血计算: atkID=%s,defID=%s,skillID=%s,atkSkillPer=%s,calcType=%s,aAtk=%s,dDef=%s,dHP=%s/%s,hurtTypes=%s,aAddSkillPer=%s,aFinalDamPer=%s"
                       % (atkID, defID, skillID, atkSkillPer, calcType, aAtk, dDef, dHP, dMaxHP, hurtTypes, aAddSkillPer, aFinalDamPer))
    
    # 持续性伤害
    if isTurnNormalSkill:
        hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 1))
        GameWorld.DebugLog("    普攻技能伤害=%s" % (hurtValue))
        GameWorld.DebugLog("    普攻技能伤害=%s,aNormalSkillPer=%s,dNormalSkillPerDef=%s" % (hurtValue, aNormalSkillPer, dNormalSkillPerDef))
    elif isAngerSkill:
        hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 2))
        GameWorld.DebugLog("    怒气技能伤害=%s" % (hurtValue))
        GameWorld.DebugLog("    怒气技能伤害=%s,aAngerSkillPer=%s,dAngerSkillPerDef=%s" % (hurtValue, aAngerSkillPer, dAngerSkillPerDef))
    elif isDot:
        hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("DOTFormula", 1))
        GameWorld.DebugLog("    持续技能伤害=%s" % (hurtValue))
@@ -1516,6 +1526,7 @@
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByHP, curSkill)
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByJob, curSkill)
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBuffLayer, curSkill)
    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByDeadTeammate, curSkill)
    return atkSkillPer
def CanSuperHit(turnFight, atkObj, defObj, curSkill):
@@ -1618,11 +1629,12 @@
            if shieldHurtValue <= 0:
                break
            buffID = buff.GetBuffID()
            buffSkillID = buff.GetSkillID()
            if shieldHurtValue < buffValue:
                decShieldValue = shieldHurtValue
            else:
                decShieldValue = buffValue
            GameWorld.DebugLog("    承伤盾抵扣: buffID=%s,buffValue=%s,剩余盾伤=%s,扣除盾值=%s" % (buffID, buffValue, shieldHurtValue, decShieldValue))
            GameWorld.DebugLog("    承伤盾抵扣: buffID=%s,skillID=%s,buffValue=%s,剩余盾伤=%s,扣除盾值=%s" % (buffID, buffSkillID, buffValue, shieldHurtValue, decShieldValue))
            shieldHurtValue -= decShieldValue # 承伤值
            if decShieldValue >= buffValue:
                GameWorld.DebugLog("        删除盾: buffID=%s,剩余盾伤=%s" % (buffID, shieldHurtValue))