ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -57,6 +57,7 @@
import ChPyNetSendPack
import NetPackCommon
import FamilyRobBoss
import EquipZhuXian
import FBCommon
import ChNPC
@@ -1417,6 +1418,44 @@
    return
def ChangeSkillHurtPer(atkObj, defObj, curSkill, skillPer):
    ## 改变技能伤害百分比
    if not curSkill:
        return skillPer
    if atkObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
        return skillPer
    skillTypeID = curSkill.GetSkillTypeID()
    addPer = EquipZhuXian.GetZhuXianEquipSkillAddPer(atkObj.GetPlayerID(), skillTypeID)
    reducePer = 0
    if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        reducePer = EquipZhuXian.GetZhuXianEquipSkillReducePer(defObj.GetPlayerID(), skillTypeID)
        #根据防守方职业 计算攻击方伤害加成
        if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
            addPer += PlayerControl.GetJobAHurtAddPer(atkObj)
        elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
            addPer += PlayerControl.GetJobBHurtAddPer(atkObj)
        elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
            addPer += PlayerControl.GetJobCHurtAddPer(atkObj)
        #根据攻击方职业 计算防守方伤害减免
        if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
            reducePer += PlayerControl.GetJobAAtkReducePer(defObj)
        elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
            reducePer += PlayerControl.GetJobBAtkReducePer(defObj)
        elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
            reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
    if addPer or reducePer:
        addSkillPer = (addPer - reducePer) / 10000.0
        skillPer = max(0, skillPer + addSkillPer)
    return skillPer
# 改变技能伤害(效果ID1010), 野外小怪1009替换1010伤害(2018-03-07增加精英怪)
def ChangeSkillHurt(curPlayer, defObj, curSkill, skillPer, skillValue):
@@ -1582,7 +1621,7 @@
            # 理论伤害一致, 多加点预算伤害避免计算误差
            #hurtValue = min(ShareDefine.Def_UpperLimit_DWord, hurtValue+10)
            #atkObj.SetDict(ChConfig.Def_PlayerKey_ClientMaxHurtValue, int(hurtValue*1.2))
            hurtValue = atkObj.GetMaxAtk()*atkSkillPer*20   # 加入被动计算不准确改成估算
            hurtValue = atkObj.GetMaxAtk()*atkSkillPer*40   # 加入被动计算不准确改成估算
            
        clientValue, hurtType = SkillShell.GetClientHurtByObj(defObj.GetID(), defObjType)
        if clientValue <= hurtValue:
@@ -1855,6 +1894,8 @@
    # 改变技能伤害
    atkSkillPer, atkSkillValue = ChangeSkillHurt(atkObj, defObj, curSkill, atkSkillPer, atkSkillValue)
    
    atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer)
    #  atkSkillPer 包含普攻,所以不是用技能增强处理
    atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)