From b5425051c9142c17be3953c939f055dc7c11f4ca Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 25 十二月 2025 19:11:42 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(张角所有技能;增加触发方式 56 57;优化效果6014支持直接配置首次增加概率;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py | 14 +++++++-------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 17 ++++++++++++-----
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py
index 34f9b4d..59d5158 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py
@@ -20,17 +20,17 @@
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
addRate = curEffect.GetEffectValue(0)
- onlyFirstUse = curEffect.GetEffectValue(1) # 是否仅首次释放技能有效
+ firstTimeRate = curEffect.GetEffectValue(1) # 首次释放增加概率万分率
skillID = connSkill.GetSkillID() if connSkill else skillkwargs.get("connSkillID", 0)
- if onlyFirstUse:
+ if firstTimeRate:
if not skillID:
#GameWorld.DebugLog("没有增加概率的技能ID! %s" % skillkwargs)
return
useCnt = attacker.GetSkillUseCnt(skillID)
- if useCnt > 0:
- GameWorld.DebugLog("技能非首次使用不增加额外概率! skillID=%s,useCnt=%s" % (skillID, useCnt))
- return
-
+ if useCnt <= 0:
+ addRate = firstTimeRate
+ GameWorld.DebugLogEx("技能首次使用增加额外概率! skillID=%s,useCnt=%s,addRate=%s", skillID, useCnt, addRate)
+
failAddRateEx = curEffect.GetEffectValue(2) # 失败次数额外增加概率
if failAddRateEx:
failCnt = attacker.GetSkillHappenFailCnt(skillID)
@@ -39,7 +39,7 @@
addRate = ChConfig.Def_MaxRateValue # 强制增加满概率
GameWorld.DebugLog("技能概率失败次数必定成功: mustHappenFailCnt=%s,failCnt=%s,addRate=%s" % (mustHappenFailCnt, failCnt, addRate))
elif failCnt > 0:
- addRate = failAddRateEx * failCnt
+ addRate += failAddRateEx * failCnt
GameWorld.DebugLog("技能概率失败次数增加概率: failAddRateEx=%s,failCnt=%s,addRate=%s" % (failAddRateEx, failCnt, addRate))
if effBuff:
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 019e82f..3399483 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1367,7 +1367,7 @@
# 统计伤血,可能单个技能对同一目标造成多次伤害
totalHurtValue = 0
- isSuckHP = False
+ suckObjIDList = [] # 吸血的对象ID列表
missObjIDList, immuneObjIDList = [], [] # 闪避、免疫对象ID列表
stunObjIDList, superHitObjIDList, parryObjIDList = [], [], []
beHurtObjIDList = [] # 受伤的对象ID列表
@@ -1425,9 +1425,10 @@
if tagObj not in caorenProtectList:
caorenProtectList.append(tagObj)
- if hurtObj.GetSuckHP() > 0:
- isSuckHP = True
-
+ if hurtObj.GetSuckHP() > 0 and not hurtObj.HaveHurtType(ChConfig.HurtAtkType_PoisonCureSuck):
+ if hurtObjID not in suckObjIDList:
+ suckObjIDList.append(hurtObjID)
+
# 判断自己死亡,因为反弹、平摊伤害的原因,有可能自己干死自己
if curObj.IsAlive() and curObj.GetHP() <= 0:
if curObj.CanNoDead():
@@ -1447,7 +1448,7 @@
DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_SuperHit, relatedSkillID)
if stunObjIDList:
DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_Stun, relatedSkillID)
- if isSuckHP:
+ if suckObjIDList:
DoHeroSpecialty(turnFight, curObj, ChConfig.HeroSpecialty_SuckHP, relatedSkillID)
# 结算副本相关的攻击结果,仅主动发起玩家阵容武将触发
@@ -1594,6 +1595,12 @@
TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeParry, tagObj, connSkill=useSkill)
TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Parry, curObj, connSkill=useSkill)
+ # 吸血
+ if tagID in suckObjIDList:
+ if not triggerOne:
+ TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_SuckHPOne, tagObj, connSkill=useSkill)
+ TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeSuckHP, curObj, connSkill=useSkill)
+
# 连击
if batType == ChConfig.TurnBattleType_Combo:
TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Combo, tagObj, connSkill=useSkill)
--
Gitblit v1.8.0