hch
2019-05-09 bc915a9b717eccef3c8d825f9af79a7596394ac7
6603 【后端】【2.0】增加新版的sp和被动技能
16个文件已修改
1个文件已删除
9个文件已添加
687 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4534.py 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4535.py 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4030.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4098.py 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4099.py 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4100.py 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4101.py 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tool/数据库/ChangeAccount/ChangeAccount.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -1566,6 +1566,8 @@
    
# Elf灵为替身攻击,要取玩家的属性,NPC为主人则还是取灵
def ElfChangeAttacker(attacker):
    if not attacker:
        return attacker
    if attacker.GetGameObjType() != IPY_GameWorld.gotNPC:
        # --玩家
        return attacker
@@ -2095,6 +2097,7 @@
    #  atkSkillPer åŒ…含普攻,所以不是用技能增强处理
    atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
    atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
    atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_BeAttackAddSkillPer)
    
    if isSuperHit and hurtType == ChConfig.Def_HurtType_SuperHit:
        aSuperHit += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitValue)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -583,6 +583,7 @@
Def_Skill_Effect_PowerPart = 1206  # å……能能量分段,触发即算一次充能,拉进度条蓄力
Def_Skill_Effect_ProcessAttack = 1314  # é—´é𔿀§æ”»å‡»ï¼ŒA值为攻击次数,B值为是否广播客户端
Def_Skill_Effect_BuffTick = 9999    #BUFF的时间处理间隔
Def_Skill_Effect_BurnToAddHP = 1091    #buff中灼烧伤害转化吸血给 æ”¾ç¼çƒ§è€…
Def_Skill_Effect_ProBloodPer = 4505    #buff中中毒伤害百分比增加(给受害者的buff)
#写死的技能效果ID------------NPC专用
@@ -629,7 +630,8 @@
#---------需要记录在buff管理器中的效果ID,主要用于查找用---------------------------
Def_BuffManager_EffectsID = [Def_Skill_Effect_AbsorbShield, Def_Skill_Effect_AbsorbShieldXMZJ, Def_Skill_Effect_StoreBlood]
Def_BuffManager_EffectsID = [Def_Skill_Effect_AbsorbShield, Def_Skill_Effect_AbsorbShieldXMZJ,
                             Def_Skill_Effect_StoreBlood, Def_Skill_Effect_BurnToAddHP, Def_Skill_Effect_BuffState]
#-------------------------------------------------------------------------
#基础属性效果ID
@@ -645,9 +647,6 @@
    # éžçº¿æ€§å¢žåŠ 
    #1015:("NoLinePlus", [TYPE_Calc_AttrATKMin, TYPE_Calc_AttrATKMax]),  # æé«˜æ”»å‡»åŠ›ç™¾åˆ†æ¯”                             
    
    # éžçº¿æ€§å‡å°‘
    #1098:("NoLineReduce", [TYPE_Calc_AttrATKMax, TYPE_Calc_AttrATKMin,
    #                       TYPE_Calc_AttrMATKMax, TYPE_Calc_AttrMATKMin]),     # é™ä½Žæ”»å‡»ç™¾åˆ†æ¯”
    # æ ¹æ®ç­‰çº§æ®µçº¿æ€§å¢žåŠ ï¼Œæ•ˆæžœB值为等级段配置
    500:("LinePlusByLV", [TYPE_Calc_HPCureEnhance]),   # æé«˜è¡€ç“¶æ¢å¤æ•ˆæžœ
