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