hxp
2019-05-05 18a10a74bd18363b8a325044d0cec5e4838531a3
Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
15个文件已修改
5个文件已添加
394 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1314.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_901.py 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_902.py 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1303.py 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_1011.py 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py 2 ●●●●● 补丁 | 查看 | 原始文档 | 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_4529.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4533.py 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4094.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -2080,7 +2080,7 @@
        thumpPer = 0
        thumpPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddThumpHitPer)
        thumpPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddThumpHitPer)
        aSuperHit = aSuperHit*(thumpPer + 10000)/10000
        aSuperHit = aSuperHit*(thumpPer + ChConfig.Def_MaxRateValue)/ChConfig.Def_MaxRateValue
        
    dDamChanceDef = hurtTypeResultDict[ChConfig.Def_HurtType_Parry][2] # 抵御, 大于0代表触发抵御效果
    isZhuxianHit, aZhuxianHurtPer, dZhuxianReducePer = hurtTypeResultDict[ChConfig.Def_HurtType_Zhuxian] # 诛仙一击
@@ -2111,13 +2111,9 @@
    #  atkSkillPer 包含普攻,所以不是用技能增强处理
    atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
    atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
    if hurtType == ChConfig.Def_HurtType_SuperHit:
        atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitAddSkillPer)
    
    if isSuperHit:
        addASuperHit = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitValue)
        aSuperHit = aSuperHit*(ChConfig.Def_MaxRateValue + addASuperHit)*1.0/ChConfig.Def_MaxRateValue
    if isSuperHit and hurtType == ChConfig.Def_HurtType_SuperHit:
        aSuperHit += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitValue)
        # 暴击增加技能伤害
        atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer)
@@ -2507,14 +2503,14 @@
    if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
        #PVP 攻击回血
        atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj)
        # 百分比吸血
        atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
        atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
    # 百分比吸血
    atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
    atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
    if hurtType == ChConfig.Def_HurtType_SuperHit:
        atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSuckBloodPer)
        
        if hurtType == ChConfig.Def_HurtType_SuperHit:
            atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSuckBloodPer)
        atkBackHP += int(hurtValue * atkBackHPPer*1.0 / ChConfig.Def_MaxRateValue)
    atkBackHP += int(hurtValue * atkBackHPPer*1.0 / ChConfig.Def_MaxRateValue)
        
    suckHP += atkBackHP
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -1470,7 +1470,7 @@
        if curPlayerSkill:
            SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
        
        if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
        if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_GiftSkill, ChConfig.Def_SkillFuncType_FbSPSkill]:
            UseSkillOver(curPlayer, target, curSkill, tick)
        else:
            OnHurtTypeTriggerPassiveSkill(curPlayer, target, curSkill, tick)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -62,9 +62,14 @@
