129 【战斗】战斗系统-服务端(张角所有技能;增加触发方式 56 57;优化效果6014支持直接配置首次增加概率;)
2个文件已修改
31 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py
@@ -20,17 +20,17 @@
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
    addRate = curEffect.GetEffectValue(0)
    onlyFirstUse = curEffect.GetEffectValue(1) # 是否仅首次释放技能有效
    firstTimeRate = curEffect.GetEffectValue(1) # 首次释放增加概率万分率
    skillID = connSkill.GetSkillID() if connSkill else skillkwargs.get("connSkillID", 0)
    if onlyFirstUse:
    if firstTimeRate:
        if not skillID:
            #GameWorld.DebugLog("没有增加概率的技能ID! %s" % skillkwargs)
            return
        useCnt = attacker.GetSkillUseCnt(skillID)
        if useCnt > 0:
            GameWorld.DebugLog("技能非首次使用不增加额外概率! skillID=%s,useCnt=%s" % (skillID, useCnt))
            return
        if useCnt <= 0:
            addRate = firstTimeRate
            GameWorld.DebugLogEx("技能首次使用增加额外概率! skillID=%s,useCnt=%s,addRate=%s", skillID, useCnt, addRate)
    failAddRateEx = curEffect.GetEffectValue(2) # 失败次数额外增加概率
    if failAddRateEx:
        failCnt = attacker.GetSkillHappenFailCnt(skillID)
@@ -39,7 +39,7 @@
            addRate = ChConfig.Def_MaxRateValue # 强制增加满概率
            GameWorld.DebugLog("技能概率失败次数必定成功: mustHappenFailCnt=%s,failCnt=%s,addRate=%s" % (mustHappenFailCnt, failCnt, addRate))
        elif failCnt > 0:
            addRate = failAddRateEx * failCnt
            addRate += failAddRateEx * failCnt
            GameWorld.DebugLog("技能概率失败次数增加概率: failAddRateEx=%s,failCnt=%s,addRate=%s" % (failAddRateEx, failCnt, addRate))
            
    if effBuff:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1367,7 +1367,7 @@
    
    # 统计伤血,可能单个技能对同一目标造成多次伤害
    totalHurtValue = 0
    isSuckHP = False
    suckObjIDList = [] # 吸血的对象ID列表
    missObjIDList, immuneObjIDList = [], [] # 闪避、免疫对象ID列表
    stunObjIDList, superHitObjIDList, parryObjIDList = [], [], []
    beHurtObjIDList = [] # 受伤的对象ID列表
@@ -1425,9 +1425,10 @@
            if tagObj not in caorenProtectList:
                caorenProtectList.append(tagObj)
                
        if hurtObj.GetSuckHP() > 0:
            isSuckHP = True
        if hurtObj.GetSuckHP() > 0 and not hurtObj.HaveHurtType(ChConfig.HurtAtkType_PoisonCureSuck):
            if hurtObjID not in suckObjIDList:
                suckObjIDList.append(hurtObjID)
    # 判断自己死亡,因为反弹、平摊伤害的原因,有可能自己干死自己
    if curObj.IsAlive() and curObj.GetHP() <= 0:
        if curObj.CanNoDead():
@@ -1447,7 +1448,7 @@
        DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_SuperHit, relatedSkillID)
    if stunObjIDList:
        DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_Stun, relatedSkillID)
    if isSuckHP:
    if suckObjIDList:
        DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_SuckHP, relatedSkillID)
        
    # 结算副本相关的攻击结果,仅主动发起玩家阵容武将触发
@@ -1594,6 +1595,12 @@
            TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeParry, tagObj, connSkill=useSkill)
            TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Parry, curObj, connSkill=useSkill)
            
        # 吸血
        if tagID in suckObjIDList:
            if not triggerOne:
                TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_SuckHPOne, tagObj, connSkill=useSkill)
            TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeSuckHP, curObj, connSkill=useSkill)
        # 连击
        if batType == ChConfig.TurnBattleType_Combo:
            TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Combo, tagObj, connSkill=useSkill)