hch
2019-03-15 d41a44a9fd316c021c4e85bde9cb0fab4c2e0be1
2683 子 天赋技能和新增双职业各两个技能 / 【后端】天赋技能
12个文件已修改
8个文件已添加
493 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1015.py 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_809.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_43.py 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4524.py 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4525.py 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4072.py 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4073.py 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -1639,31 +1639,7 @@
    
    WriteHurtLog(attacker, defObj, curSkill, hurtValue, hurtType, "公式层")
    
    # 优先处理神兵护盾
    hurtValue = CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick)
    # 伤害吸收盾回血型
    buffManager = defObj.GetBuffState()
    curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShieldXMZJ)
    if skillID:
        absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
        if absortValue:
            hurtValue -= absortValue
            findBuff = SkillCommon.FindBuffByID(defObj, skillID)[0]
            if findBuff:
                # 用于回血
                findBuff.SetValue(int(findBuff.GetValue() + absortValue))
    if defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue):
        # 麒麟护盾吸收伤害,将抵消的伤害存储
        absortValue = int(defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue)/float(ShareDefine.Def_MaxRateValue)*hurtValue)
        hurtValue -= absortValue
        # 吸收至指定血量比例值
        absorbHurt = defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShield)
        if absorbHurt <= defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax):
            maxValue = min(absorbHurt + absortValue, defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax))
            defObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, maxValue)    # 记录护盾吸收的伤害用于爆炸
    hurtValue = CalcHurtHPWithBuff(atkObj, defObj, hurtValue, curSkill, tick)
    # buff减少伤害百分比
    reducePer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ReduceHurtHPPer)
@@ -1767,6 +1743,46 @@
    #===========================================================================
    
    return resultHurtType
# 计算伤害后,因各种buff和状态的影响处理
def CalcHurtHPWithBuff(atkObj, defObj, hurtValue, curSkill, tick):
    # 优先处理神兵护盾
    hurtValue = CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick)
    # 伤害吸收盾回血型
    buffManager = defObj.GetBuffState()
    curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShieldXMZJ)
    if skillID:
        absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
        if absortValue:
            hurtValue -= absortValue
            findBuff = SkillCommon.FindBuffByID(defObj, skillID)[0]
            if findBuff:
                # 用于回血
                findBuff.SetValue(int(findBuff.GetValue() + absortValue))
    if defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue):
        # 麒麟护盾吸收伤害,将抵消的伤害存储
        absortValue = int(defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue)/float(ShareDefine.Def_MaxRateValue)*hurtValue)
        hurtValue -= absortValue
        # 吸收至指定血量比例值
        absorbHurt = defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShield)
        if absorbHurt <= defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax):
            maxValue = min(absorbHurt + absortValue, defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax))
            defObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, maxValue)    # 记录护盾吸收的伤害用于爆炸
    # 天罡护法,将期间受到的伤害总值用于回血,不改变伤害
    curEffect, plusValue, skillID2 = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_StoreBlood)
    if skillID2:
        absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
        if absortValue:
            findBuff = SkillCommon.FindBuffByID(defObj, skillID2)[0]
            if findBuff:
                # 用于回血
                findBuff.SetValue(int(findBuff.GetValue() + absortValue))
    return hurtValue
# GM 命令  HurtLog 查看战斗伤害日志
@@ -1951,6 +1967,11 @@
        # 暴击增加技能伤害
        atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer)
        atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer)
        # buff中暴击减层,无触发技能
        PassiveBuffEffMng.OnPassiveBuffTrigger(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSubLayer, tick)
    if isLuckyHit:
        # 会心一击时增加会心伤害百分比 
@@ -2195,7 +2216,8 @@
        atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValue, resultHurtType.RealHurtHP)
        if defObj.GetGameObjType() == IPY_GameWorld.gotNPC:
            atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtNPCObjID, defObj.GetID())
        else:
            defObj.SetDict(ChConfig.Def_PlayerKey_LastAttackerObjID, atkObj.GetID())
    return