(
Def_Buff_Replace_Better,    # 相同typeid取最高,如果新的是低级的则不处理
Def_Buff_Replace_New,       # 相同typeid替换最新,即使是低级的
Def_Buff_Coexist,           # 不同的释放者可共存
Def_Buff_Recharge,        # 若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
) = range(4)
) = range(3)
# CanRepeatTime字段百位数,同一个释放者只能存在同一个技能buff,不同释放者根据情况而定
(
Def_Buff_Coexist,  # 不同的释放者可共存,默认可同时存在
Def_Buff_NoCoexist,  # 不同的释放者亦不可共存,假设战士给别人加攻击buff,A战士加1级攻击BUFF,B战士加2级攻击BUFF,那么只能存在一个高级的2级攻击BUFF
) = range(2)
Def_BuffValue_Count = 3     # buff记录的value个数
@@ -3025,6 +3030,8 @@
#---SetDict 玩家字典KEY,不存于数据库---
# key的长度不能超过29个字节
Def_PlayerKey_BurnOwnerID =  "burnOwnerID"  # 灼烧BUFF特殊处理,部分buff跟随灼烧消失
Def_PlayerKey_SkillInDelBuff = "SkillInDelBuff"   # buff中释放技能添加buff要特殊记录给后续处理,直接删除/添加会导致错乱
Def_PlayerKey_TheFBSkillsCD = "TheFBSkillsCD"    # 减少指定技能组CD XX%
Def_PlayerKey_BurnValue = "BurnValue"    # 灼烧固定伤害
Def_PlayerKey_BurnTimePer = "BurnTimePer"    # 延长灼烧时间百分比
@@ -4464,8 +4471,8 @@
TriggerType_BounceHPPerByAttacker,   # 反弹伤害百分比值, 由攻击方决定 77
TriggerType_NoControl,   # 使关联技能不受控制 78
TriggerType_SuperHitSuckBloodPer,   # 暴击百分比吸血, 79
TriggerType_SuperHitAddSkillPer,    # 暴击增加技能伤害 80
TriggerType_BurnPer,    # 灼烧伤害百分比 81
TriggerType_BurnPer,    # 灼烧伤害百分比 80
TriggerType_BurnDisappear,    # 灼烧消失触发 81
) = range(1, 82)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossDemonKing.py
@@ -88,6 +88,8 @@
    bossID = GetCurFBLineBOSSID(lineID=funcLineID)
    GameWorld.Log("DoEnterFB zoneID=%s,funcLineID=%s,bossID=%s" % (zoneID, funcLineID, bossID), playerID)
    PyGameData.g_fbPickUpItemDict.pop(playerID, 0)
    if not GameWorld.IsCrossServer():
        PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, ChConfig.Def_FBMapID_DemonKing, funcLineID, PlayerFairyDomain.FDEventState_Visiting)
    return
## 副本总逻辑计时器
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -88,6 +88,10 @@
def GetBuffReplaceType(curSkill):
    return curSkill.GetCanRepeatTime()/10
# buff根据释放者不同判断是否共存buff,百位数 Def_Buff_NoCoexist
def GetBuffCoexistType(curSkill):
    return curSkill.GetCanRepeatTime()/10%10
def GetBuffMaxLayer(curSkill):
    layerMaxCnt = 0
    hasEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_LayerCnt)
@@ -148,6 +152,8 @@
    curSkillLV = curSkill.GetSkillLV()
    #替换模式
    buffReplaceType = GetBuffReplaceType(curSkill)
    #共存模式
    buffCoexistType = GetBuffCoexistType(curSkill)
    #时间处理类型
    buffRepeatTimeType = GetBuffRepeatTimeType(curSkill) 
    #用于BUFF满的时候处理刷新逻辑
@@ -176,9 +182,9 @@
        if buffSkill.GetSkillTypeID() != curSkillTypeID:
            continue
        
        if buffReplaceType == ChConfig.Def_Buff_Coexist and buffOwner:
        if buffCoexistType == ChConfig.Def_Buff_Coexist and buffOwner:
            #可同时存在的buff,判断释放者是否不一样
            if buffSkill.GetOwnerID() != buffOwner.GetID() or buffSkill.GetOwnerType() != buffOwner.GetGameObjType():
            if curBuff.GetOwnerID() != buffOwner.GetID() or curBuff.GetOwnerType() != buffOwner.GetGameObjType():
                continue
        
        #--------------技能类型ID相同
@@ -627,6 +633,9 @@
    
    index = 0
    isPlayerTJG = (curObj.GetGameObjType() == IPY_GameWorld.gotPlayer and PlayerTJG.GetIsTJG(curObj))
    skillIDListInDelBuff = []   # buff消失中需要处理添加buff,外层处理避免错乱
    while index < buffState.GetBuffCount():
        curBuff = buffState.GetBuff( index )
        if not curBuff:
@@ -675,12 +684,29 @@
        buffState.DeleteBuffByIndex( index )
        SkillShell.ClearBuffEffectBySkillID(curObj, curSkill.GetSkillID(), ownerID, ownerType)
        
        addSkillID = curObj.GetDictByKey(ChConfig.Def_PlayerKey_SkillInDelBuff)
        if addSkillID and addSkillID not in skillIDListInDelBuff:
            skillIDListInDelBuff.append(addSkillID)
    OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick)
    #执行DoBuffDisApper中,标记的玩家处理要求
    __DoBuffDisApperByKey( curObj , tick )
        
    return isRefresh, delResult
