From 1a3ffe8f1c45c946d9a7286217107bf3e42d86d6 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 12 十一月 2018 21:39:28 +0800
Subject: [PATCH] 2683 子 天赋技能和新增双职业各两个技能 / 【后端】天赋技能  --- 天赋技能减CD,buff减层关联技能可触发

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
index 5a1464a..9451718 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerMagicWeapon.py
@@ -36,6 +36,8 @@
 import ChEquip
 import PlayerVip
 
+import random
+
 g_succInfoDict = {}
 g_potentialsSkillDict = {}
 ##登录处理
@@ -387,8 +389,20 @@
     #infoDict = {"SkillID":skillTypeID, "SkillLV":upSkillLv, ChConfig.Def_Cost_Reason_SonKey:upSkill.GetSkillName()}
     if not PlayerControl.PlayerLostZhenQi(curPlayer, needSP):
         return
-    
-    if not GameWorld.CanHappen(initRate):
+    playerID = curPlayer.GetPlayerID()
+    maxRateValue = ShareDefine.Def_MaxRateValue
+    randValue = random.randint(0, maxRateValue-1)
+    canHappen = randValue < initRate
+    GameWorld.DebugLog("canHappen=%s,randValue=%s,initRate=%s,maxRateValue=%s" 
+                       % (canHappen, randValue, initRate, maxRateValue), playerID)
+    # 不是百分百成功的记录合成流向
+    if initRate != maxRateValue:
+        drDict = {"PlayerID":playerID, "AccID":curPlayer.GetAccID(), "skillTypeID":skillTypeID, "IsSuccess":canHappen,
+                  "initRate":initRate, "randValue":randValue, "maxRateValue":maxRateValue}
+
+        DataRecordPack.SendEventPack("MagicWeaponSkillUp", drDict, curPlayer)
+
+    if not canHappen:
         GameWorld.DebugLog("法宝技能升级,curSkillID=%s, maxRate=%s 升级失败" % (curSkillID, initRate))
         curPlayer.Sync_MakeItemAnswer(ShareDefine.Def_mitMagicWeaponSkillUp, 0)
         return
@@ -925,6 +939,9 @@
         multiple = 1 #倍数
         if singleValue:
             gotValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWSoulGotValue % privilege)
+            maxValue = privilegeIpyData.GetMaxValue()
+            if maxValue:
+                gotValue = min(maxValue, gotValue)
             multiple = gotValue/singleValue
         for attid, attnum in attrInfo.items():
             addAttr[int(attid)] = attnum * multiple
@@ -956,14 +973,20 @@
         GameWorld.DebugLog('领取法宝之魂奖励,对应法宝之魂未激活,或未配置 privilege=%s'%privilege)
         return
     singleValue = ipyData.GetSingleValue()
+    maxValue = ipyData.GetMaxValue()
     if singleValue:
         #达到进度则可领取属性
         curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWSoulCurValue % privilege)
         gotValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_MWSoulGotValue % privilege)
+        if gotValue >= curValue:
+            return
         canGetCnt = (curValue - gotValue) / singleValue
+        if canGetCnt <= 0 and maxValue and curValue >= maxValue:
+            canGetCnt = 1 #已达到次数上限,最后一次不管是否满足都让领(一般是因为配置错误或者变更导致)
         if canGetCnt <= 0:
             return
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MWSoulGotValue % privilege, gotValue+canGetCnt*singleValue)
+        updGotCnt = min(maxValue, gotValue+canGetCnt*singleValue) if maxValue else gotValue+canGetCnt*singleValue
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MWSoulGotValue % privilege, updGotCnt)
         CalcMagicWeaponSoulAttr(curPlayer)
         PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
         

--
Gitblit v1.8.0