@@ -3018,13 +3017,14 @@
    Def_PlayerState_LimitSkill, # ç¦é­”状态 10
    Def_PlayerState_LimitAddHP, # ç¦ç–—状态 11
    Def_PlayerState_Blind, # è‡´ç›²çŠ¶æ€ 12
    Def_PlayerState_LoseBlood1, # ç¼çƒ§ 13
    Def_PlayerState_Burn, # ç¼çƒ§ 13
    Def_PlayerState_LoseBlood2, # èŒä¸š2持续掉血状态 14
    Def_PlayerState_LoseBlood3, # èŒä¸š3持续掉血状态 15
    Def_PlayerState_MissSneerAtk, # å¯¹å˜²è®½æ”»å‡»å…ç–«è¡¨çŽ°ä¸ºmiss 16
    Def_PlayerState_BeInAir, # æµ®ç©ºï¼ˆåšæ³•同眩晕类) 17
    Def_PlayerState_zqdlj, # ç´«æ°”东来金灵根技能状态 18
) = range(19)
    Def_PlayerState_Ice, # å¯’冰状态(同减速) 19
) = range(20)
#---SetDict å«NPC字典KEY,不存于数据库---
Def_GameObjKey_InheritOwner = "InheritOwner"  # ç±»æš´é£Žé›ªè®¡ç®—时用主人属性
@@ -4421,7 +4421,7 @@
TriggerType_AttackKill, # Õ¶É±
TriggerType_WillDead,   # è¿›å…¥æ¿’死状态时触发技能 25
TriggerType_BuffBoom,   # ä¸­æ¯’后爆炸
TriggerType_Success_Buff_SkillPer,   # æé«˜4501成功概率
TriggerType_BeAttackAddSkillPer,   # è¢«æ”»å‡»æé«˜æŠ€èƒ½ä¼¤å®³
TriggerType_HurtObjAddBuff,   # åœ¨ç®—伤害时群攻1对1加buff,可用于一个伤害多次触发
TriggerType_BeBoomSeed, # è¢«åŠ¨å¼•çˆ†è§†é‡Žå†…å¯¹è±¡çš„buff种子 29
TriggerType_AttackCnt,  # å¢žåŠ æŠ€èƒ½æ”»å‡»æ•°é‡ï¼ˆæ•ˆæžœID1200) 30
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -86,14 +86,21 @@
#  @param pyState ×´Ì¬
#  @return æ˜¯å¦è¯¥çŠ¶æ€
#  @remarks è¯¥çŠ¶æ€ä¸ºbuff对应的自定义状态效果
#  ç›®å‰å½“目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态
#  æ•…该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态)
#===============================================================================
# æ­¤é—®é¢˜åœ¨4012 æ¶ˆå¤±æ—¶å¤„理
# #  ç›®å‰å½“目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态
# #  æ•…该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态)
#===============================================================================
def GetPyPlayerState(gameObj, pyState):
    curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
    
    state = curState & pow(2, pyState) 
    return state
def ClearPyPlayerState(gameObj):
    gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, 0)
    return
def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer)
def SetPetDamPer(gameObj, value): 
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -95,6 +95,7 @@
import PlayerDogz
import ChPlayer
import GMShell
import GameObj
import random
import types
@@ -5162,6 +5163,7 @@
        DoPlayerDead(curPlayer)
        
        PlayerTJG.PlayerTJGReborn(curPlayer, tick)
        GameObj.ClearPyPlayerState(curPlayer)
        return
    
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -25,6 +25,7 @@
import OperControlManager
import GameObj
import CrossPlayerData
import AttackCommon
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -51,6 +52,8 @@
    and SkillCommon.GetSkillBattleType(curSkill) == ChConfig.Def_BattleRelationType_CommNoBoss:
        # é‡Šæ”¾åŽ å¯¹æŒ‡å®šBOSS无效的技能
        return True
    buffOwner = AttackCommon.ElfChangeAttacker(buffOwner)  # Elf灵为替身攻击,要取玩家的属性
    
    result = AddBuffNoRefreshState(curObj, buffType, curSkill, tick, addBuffValueList, buffOwner, addForce)
    
@@ -378,7 +381,7 @@
        if triggerType == -1:
            continue
        passiveEff = PassiveBuffEffMng.GetPassiveEffManager().InitObjPassiveEff(curObj)
        passiveEff.AddBuffInfoByEffect(curEffect, skillID)
        passiveEff.AddBuffInfoByEffect(curEffect, skillID, onwerID, onwerType)
        
    #添加BUFF后的特殊处理
@@ -568,6 +571,8 @@
        return curBuff, i
    
    return None, 0
#---------------------------------------------------------------------
## åˆ·æ–°BUFF的时间
#  @param curBuff å½“前BUFF
@@ -685,8 +690,10 @@
        SkillShell.ClearBuffEffectBySkillID(curObj, curSkill.GetSkillID(), ownerID, ownerType)
        
        addSkillID = curObj.GetDictByKey(ChConfig.Def_PlayerKey_SkillInDelBuff) 
        if addSkillID and addSkillID not in skillIDListInDelBuff:
            skillIDListInDelBuff.append(addSkillID)
        if addSkillID:
            skillInfo = [addSkillID, ownerID, ownerType]
            if skillInfo not in skillIDListInDelBuff:
                skillIDListInDelBuff.append(skillInfo)
        
    OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick)
    
@@ -699,12 +706,15 @@
# DoBuffDisApper不能做Buff添加和删除逻辑!!!!!不然指针会错乱, æ•…在外层处理
def OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick):
    posX, posY = curObj.GetPosX(), curObj.GetPosY()
    for skillID in skillIDListInDelBuff:
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
    for skillInfo in skillIDListInDelBuff:
        attacker = GameWorld.GetObj(skillInfo[1], skillInfo[2])
        if not attacker:
            attacker = curObj
        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillInfo[0])
        if not skillData:
            continue
        
        SkillShell.Trigger_UseSkill(curObj, curObj, skillData, tick, posX, posY)
        SkillShell.Trigger_UseSkill(attacker, curObj, skillData, tick, posX, posY)
    return
