| | |
| | |
|
| | | summonAtkPer = 1 # 召唤继承提高基础攻击力,取表
|
| | | if atkObj.GetGameObjType() == IPY_GameWorld.gotNPC and atkObj.GetGameNPCObjType() == IPY_GameWorld.gnotSummon:
|
| | | summonAtkPer = atkObj.GetDictByKey(ChConfig.Def_GameObjKey_InheritOwner)
|
| | | if summonAtkPer > 0:
|
| | | summonAtkPerValue = atkObj.GetDictByKey(ChConfig.Def_GameObjKey_InheritOwner)
|
| | | if summonAtkPerValue > 0:
|
| | | # 暴风雪类召唤兽转化为主人计算伤害
|
| | | atkObj = NPCCommon.GetSummonOwnerDetel(atkObj)
|
| | | if not atkObj:
|
| | | return 0, ChConfig.Def_HurtType_Miss
|
| | |
|
| | | summonAtkPer = summonAtkPer*1.0/ChConfig.Def_MaxRateValue
|
| | | summonAtkPer = summonAtkPerValue*1.0/ChConfig.Def_MaxRateValue
|
| | | #GameWorld.DebugLog("召唤兽取主人---------%s-%s-%s-%s"%(atkObj.GetID(), atkSkillPer, atkSkillValue, summonAtkPer))
|
| | |
|
| | | atkObjType = atkObj.GetGameObjType()
|
| | |
| | | #GameWorld.DebugLog("境界压制:aRealmLV=%s,dRealmLV=%s,aRealmGroup=%s,dRealmGroup=%s,SuppressValueRealmRate=%s"
|
| | | # % (aRealmLV, dRealmLV, aRealmGroup, dRealmGroup, SuppressValueRealmRate))
|
| | |
|
| | | else:
|
| | | #PVE 境界压制
|
| | | elif atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotPlayer:
|
| | | # EVP 境界压制
|
| | | aRealmLV, dRealmLV = GetPVERealmLVs(atkObj, defObj, atkObjType, defObjType)
|
| | | if aRealmLV + dRealmLV != 0:
|
| | | #有压制
|
| | | suppressRealm = aRealmLV - dRealmLV
|
| | | suppressRealm = aRealmLV - dRealmLV # 存在负数
|
| | | suppressRealmHurtPer = GetRealmHurtPer(aRealmLV, dRealmLV, 2) # 境界压制加成百分比,存在负数
|
| | | suppressFormulaKeyRealm = "EVPSuppressValueRealm"
|
| | | if suppressFormulaKeyRealm in hurtDist:
|
| | | SuppressValueRealmRate = int(eval(FormulaControl.GetCompileFormula(suppressFormulaKeyRealm, hurtDist[suppressFormulaKeyRealm])))
|
| | | |
| | | elif atkObjType == IPY_GameWorld.gotPlayer and defObjType == IPY_GameWorld.gotNPC:
|
| | | # PVE 境界压制
|
| | | aRealmLV, dRealmLV = GetPVERealmLVs(atkObj, defObj, atkObjType, defObjType) |
| | | if aRealmLV + dRealmLV != 0:
|
| | | #有压制
|
| | | suppressRealm = aRealmLV - dRealmLV # 存在负数
|
| | | suppressRealmHurtPer = GetRealmHurtPer(aRealmLV, dRealmLV, 3) # 境界压制加成百分比,存在负数
|
| | | suppressFormulaKeyRealm = "PVESuppressValueRealm"
|
| | | if suppressFormulaKeyRealm in hurtDist:
|
| | | SuppressValueRealmRate = int(eval(FormulaControl.GetCompileFormula(suppressFormulaKeyRealm, hurtDist[suppressFormulaKeyRealm])))
|
| | |
|
| | | |
| | |
|
| | | atkStateMark = GetObjAtkStateMark(atkObj)
|
| | | defStateMark = GetObjAtkStateMark(defObj)
|
| | |
| | |
|
| | | return hurtValue, hurtType
|
| | |
|
| | | # 获取EVP和PVE伤害百分比差,PVE无境界压制, 境界等级对应列表的index,越界取最高
|
| | | def GetRealmHurtPer(aRealmLV, dRealmLV, gridIndex):
|
| | | suppressRealmHurtPer = 0
|
| | | suppressRealmDict = IpyGameDataPY.GetFuncEvalCfg("RealmGroup", gridIndex)
|
| | | |
| | | plus_minus = 1 # 负数为反压制
|
| | | if aRealmLV >= dRealmLV:
|
| | | suppressList = range(dRealmLV+1, aRealmLV+1)
|
| | | else:
|
| | | suppressList = range(aRealmLV+1, dRealmLV+1)
|
| | | plus_minus = -1
|
| | | |
| | | |
| | | for realmLV in suppressList:
|
| | | suppressRealmHurtPer += suppressRealmDict.get(realmLV, 0)
|
| | | |
| | | return suppressRealmHurtPer*plus_minus
|
| | |
|
| | |
|
| | | # 获取双方境界值
|
| | | def GetPVERealmLVs(atkObj, defObj, atkObjType, defObjType):
|
| | | if atkObjType == IPY_GameWorld.gotNPC:
|
| | | aRealmLV = NPCCommon.GetRealmLV(atkObj)
|