From 7195d1d30b81845d21e49461099e370ca4c812e1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 31 十二月 2025 16:42:57 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(王异所有技能;优化效果6009;增加效果6036;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6036.py | 27 +++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py | 30 ++++++++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 7 ++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 3 +
5 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 8082335..5eed441 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4068,7 +4068,7 @@
PassiveEff_AddSkillPerByJob = 6006 # 增加本次技能万分比(验证目标职业)
PassiveEff_AddSkillTagCnt = 6007 # 增加技能目标数
PassiveEff_ImmuneControlBuff = 6008 # 生命值低于x%时免疫控制效果
-PassiveEff_MustSuperHit = 6009 # 生命值低于x%时必定暴击
+PassiveEff_MustSuperHit = 6009 # 必定暴击
PassiveEff_AddSkillPerByHP = 6010 # 增加本次技能万分比(验证当前生命)
PassiveEff_AddSkillPerByBuffLayer = 6011 # 增加本次技能万分比(根据buff层级)
PassiveEff_AddBuffLayerMax = 6012 # 添加buff层级上限: 数值1-增加层级上限
@@ -4095,6 +4095,7 @@
PassiveEff_ImmuneBadBuff = 6033 # 概率免疫buff类型(免疫添加,针对减益、控制、dot类)
PassiveEff_IgnoreSex = 6034 # 去除性别验证
PassiveEff_AddBuffTime = 6035 # 增加buff持续时间
+PassiveEff_AddSkillUseCntLimit = 6036 # 增加7009回合数
# 被动效果ID有触发值时就返回的
PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit, PassiveEff_SkillInvalid,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py
index 943909f..60ec420 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py
@@ -4,18 +4,38 @@
#
##@package Skill.PassiveTrigger.PassiveEff_6009
#
-# @todo:目标生命值低于x%必定暴击
+# @todo:必定暴击
# @author hxp
# @date 2025-09-23
# @version 1.0
#
-# 详细描述: 目标生命值低于x%必定暴击
+# 详细描述: 必定暴击
#
#-------------------------------------------------------------------------------
#"""Version = 2025-09-23 19:00"""
#-------------------------------------------------------------------------------
+import GameWorld
+
def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
- lowerThanPer = curEffect.GetEffectValue(0)
- nowPer = defender.GetHP() / float(defender.GetMaxHP()) * 100
- return 1 if nowPer < lowerThanPer else 0
+ checkValue = curEffect.GetEffectValue(0) # 判断参数
+ checkType = curEffect.GetEffectValue(1) # 判断方式: 0-按目标生命, 1-按目标状态
+ defID = defender.GetID()
+
+ # 0 - 按目标生命低于x%;参数:单值即可,如30就是30%
+ if checkType == 0:
+ lowerThanPer = checkValue
+ defHP = defender.GetHP()
+ defMaxHP = defender.GetMaxHP()
+ nowPer = defHP / float(defMaxHP) * 100
+ if nowPer < lowerThanPer:
+ GameWorld.DebugLogEx("必定暴击->目标血量低于%s%%: defID=%s,hp:%s/%s", lowerThanPer, defID, defHP, defMaxHP)
+ return 1
+
+ # 1 - 按目标处于状态;参数:支持多状态列表 [状态1, ...]
+ elif checkType == 1:
+ if defender.CheckInState(checkValue):
+ GameWorld.DebugLogEx("必定暴击->目标处于状态%s: defID=%s", checkValue, defID)
+ return 1
+
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6036.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6036.py
new file mode 100644
index 0000000..be43150
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6036.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_6036
+#
+# @todo:增加最多触发回合数(对7009效果提升)
+# @author hxp
+# @date 2025-12-31
+# @version 1.0
+#
+# 详细描述: 增加最多触发回合数(对7009效果提升)
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-12-31 17:00"""
+#-------------------------------------------------------------------------------
+
+def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
+ LimitByTurnAll = skillkwargs.pop("LimitByTurnAll", 0)
+ if LimitByTurnAll:
+ return curEffect.GetEffectValue(0)
+
+ LimitByTurnPer = skillkwargs.pop("LimitByTurnPer", 0)
+ if LimitByTurnPer:
+ return curEffect.GetEffectValue(1)
+
+ return 0
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 fc4ec53..2bb86ef 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py
@@ -92,7 +92,7 @@
# 没有类型的,纯配被动效果,有类型的技能在 OnUseSkill 统一处理回合次数,这里只处理纯被动效果的
useCntLimit = None
if not effSkill.GetSkillType():
- useCntLimit = TurnSkill.CheckSkillUseCntLimit(batObj, effSkill)
+ useCntLimit = TurnSkill.CheckSkillUseCntLimit(turnFight, batObj, effSkill)
if useCntLimit:
return
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 ffed692..46d36ce 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -86,7 +86,7 @@
GameWorld.DebugLogEx("技能使用处于buff状态限制中! skillID=%s,buffStateGroups=%s,limitState=%s", skillID, buffStateGroups, limitState)
return
- if CheckSkillUseCntLimit(curBatObj, useSkill):
+ if CheckSkillUseCntLimit(turnFight, curBatObj, useSkill):
return
#没有指定目标,则按技能自身的目标逻辑
@@ -201,7 +201,7 @@
useSkill.ResetUseRec()
return True
-def CheckSkillUseCntLimit(batObj, useSkill):
+def CheckSkillUseCntLimit(turnFight, batObj, useSkill):
## 检查技能使用次数是否受限
# @return: 是否受限,None-没有受限效果,False-不受限,True-受限了
if not hasattr(useSkill, "GetEffectByID"):
@@ -214,12 +214,14 @@
skillID = useSkill.GetSkillID()
if useCntLimit:
+ useCntLimit += TurnPassive.GetTriggerEffectValue(turnFight, batObj, None, ChConfig.PassiveEff_AddSkillUseCntLimit, useSkill, LimitByTurnAll=1)
useCnt = batObj.GetSkillUseCnt(skillID)
if useCnt >= useCntLimit:
GameWorld.DebugLogEx("技能每场战斗使用次数受限! skillID=%s,useCnt=%s >= %s", skillID, useCnt, useCntLimit)
return True
if turnUseCntLimit:
+ turnUseCntLimit += TurnPassive.GetTriggerEffectValue(turnFight, batObj, None, ChConfig.PassiveEff_AddSkillUseCntLimit, useSkill, LimitByTurnPer=1)
turnUseCnt = batObj.GetSkillTurnUseCnt(skillID)
if turnUseCnt >= turnUseCntLimit:
GameWorld.DebugLogEx("技能每大回合使用次数受限! skillID=%s,turnUseCnt=%s >= %s", skillID, turnUseCnt, turnUseCntLimit)
@@ -2318,7 +2320,6 @@
def CanSuperHit(turnFight, atkObj, defObj, curSkill):
if TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_MustSuperHit, curSkill):
- GameWorld.DebugLogEx("目标血量低于百分x时必定暴击: defID=%s,hp:%s/%s", defObj.GetID(), defObj.GetHP(), defObj.GetMaxHP())
return True
aSuperHitRate = atkObj.GetBatAttrValue(ChConfig.AttrID_SuperHitRate)
--
Gitblit v1.8.0