#---------------------------------------------------------------------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -22,6 +22,7 @@
import PlayerControl
import PassiveBuffEffMng
import GameObj
import BuffSkill
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -44,6 +45,14 @@
    
    SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed)
    
    if buffOwner and GameObj.GetHP(buffOwner) > 0:
        # æ­¤å¤„暂无法用被动效果实现
        buffManager = defender.GetProcessDeBuffState()
        burnToHPEffect, plusValue, skillID = BuffSkill.FindBuffEffectByOwnertID(buffManager, ChConfig.Def_Skill_Effect_BurnToAddHP,
                                                                           buffOwner.GetID(), buffOwner.GetGameObjType())
        if burnToHPEffect:
            addHP = singleDecHP*burnToHPEffect.GetEffectValue(0)/ChConfig.Def_MaxRateValue
            SkillCommon.SkillAddHP(buffOwner, curBuffSkillID, buffOwner, addHP, tick, hurtType=ChConfig.Def_HurtTYpe_Recovery)
    return
# ç¼çƒ§çš„特征为延长buff时间,重算伤害
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py
New file
@@ -0,0 +1,46 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: ä¸¤ä¸ªäººä¹‹é—´æœ‰ä¸€æ¡ç‰¹æ•ˆè¿žæŽ¥ï¼Œé…åˆ9999用于判断距离
#
# @author: Alee
# @date 2019-5-6 ä¸‹åˆ04:30:33
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
#导入
import SkillCommon
import GameWorld
import ChConfig
def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
    buffOwner = SkillCommon.GetBuffOwner(curBuff)
    if not buffOwner:
        curBuff.SetRemainTime(0)
        return
    if GameWorld.GetDistEx(defender.GetPosX(), defender.GetPosY(), buffOwner.GetPosX(), buffOwner.GetPosY()) > curEffect.GetEffectValue(0):
        curBuff.SetRemainTime(0)
        return
    return
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
    attrType = curEffect.GetEffectValue(1)
    value = curEffect.GetEffectValue(2)
    calcDict[attrType] = calcDict.get(attrType, 0) - value
    return
## è¿”回buff类型,线性与否
#  @param
#  @return None
#  @remarks å‡½æ•°è¯¦ç»†è¯´æ˜Ž.
def GetCalcType():
    return ChConfig.TYPE_NoLinear
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
@@ -47,14 +47,42 @@
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
    stateType = curEffect.GetEffectValue(0)
    GameObj.SetPyPlayerState(curObj, stateType, 0)
    if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
        GameObj.SetPyPlayerState(curObj, stateType, 0)
        GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
    return
    
    
def OnBuffDisappearEx(curObj, curSkill, curBuff, curEffect, tick):
    stateType = curEffect.GetEffectValue(0)
    GameObj.SetPyPlayerState(curObj, stateType, 0)
    if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
        GameObj.SetPyPlayerState(curObj, stateType, 0)
        GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
    return
    
# å¤§äºŽç­‰äºŽ2个状态 åˆ™ä¸æ¸…理状态
def CanDelStateEffect(curObj, effectID, stateType):
    cnt = 0
    for buffType in xrange(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):
        buffTuple = SkillCommon.GetBuffManagerByBuffType(curObj, buffType)
        #通过类型获取目标的buff管理器为空,则跳出
        if buffTuple == ():
            continue
        buffManager = buffTuple[0]
        for i in range(buffManager.GetEffectCount()):
            effect = buffManager.GetEffect(i)
            if not effect:
                continue
            if effect.GetEffectID() != effectID:
                continue
            if effect.GetEffectValue(0) == stateType:
                cnt += 1
            if cnt >= 2:
                return False
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py
@@ -31,12 +31,15 @@
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
    skillID = curEffect.GetEffectValue(2)
    if not skillID:
        return
    boomValue = curBuff.GetValue1()
    # å‰©ä½™æŠ¤ç›¾å€¼ç”¨äºŽçˆ†ç‚¸
    if boomValue == 0:
        return
    
    skillData = GameWorld.GetGameData().GetSkillBySkillID(curEffect.GetEffectValue(2))
    skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
    if not skillData:
        return
    # å­˜å‚¨èµ·æ¥ç”¨äºŽä¼¤å®³
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py
New file
@@ -0,0 +1,55 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: å‡é€Ÿä¸“用,受属性影响如符文
#
# @author: Alee
# @date 2019-5-8 ä¸‹åˆ02:55:40
# @version 1.0
#
# @note:
#
#------------------------------------------------------------------------------
#导入
import ChConfig
import PlayerControl
import IPY_GameWorld
#---------------------------------------------------------------------
## buff非线性减少属性
#  @param defender Buff承受者
#  @param curEffect æŠ€èƒ½æ•ˆæžœ
#  @param calcDict æŠ€èƒ½æ•ˆæžœç´¯åŠ æ€»è¡¨
#  @return None
def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
    effect = curEffect.GetEffectValue(0)
    if curBuff and curBuff.GetLayer():
        # å±‚级叠加效果
        effect = effect*curBuff.GetLayer()
    effect += curBuff.GetValue()
    calcDict[ChConfig.TYPE_Calc_AttrSpeed] = calcDict.get(ChConfig.TYPE_Calc_AttrSpeed, 0) - effect
    return