# DoBuffDisApper不能做Buff添加和删除逻辑!!!!!不然指针会错乱, 故在外层处理
def OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick):
    posX, posY = curObj.GetPosX(), curObj.GetPosY()
    for skillID in skillIDListInDelBuff:
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
        if not skillData:
            continue
        SkillShell.Trigger_UseSkill(curObj, curObj, skillData, tick, posX, posY)
    return
#---------------------------------------------------------------------
## 执行buff消失触发逻辑
#  @param curObj 当前OBj
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -5,6 +5,7 @@
#
# @todo: 灼烧(流派专用,额外公式), 持续过程中可能会被改变伤害或者持续时长,无法用次数控制,无层级概念
#        若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
#        不同释放者可共存多个灼烧
# @author: Alee
# @date 2019-4-28 下午04:12:17
# @version 1.0
@@ -20,6 +21,7 @@
import AttackCommon
import PlayerControl
import PassiveBuffEffMng
import GameObj
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -58,3 +60,16 @@
    
    return [hurtValue]
def OnBuffDisappear(defender, curSkill, curBuff, curEffect, tick):
    #已经死亡不触发
    if GameObj.GetHP(defender) <= 0:
        return
    # 在防御者身上同时取消同一个释放者的相关buff
    defender.SetDict(ChConfig.Def_PlayerKey_BurnOwnerID, curBuff.GetOwnerID())
    PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defender, None, None, ChConfig.TriggerType_BurnDisappear)
    defender.SetDict(ChConfig.Def_PlayerKey_BurnOwnerID, 0)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1314.py
@@ -75,7 +75,7 @@
            
    BaseAttack.SwordStormAttack(tagObj, srcPosX, srcPosY, curSkill, skillPer, 
                                skillEnhance, skillMatrix, tick)
    PassiveBuffEffMng.OnPassiveBuffTrigger(tagObj, None, curSkill, ChConfig.TriggerType_Buff_AttackSubLayer, tick)
    if GameObj.GetHP(tagObj) > 0:
        if tagObj.GetDictByKey(ChConfig.Def_PlayerKey_1314HurtCount):
            # 需要时间配合,不然会导致伤害还没计算完毕 buff提前消失了
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_901.py
New file
@@ -0,0 +1,62 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 持续减益根据值加成,百分比(非线性)
#
# @author: Alee
# @date 2019-4-29 下午02:32:15
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
#导入
import PlayerControl
import NPCCommon
import IPY_GameWorld
import GameWorld
import ChConfig
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
#---------------------------------------------------------------------
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
    attrType = curEffect.GetEffectValue(0)
    value = curEffect.GetEffectValue(1)*curBuff.GetValue()
    calcDict[attrType] = calcDict.get(attrType, 0) - value
    return
## 返回buff类型,线性与否
#  @param
#  @return None
#  @remarks 函数详细说明.
def GetCalcType():
    return ChConfig.TYPE_NoLinear
def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
    # 触发加成 属性刷新
    value = curBuff.GetValue()
    if value >= curEffect.GetEffectValue(2):
        return
    curBuff.SetValue(value+1)
    #刷新属性
    curObjType = defender.GetGameObjType()
    #玩家
    if curObjType == IPY_GameWorld.gotPlayer:
        #刷新玩家属性
        playerControl = PlayerControl.PlayerControl(defender)
        #playerControl.CalcPassiveBuffAttr()
        playerControl.RefreshPlayerAttrByBuff()
    #NPC
    elif curObjType == IPY_GameWorld.gotNPC:
        npcControl = NPCCommon.NPCControl(defender)
        npcControl.RefreshNPCAttrState()
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_902.py
New file
@@ -0,0 +1,62 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: 持续减益根据值加成,减法(线性)
#
# @author: Alee
# @date 2019-4-29 下午02:32:15
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
#导入
import PlayerControl
import NPCCommon
import IPY_GameWorld
import GameWorld
import ChConfig
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
#---------------------------------------------------------------------
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
    attrType = curEffect.GetEffectValue(0)
    value = curEffect.GetEffectValue(1)*curBuff.GetValue()
    calcDict[attrType] = calcDict.get(attrType, 0) - value
    return
