From ab3c1e29995e5bae442a06bbd8c4ae821efe88d0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 27 十一月 2025 11:11:46 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(优化被动buff触发有效效果逻辑;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py | 8 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py | 40 ++++++++-----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 12 ++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 10 +--
PySysDB/PySysDBPY.h | 6 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 58 ++++++++++---------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 30 +++++-----
7 files changed, 86 insertions(+), 78 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 139a4a8..6380398 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -101,15 +101,15 @@
DWORD EffectID1; //效果ID1
list EffectValues1; //效果值列表1
BYTE TriggerWay1; //触发方式
- BYTE TriggerSrc1; //有效来源
+ list TriggerSrc1; //有效来源
DWORD EffectID2; //效果ID2
list EffectValues2; //效果值列表2
BYTE TriggerWay2; //触发方式
- BYTE TriggerSrc2; //有效来源
+ list TriggerSrc2; //有效来源
DWORD EffectID3; //效果ID3
list EffectValues3; //效果值列表3
BYTE TriggerWay3; //触发方式
- BYTE TriggerSrc3; //有效来源
+ list TriggerSrc3; //有效来源
WORD CoolDownInit; //初始冷却时间
WORD CoolDownTime; //技能冷却时间
list BuffStateLimit; //Buff状态限制组
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
index 89f5f9d..3bc1cff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -35,6 +35,7 @@
# 被影响的技能ID: 0为所有技能
self._AffectSkillDict = {} # 被动技能 {(触发方式, 有效来源):{技能ID:[effID, ...], ...}, ...}
self._AffectBuffDict = {} # 被动buff {(触发方式, 有效来源):{buffID:[effID, ...], ...}, ...}
+ self._buffSkillIDDict = {} # {buffID:skillID, ...}
return
def onRelease(self):
@@ -45,7 +46,7 @@
def GetPassiveEffByTrigger(self, triggerWay, connSkill=None, connSkillTypeID=0, connBuff=None):
'''获取可触发的效果列表,技能跟buff根据触发优先级按顺序触发,优先级越高越先执行,相同时技能优先
优先级之后有需要再扩展
- @return: [["skill/buff", skillID/buffID, effIDList], ...]
+ @return: [["skill/buff", skillID, buffID, effIDList], ...]
'''
effList = []
@@ -75,7 +76,7 @@
if tWay in ChConfig.TriggerWayNoLoadList:
continue
if tSrc != ChConfig.TriggerSrc_SkillSelf:
- # 仅添加本技能的
+ # 非对象身上已学的技能时,仅添加本技能有效的
continue
if tWay == ChConfig.TriggerWay_CalcEffValue:
tWay = "%s_%s" % (tWay, effectID)
@@ -83,7 +84,7 @@
continue
effIDList.append(effectID)
if effIDList:
- effList.append(["skill", skillID, effIDList])
+ effList.append(["skill", skillID, 0, effIDList])
# 优先取关联技能的
if connSkillTypeID and connSkillTypeID not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_Buff, ChConfig.TriggerSrc_SkillSelf, ChConfig.TriggerSrc_BuffSelf]:
@@ -92,26 +93,26 @@
if key in self._AffectSkillDict:
effDict = self._AffectSkillDict[key]
for skillID, effIDList in effDict.items():
- effList.append(["skill", skillID, effIDList])
+ effList.append(["skill", skillID, 0, effIDList])
# buff
key = (triggerWay, connSkillTypeID)
if key in self._AffectBuffDict:
effDict = self._AffectBuffDict[key]
for buffID, effIDList in effDict.items():
- effList.append(["buff", buffID, effIDList])
+ effList.append(["buff", self._buffSkillIDDict.get(buffID, 0), buffID, effIDList])
# 所有技能有效的
key = (triggerWay, ChConfig.TriggerSrc_Skill)
effDict = self._AffectSkillDict.get(key, {})
for skillID, effIDList in effDict.items():
- effList.append(["skill", skillID, effIDList])
+ effList.append(["skill", skillID, 0, effIDList])
# 所有buff有效的
key = (triggerWay, ChConfig.TriggerSrc_Buff)
effDict = self._AffectBuffDict.get(key, {})
for buffID, effIDList in effDict.items():
- effList.append(["buff", buffID, effIDList])
+ effList.append(["buff", self._buffSkillIDDict.get(buffID, 0), buffID, effIDList])
return effList
@@ -140,7 +141,7 @@
return
if triggerWay in ChConfig.TriggerWayNoLoadList:
return
- if triggerSrc in [ChConfig.TriggerSrc_Buff, ChConfig.TriggerSrc_BuffSelf]:
+ if effect.GetTriggerBuffEnable():
# buff有效的不加进来
return
@@ -190,8 +191,8 @@
return
if triggerWay in ChConfig.TriggerWayNoLoadList:
return
- if triggerSrc in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf]:
- # 技能有效的不加进来
+ if not effect.GetTriggerBuffEnable():
+ # 非buff有效的不加进来
return
buffID = buff.GetBuffID()
@@ -212,6 +213,7 @@
effIDList = effDict[buffID]
if effectID not in effIDList:
effIDList.append(effectID)
+ self._buffSkillIDDict[buffID] = skillData.GetSkillID()
return
def DelBuffPassiveEffect(self, buffID):
@@ -222,6 +224,7 @@
effDict.pop(buffID)
if not effDict:
self._AffectBuffDict.pop(key)
+ self._buffSkillIDDict.pop(buffID, 0)
return
class HurtObj():
@@ -282,12 +285,13 @@
class SkillEffect():
- def __init__(self, effID, values, triggerWay=0, triggerSrc=0):
+ def __init__(self, effID, values, triggerWay=0, triggerSrcs=[]):
+ # @param triggerSrcs: 触发参数 [触发来源, buff时是否有效默认无效]
self._effID = effID
self._values = values
self._triggerWay = triggerWay
- self._triggerSrc = triggerSrc
- #self._triggerParams = triggerParams if triggerParams else []
+ self._triggerSrc = triggerSrcs[0] if len(triggerSrcs) > 0 else 0
+ self._triggerBuffEnable = triggerSrcs[1] if len(triggerSrcs) > 1 else 0
return
def onRelease(self):
@@ -300,8 +304,13 @@
def GetEffectValues(self): return self._values # 直接返回整个效果values
def GetTriggerWay(self): return self._triggerWay
def GetTriggerSrc(self): return self._triggerSrc
- #def GetTriggerParams(self, index): return self._triggerParams[index] if len(self._triggerParams) > index else 0
-
+ def GetTriggerBuffEnable(self):
+ if self.GetTriggerSrc() in [ChConfig.TriggerSrc_Buff, ChConfig.TriggerSrc_BuffSelf]:
+ return True
+ if self._triggerBuffEnable:
+ return True
+ return False
+
class SklllData():
def __init__(self, ipyData):
@@ -313,7 +322,6 @@
values = getattr(ipyData, "GetEffectValues%s" % num)()
triggerWay = getattr(ipyData, "GetTriggerWay%s" % num)()
triggerSrc = getattr(ipyData, "GetTriggerSrc%s" % num)()
- #triggerParams = getattr(ipyData, "GetTriggerParams%s" % num)()
effect = ObjPool.GetPoolMgr().acquire(SkillEffect, effID, values, triggerWay, triggerSrc)
self._effList.append(effect)
self._effDict[(effID, triggerWay)] = effect
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 80618ed..96d6246 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -913,22 +913,22 @@
AfterLogic_AddBuff = "AddBuff"
AfterLogic_SyncBuff = "SyncBuff"
-#伤害类型
+#伤害飘血类型
(
-HurtType_Fail, # 失败 - 如概率没有触发 0
-HurtType_Normal, # 伤害 1
-HurtTYpe_Cure, # 治疗 2
-HurtType_Revive, # 复活 3
-HurtType_Immune, # 免疫 4
-HurtType_Parry, # 格挡 5
-HurtType_IgnoreDef, # 无视防御/真实伤害 6
-HurtType_SuperHit, # 暴击 7
-HurtType_Stun, # 击晕 8 仅算概率触发的击晕,技能额外击晕效果的不算
-HurtType_Miss, # 闪避 9
-HurtType_PoisonCureHurt, # 伤害毒奶 10
-HurtType_PoisonCureSuck, # 吸血毒奶 11
-HurtType_HarmSelf, # 自残 12
-HurtType_CaorenProtect, # 本次伤害有受曹仁防护标记 13
+HurtAtkType_Fail, # 失败 - 如概率没有触发 0
+HurtAtkType_Hurt, # 伤害 1
+HurtAtkType_Cure, # 治疗 2
+HurtAtkType_Revive, # 复活 3
+HurtAtkType_Immune, # 免疫 4
+HurtAtkType_Parry, # 格挡 5
+HurtAtkType_IgnoreDef, # 无视防御/真实伤害 6
+HurtAtkType_SuperHit, # 暴击 7
+HurtAtkType_Stun, # 击晕 8 仅算概率触发的击晕,技能额外击晕效果的不算
+HurtAtkType_Miss, # 闪避 9
+HurtAtkType_PoisonCureHurt, # 伤害毒奶 10
+HurtAtkType_PoisonCureSuck, # 吸血毒奶 11
+HurtAtkType_HarmSelf, # 自残 12
+HurtAtkType_CaorenProtect, # 本次伤害有受曹仁防护标记 13
) = range(14)
#伤害类型
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index c408770..28fa30a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -123,15 +123,15 @@
("DWORD", "EffectID1", 0),
("list", "EffectValues1", 0),
("BYTE", "TriggerWay1", 0),
- ("BYTE", "TriggerSrc1", 0),
+ ("list", "TriggerSrc1", 0),
("DWORD", "EffectID2", 0),
("list", "EffectValues2", 0),
("BYTE", "TriggerWay2", 0),
- ("BYTE", "TriggerSrc2", 0),
+ ("list", "TriggerSrc2", 0),
("DWORD", "EffectID3", 0),
("list", "EffectValues3", 0),
("BYTE", "TriggerWay3", 0),
- ("BYTE", "TriggerSrc3", 0),
+ ("list", "TriggerSrc3", 0),
("WORD", "CoolDownInit", 0),
("WORD", "CoolDownTime", 0),
("list", "BuffStateLimit", 0),
@@ -2343,15 +2343,15 @@
def GetEffectID1(self): return self.attrTuple[18] # 效果ID1 DWORD
def GetEffectValues1(self): return self.attrTuple[19] # 效果值列表1 list
def GetTriggerWay1(self): return self.attrTuple[20] # 触发方式 BYTE
- def GetTriggerSrc1(self): return self.attrTuple[21] # 有效来源 BYTE
+ def GetTriggerSrc1(self): return self.attrTuple[21] # 有效来源 list
def GetEffectID2(self): return self.attrTuple[22] # 效果ID2 DWORD
def GetEffectValues2(self): return self.attrTuple[23] # 效果值列表2 list
def GetTriggerWay2(self): return self.attrTuple[24] # 触发方式 BYTE
- def GetTriggerSrc2(self): return self.attrTuple[25] # 有效来源 BYTE
+ def GetTriggerSrc2(self): return self.attrTuple[25] # 有效来源 list
def GetEffectID3(self): return self.attrTuple[26] # 效果ID3 DWORD
def GetEffectValues3(self): return self.attrTuple[27] # 效果值列表3 list
def GetTriggerWay3(self): return self.attrTuple[28] # 触发方式 BYTE
- def GetTriggerSrc3(self): return self.attrTuple[29] # 有效来源 BYTE
+ def GetTriggerSrc3(self): return self.attrTuple[29] # 有效来源 list
def GetCoolDownInit(self): return self.attrTuple[30] # 初始冷却时间 WORD
def GetCoolDownTime(self): return self.attrTuple[31] # 技能冷却时间 WORD
def GetBuffStateLimit(self): return self.attrTuple[32] # Buff状态限制组 list
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
index ce8d2c3..193fe3a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -257,7 +257,7 @@
continue
if curEffect.GetTriggerWay():
- if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf] and refreshType == 1:
+ if refreshType == 1 and curEffect.GetTriggerBuffEnable():
passiveEffMgr.AddBuffPassiveEffect(curBuff, skillData, curEffect)
elif effectID in ChConfig.AttrIDList:
@@ -386,7 +386,7 @@
if triggerWay == ChConfig.TriggerWay_BuffDel:
TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_BuffDel, connBuff=curBuff)
- if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf]:
+ if curEffect.GetTriggerBuffEnable():
haveBuffPassiveEff = True
elif effectID in ChConfig.AttrIDList:
@@ -458,7 +458,7 @@
if effID not in ChConfig.AttrIDList:
continue
if effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill]:
- # 技能时仅技能有效
+ # 技能属性仅技能时有效
continue
attrID = effID
attrValue = effect.GetEffectValue(0)
@@ -491,7 +491,7 @@
effID = effect.GetEffectID()
if effID not in ChConfig.AttrIDList:
continue
- if effect.GetTriggerSrc() and effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Buff, ChConfig.TriggerSrc_BuffSelf]:
+ if not (not effect.GetTriggerSrc() or effect.GetTriggerBuffEnable()):
# buff时,不配默认有效,或仅buff有效
continue
attrID = effID
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
index 2daa23e..1ac29b3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -40,17 +40,16 @@
effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID, connBuff)
if not effInfoList:
return
- # [["skill/buff", skillID/buffID, effIDList], ...]
+ # [["skill/buff", skillID, buffID, effIDList], ...]
tagID = tagObj.GetID() if tagObj else 0
GameWorld.DebugLog("触发被动: triggerWay=%s,objID=%s,tagID=%s,%s" % (triggerWay, batObj.GetID(), tagID, effInfoList))
for effInfo in effInfoList:
sign = effInfo[0]
+ skillID, buffID, effIDList = effInfo[1:]
if sign == "skill":
- skillID, effIDList = effInfo[1:]
__doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill, connBuff, **kwargs)
elif sign == "buff":
- buffID, effIDList = effInfo[1:]
__doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill, connBuff, **kwargs)
return
@@ -127,18 +126,17 @@
curValue = 0
skillMgr = atkObj.GetSkillManager()
buffMgr = atkObj.GetBuffManager()
- # [["skill/buff", skillID/buffID, effIDList], ...]
+ # [["skill/buff", skillID, buffID, effIDList], ...]
tagID = defObj.GetID() if defObj else 0
for effInfo in effInfoList:
sign = effInfo[0]
+ skillID, buffID, effIDList = effInfo[1:]
if sign == "skill":
- skillID, effIDList = effInfo[1:]
effSkill = skillMgr.FindSkillByID(skillID)
if not effSkill and connSkill and connSkill.GetSkillID() == skillID:
effSkill = connSkill
effBuff = None
elif sign == "buff":
- buffID, effIDList = effInfo[1:]
effBuff = buffMgr.GetBuff(buffID)
if not effBuff:
continue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
index 824d3d5..04cd13e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -732,7 +732,7 @@
curBatObj.SetHarmSelfHP(harmHP) # 无视实际扣血量,直接更新
# 单独通知前端表现
- hurtTypes = pow(2, ChConfig.HurtType_HarmSelf)
+ hurtTypes = pow(2, ChConfig.HurtAtkType_HarmSelf)
diffType, diffValue = 0, lostHP
skillID = relatedSkillID = useSkill.GetSkillID()
Sync_PropertyRefreshView(turnFight, curBatObj, ChConfig.AttrID_HP, updHP, diffValue, diffType, skillID, relatedSkillID, hurtTypes)
@@ -872,7 +872,7 @@
tagBatObj.SetRevive(cureHP)
hurtObj = useSkill.AddHurtObj(dID)
- hurtObj.AddHurtType(ChConfig.HurtType_Revive)
+ hurtObj.AddHurtType(ChConfig.HurtAtkType_Revive)
hurtObj.SetHurtHP(cureHP)
hurtObj.SetLostHP(cureHP)
hurtObj.SetCurHP(tagBatObj.GetHP())
@@ -892,8 +892,9 @@
for tagBatObj, cureHP, poisonCureOwner in calcCureResults:
# 汇总毒奶
if poisonCureOwner:
- hurtTypes = pow(2, ChConfig.HurtTYpe_Cure)
- hurtTypes |= pow(2, ChConfig.HurtType_PoisonCureHurt)
+ hurtTypes = pow(2, ChConfig.HurtAtkType_Cure)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_Hurt)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_PoisonCureHurt)
hurtValue = cureHP
hurtValue, hurtTypes, immuneHurt = CalcHurtWithBuff(turnFight, atkObj, tagBatObj, hurtValue, hurtTypes)
calcHurtResults.append([tagBatObj, hurtValue, hurtTypes, immuneHurt])
@@ -909,7 +910,7 @@
tagBatObj.SetHP(remainHP)
hurtObj = curSkill.AddHurtObj(dID)
- hurtObj.AddHurtType(ChConfig.HurtTYpe_Cure)
+ hurtObj.AddHurtType(ChConfig.HurtAtkType_Cure)
hurtObj.SetHurtHP(cureHP)
hurtObj.SetLostHP(realCureHP)
hurtObj.SetCurHP(tagBatObj.GetHP())
@@ -977,8 +978,9 @@
if poisonCureOwner:
GameWorld.DebugLog("本次治疗为毒奶: cureHP=%s" % cureHP)
hurtValue = cureHP
- hurtTypes = pow(2, ChConfig.HurtTYpe_Cure)
- hurtTypes |= pow(2, ChConfig.HurtType_PoisonCureHurt)
+ hurtTypes = pow(2, ChConfig.HurtAtkType_Cure)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_Hurt)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_PoisonCureHurt)
hurtValue, hurtTypes, immuneHurt = CalcHurtWithBuff(turnFight, poisonCureOwner, defObj, hurtValue, hurtTypes)
calcHurtResults = [[defObj, hurtValue, hurtTypes, immuneHurt]]
DoSkillHurtHP(turnFight, poisonCureOwner, useSkill, calcHurtResults, "PoisonCOT")
@@ -988,7 +990,7 @@
defObj.SetHP(remainHP)
hurtObj = useSkill.AddHurtObj(defID)
- hurtObj.AddHurtType(ChConfig.HurtTYpe_Cure)
+ hurtObj.AddHurtType(ChConfig.HurtAtkType_Cure)
hurtObj.SetHurtHP(cureHP)
hurtObj.SetLostHP(realCureHP)
hurtObj.SetCurHP(defObj.GetHP())
@@ -1195,7 +1197,7 @@
for hurtObj in useSkill.GetHurtObjListAll():
if hurtObj.GetObjID() != tagID:
continue
- if hurtObj.HaveHurtType(ChConfig.HurtType_Parry): # 格挡时可反击
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Parry): # 格挡时可反击
canAtkBack = True
break
@@ -1289,39 +1291,39 @@
tagObj = batObjMgr.getBatObj(hurtObjID)
if not tagObj:
continue
- if not hurtObj.HaveHurtType(ChConfig.HurtTYpe_Cure) and not hurtObj.HaveHurtType(ChConfig.HurtType_Immune) \
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Hurt) and not hurtObj.HaveHurtType(ChConfig.HurtAtkType_Immune) \
and (isTurnNormalSkill or isAngerSkill) and tagObj.IsAlive():
__doSkillHurtAnger(tagObj, hurtObj.GetLostHP(), useSkill)
- if hurtObj.HaveHurtType(ChConfig.HurtType_Normal):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Hurt):
totalHurtValue += hurtObj.GetHurtHP()
if hurtObj.GetLostHP() > 0: # 有掉血的
if hurtObjID not in beHurtObjIDList:
beHurtObjIDList.append(hurtObjID)
- if hurtObj.HaveHurtType(ChConfig.HurtType_Miss):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Miss):
if hurtObjID not in missObjIDList:
missObjIDList.append(hurtObjID)
DoHeroSpecialty(turnFight, tagObj, ChConfig.HeroSpecialty_Miss, relatedSkillID)
- if hurtObj.HaveHurtType(ChConfig.HurtType_Revive):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Revive):
if tagObj not in reviveObjList:
reviveObjList.append(tagObj)
- if hurtObj.HaveHurtType(ChConfig.HurtType_Immune):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Immune):
if hurtObjID not in immuneObjIDList:
immuneObjIDList.append(hurtObjID)
- if hurtObj.HaveHurtType(ChConfig.HurtType_Parry):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Parry):
DoHeroSpecialty(turnFight, tagObj, ChConfig.HeroSpecialty_Parry, relatedSkillID)
if hurtObjID not in parryObjIDList:
parryObjIDList.append(hurtObjID)
- if hurtObj.HaveHurtType(ChConfig.HurtType_SuperHit):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_SuperHit):
if hurtObjID not in superHitObjIDList:
superHitObjIDList.append(hurtObjID)
- if hurtObj.HaveHurtType(ChConfig.HurtType_Stun):
+ if hurtObj.HaveHurtType(ChConfig.HurtAtkType_Stun):
if hurtObjID not in stunObjIDList:
stunObjIDList.append(hurtObjID)
@@ -1781,9 +1783,9 @@
if GameWorld.CanHappen(missRate):
GameWorld.DebugLog("闪避了! missRate=%s,dMissRate=%s,aMissRateDef=%s,missNum=%s" % (missRate, dMissRate, aMissRateDef, missNum))
curSkill.SetTagMissNum(defID, missRate + 1)
- return 0, pow(2, ChConfig.HurtType_Miss)
+ return 0, pow(2, ChConfig.HurtAtkType_Miss)
- hurtTypes = pow(2, ChConfig.HurtType_Normal)
+ hurtTypes = pow(2, ChConfig.HurtAtkType_Hurt)
isSuperHit, isParry, isStun = False, False, False
aSuperDamPer, dSuperDamPerDef = 0, 0
@@ -1797,7 +1799,7 @@
isStun = CanStun(turnFight, atkObj, defObj, curSkill) # 是否击晕
if isSuperHit:
- hurtTypes |= pow(2, ChConfig.HurtType_SuperHit)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_SuperHit)
aSuperDamPer = IpyGameDataPY.GetFuncCfg("SuperHitCfg", 2) * 10000
aSuperDamPer += atkObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPer)
aSuperDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SuperDamPer, curSkill)
@@ -1806,14 +1808,14 @@
GameWorld.DebugLog("aSuperDamPer=%s,dSuperDamPerDef=%s" % (aSuperDamPer, dSuperDamPerDef))
if isParry:
- hurtTypes |= pow(2, ChConfig.HurtType_Parry)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_Parry)
if ignoreDef:
GameWorld.DebugLog("无视防御/真实伤害!")
- hurtTypes |= pow(2, ChConfig.HurtType_IgnoreDef)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_IgnoreDef)
if isStun:
- hurtTypes |= pow(2, ChConfig.HurtType_Stun)
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_Stun)
#参与运算的数值
#rand = random.random() #种子数 0~1
@@ -2040,7 +2042,7 @@
hurtValue = int(hurtValue)
if defObj.CheckInState(ChConfig.BatObjState_Wudi):
- hurtTypes |= pow(2, ChConfig.HurtType_Immune) # 添加免疫
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_Immune) # 添加免疫
immuneHurt = hurtValue
hurtValue = 0
return hurtValue, hurtTypes, immuneHurt
@@ -2169,7 +2171,7 @@
immuneHurt = max(int(immuneHurtDict.pop(tagID, 0)), 0) # 因为有标记-1值,所以加max
# 主要目标的免疫标记外层已经处理,仅额外处理标记曹仁防护
if caorenProtectID == tagID:
- hurtTypes |= pow(2, ChConfig.HurtType_CaorenProtect) # 标记受到曹仁防护,前端表现需要
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_CaorenProtect) # 标记受到曹仁防护,前端表现需要
finalHurtResults.append([tagObj, finalHurt, hurtTypes, immuneHurt])
finalHurtTotal = finalHurtTotal + finalHurt + immuneHurt
GameWorld.DebugLog("得出主要目标分摊后的最终伤害: tagID=%s,finalHurt=%s,hurtTypes=%s,immuneHurt=%s,finalHurtTotal=%s" % (tagID, finalHurt, hurtTypes, immuneHurt, finalHurtTotal))
@@ -2181,11 +2183,11 @@
tagObj = batObjMgr.getBatObj(tagID)
if not tagObj:
continue
- hurtTypes = pow(2, ChConfig.HurtType_Normal)
+ hurtTypes = pow(2, ChConfig.HurtAtkType_Hurt)
finalHurt = int(hurtValueDict.pop(tagID, 0))
immuneHurt = max(int(immuneHurtDict.pop(tagID, 0)), 0)
if immuneHurt > 0:
- hurtTypes |= pow(2, ChConfig.HurtType_Immune) # 添加免疫
+ hurtTypes |= pow(2, ChConfig.HurtAtkType_Immune) # 添加免疫
finalHurtTotal = finalHurtTotal + finalHurt + immuneHurt
GameWorld.DebugLog("得出额外目标分摊后的最终伤害: tagID=%s,finalHurt=%s,hurtTypes=%s,immuneHurt=%s,finalHurtTotal=%s" % (tagID, finalHurt, hurtTypes, immuneHurt, finalHurtTotal))
if finalHurt > 0 or immuneHurt > 0: # 额外目标有受伤或免疫才算
@@ -2496,7 +2498,7 @@
GameWorld.DebugLog(" 本次吸血为毒奶: suckHP=%s,hurtValue=%s" % (suckHP, hurtValue))
DoLostHP(turnFight, atkObj, defObj, hurtValue, curSkill, "PoisonSuckBlood", hpCanNegative=True, immuneHurt=immuneHurt) # 吸血毒奶生命允许负值
- hurtObj.AddHurtType(ChConfig.HurtType_PoisonCureSuck)
+ hurtObj.AddHurtType(ChConfig.HurtAtkType_PoisonCureSuck)
hurtObj.SetSuckHP(hurtValue) # 如果前端有需要表现免疫吸血毒奶,可以判断吸血毒奶下该值为0代表免疫
return
--
Gitblit v1.8.0