## è¿”回buff类型,线性与否
#  @param
#  @return None
#  @remarks å‡½æ•°è¯¦ç»†è¯´æ˜Ž.
def GetCalcType():
    return ChConfig.TYPE_NoLinear
##计算增强值
# @param attacker æ”»å‡»è€…实例
# @param curSkill æŠ€èƒ½å®žä¾‹
# @param curEffect å½“前技能效果1
# @return æ€»å€¼
def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
    return [PlayerControl.GetSubSpeedPer(attacker)]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -1747,6 +1747,35 @@
    
    return returnInfo
def FindBuffByOwner(gameObj, skillTypeID, ownerID, ownerType):
    findSkill = GameWorld.GetGameData().GetSkillBySkillID(skillTypeID)
    buffType = GetBuffType(findSkill)
    buffTuple = GetBuffManagerByBuffType(gameObj, buffType)
    if buffTuple == ():
        return None
    buffManager = buffTuple[0]
    for i in range(0, buffManager.GetBuffCount()):
        curBuff = buffManager.GetBuff(i)
        if not curBuff:
            continue
        #判断是否拥有同一类型的技能
        if curBuff.GetSkill().GetSkillTypeID() != skillTypeID:
            continue
        #判断是否拥有同一类型的技能
        if curBuff.GetOwnerID() != ownerID:
            continue
        if curBuff.GetOwnerType() != ownerType:
            continue
        return curBuff
    return None
#---------------------------------------------------------------------
## æ‰§è¡Œæ¸…空命令 å‚数:玩家, ä¿ç•™æŠ€èƒ½ç±»åž‹åˆ—表
#  @param curPlayer çީ家
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py
@@ -35,43 +35,24 @@
        #清除失败也触发CD
        return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
    
    skillType = curSkill.GetEffect(0).GetEffectValue(0)
    if skillType == 0:
        # æ— é…ç½®ä»£è¡¨æ¸…除负面buff任意1个
        skillTypeList = [
                           ChConfig.Def_SkillType_LstDepBuff   ,  #持续减益BUFF  4
                           ChConfig.Def_SkillType_DepBuff      ,  #减益BUFF 6
                           ChConfig.Def_SkillType_Action       ,  #影响行为BUFF 14
                         ]
    else:
        skillTypeList = [skillType]
    delSuccess = False
    buffSkill = None
    buffType = 0
    
    for skillType in skillTypeList:
        buffType = ChConfig.Def_SkillBuffList.get(skillType)
        buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType)
        if buffTuple == ():
            continue
        buffManager = buffTuple[0]
        if buffManager.GetBuffCount() == 0:
            continue
        curBuff = buffManager.GetBuff(0)
        ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
        #删除Buff
        BuffSkill.DoBuffDisApperEx(defender, curBuff, tick)
        buffSkill = curBuff.GetSkill()
        if not buffSkill:
            continue
        skillID = buffSkill.GetSkillID()
        buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
        SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
        delSuccess = True
        break
    # ä¼˜å…ˆæ¸…理指定技能
    theSkillID = curSkill.GetEffect(0).GetEffectValue(1)
    if theSkillID:
        if curSkill.GetEffect(0).GetEffectValue(1):
            findBuff = SkillCommon.FindBuffByID(defender, theSkillID)
        else:
            findBuff = SkillCommon.FindBuffByOwner(defender, theSkillID, attacker.GetID(), attacker.GetGameObjType())
        if findBuff:
            delSuccess = True
            buffSkill = findBuff.GetSkill()
            buffType = ChConfig.Def_SkillBuffList.get(buffSkill.GetSkillType())
    else:
        # æŸç±»æŠ€èƒ½ä¸­çš„一个
        delSuccess, buffSkill, buffType = ClearBySkillType(curSkill, defender, tick)
    
    if not delSuccess:
        # æ²¡æœ‰å¯æ¸…除BUFF也进入CD
@@ -103,4 +84,44 @@
        
    return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