## 返回buff类型,线性与否
#  @param
#  @return None
#  @remarks 函数详细说明.
def GetCalcType():
    return ChConfig.TYPE_Linear
def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
    # 触发加成 属性刷新
    value = curBuff.GetValue()
    if value >= curEffect.GetEffectValue(2):
        return
    curBuff.SetValue(value+1)
    #刷新属性
    curObjType = defender.GetGameObjType()
    #玩家
    if curObjType == IPY_GameWorld.gotPlayer:
        #刷新玩家属性
        playerControl = PlayerControl.PlayerControl(defender)
        #playerControl.CalcPassiveBuffAttr()
        playerControl.RefreshPlayerAttrByBuff()
    #NPC
    elif curObjType == IPY_GameWorld.gotNPC:
        npcControl = NPCCommon.NPCControl(defender)
        npcControl.RefreshNPCAttrState()
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1303.py
New file
@@ -0,0 +1,36 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: buff自然消失后触发指定技能(放第一个效果ID)
#
# @author: Alee
# @date 2019-4-29 下午03:59:40
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import GameWorld
import ChConfig
import GameObj
import SkillShell
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
    return [GameWorld.GetGameWorld().GetTick()]
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
    if tick - curBuff.GetValue() < curSkill.GetLastTime():
        # 非自然消失
        return
    if curEffect.GetEffectValue(1):
        if not GameObj.GetPyPlayerState(curObj, curEffect.GetEffectValue(1)):
            return
    curObj.SetDict(ChConfig.Def_PlayerKey_SkillInDelBuff, curEffect.GetEffectValue(0))
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py
@@ -27,6 +27,6 @@
    if not curPlayerSkill:
        return
    curPlayerSkill.SetRemainTime(0)
    curSkill.Sync_Skill()
    curPlayerSkill.Sync_Skill()
    #处理技能触发和攻击成功逻辑
    return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_1011.py
New file
@@ -0,0 +1,48 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# @todo: buff攻击减层 1011 添加默认攻击减层
#
# @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):
    # 关联技能
    if not passiveEffect.GetEffectValue(2):
        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 False
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py
@@ -19,8 +19,6 @@
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    if not defender:
        return False
    if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
        return False
    if passiveEffect.GetEffectValue(1):
        # 第一目标
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
@@ -65,6 +65,6 @@
            triggerSkill = GameWorld.GetGameData().GetSkillBySkillID(triggerSkillID)
            if triggerSkill:
                SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
    return True
    return False
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4529.py
@@ -20,11 +20,11 @@
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    useSkill = skillkwargs.get("useSkill", None)
    if not useSkill:
        return
        return False
    
    
    if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_NormalAttack:
        return
        return False
        
    if passiveEffect.GetEffectValue(1):
        # 只针对第一目标
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4533.py
New file
@@ -0,0 +1,44 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: buff中灼烧buff消失触发本buff消失
#
# @author: Alee
# @date 2019-4-29 下午03:09:42
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import GameWorld
import SkillCommon
import ChConfig
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    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.GetOwnerID() != attacker.GetDictByKey(ChConfig.Def_PlayerKey_BurnOwnerID):
        return False
    buff.SetRemainTime(1)   # 此处必须设置为1 无限时长的buff亦可消失
    return True
def GetValue(attacker, defender, passiveEffect):
    return 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py
