129 【战斗】战斗系统-服务端(诸葛亮觉醒技能,剩最后一个概率未处理;优化效果5013;增加技能目标范围类型 11-继承主技能目标同横排,12-继承主技能目标同纵排;)
3个文件已修改
119 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5013.py 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1355,7 +1355,9 @@
SkillTagAim_MainSkillFriend, # 继承主技能友军 8
SkillTagAim_Male, # 男性 9
SkillTagAim_Female, # 女性 10
) = range(11)
SkillTagAim_MainSkillRow, # 继承主技能目标同横排 11
SkillTagAim_MainSkillCol, # 继承主技能目标同纵排 12
) = range(13)
# 技能目标 - 细分
(
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_5013.py
@@ -16,8 +16,9 @@
#-------------------------------------------------------------------------------
import TurnSkill
import IpyGameDataPY
import BattleObj
import TurnBuff
import GameWorld
def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs):
    ownerID = effBuff.GetOwnerID()
@@ -28,12 +29,25 @@
        return
    effSkill = effBuff.GetSkillData().GetIpyData()
    skillID = curEffect.GetEffectValue(0) # 技能ID,为0时释放本技能
    if not skillID:
        passiveSkill = effSkill
    else:
        passiveSkill = IpyGameDataPY.GetIpyGameData("Skill", skillID)
    if not passiveSkill:
        return
    delBuff = curEffect.GetEffectValue(1) # 是否删除buff
    checkTriggerCnt = curEffect.GetEffectValue(2) # 附加验证触发次数达到x次后释放,0不验证
    if checkTriggerCnt:
        triggerCnt = effBuff.GetValue3() + 1
        effBuff.SetValue3(triggerCnt)
        if triggerCnt < checkTriggerCnt:
            GameWorld.DebugLogEx("5013触发次数不足不释放! triggerCnt=%s < %s", triggerCnt, checkTriggerCnt)
            return
    addBatDamPer = curEffect.GetEffectValue(3) # 每次触发额外增加技能增伤
    if addBatDamPer:
        addBatDamPer *= max(1, effBuff.GetValue3())
        GameWorld.DebugLogEx("5013触发次数额外增伤! addBatDamPer=%s", addBatDamPer)
    if delBuff:
        TurnBuff.DoBuffDel(turnFight, batObj, effBuff, connSkill)
    effectID = curEffect.GetEffectID()
    effSkillID = effSkill.GetSkillID()
    return TurnSkill.OnUsePassiveSkill(turnFight, buffOwner, batObj, passiveSkill, connSkill, effSkillID, effectID, connBuff)
    if not skillID:
        skillID = effSkillID
    return TurnSkill.OnUsePassiveSkill(turnFight, buffOwner, batObj, skillID, connSkill, effSkillID, effectID, connBuff, addBatDamPer=addBatDamPer)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -185,7 +185,7 @@
    if SkillCommon.IsBuff(useSkill):
        __doAddBuff(turnFight, curBatObj, useSkill, **kwargs)
    else:
        __doUseSkill(turnFight, curBatObj, useSkill)
        __doUseSkill(turnFight, curBatObj, useSkill, **kwargs)
        
    DoAttackResult(turnFight, curBatObj, useSkill, **kwargs)
    
@@ -591,6 +591,64 @@
        
    return aimObjList
def __getSameRowObjList(tagObj):
    ## 获取目标对应的同排对象列表,只算活着的
    posNum = tagObj.GetPosNum()
    inRowNum = ChConfig.GetInRowNum(posNum)
    inColNum = ChConfig.GetInColNum(posNum)
    # 优先目标所在纵,为主目标
    colNumList = range(1, 1 + ChConfig.TurnFightCols)
    if inColNum in colNumList:
        colNumList.remove(inColNum)
        colNumList.insert(0, inColNum)
    row = inRowNum # 目标玩家所在横排
    batObjMgr = BattleObj.GetBatObjMgr()
    batLineup = tagObj.GetBatLineup()
    aimObjList = []
    for col in colNumList:
        pNum = (row - 1) * ChConfig.TurnFightCols + col
        if pNum not in batLineup.posObjIDDict:
            continue
        tagObjID = batLineup.posObjIDDict[pNum]
        tagBatObj = batObjMgr.getBatObj(tagObjID)
        if not tagBatObj.IsAlive():
            continue
        aimObjList.append(tagBatObj)
    return aimObjList