def ClearBySkillType(curSkill, defender, tick):
    skillType = curSkill.GetEffect(0).GetEffectValue(0)
    if skillType == 0:
        # æ— é…ç½®ä»£è¡¨æ¸…除负面buff任意1个
        skillTypeList = [
                           ChConfig.Def_SkillType_LstDepBuff   ,  #持续减益BUFF  4
                           ChConfig.Def_SkillType_DepBuff      ,  #减益BUFF 6
                           ChConfig.Def_SkillType_Action       ,  #影响行为BUFF 14
                         ]
    else:
        skillTypeList = [skillType]
    delSuccess = False
    buffSkill = None
    buffType = 0
    for skillType in skillTypeList:
        buffType = ChConfig.Def_SkillBuffList.get(skillType)
        buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType)
        if buffTuple == ():
            continue
        buffManager = buffTuple[0]
        if buffManager.GetBuffCount() == 0:
            continue
        curBuff = buffManager.GetBuff(0)
        ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
        #删除Buff
        BuffSkill.DoBuffDisApperEx(defender, curBuff, tick)
        buffSkill = curBuff.GetSkill()
        if not buffSkill:
            continue
        skillID = buffSkill.GetSkillID()
        buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
        SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
        delSuccess = True
        break
    return delSuccess, buffSkill, buffType
    
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py
@@ -1,33 +1,32 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
# @todo: buff中攻击目标处于XX状态提高增加伤害
##@package
#
# @todo: buff中攻击处于xx状态目标触发技能
#
# @author: Alee
# @date 2018-1-30 ä¸‹åˆ05:11:45
# @date 2019-5-7 ä¸‹åˆ09:17:25
# @version 1.0
#
# @note: 
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import GameObj
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    if not defender:
        return False
    if not passiveEffect.GetEffectValue(1):
        # ä¸é…ç½®çŠ¶æ€çš„æƒ…å†µ
        return True
    if GameObj.GetPyPlayerState(defender, passiveEffect.GetEffectValue(1)):
        #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
        return True
    return False
    if passiveEffect.GetEffectValue(0):
        if not GameObj.GetPyPlayerState(defender, passiveEffect.GetEffectValue(0)):
            #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
            return False
    return True
def GetValue(attacker, defender, passiveEffect):
    return passiveEffect.GetEffectValue(0)
def GetSkillData(passiveEffect):
    skillID = passiveEffect.GetEffectValue(1)
    return GameWorld.GetGameData().GetSkillBySkillID(skillID)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py
@@ -17,7 +17,7 @@
import BuffSkill
import IPY_GameWorld
def CheckCanHappen(attacker, defender, effect, tagSkill):
def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
    debuffState = effect.GetEffectValue(1)
    if debuffState and debuffState != SkillCommon.GetBuffStateType(tagSkill):
        return False
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py
@@ -17,7 +17,7 @@
import BuffSkill
import IPY_GameWorld
def CheckCanHappen(attacker, defender, effect, tagSkill):
def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
    debuffState = effect.GetEffectValue(1)
    if debuffState and debuffState != SkillCommon.GetBuffStateType(tagSkill):
        return False
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4534.py
New file
@@ -0,0 +1,26 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: buff中抵消指定技能buff
#
# @author: Alee
# @date 2019-5-7 ä¸‹åˆ09:27:34
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import SkillCommon
import BuffSkill
import IPY_GameWorld
def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
    if  effect.GetEffectValue(0) != tagSkill.GetSkillTypeID():
        return False
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4535.py
New file
@@ -0,0 +1,35 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: buff中被攻击提高技能伤害
#
# @author: Alee
# @date 2019-5-7 ä¸‹åˆ09:32:34
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import GameObj
import SkillCommon
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
    if passiveEffect.GetEffectValue(1):
        if not defender:
            return False
        if skillkwargs.get("ownerID", 0) != defender.GetID():
            return False
        if skillkwargs.get("ownerType", 0) != defender.GetGameObjType():
            return False
    return True
def GetValue(attacker, defender, passiveEffect):
    return passiveEffect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4030.py
File was deleted
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py
New file
@@ -0,0 +1,36 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: ç›®æ ‡æŒ‡å®šskillTypeID的buff下,按层级算提高技能伤害, å±žäºŽè‡ªå·±çš„buff才有效
#
# @author: Alee
# @date 2019-5-6 ä¸‹åˆ05:10:52
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import SkillCommon
import GameObj
# ç›®æ ‡æŸä¸ªçŠ¶æ€æ—¶è§¦å‘
def CheckCanHappen(attacker, defender, effect, curSkill):
    if not defender:
        return False
    if not GameObj.GetPyPlayerState(defender, effect.GetEffectValue(1)):
        #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
        return False
    return True
