129 【战斗】战斗系统-服务端(司马微技能;增加效果6014-增加技能概率;)
3个文件已修改
1个文件已添加
31 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4322,6 +4322,7 @@
PassiveEff_AddSkillPerByBuffLayer = 6011 # 增加本次技能万分比(根据buff层级)
PassiveEff_AddBuffLayerMax = 6012 # 添加buff层级上限:  数值1-增加层级上限
PassiveEff_AddFinalDamPer = 6013 # 增加最终增伤(根据属性转化)
PassiveEff_AddSkillRate = 6014 # 增加技能概率
# 被动效果ID有触发值时就返回的
PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py
New file
@@ -0,0 +1,19 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Skill.PassiveTrigger.PassiveEff_6014
#
# @todo:增加技能概率
# @author hxp
# @date 2025-09-25
# @version 1.0
#
# 详细描述: 增加技能概率
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-25 18:00"""
#-------------------------------------------------------------------------------
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, **skillkwargs):
    return curEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -108,7 +108,7 @@
    callFunc(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs)
    return
def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None, **kwargs):
def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None, connSkillTypeID=0, **kwargs):
    ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么
    @param calcEffID: 需要统计的效果ID,可以是属性ID或者其他自定义效果ID
    @return: 触发的值,0-没有触发或本身触发的值为0;非0-触发的具体值
@@ -116,7 +116,7 @@
    
    triggerWay = ChConfig.TriggerWay_CalcEffValue
    passiveEffMgr = atkObj.GetPassiveEffManager()
    effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkill)
    effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkill, connSkillTypeID)
    if not effInfoList:
        return 0
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -73,7 +73,8 @@
    if not tagObjList:
        tagObjList = GetSkillTags(turnFight, curBatObj, useSkill)
        rate = useSkill.GetHappenRate()
        if rate and rate != ChConfig.Def_MaxRateValue:
        if rate:
            rate += TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddSkillRate, useSkill)
            for tagObj in tagObjList[::-1]:
                if not GameWorld.CanHappen(rate, ChConfig.Def_MaxRateValue):
                    tagObjList.remove(tagObj)
@@ -992,6 +993,7 @@
        GameWorld.DebugLog("继承主技能目标! enhanceSkillID=%s" % enhanceSkillID)
        # 额外触发的技能直接在外层检查概率,如果都没有触发则不需要再处理
        enhanceRate = enhanceSkillData.GetHappenRate()
        enhanceRate += TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddSkillRate, connSkillTypeID=enhanceSkillData.GetSkillTypeID())
        enchanceTagObjList = []
        for tagObj in tagObjList:
            tagID = tagObj.GetID()
@@ -1064,6 +1066,7 @@
    # 继承主技能目标
    if passiveSkill.GetTagAim() == ChConfig.SkillTagAim_MainSkill:
        happenRate = passiveSkill.GetHappenRate()
        happenRate += TurnPassive.GetTriggerEffectValue(turnFight, batObj, None, ChConfig.PassiveEff_AddSkillRate, passiveSkill)
        GameWorld.DebugLog("被动触发技能,继承主技能目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,happenRate=%s,bySkillID=%s" % (effSkillID, effectID, passiveSkillID, happenRate, bySkillID))
        if not tagObj:
            return
@@ -1071,7 +1074,7 @@
        if not tagObj.IsAlive():
            GameWorld.DebugLog("    已被击杀不触发: tagID=%s" % (tagID))
            return
        if happenRate and happenRate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
        if happenRate and not GameWorld.CanHappen(happenRate, ChConfig.Def_MaxRateValue):
            GameWorld.DebugLog("    概率不触发: tagID=%s,happenRate=%s" % (tagID, happenRate))
            return
        passiveTagObjList = [tagObj]