def __getSameColObjList(tagObj):
    ## 获取目标对应的同列对象列表,只算活着的
    posNum = tagObj.GetPosNum()
    inRowNum = ChConfig.GetInRowNum(posNum)
    inColNum = ChConfig.GetInColNum(posNum)
    rowNumList = range(1, 1 + ChConfig.TurnFightRows)
    if inRowNum in rowNumList:
        rowNumList.remove(inRowNum)
        rowNumList.insert(0, inRowNum)
    col = inColNum # 目标玩家所在纵排
    batObjMgr = BattleObj.GetBatObjMgr()
    batLineup = tagObj.GetBatLineup()
    aimObjList = []
    for row in range(1, 1 + ChConfig.TurnFightRows):
        pNum = (row - 1) * ChConfig.TurnFightCols + col
        if pNum not in batLineup.posObjIDDict:
            continue
        tagObjID = batLineup.posObjIDDict[pNum]
        tagBatObj = batObjMgr.getBatObj(tagObjID)
        if not tagBatObj.IsAlive():
            continue
        aimObjList.append(tagBatObj)
    return aimObjList
def GetRelativeObj(turnFight, curBatObj):
    '''获取对位目标,仅用于非技能目标的对位逻辑,如连击、弱疗等相对属性的判断,技能目标统一使用 GetSkillTags
    '''
@@ -684,7 +742,7 @@
        
    return
def __doUseSkill(turnFight, curBatObj, useSkill):
def __doUseSkill(turnFight, curBatObj, useSkill, **kwargs):
    
    atkType = useSkill.GetAtkType()
    GameWorld.DebugLogEx("__doUseSkill: curID=%s,skillID=%s,atkType=%s", curBatObj.GetID(), useSkill.GetSkillID(), atkType)
@@ -694,7 +752,7 @@
    
    # 通用攻击
    if atkType == 1:
        SkillModule_1(turnFight, curBatObj, useSkill)
        SkillModule_1(turnFight, curBatObj, useSkill, **kwargs)
    # 治疗
    if atkType == 2:
        SkillModule_2(turnFight, curBatObj, useSkill)
@@ -789,7 +847,7 @@
    Sync_PropertyRefreshView(turnFight, curBatObj, ChConfig.AttrID_HP, updHP, diffValue, diffType, skillID, relatedSkillID, hurtTypes)
    return
def SkillModule_1(turnFight, curBatObj, useSkill):
def SkillModule_1(turnFight, curBatObj, useSkill, **kwargs):
    ## 通用攻击,单攻、群攻
    
    addPer = 0
@@ -805,7 +863,10 @@
            addPer = addPerMax
        GameWorld.DebugLogEx("司马懿特殊潜能技能额外增加比例: frozenCnt=%s,addPer=%s" % (frozenCnt, addPer))
        
    addBatDamPer = TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddBatDamPerByLayer, useSkill)
    addBatDamPer = 0
    if "addBatDamPer" in kwargs:
        addBatDamPer += kwargs.pop("addBatDamPer", 0)
    addBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, curBatObj, None, ChConfig.PassiveEff_AddBatDamPerByLayer, useSkill)
    
    # 计算伤害
    calcHurtResults = []
@@ -1978,6 +2039,20 @@
        GameWorld.DebugLogEx("被动触发技能,针对来源友军! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s,byFriendID=%s", 
                             effSkillID, effectID, passiveSkillID, bySkillID, byFriendObj.GetID())
        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
    # 继承主技能目标同横排 11
    elif tagAim == ChConfig.SkillTagAim_MainSkillRow:
        if not tagObj:
            return
        GameWorld.DebugLogEx("被动触发技能,针对目标同排对象! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s", effSkillID, effectID, passiveSkillID, bySkillID)
        passiveTagObjList = __getSameRowObjList(tagObj)
        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
    # 继承主技能目标同纵排 12
    elif tagAim == ChConfig.SkillTagAim_MainSkillCol:
        if not tagObj:
            return
        GameWorld.DebugLogEx("被动触发技能,针对目标同纵对象! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s", effSkillID, effectID, passiveSkillID, bySkillID)
        passiveTagObjList = __getSameColObjList(tagObj)
        isOK = OnUseSkill(turnFight, batObj, passiveSkill, passiveTagObjList, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)
    else:
        GameWorld.DebugLogEx("被动触发技能,重新锁定目标! effSkillID=%s,effectID=%s,passiveSkillID=%s,bySkillID=%s", effSkillID, effectID, passiveSkillID, bySkillID)
        isOK = OnUseSkill(turnFight, batObj, passiveSkill, batType=batType, bySkill=connSkill, byBuff=connBuff, **kwargs)