From 2f70daba66fed14fcdef73ff2b2018a41a708741 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 23 九月 2025 18:59:12 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(关羽技能;增加效果6009-目标生命值低于x%必定暴击;增加技能计算方式类型5-按目标已损失生命计算伤害;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py | 2 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py | 21 +++++++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py | 6 ++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 8 +++++---
4 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 26475c4..ff9a710 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -1330,7 +1330,8 @@
Def_Calc_LastHurt, # 最后一次伤害值 2
Def_Calc_TagMaxHP, # 目标最大生命值 3
Def_Calc_ByBuffValue, # 触发buff的buff值 4
-) = range(5)
+Def_Calc_TagLostHP, # 目标已损失生命 5
+) = range(6)
#治疗类型(影响公式参数)
Def_CureTypeList = (
@@ -4312,11 +4313,12 @@
PassiveEff_AddSkillPerByJob = 6006 # 增加本次技能万分比: 值1-增加的万分比;值2-验证目标职业
PassiveEff_AddSkillTagCnt = 6007 # 增加技能目标数:值1-增加目标个数
PassiveEff_ImmuneControlBuff = 6008 # 生命值低于x%时免疫控制效果:值1-百分比
+PassiveEff_MustSuperHit = 6009 # 生命值低于x%时必定暴击:值1-百分比
# 被动效果ID有触发值时就返回的
-PassiveEffHappenValueList = [PassiveEff_ChangeHurtType]
+PassiveEffHappenValueList = [PassiveEff_ChangeHurtType, PassiveEff_ImmuneControlBuff, PassiveEff_MustSuperHit]
# 被动效果ID触发值取最大值的
-PassiveEffValueMaxList = []
+PassiveEffValueMaxList = [PassiveEff_ChangeHurtMulti]
# 被动效果ID触发值取最小值的
PassiveEffValueMinList = []
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py
index 65a0d65..176d158 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6008.py
@@ -17,5 +17,5 @@
def GetHappenValue(attacker, defender, curEffect, effSkill, **skillkwargs):
lowerThanPer = curEffect.GetEffectValue(0)
- nowPer = attacker.GetHP() / float(attacker.GetMaxHP())
+ nowPer = attacker.GetHP() / float(attacker.GetMaxHP()) * 100
return 1 if nowPer < lowerThanPer else 0
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
new file mode 100644
index 0000000..1c4d994
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6009.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Skill.PassiveTrigger.PassiveEff_6009
+#
+# @todo:目标生命值低于x%必定暴击
+# @author hxp
+# @date 2025-09-23
+# @version 1.0
+#
+# 详细描述: 目标生命值低于x%必定暴击
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2025-09-23 19:00"""
+#-------------------------------------------------------------------------------
+
+def GetHappenValue(attacker, defender, curEffect, effSkill, **skillkwargs):
+ lowerThanPer = curEffect.GetEffectValue(0)
+ nowPer = defender.GetHP() / float(defender.GetMaxHP()) * 100
+ return 1 if nowPer < lowerThanPer else 0
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 0c989bb..1ee372c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -1275,6 +1275,10 @@
return hurtValue, hurtTypes
def CanSuperHit(turnFight, atkObj, defObj, curSkill):
+ if TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_MustSuperHit, curSkill):
+ GameWorld.DebugLog("目标血量低于百分x时必定暴击: defID=%s,hp:%s/%s" % (defObj.GetID(), defObj.GetHP(), defObj.GetMaxHP()))
+ return True
+
aSuperHitRate = atkObj.GetBatAttrValue(ChConfig.AttrID_SuperHitRate)
aSuperHitRate += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SuperHitRate, curSkill)
dSuperHitRateDef = defObj.GetBatAttrValue(ChConfig.AttrID_SuperHitRateDef)
@@ -1503,6 +1507,8 @@
baseValue = curObj.GetLastHurtValue()
elif calcType == ChConfig.Def_Calc_TagMaxHP:
baseValue = 0 if not tagObj else tagObj.GetMaxHP()
+ elif calcType == ChConfig.Def_Calc_TagLostHP:
+ baseValue = 0 if not tagObj else max(0, tagObj.GetMaxHP() - tagObj.GetHP())
elif calcType == ChConfig.Def_Calc_ByBuffValue:
byBuff = curSkill.GetByBuff()
if byBuff:
--
Gitblit v1.8.0