hxp
2025-08-25 912176de9ed5b45e5fe0edbb15b8796f54c56ba2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -1283,14 +1283,12 @@
            AttackCommon.OnPVPDamage(attackerOwner, lostValue, curObj, "SkillLostHP")
        elif curObjType == IPY_GameWorld.gotNPC:
            AttackCommon.NPCAddObjInHurtList(attackerOwner, curObj, curObjHP_BeforeAttack, lostValue)
    TurnAttack.AddTurnObjHurtValue(buffOwner, curObj, hurtType, lostValue, lostHP, curSkill)
    
    #统一调用攻击结束动作
    if isDoAttackResult:
        BaseAttack.DoLogic_AttackResult(buffOwner, curObj, None, tick)
        
    TurnAttack.OnTurnfightAttackResult(buffOwner, curObj, curSkill)
    #TurnAttack.OnTurnfightAttackResult(buffOwner, curObj, curSkill)
    return lostHP
## 检查增加淬毒buff
@@ -1850,13 +1848,21 @@
    #0通哟  1 PVP类型  2PVE类型  
    return curSkill.GetHurtType() % 10
def isDamageShieldSkill(skillData):
    ## 是否承伤盾技能
    return skillData.GetAtkType() == ChConfig.BuffAtkType_DamageShield
def isAngerSkill(curSkill):
    ## 是否怒气技能
    return curSkill and curSkill.GetXP() > 0
    return curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_AngerSkill
def isTurnNormalSkill(curSkill):
    ## 是否回合普攻技能,区别与无技能的普通A一下,该普攻同样可以有各种技能效果,只是他属于普攻
    return curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaSkill
def isAtkbackSkill(curSkill):
    ## 是否反击技能
    return curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_AtkbackSkill
## 检查技能是否为被动技能, 用于控制不可释放技能
def isPassiveSkill(curSkill):
@@ -2071,12 +2077,12 @@
        cureBaseValue = GetCureBaseValue(userObj, curSkill)
    elif cureType == ChConfig.Def_Cure_MaxHP:
        cureBaseValue = GameObj.GetMaxHP(userObj)
    elif cureType == ChConfig.Def_Cure_PNE:
        cureBaseValue = userObj.GetPNE()
        addPer = curSkill.GetEffect(0).GetEffectValue(2)/float(ChConfig.Def_MaxRateValue)
        addExValue = GetCureBaseValue(userObj, curSkill)*addPer
    elif cureType == ChConfig.Def_Cure_PHY:
        cureBaseValue = GameObj.GetMaxHP(userObj)
    #elif cureType == ChConfig.Def_Cure_PNE:
    #    cureBaseValue = userObj.GetPNE()
    #    addPer = curSkill.GetEffect(0).GetEffectValue(2)/float(ChConfig.Def_MaxRateValue)
    #    addExValue = GetCureBaseValue(userObj, curSkill)*addPer
    #elif cureType == ChConfig.Def_Cure_PHY:
    #    cureBaseValue = GameObj.GetMaxHP(userObj)
    elif cureType == ChConfig.Def_Cure_HurtValue:
        cureBaseValue = GameObj.GetLastHurtValue(userObj)
    elif cureType == ChConfig.Def_Cure_TagMaxHP:
@@ -2167,48 +2173,50 @@
def GetSkillAddPerByID(curPlayer, skillTypeID):
    ## 获取技能伤害百分比提升值
    # @param skillTypeID: 技能TypeID
    SkillAddPerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillAddPerAttrIDDict")
    if not SkillAddPerAttrIDDict:
        SkillAddPerAttrIDDict = {}
        skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
        for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
            attrID = int(attrIDStr)
            if attrID not in ShareDefine.SkillAddPerAttrIDList:
                continue
            for cfgSkillTypeID in skillTypeIDList:
                SkillAddPerAttrIDDict[cfgSkillTypeID] = attrID
        IpyGameDataPY.SetConfigEx("SkillAddPerAttrIDDict", SkillAddPerAttrIDDict)
    if skillTypeID not in SkillAddPerAttrIDDict:
        return 0
    curAttrID = SkillAddPerAttrIDDict[skillTypeID]
    attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
    if attrInfo == []:
        return 0
    effIndex = attrInfo[0][0]
    return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
    return 0
#    SkillAddPerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillAddPerAttrIDDict")
#    if not SkillAddPerAttrIDDict:
#        SkillAddPerAttrIDDict = {}
#        skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
#        for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
#            attrID = int(attrIDStr)
#            if attrID not in ShareDefine.SkillAddPerAttrIDList:
#                continue
#            for cfgSkillTypeID in skillTypeIDList:
#                SkillAddPerAttrIDDict[cfgSkillTypeID] = attrID
#        IpyGameDataPY.SetConfigEx("SkillAddPerAttrIDDict", SkillAddPerAttrIDDict)
#
#    if skillTypeID not in SkillAddPerAttrIDDict:
#        return 0
#    curAttrID = SkillAddPerAttrIDDict[skillTypeID]
#    attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
#    if attrInfo == []:
#        return 0
#    effIndex = attrInfo[0][0]
#    return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
def GetSkillReducePerByID(curPlayer, skillTypeID):
    ## 获取技能伤害百分比减伤值
    # @param skillTypeID: 技能TypeID
    SkillReducePerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillReducePerAttrIDDict")
    if not SkillReducePerAttrIDDict:
        SkillReducePerAttrIDDict = {}
        skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
        for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
            attrID = int(attrIDStr)
            if attrID not in ShareDefine.SkillReducePerAttrIDList:
                continue
            for cfgSkillTypeID in skillTypeIDList:
                SkillReducePerAttrIDDict[cfgSkillTypeID] = attrID
        IpyGameDataPY.SetConfigEx("SkillReducePerAttrIDDict", SkillReducePerAttrIDDict)
    if skillTypeID not in SkillReducePerAttrIDDict:
        return 0
    curAttrID = SkillReducePerAttrIDDict[skillTypeID]
    attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
    if attrInfo == []:
        return 0
    effIndex = attrInfo[0][0]
    return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)
    return 0
#    SkillReducePerAttrIDDict = IpyGameDataPY.GetConfigEx("SkillReducePerAttrIDDict")
#    if not SkillReducePerAttrIDDict:
#        SkillReducePerAttrIDDict = {}
#        skillPlusAttrIDDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 2, {})
#        for attrIDStr, skillTypeIDList in skillPlusAttrIDDict.items():
#            attrID = int(attrIDStr)
#            if attrID not in ShareDefine.SkillReducePerAttrIDList:
#                continue
#            for cfgSkillTypeID in skillTypeIDList:
#                SkillReducePerAttrIDDict[cfgSkillTypeID] = attrID
#        IpyGameDataPY.SetConfigEx("SkillReducePerAttrIDDict", SkillReducePerAttrIDDict)
#
#    if skillTypeID not in SkillReducePerAttrIDDict:
#        return 0
#    curAttrID = SkillReducePerAttrIDDict[skillTypeID]
#    attrInfo = ChConfig.ItemEffect_AttrDict.get(curAttrID, [])
#    if attrInfo == []:
#        return 0
#    effIndex = attrInfo[0][0]
#    return EffGetSet.GetValueByEffIndex(curPlayer, effIndex)