6603 【后端】【2.0】增加新版的sp和被动技能 - 技能伤害百分比传公式改成万分率
| | |
| | | reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
|
| | |
|
| | | if addPer or reducePer:
|
| | | addSkillPer = (addPer - reducePer) / 10000.0
|
| | | addSkillPer = addPer - reducePer
|
| | | skillPer = max(0, skillPer + addSkillPer)
|
| | |
|
| | | return skillPer
|
| | |
| | |
|
| | | return skillPer, skillValue
|
| | |
|
| | | return findEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue), findEffect.GetEffectValue(1)
|
| | | return findEffect.GetEffectValue(0), findEffect.GetEffectValue(1)
|
| | |
|
| | | # 对NPC伤害的特殊处理,为指定伤害替换 非额外加伤害
|
| | | # 1. 对非BOSS怪的特殊伤害 2.对XX系怪物的特殊伤害
|
| | |
| | | hurtValue += atkObj.GetDictByKey(ChConfig.Def_PlayerKey_MoreHurtValue)
|
| | |
|
| | | elif SkillShell.IsPlayerUseSkill(atkObj, curSkill) and SkillShell.isClientHurtValue(defObj.GetID(), defObjType):
|
| | | # 缓存单次攻击中的最大伤害,被动技能概率性增加伤害,此处放大最大伤害
|
| | | hurtValue = atkObj.GetDictByKey(ChConfig.Def_PlayerKey_ClientMaxHurtValue)
|
| | | if hurtValue == 0:
|
| | | #hurtValue, hurtType = CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, None, True)
|
| | | # 理论伤害一致, 多加点预算伤害避免计算误差
|
| | | #hurtValue = min(ShareDefine.Def_UpperLimit_DWord, hurtValue+10)
|
| | | #atkObj.SetDict(ChConfig.Def_PlayerKey_ClientMaxHurtValue, int(hurtValue*1.2))
|
| | | hurtValue = atkObj.GetMaxAtk()*atkSkillPer*40 # 加入被动计算不准确改成估算
|
| | | |
| | | clientValue, hurtType = SkillShell.GetClientHurtByObj(defObj.GetID(), defObjType)
|
| | | if clientValue <= hurtValue:
|
| | | hurtValue = clientValue
|
| | | else:
|
| | | # 外挂最高伤害基本防范
|
| | | GameWorld.DebugLog(atkObj, "%s----客户端伤害 %s 服务端最高伤害 %s"%(atkObj.GetID(), [clientValue, hurtType], hurtValue))
|
| | | hurtValue = int(hurtValue*0.8)
|
| | | #GameWorld.DebugAnswer(atkObj, "客户端伤害 %s 服务端伤害 %s"%([defObj.GetID(), clientValue, hurtType], hurtValue))
|
| | | |
| | | hurtValue = min(clientValue, atkObj.GetMaxAtk()*200) # 防下伤害可能上限
|
| | | else:
|
| | | hurtValue, hurtType = CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, orgAtkObj=attacker)
|
| | |
|
| | |
| | | # --- 新增普通攻击的数值和技能攻击的数值,根据类型各自计算
|
| | | if atkObjType == IPY_GameWorld.gotPlayer:
|
| | | if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_NormalAttack:
|
| | | atkSkillPer += float(PlayerControl.GetNormalHurtPer(atkObj))/ChConfig.Def_MaxRateValue
|
| | | atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj)
|
| | | atkSkillValue += PlayerControl.GetNormalHurt(atkObj)
|
| | | elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]:
|
| | | atkSkillPer += float(PlayerControl.GetFabaoHurtPer(atkObj))/ChConfig.Def_MaxRateValue
|
| | | atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj)
|
| | | atkSkillValue += PlayerControl.GetFabaoHurt(atkObj)
|
| | |
|
| | | # atkSkillPer 包含普攻,所以不是用技能增强处理
|
| | |
| | | aDamagePVP = PlayerControl.GetDamagePVP(atkObj) # PVP固定伤害
|
| | | aDamagePVE = PlayerControl.GetDamagePVE(atkObj) # PVE固定伤害
|
| | |
|
| | | # 被动技能增加伤害
|
| | | #aDamagePVP += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer)
|
| | | #aDamagePVP += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer)
|
| | | |
| | | aNPCHurtAddPer = PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成
|
| | | aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成
|
| | | aDamagePerPVP += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddPVPDamagePer)
|
| | | aFinalHurtPer = PlayerControl.GetFinalHurtPer(atkObj) # 最外层伤害加成, 可能为负值
|
| | | aFinalHurtPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalPer)
|
| | |
|
| | |
| | | # @param isEnhanceSkill 是否为附加技能
|
| | | # @return True 攻击成功 None 不可攻击
|
| | | # @remarks 通过调用 Obj_Attack_Obj.GetTagRelation 获取返回值
|
| | | def Attack(attacker, defender, useSkill, tick, skillPercent=1, skillEnhance=0, attackTime=1, isEnhanceSkill=False):
|
| | | def Attack(attacker, defender, useSkill, tick, skillPercent=10000, skillEnhance=0, attackTime=1, isEnhanceSkill=False):
|
| | | global g_skillHurtList
|
| | |
|
| | | if attacker.GetGameObjType() == IPY_GameWorld.gotNPC:
|
| | |
| | | dist = GameWorld.GetDist(tagObj.GetPosX(), tagObj.GetPosY(),
|
| | | defender.GetPosX(), defender.GetPosY())
|
| | |
|
| | | skillPer = (skillPercent - dist * changePer) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = (skillPercent - dist * changePer)
|
| | |
|
| | | #GameWorld.Log("skillPer :%s"%skillPer)
|
| | | #执行群攻 并取得被攻击对象列表
|
| | |
| | | if not hurtEffect:
|
| | |
|
| | | continue
|
| | | hurtPer = hurtEffect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue # 单层伤害
|
| | | hurtPer = hurtEffect.GetEffectValue(0) # 单层伤害
|
| | |
|
| | | # 伤害乘以层
|
| | | skillPercent = hurtPer * max(buff.GetLayer(), 1)
|
| | |
| | | Def_PlayerKey_1314HurtCount = "1314cnt" # 类剑刃风暴技能的1314效果,伤害次数处理
|
| | | Def_PlayerKey_FirstDefender = "FDID" # 第一个防守者,只用于比较
|
| | | Def_PlayerKey_SelectObjID = "selectID" # 锁定模式选中,不用SetActionObj
|
| | | Def_PlayerKey_SelectObjID = "selectID" # 锁定模式选中,不用SetActionObj
|
| | | Def_PlayerKey_SelectObjType = "selectType" # 锁定模式选中
|
| | | Def_PlayerKey_NormalHurt = "NormalHurt" # 属性普通攻击增伤:普通攻击附加的固定值伤害
|
| | | Def_PlayerKey_NormalHurtPer = "NormalHurtPer" # 属性普通攻击加成:普通攻击附加的伤害百分比
|
| | |
| | | Def_PlayerKey_EquipTime = "EquipTime" # 时效装备
|
| | | Def_PlayerKey_PowerPartTime = "PowerPartTime" # 蓄力每次消耗时间,因攻速改变
|
| | | Def_PlayerKey_PowerPartCount = "PowerPartCount" # 蓄力技能能量次数
|
| | | Def_PlayerKey_ClientMaxHurtValue = "CMaxHValue" # 缓存单次技能攻击的最大伤害, 减少计算量
|
| | | Def_Player_RefreshAttr = "Player_RefreshAttr" # 玩家刷新属性标志
|
| | | Def_PlayerKey_LoadMapIsLogin = 'LoadMapIsLogin' # 本次进入地图是否是登录的
|
| | | Def_PlayerKey_NotifyAllAttrState = 'NotifyAllAttrState' # 是否同步过所有属性,切图时第一次刷属性需要同步
|
| | |
| | | (
|
| | | TriggerType_BeSuperHit, # 被暴击触发技能 1
|
| | | TriggerType_BuffState, # 进入4012的某个状态触发技能
|
| | | TriggerType_AddDamagePer, # 提高增加伤害属性值,计算时
|
| | | TriggerType_AddPVPDamagePer, # 提高PVP增加伤害属性值,计算时
|
| | | TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发
|
| | | TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
|
| | | TriggerType_SuperHit, # 暴击时 触发技能
|
| | |
| | |
|
| | | boomSkill = skills[0]
|
| | | curEffect = curSkill.GetEffect(0)
|
| | | skillPer = curEffect.GetEffectValue(0)/float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = curEffect.GetEffectValue(0)
|
| | | skillEnhance = curEffect.GetEffectValue(1)
|
| | |
|
| | | BaseAttack.AttackAreaDefenderNotify(attacker, defender, defender.GetPosX(), defender.GetPosY(), boomSkill,
|
| | |
| | |
|
| | | #攻击效果
|
| | | skillEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_Attack)
|
| | | skillPer = 1
|
| | | skillPer = 10000
|
| | | skillEnhance = 0
|
| | |
|
| | | if skillEffect != None:
|
| | | #技能增强百分比
|
| | | skillPer = (skillEffect.GetEffectValue(0)) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | multiple = curSkill.GetEffect(0).GetEffectValue(0) - curBuff.GetValue() + 1 # 第几次攻击
|
| | | skillPer += multiple*PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(tagObj, None, curSkill, ChConfig.TriggerType_AddSingleSkillPer)
|
| | | #技能增强值
|
| | |
| | | # @remarks “打出自身伤害的X%附加Y值”这一类普通攻击技能类型实现逻辑
|
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #使用技能
|
| | |
| | | # @remarks 指定目标有角度的群体范围攻击模板
|
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #---攻击遍历起点优先级 1.找指定点 2.防守者(包括自己)---
|
| | |
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | |
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #---攻击遍历起点优先级 1.找指定点 2.防守者(包括自己)---
|
| | |
| | | # @remarks 群体范围攻击
|
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #---攻击遍历起点优先级 1.找指定点 2.防守者(包括自己)---
|
| | |
| | | ## 群体攻击百分比掉血,被攻击者各自计算百分比
|
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #---攻击遍历起点优先级 1.找指定点 2.防守者(包括自己)---
|
| | |
| | | return False
|
| | |
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #使用技能
|
| | |
| | | skillPerList = []
|
| | | for i in range(jumpCount):
|
| | | if changeType:
|
| | | skillPerList.append((skillPer + i * addPer) / float(ChConfig.Def_MaxRateValue))
|
| | | skillPerList.append((skillPer + i * addPer))
|
| | | else:
|
| | | skillPerList.append((skillPer - i * addPer) / float(ChConfig.Def_MaxRateValue))
|
| | | skillPerList.append((skillPer - i * addPer))
|
| | |
|
| | | #GameWorld.Log("闪电链攻击技能增强列表 = %s,附加值 = %s, 跳转次数 = %s"%(skillPerList, addValue, jumpCount))
|
| | |
|
| | |
| | |
|
| | |
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | curRadius = curSkill.GetAtkRadius() # 0-单攻; >0群攻效果半径
|
| | |
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | count = attacker.GetDictByKey(ChConfig.Def_PlayerKey_PowerPartCount)
|
| | | skillPer = skillEffect.GetEffectValue(0) * count / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0) * count |
| | | skillEnhance = skillEffect.GetEffectValue(1) * count
|
| | |
|
| | | #---攻击遍历起点优先级 1.找指定点 2.防守者(包括自己)---
|
| | |
| | | return
|
| | |
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0) |
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | tagRoundPosX = attacker.GetPosX()
|
| | |
| | | def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
|
| | |
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #---攻击遍历起点优先级 1.找指定点 2.防守者(包括自己)---
|
| | |
| | | if defender: # 有目标才算伤害
|
| | |
|
| | | skillEffect = curSkill.GetEffect(0)
|
| | | skillPer = skillEffect.GetEffectValue(0) / float(ChConfig.Def_MaxRateValue)
|
| | | skillPer = skillEffect.GetEffectValue(0)
|
| | | skillEnhance = skillEffect.GetEffectValue(1)
|
| | |
|
| | | #使用技能,无需提升暴击率
|
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #
|
| | | # @todo: 攻击有xx%几率附加xx%技能伤害,持续xx秒
|
| | | # @todo: 攻击有xx%几率附加xx%技能伤害,持续xx秒, 附加目标处于XX状态
|
| | | #
|
| | | # @author: Alee
|
| | | # @date 2018-1-30 下午05:11:45
|
| | |
| | |
|
| | | import ChConfig
|
| | | import GameWorld
|
| | | import PassiveBuffEffMng
|
| | | import GameObj
|
| | | import SkillCommon
|
| | |
|
| | | def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
|
| | | curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
|
| | | if not curSkill:
|
| | | return
|
| | |
|
| | | buffType = SkillCommon.GetBuffType(curSkill)
|
| | | buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
|
| | | #通过类型获取目标的buff管理器为空,则跳出
|
| | | if buffTuple == ():
|
| | | return
|
| | | |
| | | buffManager = buffTuple[0]
|
| | | buff = buffManager.FindBuff(skillID)
|
| | | if not buff:
|
| | | return
|
| | | return GameWorld.CanHappen(buff.GetValue())
|
| | | if passiveEffect.GetEffectValue(2) and defender:
|
| | | if not GameObj.GetPyPlayerState(defender, passiveEffect.GetEffectValue(2)):
|
| | | #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
|
| | | return False
|
| | | |
| | | return GameWorld.CanHappen(passiveEffect.GetEffectValue(1))
|
| | |
|
| | |
|
| | | def GetValue(attacker, defender, passiveEffect):
|
| | | return float(passiveEffect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return passiveEffect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, passiveEffect):
|
| | | return float(passiveEffect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return passiveEffect.GetEffectValue(0)
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #
|
| | | ##@package
|
| | | #
|
| | | # @todo: buff中暴击时增加技能伤害
|
| | | #
|
| | | # @author: Alee
|
| | | # @date 2019-5-5 下午04:26:53
|
| | | # @version 1.0
|
| | | #
|
| | | # @note: |
| | | #
|
| | | #---------------------------------------------------------------------
|
| | | import ChConfig
|
| | | import GameWorld
|
| | | import SkillCommon
|
| | | import BuffSkill
|
| | | import SkillShell
|
| | | import IPY_GameWorld
|
| | |
|
| | | def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
|
| | |
|
| | | return True
|
| | |
|
| | |
|
| | | def GetValue(attacker, defender, passiveEffect):
|
| | | return passiveEffect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | playerItemControl = ItemControler.PlayerItemControler(attacker)
|
| | | return playerItemControl.GetStartEquipCount() * effect.GetEffectValue(0) * 1.0 / ChConfig.Def_MaxRateValue
|
| | | return playerItemControl.GetStartEquipCount() * effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
|
| | |
|
| | |
|
| | |
| | | return defender.GetJob() == effect.GetEffectValue(1)
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return effect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1)))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1))
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)
|
| | |
| | |
|
| | |
|
| | | def GetValue(attacker, defender, effect):
|
| | | return float(effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1)))/ChConfig.Def_MaxRateValue
|
| | | return effect.GetEffectValue(0)*min(PlayerControl.GetYinjiCnt(attacker), effect.GetEffectValue(1))
|
| | |
| | |
|
| | | 4000:ChConfig.TriggerType_BuffState, # 进入4012的某个状态触发技能 2
|
| | | 4001:ChConfig.TriggerType_TagBuffState, # 目标进入4012的某个状态触发技能 2
|
| | | 4002:ChConfig.TriggerType_AddDamagePer, # 提高增加伤害属性值,计算时 3
|
| | | 4003:ChConfig.TriggerType_AddDamagePer, # 提高增加伤害属性值,计算时 3
|
| | | 4004:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4
|
| | | 4005:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
|
| | | 4006:ChConfig.TriggerType_SuperHit, # 暴击时 触发技能6,
|
| | |
| | | 4027:ChConfig.TriggerType_AttackKill, # նɱ 24
|
| | | 4028:ChConfig.TriggerType_WillDead, # 进入濒死状态时触发技能 25
|
| | | 4029:ChConfig.TriggerType_BuffBoom, # 中毒后爆炸 26
|
| | | 4030:ChConfig.TriggerType_Success_Buff_SkillPer, # 提高4501成功概率 27
|
| | | #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
|
| | |
| | | 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
|
| | |
| | | 4500:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
|
| | | 4501:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类:提高主动技能的技能伤害
|
| | | 4502:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能
|
| | | 4503:ChConfig.TriggerType_AddDamagePer, # BUFF类: 攻击时提高增加伤害
|
| | | #4503:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类: 攻击时提高增加伤害
|
| | | 4504:ChConfig.TriggerType_BounceHP, # BUFF类: 反弹伤害固定值
|
| | | 4506:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能 只刷新属性 不触发技能
|
| | | 4507:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
|
| | |
| | | global g_ClientHurtDict
|
| | | g_ClientHurtDict = collections.OrderedDict()
|
| | |
|
| | | # 缓存单次技能攻击的最大伤害, 减少计算量
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientMaxHurtValue, 0)
|
| | | |
| | |
|
| | | def GetClientHurtByObj(objID, objType):
|
| | | global g_ClientHurtDict
|