From c63ffd10aecb12b2e09dae603cf9a0f824f6482c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 10 十二月 2025 15:46:15 +0800
Subject: [PATCH] 16 卡牌服务端(合成目标物品与材料物品不在同一背包时支持合成;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveTrigger/PassiveEff_6014.py |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 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 4178873..34f9b4d 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
@@ -15,5 +15,37 @@
 #"""Version = 2025-09-25 18:00"""
 #-------------------------------------------------------------------------------
 
+import GameWorld
+import ChConfig
+
 def GetHappenValue(attacker, defender, curEffect, effSkill, effBuff, connSkill, **skillkwargs):
-    return curEffect.GetEffectValue(0)
\ No newline at end of file
+    addRate = curEffect.GetEffectValue(0)
+    onlyFirstUse = curEffect.GetEffectValue(1) # 是否仅首次释放技能有效
+    skillID = connSkill.GetSkillID() if connSkill else skillkwargs.get("connSkillID", 0)
+    if onlyFirstUse:
+        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
+        
+    failAddRateEx = curEffect.GetEffectValue(2) # 失败次数额外增加概率
+    if failAddRateEx:
+        failCnt = attacker.GetSkillHappenFailCnt(skillID)
+        mustHappenFailCnt = curEffect.GetEffectValue(3) # x次失败后必定释放,大于0有效
+        if mustHappenFailCnt and failCnt >= mustHappenFailCnt:
+            addRate = ChConfig.Def_MaxRateValue # 强制增加满概率
+            GameWorld.DebugLog("技能概率失败次数必定成功: mustHappenFailCnt=%s,failCnt=%s,addRate=%s" % (mustHappenFailCnt, failCnt, addRate))
+        elif failCnt > 0:
+            addRate = failAddRateEx * failCnt
+            GameWorld.DebugLog("技能概率失败次数增加概率: failAddRateEx=%s,failCnt=%s,addRate=%s" % (failAddRateEx, failCnt, addRate))
+            
+    if effBuff:
+        buffLayer = effBuff.GetLayer()
+        if buffLayer > 1:
+            addRate *= buffLayer
+            GameWorld.DebugLog("多层buff增加技能概率! skillID=%s,buffLayer=%s,addRate=%s" % (effBuff.GetSkillID(), buffLayer, addRate))
+            
+    return addRate

--
Gitblit v1.8.0