From e0f8672ce49e360e4a318ac81c20f84b05d6bbe8 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 11 三月 2019 21:13:06 +0800 Subject: [PATCH] 6118 【后端】【1.5.200】新增技能效果 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 84 +++++++++++++++++++++++------------------ 1 files changed, 47 insertions(+), 37 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py index f179550..e262780 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py @@ -350,6 +350,7 @@ 4067:ChConfig.TriggerType_ProDefValue, # 神兵护盾值下降时 62 4068:ChConfig.TriggerType_LockHP, # 锁血触发技能 63 4069:ChConfig.TriggerType_ZhongjiZhansha, # 终极斩杀 64 + 4070:ChConfig.TriggerType_DebuffOff, # 抵消一次debuff 23 } return tdict.get(effectID, -1) #=========================================================================== @@ -387,6 +388,7 @@ 4519:ChConfig.TriggerType_WillDead, # BUFF类: 进入濒死状态 25 4520:ChConfig.TriggerType_AddLayer, # BUFF类: 目标BUFF层级增加时 52 4521:ChConfig.TriggerType_BeLuckyHitSubPer, # 减少受到的会心伤害 65 + 4522:ChConfig.TriggerType_DebuffOff, # BUFF类: 抵消debuff 803:ChConfig.TriggerType_BloodShield, # 血盾 806:ChConfig.TriggerType_BloodShield, # 血盾 @@ -729,36 +731,6 @@ return PyGameData.g_PassiveEffManager -## 当前释放技能 skillData -#def CalcBuffTriggerSkill(attacker, skillData, target, tick): -# #=========================================================================== -# # passiveEff = GetPassiveEffManager().GetPassiveEff(attacker, False) -# # if not passiveEff: -# # return -# # #影响技能的BUFF -# # buffTriggerSkillDict = passiveEff.GetBuffTriggerSkill(skillData.GetSkillID()) -# # if not buffTriggerSkillDict: -# # return -# # -# # passiveEff.CalcBuffTriggerSkill(attacker, target, skillData, buffTriggerSkillDict, tick) -# #=========================================================================== -# OnPassiveSkillTrigger(attacker, target, ChConfig.TriggerType_AttackOver, tick) - -#=============================================================================== -# # 判断PK关系是否可攻击 Def_BattleRelationType_CommNoBoss也可攻击 只是攻击无效果 -# def CheckBattleRelationType(skillBattleType, battleRelationType): -# if skillBattleType in [ChConfig.Def_BattleRelationType_Comm, ChConfig.Def_BattleRelationType_CommNoBoss]: -# return True -# -# #if battleRelationType in [ChConfig.Def_BattleRelationType_Comm, ChConfig.Def_BattleRelationType_CommNoBoss]: -# # return True -# -# if skillBattleType != battleRelationType: -# # PK模式的判定 -# return False -# return True -#=============================================================================== - # 查找被动技能时的对象 def GetPassiveDefender(attacker, defender): # 寻找被击者,1.目标排除是自己(后面逻辑会更换) 2. 查客户端伤害队列,3.查服务端伤害队列 @@ -780,7 +752,15 @@ return return GameWorld.GetObj(curHurt.GetObjID(), curHurt.GetObjType()) - + +# 当前有效被动触发技能, 可用于基础使用判定 +def IsValidPassiveSkill(curSkill): + validMap = SkillShell.GetAttrMapID(curSkill) + if validMap and validMap != GameWorld.GetMap().GetMapID(): + # 有效地图可触发 + return False + + return True # 多种被动技能优先触发释放一个,如被动 血量40%触发无敌技能,血量一定是停留在40% # 先锁血,后触发技能 同 DelayUsePassiveTriggerSkill 使用 @@ -825,6 +805,9 @@ if not curSkill: continue + if not IsValidPassiveSkill(curSkill): + continue + if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill: # 只有天赋才可以再次被触发 continue @@ -975,6 +958,9 @@ if not curSkill: continue + if not IsValidPassiveSkill(curSkill): + continue + if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill: # 只有天赋才可以再次被触发 continue @@ -1070,6 +1056,10 @@ curSkill = attacker.GetSkillManager().FindSkillBySkillTypeID(skillTypeID) if not curSkill: continue + + if not IsValidPassiveSkill(curSkill): + continue + if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill: # 只有天赋才可以再次被触发 continue @@ -1133,6 +1123,9 @@ if not curSkill: continue + if not IsValidPassiveSkill(curSkill): + continue + effect = SkillCommon.GetSkillEffectByEffectID(curSkill, effectID) if not effect: continue @@ -1176,6 +1169,9 @@ continue curSkill = attacker.GetSkillManager().FindSkillBySkillTypeID(skillTypeID) if not curSkill: + continue + + if not IsValidPassiveSkill(curSkill): continue effect = SkillCommon.GetSkillEffectByEffectID(curSkill, effectID) @@ -1225,6 +1221,13 @@ for skillID, effectList in buffDict.items(): if tagSkillID == skillID: + continue + + curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) + if not curSkill: + continue + + if not IsValidPassiveSkill(curSkill): continue for passiveEffect in effectList: # 被动触发的技能 @@ -1285,15 +1288,19 @@ for skillID, effectList in buffDict.items(): if skillID == useSkillID: continue + curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) + if not curSkill: + continue + + if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill: + # 只有天赋才可以再次被触发 + continue + + if not IsValidPassiveSkill(curSkill): + continue for passiveEffect in effectList: # 被动触发的技能 pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID() - curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) - if not curSkill: - continue - if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill: - # 只有天赋才可以再次被触发 - continue callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "CheckCanHappen")) if not callFunc: continue @@ -1365,6 +1372,9 @@ if not curSkill: continue + if not IsValidPassiveSkill(curSkill): + continue + for passiveEffect in effectList: if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill: # 只有天赋才可以再次被触发 -- Gitblit v1.8.0