def GetValue(attacker, defender, effect):
    buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(2), attacker.GetID(), attacker.GetGameObjType())
    if not buff:
        return 0
    return effect.GetEffectValue(0)*buff.GetLayer()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4098.py
New file
@@ -0,0 +1,37 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: ç›®æ ‡æŒ‡å®šbuff下,大于等于层级提高技能伤害
#
# @author: Alee
# @date 2019-5-6 ä¸‹åˆ05:10:52
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import SkillCommon
import GameObj
# ç›®æ ‡æŸä¸ªçŠ¶æ€æ—¶è§¦å‘
def CheckCanHappen(attacker, defender, effect, curSkill):
    if not defender:
        return False
    buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(1), attacker.GetID(), attacker.GetGameObjType())
    if not buff:
        return False
    if buff.GetLayer() < effect.GetEffectValue(2):
        return False
    return True
def GetValue(attacker, defender, effect):
    return effect.GetEffectValue(0)
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4099.py
New file
@@ -0,0 +1,45 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: è¢«æŒ‡å®šbuff下的玩家攻击进入濒死状态触发技能
#
# @author: Alee
# @date 2019-5-7 ä¸‹åˆ05:56:05
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import GameObj
import SkillCommon
import IPY_GameWorld
def CheckCanHappen(attacker, defender, effect, curSkill):
    if not defender:
        return False
    if attacker.GetPlayerAction() == IPY_GameWorld.paDie:
        # å½“前已经被处理为死亡,那么就不触发
        return False
    zhanshaState = attacker.GetDictByKey(ChConfig.Def_PlayerKey_Zhansha)
    if zhanshaState:
        # æŒ‰ä½åˆ¤æ–­ï¼Œ1为斩杀情况下,此技能不可被触发,2为终极斩杀不触发,3为任何斩杀都不触发
        if (effect.GetEffectValue(2) & pow(2, zhanshaState-1)) != 0:
            return False
    buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(0), attacker.GetID(), attacker.GetGameObjType())
    if not buff:
        return False
    if buff.GetLayer() < effect.GetEffectValue(1):
        return False
    GameObj.SetHP(attacker, 1) # ä¸ºäº†é¿å…ç”Ÿå‘½ä¸º0时,屏蔽过多逻辑
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4100.py
New file
@@ -0,0 +1,30 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: æ”»å‡»æŒ‡å®šbuff下的玩家后触发被动技能
#
# @author: Alee
# @date 2019-5-7 ä¸‹åˆ08:06:30
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import GameObj
import SkillCommon
def CheckCanHappen(attacker, defender, effect, curSkill):
    buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(0), attacker.GetID(), attacker.GetGameObjType())
    if not buff:
        return False
    if buff.GetLayer() < effect.GetEffectValue(1):
        return False
    return True
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4101.py
New file
@@ -0,0 +1,33 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
##@package
#
# @todo: æ¸…除指定buff成功后提高技能伤害
#
# @author: Alee
# @date 2019-5-8 ä¸‹åˆ02:31:07
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
import ChConfig
import GameWorld
import GameObj
import SkillCommon
def CheckCanHappen(attacker, defender, effect, curSkill):
    findBuff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(0), attacker.GetID(), attacker.GetGameObjType())
    if not findBuff:
        return False
    return True
def GetValue(attacker, defender, effect):
    findBuff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(1), attacker.GetID(), attacker.GetGameObjType())
    if not findBuff:
        return 0
    return effect.GetEffectValue(0)*findBuff.GetLayer()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -309,7 +309,6 @@
             4027:ChConfig.TriggerType_AttackKill,   # Õ¶É± 24
             4028:ChConfig.TriggerType_WillDead,   # è¿›å…¥æ¿’死状态时触发技能 25
             4029:ChConfig.TriggerType_BuffBoom,   # ä¸­æ¯’后爆炸 26
             #4030:ChConfig.TriggerType_Success_Buff_SkillPer, # æé«˜4501成功概率 27
             4031:ChConfig.TriggerType_HurtObjAddBuff,   # åœ¨ç®—伤害时群攻1对1加buff,可用于一个伤害多次触发 28
             4032:ChConfig.TriggerType_BeBoomSeed,   # è¢«åŠ¨å¼•çˆ†è§†é‡Žå†…å¯¹è±¡çš„buff种子 29
             4033:ChConfig.TriggerType_AttackOver,  # æ”»å‡»ï¼ˆå¯¹æ•ŒæŠ€èƒ½ï¼‰åŽè¢«åŠ¨æŠ€èƒ½è¢«è§¦å‘ 4
