From 0c96af08f55d05ab40eae9f940467dd8eafae44c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 九月 2025 14:07:53 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(增加属性ID技能增伤65、技能减伤66;曹轶技能;被动触发增加属性支持;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 73 ++++++++++++++++--------------------
1 files changed, 32 insertions(+), 41 deletions(-)
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 3231fc0..d1042eb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -562,7 +562,7 @@
DoBeAttackResult(turnFight, curBatObj, useSkill, True)
return
-def DoCombo(turnFight, curBatObj, useSkill):
+def DoCombo(turnFight, atkObj, useSkill):
'''
格挡、反击、连击规则
1. 所有武将或怪物均可能产生格挡,群攻时格挡一对一判断,均可能产生格挡
@@ -586,7 +586,7 @@
tagFriendly = useSkill.GetTagFriendly()
if tagFriendly:
- tagObj = GetRelativeObj(turnFight, curBatObj)
+ tagObj = GetRelativeObj(turnFight, atkObj)
else:
tagObjList = useSkill.GetTagObjList()
if not tagObjList:
@@ -596,18 +596,31 @@
if atkBackSkill:
# 可以反击,打断连击
GameWorld.DebugLog("● %s 【反击】" % TurnAttack.GetObjName(tagObj))
- OnUseSkill(turnFight, tagObj, atkBackSkill, [curBatObj], ChConfig.TurnBattleType_AtkBack)
+ OnUseSkill(turnFight, tagObj, atkBackSkill, [atkObj], ChConfig.TurnBattleType_AtkBack)
return
if not tagObj:
return
- if CanCombo(curBatObj, tagObj):
- # 连击根据技能目标配置逻辑重新选择目标
- GameWorld.DebugLog("● %s 【连击】" % TurnAttack.GetObjName(curBatObj))
- DoHeroSpecialty(turnFight, curBatObj, ChConfig.HeroSpecialty_Combo, useSkill.GetSkillID())
- OnUseSkill(turnFight, curBatObj, useSkill, batType=ChConfig.TurnBattleType_Combo)
-
+ comboNum = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnComboNum)
+ aComboRate = atkObj.GetBatAttrValue(ChConfig.AttrID_ComboRate)
+ aComboRate += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, tagObj, ChConfig.AttrID_ComboRate, useSkill)
+
+ dComboRateDef = tagObj.GetBatAttrValue(ChConfig.AttrID_ComboRateDef)
+ happenRate = eval(IpyGameDataPY.GetFuncCompileCfg("ComboCfg", 1))
+ if not GameWorld.CanHappen(happenRate):
+ GameWorld.DebugLog("无法连击! atkID=%s,happenRate=%s,aComboRate=%s,dComboRateDef=%s,comboNum=%s"
+ % (atkObj.GetID(), happenRate, aComboRate, dComboRateDef, comboNum))
+ return
+ GameWorld.DebugLog("● %s 【连击】 happenRate=%s,aComboRate=%s,dComboRateDef=%s,comboNum=%s"
+ % (TurnAttack.GetObjName(atkObj), happenRate, aComboRate, dComboRateDef, comboNum))
+ atkObj.SetDict(ChConfig.Def_Obj_Dict_TurnComboNum, comboNum + 1)
+
+ # 连击特长
+ DoHeroSpecialty(turnFight, atkObj, ChConfig.HeroSpecialty_Combo, useSkill.GetSkillID())
+
+ # 连击根据技能目标配置逻辑重新选择目标
+ OnUseSkill(turnFight, atkObj, useSkill, batType=ChConfig.TurnBattleType_Combo)
return
def __getCanAtkBackSkill(useSkill, tagObj):
@@ -642,21 +655,6 @@
GameWorld.DebugLog("可以反击! tagID=%s" % tagID)
return useSkill
return
-
-def CanCombo(atkObj, defObj):
- ## 可否连击
- comboNum = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnComboNum)
- aComboRate = atkObj.GetBatAttrValue(ChConfig.AttrID_ComboRate)
- dComboRateDef = defObj.GetBatAttrValue(ChConfig.AttrID_ComboRateDef)
- happenRate = eval(IpyGameDataPY.GetFuncCompileCfg("ComboCfg", 1))
- if GameWorld.CanHappen(happenRate):
- GameWorld.DebugLog("可以连击! atkID=%s,happenRate=%s,aComboRate=%s,dComboRateDef=%s,comboNum=%s"
- % (atkObj.GetID(), happenRate, aComboRate, dComboRateDef, comboNum))
- atkObj.SetDict(ChConfig.Def_Obj_Dict_TurnComboNum, comboNum + 1)
- return True
- GameWorld.DebugLog("无法连击! atkID=%s,happenRate=%s,aComboRate=%s,dComboRateDef=%s,comboNum=%s"
- % (atkObj.GetID(), happenRate, aComboRate, dComboRateDef, comboNum))
- return False
def DoBeAttackResult(turnFight, curObj, useSkill, isUseSkill=False):
'''被攻击结果
@@ -880,9 +878,6 @@
# return
enhanceSkillID = curEffect.GetEffectValue(0)
checkInStateList = curEffect.GetEffectValue(1)
- if checkInStateList:
- if isinstance(checkInStateList, int):
- checkInStateList = [checkInStateList]
GameWorld.DebugLog("额外触发的技能: enhanceSkillID=%s,checkInStateList=%s" % (enhanceSkillID, checkInStateList))
tagObjList = useSkill.GetTagObjList()
@@ -905,12 +900,7 @@
GameWorld.DebugLog(" 闪避的不触发: tagID=%s" % (tagID))
continue
if checkInStateList:
- inState = False
- for state in checkInStateList:
- if tagObj.IsInState(state):
- inState = True
- break
- if not inState:
+ if not tagObj.CheckInState(checkInStateList):
GameWorld.DebugLog(" 不在状态下不触发: tagID=%s not in state:%s" % (tagID, checkInStateList))
continue
if enhanceRate and enhanceRate != ChConfig.Def_MaxRateValue and not GameWorld.CanHappen(enhanceRate, ChConfig.Def_MaxRateValue):
@@ -929,11 +919,8 @@
if checkInStateList:
inState = False
for tagObj in tagObjList:
- for state in checkInStateList:
- if not state or tagObj.IsInState(state):
- inState = True
- break
- if inState:
+ if tagObj.CheckInState(checkInStateList):
+ inState = True
break
if not inState:
GameWorld.DebugLog(" 没有目标在状态下不触发: tagObj not in state:%s" % str(checkInStateList))
@@ -1102,7 +1089,10 @@
if isAngerSkill:
aAngerSkillPer = atkObj.GetBatAttrValue(ChConfig.AttrID_AngerSkillPer) # 普技增伤
dAngerSkillPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_AngerSkillPerDef) # 普技减伤
-
+
+ aAddSkillPer = 0 # 技能增伤
+ aAddSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SkillPer, curSkill)
+
# 物法增减伤
if pmType == IPY_GameWorld.ghtMag: # 法伤
aPMDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_MagDamPer)
@@ -1117,6 +1107,7 @@
dNormalSkillPerDef /= 10000.0
aAngerSkillPer /= 10000.0
dAngerSkillPerDef /= 10000.0
+ aAddSkillPer /= 10000.0
aPMDamPer /= 10000.0
dPMDamPerDef /= 10000.0
aSuperDamPer /= 10000.0
@@ -1124,8 +1115,8 @@
aFinalDamPer /= 10000.0
dFinalDamPerDef /= 10000.0
- GameWorld.DebugLog("伤血计算: atkID=%s,defID=%s,skillID=%s,atkSkillPer=%s,aAtk=%s,dDef=%s,dHP=%s,hurtTypes=%s"
- % (atkID, defID, skillID, atkSkillPer, aAtk, dDef, dHP, hurtTypes))
+ GameWorld.DebugLog("伤血计算: atkID=%s,defID=%s,skillID=%s,atkSkillPer=%s,aAtk=%s,dDef=%s,dHP=%s,hurtTypes=%s,aAddSkillPer=%s"
+ % (atkID, defID, skillID, atkSkillPer, aAtk, dDef, dHP, hurtTypes, aAddSkillPer))
# 持续性伤害
if isDot:
--
Gitblit v1.8.0