From b830b04b3de84fadca2f03e4d9625ecdfc4429a1 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 20 五月 2019 21:45:55 +0800 Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 84 +++++++++++++++++++++++++++++------------- 1 files changed, 58 insertions(+), 26 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 cbb0acb..2484859 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py @@ -43,7 +43,12 @@ GameWorld.ImportAll("Script\\Skill\\", "PassiveBuff") - +# 被动关联的技能模块 +# 获得关联技能,0 全部 1是主动型技能(法宝,普攻) 2 为人族法宝技能 3为普攻 其他技能ID +Def_ConnSkill_Template = { + ChConfig.Def_SkillFuncType_FbSkill:[1,2], + ChConfig.Def_SkillFuncType_NormalAttack:[1,3], + } # --------被动功法设置-------------------------------------------------------------------- @@ -284,12 +289,12 @@ 4000:ChConfig.TriggerType_BuffState, # 进入4012的某个状态触发技能 2 4001:ChConfig.TriggerType_TagBuffState, # 目标进入4012的某个状态触发技能 2 - 4002:ChConfig.TriggerType_AddDamagePer, # 提高增加伤害属性值,计算时 3 - 4003:ChConfig.TriggerType_AddDamagePer, # 提高增加伤害属性值,计算时 3 + 4002:ChConfig.TriggerType_SkillValue, # 增加技能伤害固定值 82 + 4003:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4 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 @@ -297,7 +302,7 @@ 4013:ChConfig.TriggerType_AttackAddFinalValue, #攻击增加输出伤害11 4014:ChConfig.TriggerType_HappenState, #必定触发 4015:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5 - 4016:ChConfig.TriggerType_AbsorbShield, # 提高麒麟佑身的减少伤害效果提升20% 13 + #4016:ChConfig.TriggerType_AbsorbShield, # 提高麒麟佑身的减少伤害效果提升20% 13 4017:ChConfig.TriggerType_BounceHP, # 反弹伤害固定值14, 4018:ChConfig.TriggerType_BuffDisappear, # buff消失后触发技能15, 4019:ChConfig.TriggerType_BuffTime, # 延长BUFF时间16, @@ -311,7 +316,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 @@ -347,7 +351,7 @@ 4063:ChConfig.TriggerType_SummonDie, #自身召唤兽死亡触发技能 60 4064:ChConfig.TriggerType_GiftReduceCD, # 天赋减少CD9, #CD 4065:ChConfig.TriggerType_DamageReducePVP, # PVP减少伤害 - 4066:ChConfig.TriggerType_AddDamagePer, # 提高增加伤害属性值,计算时 3 + 4066:ChConfig.TriggerType_AddPVPDamagePer, # 提高PVP增加伤害属性值,计算时 3 4067:ChConfig.TriggerType_ProDefValue, # 神兵护盾值下降时 62 4068:ChConfig.TriggerType_LockHP, # 锁血触发技能 63 4069:ChConfig.TriggerType_ZhongjiZhansha, # 终极斩杀 64 @@ -355,8 +359,8 @@ 4071:ChConfig.TriggerType_Buff_SuckBloodPer, # 攻击 百分比吸血 4072:ChConfig.TriggerType_SuperHitSkipCD, # 暴击无冷却 68 4073:ChConfig.TriggerType_BuffHurtCnt, # 当持续buff伤害第X次时触发技能 69 - 4074:ChConfig.TriggerType_BounceHP, # 反弹伤害固定值14, 记录值 - 4075:ChConfig.TriggerType_4074PerValue, # 增加4074的反弹比例 + 4074:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5 + 4075:ChConfig.TriggerType_AddThumpHitPer, # 增加重击伤害百分比 4076:ChConfig.TriggerType_dFinalHurtReducePer, # 防守方的最终伤害减少百分比 71 4077:ChConfig.TriggerType_AttackAddFinalPer, # 增加最终伤害百分比 59 4078:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4 @@ -374,6 +378,18 @@ 4090:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4 4091:ChConfig.TriggerType_SkillOverNoAttack, # 技能释放后 与TriggerType_AttackOver相反19, 4092:ChConfig.TriggerType_SkillSuccess, # 任何技能释放成功都可触发 76 减印记 + 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 + 4102:ChConfig.TriggerType_SkillValue, # 增加技能伤害固定值 82 + 4103:ChConfig.TriggerType_Buff_SuckBloodPer, # 攻击 百分比吸血 + 4104:ChConfig.TriggerType_HitSuccess, # 命中成功率 83 } return tdict.get(effectID, -1) #=========================================================================== @@ -390,11 +406,13 @@ # 获得【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类:被攻击触发技能 - 4503:ChConfig.TriggerType_AddDamagePer, # BUFF类: 攻击时提高增加伤害 + 4503:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能 4504:ChConfig.TriggerType_BounceHP, # BUFF类: 反弹伤害固定值 + 4505:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类:提高主动技能的技能伤害 4506:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能 只刷新属性 不触发技能 4507:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率 4508:ChConfig.TriggerType_Buff_AttackSubLayer, # BUFF类:攻击减buff层,0消失 @@ -419,6 +437,14 @@ 4527:ChConfig.TriggerType_AddThumpHitRate, # 增加重击概率 4528:ChConfig.TriggerType_AddThumpHitPer, # 重击时 增加重击百分比 75 4529:ChConfig.TriggerType_Buff_SuckBloodPer, # BUFF类: 百分比吸血, 此处非属性类 + 4530:ChConfig.TriggerType_Buff_AttackSubLayer, # BUFF类:攻击减buff层,0消失 + 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中, 被攻击提高技能伤害 + 4536:ChConfig.TriggerType_AddBuffOver, + 4537:ChConfig.TriggerType_BurnPer, # 灼烧伤害百分比 80 803:ChConfig.TriggerType_BloodShield, # 血盾 806:ChConfig.TriggerType_BloodShield, # 血盾 @@ -444,7 +470,7 @@ self.AffectSuperEquipEffectCntDict = {} # 特殊装备技能效果对应的已计算后的数值,直接调用 #记录会影响其他技能或者被动触发释放技能的BUFF - def AddBuffInfoByEffect(self, effect, skillID): + def AddBuffInfoByEffect(self, effect, skillID, onwerID, onwerType): effectID = effect.GetEffectID() #{(触发方式/点, 关联技能):{BUFFID:【效果】}} @@ -459,7 +485,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 @@ -683,12 +709,14 @@ skillList.extend(self.AffectSuperEquipSkillDict.get((triggerType, connSkillID), [])) # 指定特殊类型可触发 + # 获得关联技能,0 全部 1是主动型技能(法宝,普攻) 2 为人族法宝技能 3为普攻 其他技能ID if connSkill and connSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_NormalAttack]: - funcType = connSkill.GetFuncType() - skillList.extend(self.AffectSkillDict.get((triggerType, funcType), [])) - skillList.extend(self.AffectPassiveSkillSetDict.get((triggerType, funcType), [])) - skillList.extend(self.AffectDogzSkillDict.get((triggerType, funcType), [])) - skillList.extend(self.AffectSuperEquipSkillDict.get((triggerType, funcType), [])) + funcTypeList = Def_ConnSkill_Template.get(connSkill.GetFuncType(), []) + for funcType in funcTypeList: + skillList.extend(self.AffectSkillDict.get((triggerType, funcType), [])) + skillList.extend(self.AffectPassiveSkillSetDict.get((triggerType, funcType), [])) + skillList.extend(self.AffectDogzSkillDict.get((triggerType, funcType), [])) + skillList.extend(self.AffectSuperEquipSkillDict.get((triggerType, funcType), [])) # 被动再触发被动限制为指定 if connSkill and SkillCommon.isPassiveSkill(connSkill): @@ -812,6 +840,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() @@ -822,7 +852,7 @@ if triggerType == -1: continue passiveEff = self.InitObjPassiveEff(gameObj) - passiveEff.AddBuffInfoByEffect(curEffect, buffSkill.GetSkillID()) + passiveEff.AddBuffInfoByEffect(curEffect, buffSkill.GetSkillID(), onwerID, onwerType) return @@ -1322,7 +1352,8 @@ if not IsValidPassiveSkill(curSkill): continue - for passiveEffect in effectList: + for effectInfo in effectList: + passiveEffect = effectInfo[0] # 被动触发的技能 pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID() @@ -1330,7 +1361,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")) @@ -1391,14 +1422,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")) @@ -1468,11 +1500,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() @@ -1481,7 +1513,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")) @@ -1489,7 +1521,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 -- Gitblit v1.8.0