@@ -2348,7 +2370,7 @@
        atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
        
        atkBackHP += int(hurtValue * atkBackHPPer*1.0 / ChConfig.Def_MaxRateValue)
    suckHP += atkBackHP
    
    if suckHP <= 0:
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -1499,9 +1499,10 @@
        curPlayerSkill = curPlayer.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
        
        if curPlayerSkill:
            #设置玩家所学技能冷却CD
            SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
            if not IsSkipSkillCD:
                #设置玩家所学技能冷却CD
                SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
            #调用任务触发器
            #EventShell.EventRespons_UseSkillOK(curPlayer, skillTypeID)
            #执行连环被动技能处理
@@ -1516,6 +1517,27 @@
    # 普攻和对敌技能
    UseSkillOver(curPlayer, target, curSkill, tick)
    return True
# 无冷却状态
def IsSkipSkillCD(curPlayer, target, curSkill, tick):
    # 暴击情况下
    isSuperHit = False
    for i in xrange(g_skillHurtList.GetHurtCount()):
        hurtObj = g_skillHurtList.GetHurtAt(i)
        if not hurtObj:
            continue
        if hurtObj.GetAttackType() == ChConfig.Def_HurtType_SuperHit:
            isSuperHit = True
            break
    if isSuperHit:
        if PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(curPlayer, None, curSkill, ChConfig.TriggerType_SuperHitSkipCD):
            return True
        if PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(curPlayer, None, curSkill, ChConfig.TriggerType_SuperHitSkipCD):
            return True
    return False
    
# 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
def OnHurtTypeTriggerSkill(attacker, target, curSkill, tick):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -573,6 +573,7 @@
Def_Skill_Effect_AbsorbShield = 801  # A值记录吸收伤害值,B值记录吸收值上限为xx%血量上限值 C值为释放的爆炸技能ID 如麒麟盾
Def_Skill_Effect_AbsorbShieldXMZJ = 802    # 须弥真界 神兵技能吸收伤害 百分比
Def_Skill_Effect_BoomSeedHurt = 804 # BUFF种子单层伤害
Def_Skill_Effect_StoreBlood = 809 # 将期间受到的伤害总值,用于最后回血,不影响伤害
Def_Skill_Effect_AttackReplace = 1009  #攻击计算,野外小怪伤害替换1010 (2018-03-07增加精英怪)
Def_Skill_Effect_Attack = 1010  #攻击计算
Def_Skill_Effect_LayerCnt = 1011 # BUFF层级数量 A值层数,B值层数处理方式0递增1递减
@@ -632,7 +633,7 @@
#---------需要记录在buff管理器中的效果ID,主要用于查找用---------------------------
Def_BuffManager_EffectsID = [Def_Skill_Effect_ProBloodPer, Def_Skill_Effect_AbsorbShieldXMZJ]
Def_BuffManager_EffectsID = [Def_Skill_Effect_ProBloodPer, Def_Skill_Effect_AbsorbShieldXMZJ, Def_Skill_Effect_StoreBlood]
#-------------------------------------------------------------------------
#基础属性效果ID
@@ -3017,13 +3018,16 @@
    Def_PlayerState_LoseBlood2, # 职业2持续掉血状态 14
    Def_PlayerState_LoseBlood3, # 职业3持续掉血状态 15
    Def_PlayerState_MissSneerAtk, # 对嘲讽攻击免疫表现为miss 16
) = range(17)
    Def_PlayerState_BeInAir, # 浮空(做法同眩晕类) 17
) = range(18)
#---SetDict 含NPC字典KEY,不存于数据库---
Def_GameObjKey_InheritOwner = "InheritOwner"  # 类暴风雪计算时用主人属性
#---SetDict 玩家字典KEY,不存于数据库---
# key的长度不能超过29个字节
Def_PlayerKey_AddBuffLayer = "addBuffLayer" # buff当前层数
Def_PlayerKey_BuffHurtCnt = "BuffHurtCnt" # 持续buff掉血次数
Def_PlayerKey_Zhansha = "zhansha"   # 斩杀标志
Def_PlayerKey_ZhuxianRate = "ZXRate"   # 诛仙一击的概率
Def_PlayerKey_ZhuxianHurtPer = "ZXHurtPer"   # 诛仙一击的伤害%
@@ -3175,6 +3179,7 @@
Def_PlayerKey_IgnoreDefRateReduce = "IgnoreDefRateReduce"  # 抗无视防御概率
Def_PlayerKey_LastHurtValue = "LastHurtValue" # 最后一次伤害值
Def_PlayerKey_LastHurtNPCObjID = "LastHurtNPCObjID" # 最后攻击的NPCObjID
Def_PlayerKey_LastAttackerObjID = "LastAttackerObjID" # 被攻击者记录的最近攻击玩家ID
Def_PlayerKey_ReduceSkillCDPer = "ReduceSkillCDPer" # 减技能CD万分率
Def_PlayerKey_CommMapExpRate = "CommMapExpRate" # 常规地图经验倍率加成
Def_PlayerKey_FinalHurtPer = "FinalHurtPer" # 最终伤害百分比
@@ -4537,7 +4542,10 @@
TriggerType_BeLuckyHit, # 被会心一击触发技能 64
TriggerType_BeLuckyHitSubPer, # 减少受到的会心伤害 65
TriggerType_ZhongjiZhansha, # 终极斩杀 66
) = range(1, 67)
TriggerType_SuperHitSubLayer, # 暴击减层 67
TriggerType_SuperHitSkipCD, # 暴击无冷却 68
TriggerType_BuffHurtCnt, # 当持续buff伤害第X次时触发技能 69
) = range(1, 70)
# NPC功能类型定义
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -55,14 +55,16 @@
#  @param pyState ״̬
#  @param isTrue 是否设置该状态
#  @return None
def SetPyPlayerState(gameObj, pyState, isTrue):
def SetPyPlayerState(gameObj, pyState, isAdd):
    if pyState not in ChConfig.Def_PlayerStateList:
        return
    
    curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
    if isTrue:
    if isAdd:
        # 增加
        updState = curState | pow(2, pyState)
    else:
        # 删除
        if curState & pow(2, pyState) == 0:
            return
        else:
@@ -70,7 +72,7 @@
    
    #GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s" 
    #                   % (pyState, isTrue, curState, updState))
    #                   % (pyState, isAdd, curState, updState))
    gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -220,10 +220,10 @@
                        curBuff.SetLayer(curLayerCnt + 1)
                        #BUFF层级变化触发被动
                        if buffOwner:
                            curObj.SetDict("addBuffLayer", curBuff.GetLayer())
                            curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, curBuff.GetLayer())
                            PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick)
                            PassiveBuffEffMng.OnPassiveBuffTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick)
                            curObj.SetDict("addBuffLayer", 0)
                            curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, 0)
                    else:
                        curBuff.SetLayer(layerMaxCnt)
                    changeLayer = True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py
@@ -16,6 +16,8 @@
import GameWorld
import ChConfig
import GameObj
import IPY_GameWorld
import PassiveBuffEffMng
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -40,7 +42,28 @@
    curBuffSkillID = curBuff.GetSkill().GetSkillTypeID()
    
    SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed)
    if curEffect.GetEffectValue(2) and buffOwner:
        SkillCommon.SkillAddHP(buffOwner, curBuffSkillID, singleDecHP)
    OnPassiveSkillByHurtCount(defender, curBuff, curEffect, buffOwner)
    return
def OnPassiveSkillByHurtCount(defender, curBuff, curEffect, buffOwner):
    if not buffOwner:
        return
    if buffOwner.GetGameObjType() != IPY_GameWorld.gotPlayer:
        return
    # 执行次数。 当汲灵对目标造成3次伤害时,可降低目标20%的防御
    curBuff.SetValue1(curBuff.GetValue1() + 1)
    tick = GameWorld.GetGameWorld().GetTick()
    defender.SetDict(ChConfig.Def_PlayerKey_BuffHurtCnt, curBuff.GetValue1())
    PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, defender, curBuff.GetSkill(), ChConfig.TriggerType_BuffHurtCnt, tick)
    defender.SetDict(ChConfig.Def_PlayerKey_BuffHurtCnt, 0)
    return
