| | |
| | | dMissSuccessRate += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_MissSuccessPer)
|
| | | skillID = curSkill.GetSkillID() if curSkill else 0
|
| | |
|
| | | |
| | | atkIsBoss = 0 # 攻击方是否boss
|
| | | suppressValueLV = 0 # 等级最终压制值, 由压制规则及相关参数计算得出,可作为伤害公式计算参数使用
|
| | | suppressValueFP = 0 # 战力最终压制值, 由压制规则及相关参数计算得出,可作为伤害公式计算参数使用
|
| | |
| | | suppressNPCFightPower = 0 # 压制NPC战力
|
| | | #当攻击方为NPC,防守方为玩家时,计算压制等级 及 压制战力
|
| | | if atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotPlayer:
|
| | | |
| | | if curSkill and curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_RealmSuppress:
|
| | | # 境界压制技能不对高等级境界玩家产生攻击
|
| | | aRealmLV, dRealmLV = GetPVERealmLVs(atkObj, defObj, atkObjType, defObjType) |
| | | if aRealmLV <= dRealmLV:
|
| | | return 0, ChConfig.Def_HurtType_Immune # 免疫
|
| | | |
| | | atkIsBoss = 1 if ChConfig.IsGameBoss(atkObj) else 0
|
| | | if NPCCommon.GetIsLVSuppress(atkObj):
|
| | | suppressLV = max(0, aLV - dLV)
|
| | |
| | | #------- 攻击方
|
| | | aMinAtk = atkObj.GetMinAtk() # 攻击方最小攻击
|
| | | aMaxAtk = atkObj.GetMaxAtk() # 攻击方最大攻击
|
| | | |
| | | aIceAtk = atkObj.GetIceAtk() # 冰攻, 元素真伤, 玩家及NPC通用
|
| | | aIceAtk += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddIceAtk)
|
| | | #------- 防守方
|
| | |
| | | aDamagePer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer)
|
| | |
|
| | | aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成
|
| | | aFinalHurtPer = PlayerControl.GetFinalHurtPer(atkObj) # 最外层伤害加成
|
| | | aFinalHurt = PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害
|
| | | # 被动增加最终伤害
|
| | | aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
|
| | |
| | | aSkillAtkRate += atkObj.GetSkillAtkRate()
|
| | | aDamagePer = 0 # 外层伤害加成
|
| | | aDamagePerPVP = 0 # 外层PVP伤害加成
|
| | | aFinalHurtPer = 0 # 最外层伤害加成
|
| | | aFinalHurt = NPCCommon.GetFinalHurt(atkObj) # 最终固定伤害
|
| | | aFightPower = NPCCommon.GetSuppressFightPower(atkObj)
|
| | |
|
| | |
|
| | | #防守方的类型
|
| | | if defObjType == IPY_GameWorld.gotPlayer:
|
| | |
| | | suppressFPFormula = hurtDist[suppressFormulaKeyFP]
|
| | | suppressValueFP = eval(FormulaControl.GetCompileFormula(suppressFormulaKeyFP, suppressFPFormula))
|
| | |
|
| | | # 境界压制百分比, 仅限PVP
|
| | | # 境界压制百分比
|
| | | SuppressValueRealmRate = 10000 # 默认值
|
| | | suppressRealm = 0
|
| | | if atkObjType == IPY_GameWorld.gotPlayer and defObjType == IPY_GameWorld.gotPlayer:
|
| | |
| | | hurtFormula = hurtDist[hurtFormulaKey]
|
| | | hurtValue = int(eval(FormulaControl.GetCompileFormula(hurtFormulaKey, hurtFormula)))
|
| | |
|
| | | if hurtType == ChConfig.Def_HurtType_Normal and SuppressValueRealmRate > 10000:
|
| | | # 存在压制
|
| | | return hurtValue, ChConfig.Def_HurtType_RealmSupress
|
| | | |
| | | return hurtValue, hurtType
|
| | |
|
| | |
|