@@ -25,9 +25,10 @@
        SkillShell.UsePassiveTriggerSkill(attacker, useSkill, defender, GameWorld.GetGameWorld().GetTick(), True)
        
        return False
    if not GameObj.GetPyPlayerState(attacker, effect.GetEffectValue(1)):
        #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
        return False
    if effect.GetEffectValue(2):
        if not GameObj.GetPyPlayerState(attacker, effect.GetEffectValue(2)):
            #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
            return False
    return GameWorld.CanHappen(effect.GetEffectValue(0))
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4094.py
@@ -15,9 +15,10 @@
import GameObj
def CheckCanHappen(attacker, defender, effect, curSkill):
    if not GameObj.GetPyPlayerState(defender, effect.GetEffectValue(1)):
        #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
        return False
    if effect.GetEffectValue(1):
        if not GameObj.GetPyPlayerState(defender, effect.GetEffectValue(1)):
            #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
            return False
    return True
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -289,7 +289,7 @@
             4004:ChConfig.TriggerType_AttackOver,  # 攻击(对敌技能)后被动技能被触发 4
             4005:ChConfig.TriggerType_AttackAddSkillPer,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
             4006:ChConfig.TriggerType_SuperHit, # 暴击时 触发技能6,
             4007:ChConfig.TriggerType_SuperHitValue, # 暴击时 增加暴击值7,
             4007:ChConfig.TriggerType_SuperHitValue, # 暴击时 增加暴击值百分比7,
             4008:ChConfig.TriggerType_AttackAddSkillPer,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
             4009:ChConfig.TriggerType_HurtObjAddBuff, # 击中玩家(群攻多次触发)8,
             4010:ChConfig.TriggerType_ReduceCD, # 减少CD9, #CD
@@ -375,8 +375,7 @@
             4093:ChConfig.TriggerType_NoControl,   # 使关联技能不受控制 78
             4094:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
             4095:ChConfig.TriggerType_SuperHitSuckBloodPer, # BUFF类: 暴击百分比吸血, 79
             4096:ChConfig.TriggerType_SuperHitAddSkillPer, # 暴击增加技能伤害
             4097:ChConfig.TriggerType_BurnPer, # 灼烧伤害百分比 81
             4097:ChConfig.TriggerType_BurnPer, # 灼烧伤害百分比 80
             }
    return tdict.get(effectID, -1) 
    #===========================================================================
@@ -393,6 +392,7 @@
# 获得【BUFF】被动触发的方式 与GetTriggerTypeByEffectID互补
def GetBuffTriggerTypeByEffectID(effectID):
    tdict = {
             1011:ChConfig.TriggerType_Buff_AttackSubLayer,  # BUFF类:攻击减buff层,0消失
             4500:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
             4501:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类:提高主动技能的技能伤害
             4502:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能
@@ -425,6 +425,7 @@
             4530:ChConfig.TriggerType_Buff_AttackSubLayer,  # BUFF类:攻击减buff层,0消失
             4531:ChConfig.TriggerType_BounceHPPerByAttacker,  # 反弹伤害百分比值, 由攻击方决定 77
             4532:ChConfig.TriggerType_SuperHit,    # buff中对第一目标暴击触发技能
             4533:ChConfig.TriggerType_BurnDisappear, # 灼烧消失触发 81
             
             803:ChConfig.TriggerType_BloodShield,  # 血盾
             806:ChConfig.TriggerType_BloodShield,  # 血盾
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -2679,6 +2679,11 @@
        callFunc = GameWorld.GetExecFunc(GameBuffs, "Buff_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
        if callFunc:
            callFunc(objDetel, curEffect, allAttrList[index], curBuff)
    # 持续性属性变化的buff,目前只有持续减益
    callFunc = GameWorld.GetExecFunc(GameBuffs, "BuffProcess_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
    if callFunc:
        callFunc(objDetel, curEffect, allAttrList[index], curBuff)
    return
## 获得buff效果的计算模块文件后缀
@@ -2926,15 +2931,15 @@
def CalcBuffers_Effect(curPlayer, allAttrList, calcEffectIDList=[]):
    
    for buffType in range(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):
        #这些类型不影响玩家计算属性
        if buffType in [IPY_GameWorld.bfProcessBuff, #IPY_GameWorld.bfProcessDeBuff,
                        IPY_GameWorld.bfMapBuff,
                        IPY_GameWorld.bfEquipBuff]:
            continue
        buffTuple = SkillCommon.GetBuffManagerByBuffType(curPlayer, buffType)
        #通过类型获取目标的buff管理器为空,则跳出
        if buffTuple == ():
            continue
        #这些类型不影响玩家计算属性
        if buffType in [IPY_GameWorld.bfProcessBuff,
                        IPY_GameWorld.bfProcessDeBuff, IPY_GameWorld.bfMapBuff,
                        IPY_GameWorld.bfEquipBuff]:
            continue
        
        buffManager = buffTuple[0]