## 持续性Buff消失
#  @param defender 承受者
@@ -63,6 +86,9 @@
    buffOwner = SkillCommon.GetBuffOwner(curBuff)
    
    SkillCommon.SkillLostHP(defender, curSkill.GetSkillTypeID(), buffOwner, buffValue, tick, hurtType=ChConfig.Def_HurtType_Bleed)
    # 执行次数
    OnPassiveSkillByHurtCount(defender, curBuff, curEffect, buffOwner)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1015.py
New file
@@ -0,0 +1,41 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 吸收对方属性,有目标技能(41),最多3种属性, 增益buff
#
# @author: Alee
# @date 2019-3-15 下午04:48:41
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import BuffSkill
import IPY_GameWorld
#---------------------------------------------------------------------
## buff线性增加属性
#  @param defender Buff承受者
#  @param curEffect 技能效果
#  @param calcDict 技能效果累加总表
#  @return None
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
    attrType = curEffect.GetEffectValue(0)
    vauleFunc = [curBuff.GetValue, curBuff.GetValue1, curBuff.GetValue2]
    calcDict[attrType] = calcDict.get(attrType, 0) + vauleFunc[min(2, curEffect.GetEffectValue(2))]()
    return
## 返回buff类型,线性与否
#  @param
#  @return None
#  @remarks 函数详细说明.
def GetCalcType():
    return ChConfig.TYPE_Linear
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_809.py
New file
@@ -0,0 +1,27 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 将期间受到的伤害总值,用于最后回血,不影响伤害
#
# @author: Alee
# @date 2019-3-14 下午08:34:57
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import SkillCommon
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
    if curObj.GetHP() <= 0:
        return
    value = curBuff.GetValue()
    if value <= 0:
        return
    SkillCommon.SkillAddHP(curObj, 0, value)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_43.py
New file
@@ -0,0 +1,46 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 吸收对方属性,有目标技能(41), 增益buff
#
# @author: Alee
# @date 2019-3-15 下午04:05:05
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import BaseAttack
import BuffSkill
import IPY_GameWorld
import SkillCommon
import EffGetSet
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
    if not defender:
        return
    if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
        return
    addBuffValueList = []
    # 效果ID | 属性项,万分率
    # 最多吸收目标3种属性 存入buffvalue
    for i in range(3):
        attrIndex = curSkill.GetEffect(i).GetEffectValue(0)
        if not attrIndex:
            break
        curValue = EffGetSet.GetValueByEffIndex(defender, attrIndex)
        curValue = int(curValue * curSkill.GetEffect(i).GetEffectValue(1) / ChConfig.Def_MaxRateValue)
        addBuffValueList.append(curValue)
    buffType = SkillCommon.GetBuffType(curSkill)
    BuffSkill.DoAddBuff(attacker, buffType, curSkill, tick, addBuffValueList, attacker)
    #处理技能触发和攻击成功逻辑
    return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
@@ -68,5 +68,3 @@
    return True
def GetValue(attacker, defender, passiveEffect):
    return 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py
@@ -39,5 +39,3 @@
    return True
def GetValue(attacker, defender, passiveEffect):
    return 0
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# @todo: 进入濒死状态 血量为1, 不触发技能
# @todo: 进入濒死状态 血量为1
#
# @author: Alee
# @date 2017-12-9 下午09:41:44
@@ -30,12 +30,15 @@
            return False
    
    attacker.SetHP(1)
    return False
    # False 可用于多次触发不死的作用
    return True if passiveEffect.GetEffectValue(1) else False
def GetSkillData(passiveEffect):
    return
    skillID = passiveEffect.GetEffectValue(1)
    return GameWorld.GetGameData().GetSkillBySkillID(skillID)
