From cec6b0d59b0ea6d0ea5d165183b7d93569de0761 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 01 十一月 2018 14:56:16 +0800
Subject: [PATCH] 4521 【后端】【1.2.0】N阶前防具合成,前X次红2必成,前Y次红三必成

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                       |    3 +++
 PySysDB/PySysDBPY.h                                                                                        |    1 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py |   15 ++++++++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                            |    2 +-
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 5efdcb1..c7485d2 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -70,6 +70,7 @@
 struct	tagItemCompound
 {
 	WORD		_ID;	//合成配置编号ID
+	BYTE		ComposeGroup;	//合成归组类型
 	list		MakeID;	//可合成的道具ID,多个则随机一个
 	BYTE		IsFirstSuccMakeJobItem;	//首次成功是否必出本职业
 	list		UnfixedItemID;	//不固定道具ID, 多个ID时则任意一种均可
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 8f03608..aaa490d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3503,7 +3503,7 @@
 
 Def_PDict_IsAddReviveTired = "IsAddReviveTired"  # 死亡是否增加复活疲劳
 
-Def_PDict_HadCompoundWing = "HadCompoundWing"  # 是否合成过一代翅膀
+Def_PDict_ComposeMustSuccess = "ComposeMustSuccess_%s"  # 前X次合成必定成功,参数(合成归组)
 Def_PDict_FirstSuccMakeJobItem = "FirstSuccMakeJobItem_%s"  # 首次合成成功给本职业物品记录,参数为(合成ID)
 
 Def_PDict_DownloadAwardState = "DownloadAwardState"  # 分支下载奖励状态 0-未领 1-已领
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
index 2a65f95..f87e025 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_ItemCompound.py
@@ -71,6 +71,7 @@
         GameWorld.ErrLog("找不到该合成表数据配置! ID=%s" % compoundID)
         return
     
+    composeGroup = ipyData.GetComposeGroup()
     makeIDList = ipyData.GetMakeID()
     unfixedItemIDList = ipyData.GetUnfixedItemID()
     fixedItemIDList = ipyData.GetFixedItemID()
@@ -223,12 +224,16 @@
         totalSuccRate = min(successRateMax, totalSuccRate)
     GameWorld.DebugLog("合成成功率: successRate=%s,addSuccRate=%s,incRate=%s,successRateMax=%s,totalSuccRate=%s" 
                        % (successRate, addSuccRate, incRate, successRateMax, totalSuccRate), playerID)
-    # 首次合成一代翅膀成功率百分百
-    if makeItemData.GetType() == ChConfig.Def_ItemType_retWing and ItemCommon.GetWingLV(makeItemData) == 1:
-        if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HadCompoundWing):
+    # 前X次合成成功率百分百
+    composeMustSuccessDict = IpyGameDataPY.GetFuncEvalCfg("ComposeMustSuccess", 1, {})
+    if composeGroup in composeMustSuccessDict:
+        mustSuccessCountTotal = composeMustSuccessDict[composeGroup]
+        hisComposeCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ComposeMustSuccess % composeGroup)
+        if hisComposeCount < mustSuccessCountTotal:
             totalSuccRate = ShareDefine.Def_MaxRateValue
-            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HadCompoundWing, 1)
-            GameWorld.DebugLog("首次合成一代翅膀,必定成功!totalSuccRate=%s" % totalSuccRate, playerID)
+            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ComposeMustSuccess % composeGroup, hisComposeCount + 1)
+            GameWorld.DebugLog("前X次合成必定成功!composeGroup=%s,hisComposeCount=%s,mustSuccessCountTotal=%s,totalSuccRate=%s" 
+                               % (composeGroup, hisComposeCount, mustSuccessCountTotal, totalSuccRate), playerID)
             
     # 合成成功
     maxRateValue = ShareDefine.Def_MaxRateValue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index e73c365..de04888 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -85,6 +85,7 @@
 
                 "ItemCompound":(
                         ("WORD", "ID", 1),
+                        ("BYTE", "ComposeGroup", 0),
                         ("list", "MakeID", 0),
                         ("BYTE", "IsFirstSuccMakeJobItem", 0),
                         ("list", "UnfixedItemID", 0),
@@ -1178,6 +1179,7 @@
     
     def __init__(self):
         self.ID = 0
+        self.ComposeGroup = 0
         self.MakeID = []
         self.IsFirstSuccMakeJobItem = 0
         self.UnfixedItemID = []
@@ -1194,6 +1196,7 @@
         return
         
     def GetID(self): return self.ID # 合成配置编号ID
+    def GetComposeGroup(self): return self.ComposeGroup # 合成归组类型
     def GetMakeID(self): return self.MakeID # 可合成的道具ID,多个则随机一个
     def GetIsFirstSuccMakeJobItem(self): return self.IsFirstSuccMakeJobItem # 首次成功是否必出本职业
     def GetUnfixedItemID(self): return self.UnfixedItemID # 不固定道具ID, 多个ID时则任意一种均可

--
Gitblit v1.8.0