| | |
| | | # Def_HurtType_SuperHit,
|
| | | # Def_HurtType_Miss,
|
| | | # ) = range(0, 3)
|
| | | # #类型: 0-普通 1-致命一击 2-躲闪
|
| | | # #类型: 0-普通 1-暴击 2-躲闪
|
| | | #===============================================================================
|
| | |
|
| | | ## 伤害结构体类
|
| | |
| | |
|
| | |
|
| | | def __HurtTypeHappen_LuckyHit(atkObj, defObj, happenState):
|
| | | ''' 判断伤害类型是否发生 - 幸运一击
|
| | | @return: 是否触发, 触发时伤害计算值, 触发时防守方的伤害减免值
|
| | | ''' 判断伤害类型是否发生 - 会心一击
|
| | | @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值
|
| | | '''
|
| | | if IsHappenStateByType(happenState, ChConfig.Def_Skill_HappenState_LuckyHit):
|
| | | return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReducePer(defObj)
|
| | | return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj)
|
| | |
|
| | | aLuckyHitRate = atkObj.GetLuckyHitRate()
|
| | | dLuckyHitRateReduce = PlayerControl.GetLuckyHitRateReduce(defObj)
|
| | |
| | | if atkLuckyHitRate <= 0:
|
| | | return
|
| | | if GameWorld.CanHappen(atkLuckyHitRate):
|
| | | return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReducePer(defObj)
|
| | | return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj)
|
| | | return
|
| | |
|
| | | def __HurtTypeHappen_SuperHit(atkObj, defObj, happenState):
|
| | | ''' 判断伤害类型是否发生 - 暴击
|
| | | @return: 是否触发, 触发时伤害计算值, 触发时防守方的伤害减免值
|
| | | @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值
|
| | | '''
|
| | |
|
| | | if IsHappenStateByType(happenState, ChConfig.Def_Skill_HappenState_SuperHit):
|
| | | return True, atkObj.GetSuperHit(), PlayerControl.GetSuperHitReducePer(defObj)
|
| | | return True, atkObj.GetSuperHit(), PlayerControl.GetSuperHitReduce(defObj)
|
| | |
|
| | | aSuperHitRate = atkObj.GetSuperHitRate()
|
| | | dSuperHitRateReduce = PlayerControl.GetSuperHitRateReduce(defObj)
|
| | |
| | | if superHitRate <= 0:
|
| | | return
|
| | | if GameWorld.CanHappen(superHitRate):
|
| | | return True, atkObj.GetSuperHit(), PlayerControl.GetSuperHitReducePer(defObj)
|
| | | return True, atkObj.GetSuperHit(), PlayerControl.GetSuperHitReduce(defObj)
|
| | | return
|
| | |
|
| | | def __HurtTypeHappen_Parry(atkObj, defObj, happenState):
|
| | |
| | | dDamChanceDef = hurtTypeResultDict[ChConfig.Def_HurtType_Parry][2] # 抵御, 大于0代表触发抵御效果
|
| | | isZhuxianHit, aZhuxianHurtPer, dZhuxianReducePer = hurtTypeResultDict[ChConfig.Def_HurtType_Zhuxian] # 诛仙一击
|
| | | isDeadlyHit = hurtTypeResultDict[ChConfig.Def_HurtType_DeadlyHit][0] # 致命一击
|
| | | aSuperHitPer = PlayerControl.GetSuperHitPer(atkObj) if isSuperHit else 0 # 暴击伤害加成万分率
|
| | | aLuckyHitPer = PlayerControl.SetLuckyHitPer(atkObj) if isLuckyHit else 0 # 会心一击伤害加成万分率
|
| | |
|
| | | if PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_OneDamage):
|
| | | return 1, hurtType
|
| | |
| | |
|
| | |
|
| | | if isLuckyHit:
|
| | | # 会心一击时增加会心伤害百分比 |
| | | # 会心一击时增加会心伤害固定值 |
| | | aLuckyHit += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_LuckyHit)
|
| | | aLuckyHit -= PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_BeLuckyHitSubPer)
|
| | | aLuckyHit = max(aLuckyHit, 0)
|
| | |
| | | dHP = GameObj.GetHP(defObj) # 防守方当前血量
|
| | | dMaxHP = GameObj.GetMaxHP(defObj) # 防守方最大血量
|
| | | dIceDef = defObj.GetIceDef() # 冰防, 元素真防, 玩家及NPC通用
|
| | | dFinalHurtReducePer = 0 # 最终伤害减少百分比 默认0
|
| | |
|
| | | # 攻击方
|
| | | if atkObjType == IPY_GameWorld.gotPlayer:
|
| | | aIgnoreDefRate = atkObj.GetIgnoreDefRate() # 无视防御比率
|
| | | aSkillAtkRate = atkObj.GetSkillAtkRate() # 技能攻击力加成
|
| | | aDamagePer = PlayerControl.GetDamagePer(atkObj) # 外层伤害加成
|
| | | aDamagePVP = PlayerControl.GetDamagePVP(atkObj) # PVP固定伤害
|
| | | aDamagePVE = PlayerControl.GetDamagePVE(atkObj) # PVE固定伤害
|
| | | |
| | | # 被动技能增加伤害
|
| | | aDamagePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer)
|
| | | aDamagePer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer)
|
| | | #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伤害加成
|
| | |
| | | aSkillAtkRate += atkObj.GetSkillAtkRate()
|
| | |
|
| | | aNPCHurtAddPer = 0 # PVE伤害加成
|
| | | aDamagePer = 0 # 外层伤害加成
|
| | | aDamagePerPVP = 0 # 外层PVP伤害加成
|
| | | aDamagePVP = 0 # PVP固定伤害
|
| | | aDamagePVE = 0 # PVE固定伤害
|
| | | aFinalHurt = NPCCommon.GetFinalHurt(atkObj) # 最终固定伤害
|
| | | aFightPower = NPCCommon.GetSuppressFightPower(atkObj)
|
| | |
|
| | |
| | | if defObjType == IPY_GameWorld.gotPlayer:
|
| | | dIgnoreDefRateReduce = PlayerControl.GetIgnoreDefRateReduce(defObj) # 无视防御比率抗性
|
| | | dSkillAtkRateReduce = PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少
|
| | | dDamReduce = defObj.GetDamageReduceRate() # 外层减伤
|
| | | dDamReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReduce)
|
| | | dDamagePVPReduce = PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤
|
| | | #dDamReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReduce)
|
| | | dDamagePerPVPReduce = PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤
|
| | | dDamagePerPVPReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReducePVP)
|
| | | dFinalHurtReduce = PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少
|
| | | dBeHurtPer = PlayerControl.GetBeHurtPer(defObj) # 加深受到伤害百分比
|
| | | dFightPower = defObj.GetFightPower()
|
| | | dFinalHurtReducePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_dFinalHurtReducePer)
|
| | | dFinalHurtReducePer = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_dFinalHurtReducePer)
|
| | |
|
| | | else:
|
| | | dIgnoreDefRateReduce = 0 # 无视防御比率抗性
|
| | | dSkillAtkRateReduce = 0 # 技能攻击力减少
|
| | | dDamReduce = 0 # 外层减伤 |
| | | dDamagePVPReduce = 0 # PVP固定减伤
|
| | | dDamagePerPVPReduce = 0 # 外层PVP减伤
|
| | | dFinalHurtReduce = 0 # 最终固定伤害减少
|
| | | dBeHurtPer = 0
|
| | | dFightPower = NPCCommon.GetSuppressFightPower(defObj)
|
| | | |
| | | dFinalHurtReducePer = 0 # 最终伤害减少百分比 默认0
|
| | |
|
| | | #攻击字典 { 攻击类型 : '公式' }
|
| | | hurtDist = ReadChConfig.GetEvalChConfig('CalcAttackValue')
|