def AfterUsePassiveSkill(attacker, defender, passiveEffect, tick):
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py
@@ -25,7 +25,7 @@
    if passiveEffect.GetEffectValue(2) and passiveEffect.GetEffectValue(2) != skillTypeID:
        # 验证关联技能
        return False
    return defender.GetDictByKey("addBuffLayer") == passiveEffect.GetEffectValue(0)
    return defender.GetDictByKey(ChConfig.Def_PlayerKey_AddBuffLayer) == passiveEffect.GetEffectValue(0)
def GetSkillData(passiveEffect):
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4524.py
New file
@@ -0,0 +1,58 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# @todo: buff暴击攻击减自身buff层
#
# @author: Alee
# @date 2018-1-30 下午05:11:45
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import SkillCommon
import BuffSkill
import SkillShell
import IPY_GameWorld
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    # 先判断概率
    rate = passiveEffect.GetEffectValue(0)
    if rate and not GameWorld.CanHappen(rate):
        return False
    FBSkillValid = passiveEffect.GetEffectValue(1)
    if FBSkillValid == 0:
        # 0 为 只有主动法宝技能暴击可触发
        useSkill = skillkwargs.get("useSkill", None)
        if not useSkill:
            return False
        if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSkill:
            return False
    curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
    if not curSkill:
        return False
    buffType = SkillCommon.GetBuffType(curSkill)
    buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
    #通过类型获取目标的buff管理器为空,则跳出
    if buffTuple == ():
        return False
    buffManager = buffTuple[0]
    buff = buffManager.FindBuff(curSkill.GetSkillTypeID())
    if not buff:
        return False
    if buff.GetLayer() <= 0:
        return False
    BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4525.py
New file
@@ -0,0 +1,41 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# @todo: buff中技能暴击无冷却
#
# @author: Alee
# @date 2018-1-30 下午05:11:45
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import SkillCommon
import BuffSkill
import SkillShell
import IPY_GameWorld
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    # 先判断概率
    rate = passiveEffect.GetEffectValue(0)
    if rate and not GameWorld.CanHappen(rate):
        return False
    FBSkillValid = passiveEffect.GetEffectValue(1)
    if FBSkillValid == 0:
        # 0 为 只有主动法宝技能暴击可触发
        useSkill = skillkwargs.get("useSkill", None)
        if not useSkill:
            return False
        if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSkill:
            return False
    return True
def GetValue(attacker, defender, passiveEffect):
    return 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# 对目标的buff层级达到第几层触发技能
# 对目标的buff层级达到第几层触发技能, 附加效果指定目标为最近一次攻击的玩家
#
# @author: Alee
# @date 2018-1-9 下午09:39:37
@@ -10,10 +10,30 @@
# @note: 
#
#---------------------------------------------------------------------
import SkillShell
import GameWorld
import ChConfig
import IPY_GameWorld
def CheckCanHappen(attacker, defender, effect, curSkill):   
    if defender.GetDictByKey(ChConfig.Def_PlayerKey_AddBuffLayer) != effect.GetEffectValue(0):
        return False
    
    return defender.GetDictByKey("addBuffLayer") == effect.GetEffectValue(0)
    if effect.GetEffectValue(1):
        # 走到此逻辑 中buff和释放buff是同一个人
        #附加效果指定目标为最近一次攻击的玩家
        playerID = attacker.GetDictByKey(ChConfig.Def_PlayerKey_LastAttackerObjID)
        if not playerID:
            return False
        curObj = GameWorld.GetObj(playerID, IPY_GameWorld.gotPlayer)
        #人物需要判断是否为空
        if not curObj:
            return False
        if curObj.IsEmpty():
            return False
    
        #强行释放技能
        SkillShell.UsePassiveTriggerSkill(attacker, curSkill, curObj, GameWorld.GetGameWorld().GetTick(), True)
        return False
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py
New file
@@ -0,0 +1,21 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# @todo: 攻击将造成伤害的XX%转化为自身生命
#
# @author: Alee
# @date 2018-1-9 下午09:39:37
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import GameObj
import ChConfig
def CheckCanHappen(attacker, defender, effect, curSkill):
    return True
