From cc207773cbedb51c20300a87c62529ace416b086 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 19 九月 2025 19:23:35 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(无敌支持,免疫伤害、dot、控制;小怪技能;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 392 ++++++++++++++-----------------------------------------
1 files changed, 102 insertions(+), 290 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 7c2c9c7..f1d7758 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
@@ -31,7 +31,6 @@
import PlayerControl
import NPCCommon
import SkillCommon
-import EffGetSet
import FBLogic
import ReadChConfig
import PetControl
@@ -46,15 +45,10 @@
import GameObj
import BuffSkill
import PlayerState
-import MirrorAttack
import ChPyNetSendPack
-import NPCHurtManager
import NetPackCommon
-import FamilyRobBoss
import FBCommon
import ChNPC
-import BossHurtMng
-import NPCHurtMgr
import ChNetSendPack
import TurnAttack
@@ -374,15 +368,6 @@
AddHurtValue(defender, attacker.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1)
return
-## 被攻击者被动buff触发
-# @param curTagPlayer 被攻击者
-# @param tick 当前时间
-# @param isSuperHit 暴击
-# @return None
-# @remarks 函数详细说明.
-def DefenderSpringBuff(curTagPlayer, tick, isSuperHit=False):
- return
-
#---------------------------------------------------------------------
def GetBattleRelationType(attacker, defender):
@@ -448,66 +433,6 @@
#NPC读表取
return attack.GetHurtType()
-def GetAtkDistType(curObj):
- ## 获取是近战还是远程,默认近战
- if curObj.GetGameObjType() != IPY_GameWorld.gotNPC:
- return ChConfig.AtkDistType_Short
-
- playerID = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_LineupPlayerID)
- if not playerID:
- return ChConfig.AtkDistType_Short
-
- heroID = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_HeroID)
- if heroID:
- heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)
- if heroIpyData:
- return heroIpyData.GetAtkDistType()
-
- npcID = curObj.GetNPCID()
- npcDataEx = NPCCommon.GetNPCDataEx(npcID)
- if npcDataEx:
- return npcDataEx.GetAtkDistType()
-
- return ChConfig.AtkDistType_Short
-
-## 输入基础数值,返回增强后的值 - 技能加强
-# @param value 基础值
-# @param skill 技能
-# @return 增强后的值
-# @remarks 函数详细说明.
-def GetEnhanceValue(value, skill):
- per = skill.GetEffect(0).GetEffectValue(0)
- eff = skill.GetEffect(0).GetEffectValue(1)
- #GameWorld.Log("被动 -> 自身属性,技能ID = %s,技能增强 = %s,附加 = %s , 基础值 = %s"%(skill.GetSkillName(),per,eff,value))
- return max(value * per / ChConfig.Def_MaxRateValue + eff , 1)
-
-## 输入基础数值,返回增强后的值 (LV)- 效果加强
-# @param value 基础值
-# @param eff 效果
-# @return 增强后的值
-# @remarks 函数详细说明.
-def GetEnhanceValue_Eff(value, eff):
- per = eff.GetEffectValue(0)
- eff = eff.GetEffectValue(1)
- #GameWorld.Log("value = %s,per = %s,erf = %s"%(value,per,eff))
- return max(value * per / ChConfig.Def_MaxRateValue + eff , 1)
-
-## 输入基础效果值,(玩家索引) -> 技能增强
-# @param curPlayer 当前玩家
-# @param curEffect 当前效果
-# @return 增强后的值
-# @remarks 函数详细说明.
-def GetEnhanceIndexValue_Eff(curPlayer, curEffect):
- index = curEffect.GetEffectValue(0)
- skillPer = curEffect.GetEffectValue(1)
- effect = curEffect.GetEffectValue(2)
- maxValue = EffGetSet.GetValueByEffIndex(curPlayer, index)
- #GameWorld.Log("-----%s,%s,%s,%s"%(index,skillPer,effect,maxValue))
-
- if maxValue == None:
- return 0
-
- return max(maxValue * skillPer / ChConfig.Def_MaxRateValue + effect , 1)
#--------------------------------------------------------------------------
## 设置玩家进入战斗状态
# @param defender 当前玩家(被攻击了)
@@ -686,19 +611,11 @@
curObjType = curObj.GetGameObjType()
if curObjType == IPY_GameWorld.gotPlayer:
- #BossHurtMng.BossAddPlayerInHurtList(curObj, curTagObj, hurtHP)
- FamilyRobBoss.OnPlayerHurtFamilyOwnerBoss(curObj, curTagObj, hurtHP)
if curTagObj.GetGameObjType() == IPY_GameWorld.gotNPC:
FBLogic.DoFB_Player_HurtNPC(curObj, curTagObj, hurtHP)
if GameObj.GetHP(curTagObj) == 0:
curTagObj.SetDict(ChConfig.Def_PlayerKey_LastHurt, curObj.GetPlayerID())
- if NPCHurtManager.AddHurtValue(curObj, curTagObj, hurtHP, isBounce):
- return
-
- if NPCHurtMgr.AddHurtValue(curObj, curTagObj, hurtHP, isBounce):
- return
-
curTeam = curObj.GetTeam()
if curTeam == None:
#无队伍,添加个人伤害
@@ -764,10 +681,6 @@
#if not CheckAttackNPCByCnt(attacker, defender):
# return False
- #击杀次数判断
- if not NPCHurtManager.IsAssistPlayer(attacker.GetPlayerID(), defender) and not CheckKillNPCByCnt(attacker, defender):
- return False
-
#仙盟归属NPC判断
if not CheckCanAttackFamilyOwnerNPC(attacker, defender):
return False
@@ -778,10 +691,6 @@
#if not CheckAttackNPCByCnt(defender, attacker, False):
# return False
- #击杀次数判断
- if not CheckKillNPCByCnt(defender, attacker, False) and not NPCHurtManager.IsAssistPlayer(defender.GetPlayerID(), attacker):
- return False
-
#仙盟归属NPC判断
if not CheckCanAttackFamilyOwnerNPC(defender, attacker, False):
return False
@@ -789,11 +698,11 @@
# NPC打NPC
elif atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotNPC:
if PetControl.IsPet(attacker) or attacker.GetGameNPCObjType()== IPY_GameWorld.gnotSummon:
- #击杀次数判断
- if not CheckKillNPCByCnt(attacker, defender, False):
- ownerPlayer = GetAttackPlayer(attacker)[0]
- if ownerPlayer and not NPCHurtManager.IsAssistPlayer(ownerPlayer.GetPlayerID(), defender):
- return False
+ ##击杀次数判断
+ #if not CheckKillNPCByCnt(attacker, defender, False):
+ # ownerPlayer = GetAttackPlayer(attacker)[0]
+ # if ownerPlayer and not NPCHurtManager.IsAssistPlayer(ownerPlayer.GetPlayerID(), defender):
+ # return False
#仙盟归属NPC判断
if not CheckCanAttackFamilyOwnerNPC(attacker, defender, False):
@@ -906,28 +815,15 @@
if not GameFuncComm.GetFuncCanUse(atkPlayer, funcID):
PlayerControl.NotifyCode(atkPlayer, funcSysMark)
return
- canKillCnt = BossHurtMng.GetCanKillBossCnt(atkPlayer, index)[0]
-
- if canKillCnt <= 0:
- #if BossHurtMng.GetPlayerBossHurt(atkPlayer, defender):
- # GameWorld.DebugLog("攻击过该boss可继续攻击")
- # return True
- #次数不足
- # 实际攻击者类型None则需要提示玩家
- if npcObjType is None:
- if isNotify:
- sysMark = IpyGameDataPY.GetFuncEvalCfg('KillBossCntLimit', 3, {}).get(index, '')
- PlayerControl.NotifyCode(atkPlayer, sysMark)
- return False
-
- npcDataEx = NPCCommon.GetNPCDataEx(npcID)
- if npcDataEx and npcDataEx.GetFightPowerLackAtkLimit():
- if npcDataEx.GetSuppressFightPower() > PlayerControl.GetFightPower(atkPlayer):
- if isNotify:
- PlayerControl.NotifyCode(atkPlayer, "BossFightPowerHint")
- #GameWorld.DebugLog("战力不足,无法攻击boss! npcID=%s,SuppressFightPower=%s > playerFightPower=%s"
- # % (npcID, npcDataEx.GetSuppressFightPower(), PlayerControl.GetFightPower(atkPlayer)))
- return False
+
+ #npcDataEx = NPCCommon.GetNPCDataPy(npcID)
+ #if npcDataEx and npcDataEx.GetFightPowerLackAtkLimit():
+ # if npcDataEx.GetSuppressFightPower() > PlayerControl.GetFightPower(atkPlayer):
+ # if isNotify:
+ # PlayerControl.NotifyCode(atkPlayer, "BossFightPowerHint")
+ # #GameWorld.DebugLog("战力不足,无法攻击boss! npcID=%s,SuppressFightPower=%s > playerFightPower=%s"
+ # # % (npcID, npcDataEx.GetSuppressFightPower(), PlayerControl.GetFightPower(atkPlayer)))
+ # return False
return True
@@ -954,9 +850,6 @@
hasAttackCnt = atkPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WorldBoss_HurtCnt, 0)
if hasAttackCnt >= limitCnt:
- #if BossHurtMng.GetPlayerBossHurt(atkPlayer, defender):
- # GameWorld.DebugLog("攻击过该boss可继续攻击")
- # return True
#次数不足
# 实际攻击者类型None则需要提示玩家
if npcObjType is None:
@@ -1379,25 +1272,6 @@
return hurtType, hurtTypeResultDict
-
-def __HurtTypeHappen_LuckyHit(atkObj, defObj, happenState, curSkill):
- ''' 判断伤害类型是否发生 - 会心一击
- @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值
- '''
- if IsHappenStateByType(happenState, ChConfig.Def_Skill_HappenState_LuckyHit):
- return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj)
-
- aLuckyHitRate = atkObj.GetLuckyHitRate()
- dLuckyHitRateReduce = PlayerControl.GetLuckyHitRateReduce(defObj)
-
-
- atkLuckyHitRate = eval(ReadChConfig.GetChConfig("CalcLuckyHitRate"))
- if atkLuckyHitRate <= 0:
- return
- if GameWorld.CanHappen(atkLuckyHitRate):
- return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj)
- return
-
def __HurtTypeHappen_SuperHit(atkObj, defObj, happenState, curSkill):
''' 判断伤害类型是否发生 - 暴击
@return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值
@@ -1423,22 +1297,12 @@
''' 判断伤害类型是否发生 - 防守方抵御
@return: 是否触发, 触发时伤害计算值, 触发时防守方的伤害减免值
'''
- chanceDefPer = PlayerControl.GetDamChanceDef(defObj)
- if not chanceDefPer:
- return
- if GameWorld.CanHappen(ChConfig.Def_ChanceDefRate):
- return True, 0, chanceDefPer
- return
-
-#def __HurtTypeHappen_Zhuxian(atkObj, defObj, happenState, curSkill):
-# """诛仙一击"""
-# rate = PlayerControl.GetZhuXianRate(atkObj)
-# if not rate:
+# chanceDefPer = PlayerControl.GetDamChanceDef(defObj)
+# if not chanceDefPer:
# return
-#
-# if GameWorld.CanHappen(rate):
-# return True, PlayerControl.GetZhuXianHurtPer(atkObj), 0
-# return
+# if GameWorld.CanHappen(ChConfig.Def_ChanceDefRate):
+# return True, 0, chanceDefPer
+ return
# 致命一击
def __HurtTypeHappen_Deadly(atkObj, defObj, happenState, curSkill):
@@ -1483,21 +1347,21 @@
if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
reducePer = SkillCommon.GetSkillReducePerByID(defObj, skillTypeID)
- #根据防守方职业 计算攻击方伤害加成
- if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
- addPer += PlayerControl.GetJobAHurtAddPer(atkObj)
- elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
- addPer += PlayerControl.GetJobBHurtAddPer(atkObj)
- elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
- addPer += PlayerControl.GetJobCHurtAddPer(atkObj)
-
- #根据攻击方职业 计算防守方伤害减免
- if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
- reducePer += PlayerControl.GetJobAAtkReducePer(defObj)
- elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
- reducePer += PlayerControl.GetJobBAtkReducePer(defObj)
- elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
- reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
+# #根据防守方职业 计算攻击方伤害加成
+# if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
+# addPer += PlayerControl.GetJobAHurtAddPer(atkObj)
+# elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
+# addPer += PlayerControl.GetJobBHurtAddPer(atkObj)
+# elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
+# addPer += PlayerControl.GetJobCHurtAddPer(atkObj)
+#
+# #根据攻击方职业 计算防守方伤害减免
+# if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
+# reducePer += PlayerControl.GetJobAAtkReducePer(defObj)
+# elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
+# reducePer += PlayerControl.GetJobBAtkReducePer(defObj)
+# elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
+# reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
if addPer or reducePer:
addSkillPer = addPer - reducePer
@@ -1620,24 +1484,25 @@
# 攻击时防守方神兵护盾的处理
def CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick):
- if defObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
- return hurtValue
-
- if not CheckIsPlayerOnwer(atkObj):
- return hurtValue
-
- curProDef = PlayerControl.GetProDef(defObj)
- if not curProDef:
- return hurtValue
-
- absortValue = min(PlayerControl.GetProDefAbsorb(defObj)*hurtValue/ChConfig.Def_MaxRateValue, curProDef)
-
- PlayerControl.SetProDef(defObj, curProDef - absortValue)
-
- # 被动技能触发
- defObj.SetDict(ChConfig.Def_PlayerKey_GodWeaponBeforeProDef, curProDef)
- PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_ProDefValue, tick)
- return hurtValue - absortValue
+ return hurtValue
+# if defObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
+# return hurtValue
+#
+# if not CheckIsPlayerOnwer(atkObj):
+# return hurtValue
+#
+# curProDef = PlayerControl.GetProDef(defObj)
+# if not curProDef:
+# return hurtValue
+#
+# absortValue = min(PlayerControl.GetProDefAbsorb(defObj)*hurtValue/ChConfig.Def_MaxRateValue, curProDef)
+#
+# PlayerControl.SetProDef(defObj, curProDef - absortValue)
+#
+# # 被动技能触发
+# defObj.SetDict(ChConfig.Def_PlayerKey_GodWeaponBeforeProDef, curProDef)
+# PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_ProDefValue, tick)
+# return hurtValue - absortValue
# 设置玩家一次主动型攻击中的第一个防御者
@@ -1646,7 +1511,7 @@
return
if curSkill and curSkill.GetFuncType() not in [ChConfig.Def_SkillFuncType_FbSkill,
- ChConfig.Def_SkillFuncType_TurnNormaAttack]:
+ ChConfig.Def_SkillFuncType_TurnNormaSkill]:
return
if attacker.GetDictByKey(ChConfig.Def_PlayerKey_FirstDefender):
@@ -1817,20 +1682,20 @@
fightPowerMax = ipyData.GetFightPowerMax()
everyFightPower = ipyData.GetEveryFightPower()
everyFightPowerLostHPEx = ipyData.GetEveryFightPowerLostHPEx()
- if fightPowerMinByLV and fightPowerMin:
- npcLV = NPCCommon.GetNPCLV(curNPC)
- playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(npcLV)
- if not playerCurLVIpyData:
- return
- ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力
- reRate = ReFightPower / float(fightPowerMin)
- #GameWorld.DebugLog("标准战力需要取等级表: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s,npcLV=%s,ReFightPower=%s,reRate=%s"
- # % (fightPowerMin, fightPowerMax, everyFightPower, npcLV, ReFightPower, reRate))
- fightPowerMin = ReFightPower
- fightPowerMax = int(fightPowerMax * reRate)
- everyFightPower = int(everyFightPower * reRate)
- #GameWorld.DebugLog("按比例更新战力值信息: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s"
- # % (fightPowerMin, fightPowerMax, everyFightPower))
+ #if fightPowerMinByLV and fightPowerMin:
+ # npcLV = NPCCommon.GetNPCLV(curNPC)
+ # playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(npcLV)
+ # if not playerCurLVIpyData:
+ # return
+ # ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力
+ # reRate = ReFightPower / float(fightPowerMin)
+ # #GameWorld.DebugLog("标准战力需要取等级表: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s,npcLV=%s,ReFightPower=%s,reRate=%s"
+ # # % (fightPowerMin, fightPowerMax, everyFightPower, npcLV, ReFightPower, reRate))
+ # fightPowerMin = ReFightPower
+ # fightPowerMax = int(fightPowerMax * reRate)
+ # everyFightPower = int(everyFightPower * reRate)
+ # #GameWorld.DebugLog("按比例更新战力值信息: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s"
+ # # % (fightPowerMin, fightPowerMax, everyFightPower))
effFightPower = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPFightPower) \
+ curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPFightPowerEx) * ChConfig.Def_PerPointValue
@@ -2035,7 +1900,7 @@
turnFightPosInfo = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightPosInfo)
mustHit = False
- if SkillCommon.isXPSkill(curSkill):
+ if SkillCommon.isAngerSkill(curSkill):
mustHit = True
GameWorld.DebugLog(" XP必命中")
angerOverflow = max(GameObj.GetXP(atkObj) - IpyGameDataPY.GetFuncCfg("AngerXP", 2), 0)
@@ -2096,13 +1961,13 @@
atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer)
# --- 新增普通攻击的数值和技能攻击的数值,根据类型各自计算
- if atkObjType == IPY_GameWorld.gotPlayer:
- if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaAttack:
- atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj)
- atkSkillValue += PlayerControl.GetNormalHurt(atkObj)
- elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]:
- atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj)
- atkSkillValue += PlayerControl.GetFabaoHurt(atkObj)
+ #if atkObjType == IPY_GameWorld.gotPlayer:
+ # if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaSkill:
+ # atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj)
+ # atkSkillValue += PlayerControl.GetNormalHurt(atkObj)
+ # elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]:
+ # atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj)
+ # atkSkillValue += PlayerControl.GetFabaoHurt(atkObj)
atkSkillValue += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SkillValue)
atkSkillValue += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SkillValue)
@@ -2149,19 +2014,19 @@
if atkObjType == IPY_GameWorld.gotPlayer:
aIgnoreDefRate = atkObj.GetIgnoreDefRate() # 无视防御比率
aSkillAtkRate = atkObj.GetSkillAtkRate() # 技能攻击力加成
- aDamagePVP = PlayerControl.GetDamagePVP(atkObj) # PVP固定伤害
- aDamagePVE = PlayerControl.GetDamagePVE(atkObj) # PVE固定伤害
+ aDamagePVP = 0 #PlayerControl.GetDamagePVP(atkObj) # PVP固定伤害
+ aDamagePVE = 0 #PlayerControl.GetDamagePVE(atkObj) # PVE固定伤害
- aNPCHurtAddPer = PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成
- aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成
+ aNPCHurtAddPer = 0 #PlayerControl.GetNPCHurtAddPer(atkObj) # PVE伤害加成
+ aDamagePerPVP = 0 #PlayerControl.GetDamagePerPVP(atkObj) # 外层PVP伤害加成
aDamagePerPVP += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddPVPDamagePer)
- aFinalHurt = PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害
+ aFinalHurt = 0#PlayerControl.GetFinalHurt(atkObj) # 最终固定伤害
# 被动增加最终伤害
aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
aFinalHurt += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
- aOnlyFinalHurt = PlayerControl.GetOnlyFinalHurt(atkObj) # 额外固定伤害
+ aOnlyFinalHurt = 0 #PlayerControl.GetOnlyFinalHurt(atkObj) # 额外固定伤害
aFightPower = PlayerControl.GetFightPower(atkObj)
else:
aIgnoreDefRate = 0 # 无视防御比率
@@ -2182,14 +2047,14 @@
dFinalHurtReducePer = GameObj.GetFinalHurtReducePer(defObj)
dFinalHurtReducePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_dFinalHurtReducePer)
if defObjType == IPY_GameWorld.gotPlayer:
- dIgnoreDefRateReduce = PlayerControl.GetIgnoreDefRateReduce(defObj) # 无视防御比率抗性
- dSkillAtkRateReduce = PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少
- dDamagePVPReduce = PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤
+ dIgnoreDefRateReduce = 0 #PlayerControl.GetIgnoreDefRateReduce(defObj) # 无视防御比率抗性
+ dSkillAtkRateReduce = 0 #PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少
+ dDamagePVPReduce = 0 #PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤
#dDamReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReduce)
- dDamagePerPVPReduce = PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤
+ dDamagePerPVPReduce = 0 #PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤
dDamagePerPVPReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReducePVP)
- dFinalHurtReduce = PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少
- dBeHurtPer = PlayerControl.GetBeHurtPer(defObj) # 加深受到伤害百分比
+ dFinalHurtReduce = 0 #PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少
+ dBeHurtPer = 0#PlayerControl.GetBeHurtPer(defObj) # 加深受到伤害百分比
dFightPower = PlayerControl.GetFightPower(defObj)
else:
@@ -2226,17 +2091,14 @@
aBurnValue = atkwargs.get('burnValue', 0)
aBurnPer = atkwargs.get('burnPer', 0)
hurtFormulaKey = atkwargs.get('hurtFormulaKey', None)
- #if hurtFormulaKey == "Burn":
- # pass
- #else:
hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("DOTFormula", 1))
elif not curSkill:
hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 3))
GameWorld.DebugLog(" 普攻伤害=%s" % (hurtValue))
- elif SkillCommon.isTurnNormalAtkSkill(curSkill):
+ elif SkillCommon.isTurnNormalSkill(curSkill):
hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 1))
GameWorld.DebugLog(" 普攻技能伤害=%s" % (hurtValue))
- elif SkillCommon.isXPSkill(curSkill):
+ elif SkillCommon.isAngerSkill(curSkill):
hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 2))
GameWorld.DebugLog(" 怒气技能伤害=%s" % (hurtValue))
else:
@@ -2315,8 +2177,6 @@
atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtNPCObjID, defObj.GetID())
else:
defObj.SetDict(ChConfig.Def_PlayerKey_LastAttackerObjID, atkObj.GetID())
-
- TurnAttack.AddTurnObjHurtValue(atkObj, defObj, resultHurtType.HurtType, resultHurtType.RealHurtHP, resultHurtType.LostHP, curSkill)
#if resultHurtType.RealHurtHP:
# PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_BeHurt, tick)
@@ -2411,9 +2271,9 @@
# GameWorld.DebugLog("不能攻击,不反弹")
# return
#杀怪次数判断
- if not CheckKillNPCByCnt(defObj, atkObj, False) and not NPCHurtManager.IsAssistPlayer(defObj.GetPlayerID(), atkObj):
- #GameWorld.DebugLog("不能攻击,不反弹")
- return
+ #if not CheckKillNPCByCnt(defObj, atkObj, False) and not NPCHurtManager.IsAssistPlayer(defObj.GetPlayerID(), atkObj):
+ # #GameWorld.DebugLog("不能攻击,不反弹")
+ # return
#没有反弹退出
defObj_DamageBackRate = defObj.GetDamageBackRate()
@@ -2482,10 +2342,10 @@
suckHP += atkObj.GetKillBackHP()
# 攻击吸血
- atkBackHP = PlayerControl.GetAtkBackHPPer(atkObj)
- if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
- #PVP 攻击回血
- atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj)
+ atkBackHP = 0 #PlayerControl.GetAtkBackHPPer(atkObj)
+ #if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
+ # #PVP 攻击回血
+ # atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj)
# 百分比吸血
atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
@@ -2506,39 +2366,6 @@
GameObj.SetHP(atkObj, min(GameObj.GetMaxHP(atkObj), GameObj.GetHP(atkObj) + suckHP), False)
ChangeHPView(atkObj, None, 0, suckHP, ChConfig.Def_HurtTYpe_Recovery)
- return
-
-## 攻击者回蓝逻辑
-# @param atkObj 攻击者
-# @param defObj 防守者
-# @return None
-def CalcSuckMagic(atkObj, defObj, hurtValue):
-
- if atkObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
- return
-
- tick = GameWorld.GetGameWorld().GetTick()
- if tick - atkObj.GetTickByType(ChConfig.TYPE_Player_Tick_SuckMagic) \
- < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_SuckMagic]:
- return
-
- atkObj.SetTickByType(ChConfig.TYPE_Player_Tick_SuckMagic, tick)
-
- suckMP = 0
-
- # 杀怪回蓝
- if defObj.GetGameObjType() == IPY_GameWorld.gotNPC and GameObj.GetHP(defObj) <= 0:
- suckMP += atkObj.GetKillBackMP()
-
- # 攻击吸蓝
- atkBackMPPer = PlayerControl.GetAtkBackMPPer(atkObj)
- if atkBackMPPer > 0:
- suckMP += int(hurtValue * atkBackMPPer / float(ChConfig.Def_MaxRateValue))
-
- if suckMP <= 0:
- return
-
- atkObj.SetMP(min(atkObj.GetMaxMP(), atkObj.GetMP() + suckMP))
return
#---------------------------------------------------------------------
@@ -2658,17 +2485,6 @@
'''
#关系有3层,无-友好-敌人
- #镜像PK下,无视PK区域、PK模式等,仅验证双方是否同一阵营
- curBattleID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MirrorBattleID)
- tagBattleID = tagPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MirrorBattleID)
- if curBattleID and curBattleID == tagBattleID:
- battle = MirrorAttack.GetMirrorBattleByID(curBattleID)
- if battle.batState != ChConfig.Def_MirrorBatState_Fight:
- return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
- if curPlayer.GetFaction() != tagPlayer.GetFaction():
- return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
- return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_None
-
#判断是否可释放(增/减)技能或普攻
if CheckPlayersRelationInFB_IsNone(curPlayer, tagPlayer):
return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
@@ -2736,10 +2552,6 @@
elif curPlayerAttackMode == IPY_GameWorld.amAll:
pass
- # 协助关系不可攻击
- if NPCHurtManager.IsAssistRelation(curPlayer, tagPlayer):
- return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_NotAttackTeam
-
# 以下为所属区域的一些特殊处理
#普通区
if curPlayerAreaType == IPY_GameWorld.gatNormal:
@@ -2817,8 +2629,8 @@
if GameObj.GetHP(curObjDetel) > 0:
return
- if TurnAttack.SetKilled(curObjDetel):
- return
+ #if TurnAttack.SetTurnObjKilled(curObjDetel, atkObj):
+ # return
#---玩家处理---
if curObjDetel.GetGameObjType() == IPY_GameWorld.gotPlayer:
@@ -2852,13 +2664,13 @@
return
attackLV = curPlayer.GetLV() # 攻击者等级
- attackPrestige = PlayerControl.GetPrestige(curPlayer) # 攻击者威望
+ attackPrestige = 0 #PlayerControl.GetPrestige(curPlayer) # 攻击者威望
attackNotoriety = curPlayer.GetInfamyValue() # 攻击者恶名值
attackPkValue = curPlayer.GetPKValue() # 攻击者pk值
attackFightPower = PlayerControl.GetFightPower(curPlayer) # 攻击者战斗力
defendLV = defender.GetLV() # 防守者等级
- defendPrestige = PlayerControl.GetPrestige(defender) # 防守者威望
+ defendPrestige = 0 #PlayerControl.GetPrestige(defender) # 防守者威望
defendNotoriety = defender.GetInfamyValue() # 防守者恶名值
defendPkValue = defender.GetPKValue() # 防守者pk值
defendFightPower = PlayerControl.GetFightPower(defender) # 防守者战斗力
@@ -2896,7 +2708,7 @@
srcID, srcType = 0, 0
if srcObj:
srcID, srcType = srcObj.GetID(), srcObj.GetGameObjType()
- turnFight = TurnAttack.GetTurnFightMgr().getNPCTurnFight(curObj.GetID())
+ turnFight = TurnAttack.GetTurnFightMgr().getTurnFight(curObj.GetTFGUID())
if turnFight:
clientPack = ChNetSendPack.tagObjPropertyRefreshView()
clientPack.ObjID = curObj.GetID()
--
Gitblit v1.8.0