@@ -373,7 +372,12 @@
             4093:ChConfig.TriggerType_NoControl,   # ä½¿å…³è”技能不受控制 78
             4094:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFFç±»:增加暴击率
             4095:ChConfig.TriggerType_SuperHitSuckBloodPer, # BUFF类: æš´å‡»ç™¾åˆ†æ¯”吸血, 79
             4096:ChConfig.TriggerType_AttackAddSkillPer,  # æ‰€æœ‰æ”»å‡»ä¼¤å®³(SkillPer)增加,含普攻,计算时 5
             4097:ChConfig.TriggerType_BurnPer, # ç¼çƒ§ä¼¤å®³ç™¾åˆ†æ¯” 80
             4098:ChConfig.TriggerType_AttackAddSkillPer,  # æ‰€æœ‰æ”»å‡»ä¼¤å®³(SkillPer)增加,含普攻,计算时 5
             4099:ChConfig.TriggerType_WillDead,   # è¿›å…¥æ¿’死状态时触发技能 25
             4100:ChConfig.TriggerType_AttackOver,  # æ”»å‡»ï¼ˆå¯¹æ•ŒæŠ€èƒ½ï¼‰åŽè¢«åŠ¨æŠ€èƒ½è¢«è§¦å‘ 4
             4101:ChConfig.TriggerType_AttackAddSkillPer,  # æ‰€æœ‰æ”»å‡»ä¼¤å®³(SkillPer)增加,含普攻,计算时 5
             }
    return tdict.get(effectID, -1) 
    #===========================================================================
@@ -394,7 +398,7 @@
             4500:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
             4501:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类:提高主动技能的技能伤害
             4502:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能
             #4503:ChConfig.TriggerType_AttackAddSkillPer,  # BUFF类: æ”»å‡»æ—¶æé«˜å¢žåР伤害
             4503:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
             4504:ChConfig.TriggerType_BounceHP,  # BUFF类: åå¼¹ä¼¤å®³å›ºå®šå€¼
             4506:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能  åªåˆ·æ–°å±žæ€§ ä¸è§¦å‘技能
             4507:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFFç±»:增加暴击率
@@ -424,6 +428,8 @@
             4531:ChConfig.TriggerType_BounceHPPerByAttacker,  # åå¼¹ä¼¤å®³ç™¾åˆ†æ¯”值, ç”±æ”»å‡»æ–¹å†³å®š 77
             4532:ChConfig.TriggerType_SuperHit,    # buff中对第一目标暴击触发技能
             4533:ChConfig.TriggerType_BurnDisappear, # ç¼çƒ§æ¶ˆå¤±è§¦å‘ 81
             4534:ChConfig.TriggerType_DebuffOff,   # BUFF类: æŠµæ¶ˆdebuff
             4535:ChConfig.TriggerType_BeAttackAddSkillPer, # buff中, è¢«æ”»å‡»æé«˜æŠ€èƒ½ä¼¤å®³
             
             803:ChConfig.TriggerType_BloodShield,  # è¡€ç›¾
             806:ChConfig.TriggerType_BloodShield,  # è¡€ç›¾
@@ -449,7 +455,7 @@
        self.AffectSuperEquipEffectCntDict = {}  # ç‰¹æ®Šè£…备技能效果对应的已计算后的数值,直接调用
    
    #记录会影响其他技能或者被动触发释放技能的BUFF
    def AddBuffInfoByEffect(self, effect, skillID):
    def AddBuffInfoByEffect(self, effect, skillID, onwerID, onwerType):
        effectID = effect.GetEffectID()
        
        #{(触发方式/点, å…³è”技能):{BUFFID:【效果】}}
@@ -464,7 +470,7 @@
            
        if skillID not in self.AffectBuffDict[keyTuple]:
            self.AffectBuffDict[keyTuple][skillID] = []
        self.AffectBuffDict[keyTuple][skillID].append(effect)  # å­˜å‚¨å—影响的信息
        self.AffectBuffDict[keyTuple][skillID].append([effect, onwerID, onwerType])  # å­˜å‚¨å—影响的信息
        return
        
@@ -817,6 +823,8 @@
                buffSkill = curBuff.GetSkill()
                if not buffSkill:
                    continue
                onwerID, onwerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
                for effectIndex in range(0, buffSkill.GetEffectCount()):
                    curEffect = buffSkill.GetEffect(effectIndex)
                    effectID = curEffect.GetEffectID()
@@ -827,7 +835,7 @@
                    if triggerType == -1:
                        continue
                    passiveEff = self.InitObjPassiveEff(gameObj)
                    passiveEff.AddBuffInfoByEffect(curEffect, buffSkill.GetSkillID())
                    passiveEff.AddBuffInfoByEffect(curEffect, buffSkill.GetSkillID(), onwerID, onwerType)
        
        return
    