def GetValue(attacker, defender, effect):
    return effect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4072.py
New file
@@ -0,0 +1,27 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 暴击有概率触发无技能冷却
#
# @author: Alee
# @date 2019-3-14 下午06:01:20
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import GameWorld
import ChConfig
def CheckCanHappen(attacker, defender, effect, curSkill):
    # 先判断概率
    rate = effect.GetEffectValue(0)
    if rate and not GameWorld.CanHappen(rate):
        return False
    return True
def GetValue(attacker, defender, effect):
    return 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4073.py
New file
@@ -0,0 +1,23 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 当持续buff伤害第X次时触发技能
#        当汲灵对目标造成3次伤害时,可降低目标20%的防御
# @author: Alee
# @date 2019-3-15 下午03:26:32
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
def CheckCanHappen(attacker, defender, effect, curSkill):
    if defender.GetDictByKey(ChConfig.Def_PlayerKey_BuffHurtCnt) != effect.GetEffectValue(0):
        return False
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -351,6 +351,9 @@
             4068:ChConfig.TriggerType_LockHP, # 锁血触发技能 63
             4069:ChConfig.TriggerType_ZhongjiZhansha, # 终极斩杀 64
             4070:ChConfig.TriggerType_DebuffOff,    # 抵消一次debuff 23
             4071:ChConfig.TriggerType_Buff_SuckBloodPer,   # 攻击 百分比吸血
             4072:ChConfig.TriggerType_SuperHitSkipCD, # 暴击无冷却 68
             4073:ChConfig.TriggerType_BuffHurtCnt, # 当持续buff伤害第X次时触发技能 69
             }
    return tdict.get(effectID, -1) 
    #===========================================================================
@@ -375,12 +378,12 @@
             4506:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能  只刷新属性 不触发技能
             4507:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
             4508:ChConfig.TriggerType_Buff_AttackSubLayer,  # BUFF类:攻击减buff层,0消失
             4514:ChConfig.TriggerType_Buff_BeAttackSubLayer,  # BUFF类:被攻击减buff层,0消失
             4509:ChConfig.TriggerType_Buff_SuckBloodPer,   # BUFF类: 百分比吸血, 此处非属性类
             4510:ChConfig.TriggerType_Buff_MustBeHit,   # BUFF类: 无视闪避必中
             4511:ChConfig.TriggerType_AttackAddFinalValue,   #攻击增加输出伤害11
             4512:ChConfig.TriggerType_ReduceHurtHPPer, # 百分比减少攻击计算后伤害 
             4513:ChConfig.TriggerType_AttackAddFinalValue,   #攻击增加输出伤害11
             4514:ChConfig.TriggerType_Buff_BeAttackSubLayer,  # BUFF类:被攻击减buff层,0消失
             4515:ChConfig.TriggerType_AddIceAtkPer,    # BUFF类:攻击附加真实伤害百分比
             4516:ChConfig.TriggerType_ChangeHurtToHP,    # BUFF类:buff中把受到伤害的xx%转化为生命值
             4517:ChConfig.TriggerType_DebuffOff,   # BUFF类: 抵消debuff
@@ -389,6 +392,9 @@
             4520:ChConfig.TriggerType_AddLayer, # BUFF类: 目标BUFF层级增加时 52
             4521:ChConfig.TriggerType_BeLuckyHitSubPer, # 减少受到的会心伤害 65
             4522:ChConfig.TriggerType_DebuffOff,   # BUFF类: 抵消debuff
             4523:ChConfig.TriggerType_SuperHitSkillPer, # 暴击时,增加技能伤害 10
             4524:ChConfig.TriggerType_SuperHitSubLayer, # 暴击减层 67
             4525:ChConfig.TriggerType_SuperHitSkipCD, # 暴击无冷却 68
             
             803:ChConfig.TriggerType_BloodShield,  # 血盾
             806:ChConfig.TriggerType_BloodShield,  # 血盾