Add: 2887 【后端】封魔坛鼓舞效果修改(增加最终伤害比例buffID94 FinalHurtPer);
| | |
| | | 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:
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPet, curTagNPC, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPet, curTagNPC, skill, tick)
|
| | | curTagNPCHPBeforeAtk = GameObj.GetHP(curTagNPC)
|
| | | hurtType = AttackCommon.GetHurtHP(curPet, curTagNPC, skill, skillValue, skillPercent, tick)
|
| | | hurtHP = hurtType.HurtHP
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPet, curTagPet, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPet, curTagPet, skill, tick)
|
| | | hurtType = AttackCommon.GetHurtHP(curPet, curTagPet, skill, skillValue, skillPercent, tick)
|
| | | hurtHP = hurtType.HurtHP
|
| | | #添加仇恨
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPet, curTagPlayer, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPet, curTagPlayer, skill, tick)
|
| | | curTagPlayerHPBeforeAtk = curTagPlayer.GetHP()
|
| | | hurtType = AttackCommon.GetHurtHP(curPet, curTagPlayer, skill, skillValue, skillPercent, tick)
|
| | | #伤血
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPet, curTagSummon, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPet, curTagSummon, skill, tick)
|
| | | hurtType = AttackCommon.GetHurtHP(curPet, curTagSummon, skill, skillValue, skillPercent, tick)
|
| | |
|
| | | hurtHP = hurtType.HurtHP
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 函数详细说明.
|
| | | def DoAttack(curPlayer, curTagNormalNPC, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPlayer, curTagNormalNPC, skill, tick)
|
| | |
|
| | | curTagNPCHPBeforeAtk = GameObj.GetHP(curTagNormalNPC)
|
| | | hurtType = AttackCommon.GetHurtHP(curPlayer, curTagNormalNPC, skill, skillValue, skillPercent, tick)
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPlayer, curTagPet, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPlayer, curTagPet, skill, tick)
|
| | |
|
| | | #攻击前血量
|
| | | curTagPetHP = curTagPet.GetHP()
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPlayer, curTagPlayer, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPlayer, curTagPlayer, skill, tick)
|
| | |
|
| | | curTagPlayerHPBeforeAtk = curTagPlayer.GetHP()
|
| | |
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 攻击
|
| | | def DoAttack(curPlayer, curTagSummon, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPlayer, curTagSummon, skill, tick)
|
| | |
|
| | | #攻击前血量
|
| | | curTagSummonBeHP = GameObj.GetHP(curTagSummon)
|
| | |
| | | # @return hurtType : HurtType 伤害结构体类
|
| | | # @remarks 函数详细说明.
|
| | | def DoAttack(curPlayer, curTagTruck, skill, skillValue, skillPercent, skillHurtList, tick):
|
| | | #finalHurtPer = SkillCommon.GetSkillFinalHurtPer(curPlayer, curTagTruck, skill, tick)
|
| | |
|
| | | curTagNPCHPBeforeAtk = GameObj.GetHP(curTagTruck)
|
| | | #攻击成功
|
| | |
| | | TYPE_Calc_JobCAtkReducePer, # 弓手攻击伤害减免
|
| | |
|
| | | TYPE_Calc_CommMapExpRate, # 常规地图经验倍率加成
|
| | | TYPE_Calc_FujiaHitRate, # 富甲一击几率
|
| | | TYPE_Calc_FinalHurtPer, # 最终伤害百分比
|
| | | TYPE_Calc_FuhaoHitRate, # 富豪一击几率 95
|
| | | TYPE_Calc_BossIDHurt, # 对指定boss伤害加成固定值
|
| | | TYPE_Calc_BossIDHurtAddPer, # 对指定boss伤害加成倍率
|
| | |
| | | Def_LuckyHitVal = 11000
|
| | | #卓越一击的攻击力相对普攻倍值
|
| | | Def_GreatHitVal = 12500
|
| | | #富甲一击的攻击力相对普攻倍值
|
| | | Def_FujiaHitVal = 11000
|
| | | #富豪一击的攻击力相对普攻倍值
|
| | | Def_FuhaoHitVal = 11000
|
| | | #服务器统一使用万分率(用于计算百分比 10000为100%)
|
| | |
| | | Def_PlayerKey_LastHurtValue = "LastHurtValue" # 最后一次伤害值
|
| | | Def_PlayerKey_ReduceSkillCDPer = "ReduceSkillCDPer" # 减技能CD万分率
|
| | | Def_PlayerKey_CommMapExpRate = "CommMapExpRate" # 常规地图经验倍率加成
|
| | | Def_PlayerKey_FujiaHitRate = "FujiaHitRate" # 富甲一击概率
|
| | | Def_PlayerKey_FinalHurtPer = "FinalHurtPer" # 最终伤害百分比
|
| | | Def_PlayerKey_FuhaoHitRate = "FuhaoHitRate" # 富豪一击概率
|
| | | Def_PlayerKey_FinalHurt = "FinalHurt" # 最终固定伤害增加
|
| | | Def_PlayerKey_BleedDamage = "BleedDamage" # 流血伤害
|
| | |
| | | AttrName_GreatHitRateReduce = "GreatHitRateReduce" # 抗卓越一击概率
|
| | | AttrName_SuperHitRateReduce = "SuperHitRateReduce" # 抗致命一击概率
|
| | | AttrName_IgnoreDefRateReduce = "IgnoreDefRateReduce" # 抗无视防御概率
|
| | | AttrName_FujiaHitRate = "FujiaHitRate" # 富甲一击概率
|
| | | AttrName_FinalHurtPer = "FinalHurtPer" # 最终伤害百分比
|
| | | AttrName_FuhaoHitRate = "FuhaoHitRate" # 富豪一击概率
|
| | | AttrName_FinalHurt = "FinalHurt" # 最终固定伤害增加
|
| | | AttrName_FinalHurtReduce = "FinalHurtReduce" # 最终固定伤害减少
|
| | |
| | | ShareDefine.Def_Effect_SuperHitRateReduce:[[TYPE_Calc_SuperHitRateReduce], False, TYPE_Linear],
|
| | | AttrName_DamReducePer:[[TYPE_Calc_AttrDamReduce], False, TYPE_Linear],
|
| | | AttrName_DamagePer:[[TYPE_Calc_DamagePer], False, TYPE_Linear],
|
| | | AttrName_FujiaHitRate:[[TYPE_Calc_FujiaHitRate], False, TYPE_Linear],
|
| | | AttrName_FinalHurtPer:[[TYPE_Calc_FinalHurtPer], False, TYPE_Linear],
|
| | | AttrName_FuhaoHitRate:[[TYPE_Calc_FuhaoHitRate], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_FinalHurt:[[TYPE_Calc_FinalHurt], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_FinalHurtReduce:[[TYPE_Calc_FinalHurtReduce], False, TYPE_Linear],
|
| | |
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value, False)
|
| | |
|
| | | #---特殊伤害概率---
|
| | | ## 富甲一击概率
|
| | | def GetFujiaHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FujiaHitRate)
|
| | | def SetFujiaHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FujiaHitRate, value)
|
| | | ## 富豪一击概率
|
| | | def GetFuhaoHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FuhaoHitRate)
|
| | | def SetFuhaoHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FuhaoHitRate, value)
|
| | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value)
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BleedDamage, value, False)
|
| | |
|
| | | ## 最终伤害百分比
|
| | | def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer)
|
| | | def SetFinalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value)
|
| | |
|
| | | ## 最终固定伤害增加
|
| | | def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt)
|
| | | def SetFinalHurt(curPlayer, value):
|
| | |
| | | PetControl.DoLogic_PlayerPetLearnSkillList(rolePet, learnSkillList)
|
| | |
|
| | | #---刷新属性(不通知)---
|
| | | #GameWorld.DebugLog("ˢǰ: petID=%s,playerID=%s,npcID=%s,BindType=%s,AIMode=%s,PetIndex=%s,petFinalHurtPer=%s,grade=%s,qualLV=%s," |
| | | #GameWorld.DebugLog("ˢǰ: petID=%s,playerID=%s,npcID=%s,BindType=%s,AIMode=%s,PetIndex=%s,grade=%s,qualLV=%s," |
| | | # % (petStruct.PetID, petStruct.PlayerID, petStruct.NPCID, petStruct.BindType, petStruct.AIMode, petStruct.PetIndex,
|
| | | # rolePet.GetBattleValEx5(), rolePet.GetGrade(), rolePet.GetQualityLV()))
|
| | | # rolePet.GetGrade(), rolePet.GetQualityLV()))
|
| | | petControl = NPCCommon.NPCControl(rolePet)
|
| | | petControl.RefreshNPCState(canSyncClient=False)
|
| | | #GameWorld.DebugLog("刷后: petID=%s,playerID=%s,npcID=%s,BindType=%s,AIMode=%s,PetIndex=%s,petFinalHurtPer=%s,grade=%s,qualLV=%s," |
| | | #GameWorld.DebugLog("刷后: petID=%s,playerID=%s,npcID=%s,BindType=%s,AIMode=%s,PetIndex=%s,grade=%s,qualLV=%s," |
| | | # % (petStruct.PetID, petStruct.PlayerID, petStruct.NPCID, petStruct.BindType, petStruct.AIMode, petStruct.PetIndex,
|
| | | # rolePet.GetBattleValEx5(), rolePet.GetGrade(), rolePet.GetQualityLV()))
|
| | | # rolePet.GetGrade(), rolePet.GetQualityLV()))
|
| | |
|
| | | #当前血量(不通知)
|
| | | PetControl.SetPetHP(rolePet, rolePet.GetMaxHP(), False)
|
| | |
| | | [lambda curObj:PlayerControl.GetJobCAtkReducePer(curObj), lambda curObj, value:PlayerControl.SetJobCAtkReducePer(curObj, value), 0, 0, 0], # 弓手攻击伤害减免
|
| | |
|
| | | [lambda curObj:PlayerControl.GetCommMapExpRate(curObj), lambda curObj, value:PlayerControl.SetCommMapExpRate(curObj, value), 0, 0, 0], # 常规地图经验倍率加成
|
| | | [lambda curObj:PlayerControl.GetFujiaHitRate(curObj), lambda curObj, value:PlayerControl.SetFujiaHitRate(curObj, value), 0, 0, 0], # 富甲一击概率
|
| | | [lambda curObj:PlayerControl.GetFinalHurtPer(curObj), lambda curObj, value:PlayerControl.SetFinalHurtPer(curObj, value), 0, 0, 0], # 最终伤害百分比
|
| | | [lambda curObj:PlayerControl.GetFuhaoHitRate(curObj), lambda curObj, value:PlayerControl.SetFuhaoHitRate(curObj, value), 0, 0, 0], # 富豪一击概率
|
| | | [lambda curObj:PlayerControl.GetBossIDHurt(curObj), lambda curObj, value:PlayerControl.SetBossIDHurt(curObj, value), 0, 0, 0], # 对指定boss伤害加成固定值
|
| | | [lambda curObj:PlayerControl.GetBossIDHurtAddPer(curObj), lambda curObj, value:PlayerControl.SetBossIDHurtAddPer(curObj, value), 0, 0, 0],# 对指定boss伤害加成倍率
|
| | |
| | | return restoreMP
|
| | |
|
| | |
|
| | | ## 获取技能对最终伤害影响的效果比例
|
| | | # @param skill 使用的技能
|
| | | # @return |
| | | #===============================================================================
|
| | | # def GetSkillFinalHurtPer(atkObj, defObj, skill, tick):
|
| | | # |
| | | # atkObjType = atkObj.GetGameObjType()
|
| | | # defObjType = defObj.GetGameObjType()
|
| | | # |
| | | # finalPer = ChConfig.Def_MaxRateValue # 默认10000
|
| | | # |
| | | # if atkObjType != IPY_GameWorld.gotPlayer:
|
| | | # return finalPer
|
| | | # |
| | | # # 技能对玩家的影响
|
| | | # if defObjType == IPY_GameWorld.gotPlayer:
|
| | | # |
| | | # # 减少值
|
| | | # reduceHurtPerEff = GetSkillEffectByEffectID(skill, ChConfig.Def_Skill_Effect_ReduceFinalHurtPer)
|
| | | # curReducePer = 0 if not reduceHurtPerEff else reduceHurtPerEff.GetEffectValue(0)
|
| | | # finalPer -= curReducePer
|
| | | # |
| | | # # 增加值
|
| | | # addHurtPerEff = GetSkillEffectByEffectID(skill, ChConfig.Def_Skill_Effect_AddFinalHurtPer)
|
| | | # curAddPer = 0 if not addHurtPerEff else addHurtPerEff.GetEffectValue(0)
|
| | | # finalPer += curAddPer
|
| | | # |
| | | # #根据防守方职业 计算攻击方伤害加成
|
| | | # if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
|
| | | # finalPer += PlayerControl.GetJobAHurtAddPer(atkObj)
|
| | | # elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
|
| | | # finalPer += PlayerControl.GetJobBHurtAddPer(atkObj)
|
| | | # elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
|
| | | # finalPer += PlayerControl.GetJobCHurtAddPer(atkObj)
|
| | | # |
| | | # # 对NPC的影响
|
| | | # elif defObjType == IPY_GameWorld.gotNPC:
|
| | | # finalPer += PlayerControl.GetNPCHurtAddPer(atkObj)
|
| | | # if defObj.GetNPCID() in ReadChConfig.GetEvalChConfig("PlayerSpecialAttrBossID"):
|
| | | # finalPer += PlayerControl.GetBossIDHurtAddPer(atkObj)
|
| | | # |
| | | # # 技能连击加成
|
| | | # curSkillTypeID = skill.GetSkillTypeID()
|
| | | # comboSkillTypeID = atkObj.GetDictByKey(ChConfig.Def_PlayerKey_ComboSkillTypeID)
|
| | | # # 如果是触发连击的技能, 则附加连击伤害加成
|
| | | # if curSkillTypeID == comboSkillTypeID:
|
| | | # comboAddPer = atkObj.GetDictByKey(ChConfig.Def_PlayerKey_ComboAddHurtPer)
|
| | | # finalPer += comboAddPer
|
| | | # GameWorld.DebugLog("连击最终伤害加成%s, skillID=%s" % (comboAddPer, curSkillTypeID))
|
| | | # |
| | | # finalPer = max(0, finalPer)
|
| | | # |
| | | # return finalPer
|
| | | #===============================================================================
|
| | |
|
| | | ## 更新技能连击数
|
| | | # @param attacker
|
| | | # @param skill 使用的技能
|