@@ -1327,7 +1335,8 @@
        
        if not IsValidPassiveSkill(curSkill):
            continue
        for passiveEffect in effectList:
        for effectInfo in effectList:
            passiveEffect = effectInfo[0]
            # è¢«åŠ¨è§¦å‘çš„æŠ€èƒ½
            pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
            
@@ -1335,7 +1344,7 @@
            if not callFunc:
                continue
            
            if not callFunc(attacker, defender, passiveEffect, tagSkill):
            if not callFunc(attacker, defender, passiveEffect, tagSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
                continue
            
            callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "DoLogic"))
@@ -1396,14 +1405,15 @@
        
        if not IsValidPassiveSkill(curSkill):
            continue
        for passiveEffect in effectList:
        for effectInfo in effectList:
            passiveEffect = effectInfo[0]
            # è¢«åŠ¨è§¦å‘çš„æŠ€èƒ½
            pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
            callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "CheckCanHappen"))
            if not callFunc:
                continue
            
            if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill):
            if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
                continue
            
            callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetSkillData"))
@@ -1473,11 +1483,11 @@
        if not IsValidPassiveSkill(curSkill):
            continue
        
        for passiveEffect in effectList:
        for effectInfo in effectList:
            if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill:
                # åªæœ‰å¤©èµ‹æ‰å¯ä»¥å†æ¬¡è¢«è§¦å‘
                continue 
            passiveEffect = effectInfo[0]
            # è¢«åŠ¨è§¦å‘çš„æŠ€èƒ½
            pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
            
@@ -1486,7 +1496,7 @@
                continue
            
            # æ¡ä»¶ä¸æ»¡è¶³
            if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill):
            if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
                continue
            
            callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetValue"))
@@ -1494,7 +1504,7 @@
                continue
            
            # å¦‚被动技能:千幻冥炎真实伤害从2变4倍
            curValue += GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_PassiveBuffValue)
            #curValue += GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_PassiveBuffValue)
            curValue += callFunc(attacker, defender, passiveEffect)
            
    return curValue
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -717,9 +717,27 @@
            continue
        npcObj.StopMove()
        npcObj.ChangePos(npcPos.PosX, npcPos.PosY)
        BeatBackMove(curPlayer, npcObj)
    return
# é’ˆå¯¹NPC被推出远距离一直卡墙角问题,法宝挑战副本特殊处理为超过4ç±³ NPC自动回退一些
def BeatBackMove(curPlayer, npcObj):
    if GameWorld.GetMap().GetMapID() != ChConfig.Def_FBMapID_MagicWeapon:
        return
    if npcObj.GetCurAction() == IPY_GameWorld.laNPCSkillWarning:
        return
    posMap = npcObj.GetRefreshPosAt(npcObj.GetCurRefreshPointIndex())
    #范围校验
    posMapX = posMap.GetPosX()
    posMapY = posMap.GetPosY()
    if GameWorld.GetDist(npcObj.GetPosX(), npcObj.GetPosY(), posMapX, posMapY) < 8:
        # å•次位移不超过5ç±³
        return
    npcControl = NPCCommon.NPCControl(npcObj)
    moveDestX, moveDestY = npcControl.GetMoveNearPosEx(posMapX, posMapY, 5)
    npcObj.Move(moveDestX, moveDestY)
    return
#===============================================================================
# //B4 03 å¸å¼•NPC仇恨 #tagNPCAttention
@@ -2719,10 +2737,12 @@
        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)
    #是否持续性技能
    if curBuff and curBuff.GetSkill().GetSkillType() in ChConfig.Def_LstBuff_List:
        # æŒç»­æ€§å±žæ€§å˜åŒ–çš„buff,目前只有持续减益
        callFunc = GameWorld.GetExecFunc(GameBuffs, "BuffProcess_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
        if callFunc:
            callFunc(objDetel, curEffect, allAttrList[index], curBuff)
    return
## èŽ·å¾—buff效果的计算模块文件后缀
Tool/Êý¾Ý¿â/ChangeAccount/ChangeAccount.py
@@ -69,7 +69,7 @@
    print 'table:tagDSAccount update  successfully! cnt=%s changeto %s-%s'%(cnt, DBConfig.Spid, DBConfig.Serverid)
    
    
    for table in ['tagDBPlayer', 'tagAccIDSendPrize', 'tagDBGMIP', 'tagGameWorldEvent']:
    for table in ['tagDBPlayer', 'tagAccIDSendPrize', 'tagDBGMIP', 'tagGameWorldEvent', 'tagPayInfo']:
        # ä¿®æ”¹çŽ©å®¶è¡¨å’Œè´¦å·è¡¨ä¸­çš„çŽ©å®¶è´¦å·
        colPlayer = db[table]
        cnt = 0