From f8c4038119f81caeb58f9d28ca73478bb6c9a0fe Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 26 九月 2018 21:19:22 +0800 Subject: [PATCH] 3878 【后端】神兽装备评分参数(增加真实伤害、真实抵抗参数) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 30 ++++++++++++++++++++++++++---- 1 files changed, 26 insertions(+), 4 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py index b07fa6b..967058e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py @@ -1547,7 +1547,6 @@ # 血盾 hurtValue = CalcBloodShield(atkObj, defObj, hurtValue) - remainHP = min(dMaxHP, max(0, dHP - hurtValue)) # 剩余血量 remainHP = int(remainHP) #防范 @@ -1569,6 +1568,12 @@ else: GameWorld.ErrLog('计算伤血值时,防守方类型错误:defObjType = %s' % (defObjType)) return resultHurtType + + if GameObj.GetHP(defObj) > 0: + # 被攻击者将部分伤害转化为血量, 返回转化的百分比(小数点) + changePer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ChangeHurtToHP) + if changePer: + SkillCommon.SkillAddHP(defObj, 0, int(changePer*hurtValue)) lostValue = dHP - GameObj.GetHP(defObj) # 实际掉血量 resultHurtType.LostHP = lostValue @@ -1696,6 +1701,10 @@ if PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_OneDamage): return 1, hurtType + worldLV = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_WorldAverageLv) + wLVIpyData = PlayerControl.GetPlayerLVIpyData(worldLV) + wReFightPower = 0 if not wLVIpyData else wLVIpyData.GetReFightPower() # 当前世界等级参考战力 + # 改变技能伤害 atkSkillPer, atkSkillValue = ChangeSkillHurt(atkObj, defObj, curSkill, atkSkillPer, atkSkillValue) @@ -1715,6 +1724,10 @@ # 暴击增加技能伤害 atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer) + + if isLuckyHit: + # 会心一击时增加会心伤害百分比 + aLuckyHit += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_LuckyHit) #参与运算的数值 rand = random.random() #种子数 0~1 @@ -1742,8 +1755,9 @@ aDamagePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer) aDamagePer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddDamagePer) + aNPCHurtAddPer = PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成 aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成 - aFinalHurtPer = PlayerControl.GetFinalHurtPer(atkObj) # 最外层伤害加成 + aFinalHurtPer = PlayerControl.GetFinalHurtPer(atkObj) # 最外层伤害加成, 可能为负值 aFinalHurt = PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害 # 被动增加最终伤害 aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue) @@ -1757,9 +1771,10 @@ aSkillAtkRate = NPCCommon.GetSkillAtkRate(atkObj) # 技能攻击力加成 if atkObjType == IPY_GameWorld.gotNPC and atkObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet: aSkillAtkRate += atkObj.GetSkillAtkRate() + aNPCHurtAddPer = 0 # PVE伤害加成 aDamagePer = 0 # 外层伤害加成 aDamagePerPVP = 0 # 外层PVP伤害加成 - aFinalHurtPer = 0 # 最外层伤害加成 + aFinalHurtPer = 0 # 最外层伤害加成, 可能为负值 aFinalHurt = NPCCommon.GetFinalHurt(atkObj) # 最终固定伤害 aFightPower = NPCCommon.GetSuppressFightPower(atkObj) @@ -1839,7 +1854,13 @@ if suppressFormulaKeyRealm in hurtDist: SuppressValueRealmRate = int(eval(FormulaControl.GetCompileFormula(suppressFormulaKeyRealm, hurtDist[suppressFormulaKeyRealm]))) - + # 骑宠争夺最终伤害衰减 + if FamilyRobBoss.IsHorsePetRobBoss(defObj.GetNPCID()): + findBuff = SkillCommon.FindBuffByID(atkObj, ChConfig.Def_SkillID_HorsePetRobBossKillCntBuff)[0] + if findBuff: + reduceFinalHurtPer = findBuff.GetSkill().GetEffect(0).GetEffectValue(0) + aFinalHurtPer -= reduceFinalHurtPer + atkStateMark = GetObjAtkStateMark(atkObj) defStateMark = GetObjAtkStateMark(defObj) hurtFormulaKey = "%sV%s_%s" % (atkStateMark, defStateMark, atkType) @@ -2068,6 +2089,7 @@ atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj) # 百分比吸血 atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, None, None, ChConfig.TriggerType_Buff_SuckBloodPer) + atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, None, None, ChConfig.TriggerType_Buff_SuckBloodPer) atkBackHP += int(hurtValue * atkBackHPPer*1.0 / ChConfig.Def_MaxRateValue) suckHP += atkBackHP -- Gitblit v1.8.0