From 1388ea949201a3fedc71f39c671cacb7389df8a3 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 18 六月 2019 21:58:09 +0800
Subject: [PATCH] 7338 子 【开发】【2.0】称号,灵宠,技能附带效果 / 【后端】【2.0】新增技能

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py |   45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 44 insertions(+), 1 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
index 813cca8..8b11b82 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -177,6 +177,11 @@
                                                      ChConfig.Def_PDictType_GFPassive)
         if findSkillID == 0:
             continue
+        
+        passiveEff = GetPassiveEffManager().GetPassiveEff(curPlayer)
+        if passiveEff:
+            findSkillID = passiveEff.ChangeSkillTypeID(findSkillID)
+            
         skills.append(findSkillID)
         
     return skills
@@ -393,6 +398,7 @@
              4106:ChConfig.TriggerType_AddHP,   # 技能回血 84
              4107:ChConfig.TriggerType_SkillValue,   # 增加技能伤害固定值 82
              4108:ChConfig.TriggerType_SkillSuccess,  # 使用技能成功后不触发技能 处理消耗等问题用 87
+             4109:ChConfig.TriggerType_SkillValue,   # 增加技能伤害固定值 82
              }
     return tdict.get(effectID, -1) 
     #===========================================================================
@@ -474,6 +480,9 @@
         self.AffectDogzSkillDict = {}   # 神兽助战技能
         self.AffectSuperEquipSkillDict = {}   # 特殊装备持有技能,相同技能不重复,数值增长性衰减, 触发使用
         self.AffectSuperEquipEffectCntDict = {}  # 特殊装备技能效果对应的已计算后的数值,直接调用
+    
+        self.ChangeSkill = {}   # 改变释放的技能ID,方便处理特效动作表现等问题 {原SkillTypeID: 改变后的SkillTypeID}
+        self.IsChangeSkill = False # 当前是否刷新技能替换
     
     #记录会影响其他技能或者被动触发释放技能的BUFF
     def AddBuffInfoByEffect(self, effect, skillID, onwerID, onwerType):
@@ -635,10 +644,26 @@
         
         return self.AffectPassiveSkillSetDict
     
+    # 改变技能ID的处理, 先存储释放的时候替换, 并且不登记到被动触发
+    def ChangeSkillTypeIDDict(self, curSkill):
+        hasEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_ChangeSkillTypeID)
+        if not hasEffect:
+            return
+        self.ChangeSkill[hasEffect.GetEffectValue(0)] = curSkill.GetSkillTypeID()
+        
+        self.IsChangeSkill = True
+        GameWorld.DebugLog("self.ChangeSkill  --- %s"%self.ChangeSkill)
+        return True
+    
+    # 真实替换技能ID
+    def ChangeSkillTypeID(self, skillID):
+        return self.ChangeSkill.get(skillID, skillID)
+    
     
     # 重刷被动型技能(含sp,天赋,不含被动技能功能)存储
     def RefreshPassiveSkill(self):
         self.AffectSkillDict = {}
+        self.ChangeSkill = {}
         skillManager = self.gameObj.GetSkillManager()
         for i in range(0 , skillManager.GetSkillCount()):
             curSkill = skillManager.GetSkillByIndex(i)
@@ -651,6 +676,10 @@
             if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbPassiveSkill,
                                           ChConfig.Def_SkillFuncType_Dogz]:
                 # 被动技能和神兽需设置才有效
+                continue
+            
+            # 改变技能ID的处理
+            if self.ChangeSkillTypeIDDict(curSkill):
                 continue
             
             skillTypeID = curSkill.GetSkillTypeID()
@@ -776,9 +805,19 @@
                 return
             self.AddPassiveEff(gameObj, passiveEff)
         elif skillID:
+            curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+            if curSkill and passiveEff.ChangeSkillTypeIDDict(curSkill):
+                # 替换技能不添加
+                return
+            
             # 单个添加被动技能
             passiveEff.AddPassiveSkill(skillID)
-
+            
+        if passiveEff.IsChangeSkill:
+            GameWorld.DebugLog("刷被动----")
+            # 存在替换技能 目前需要刷新镶嵌的被动技能,存在多刷现象
+            self.RegistPassiveEffSet(gameObj)
+            return True
         return
     
     # 人物需同步注册被动技能
@@ -1632,6 +1671,10 @@
     # 如灼烧是被动技能 但可以被不断的强化
     if useSkill.GetSkillType() != ChConfig.Def_SkillType_PassiveLstDepBuff:
         return False
+    
+    if useSkill.GetFuncType() == ChConfig.Def_SkillFuncType_PassiveSkillWithSP:
+        # 有专精的被动技能,可以再次触发被动效果
+        return False
     return True
 
 

--
Gitblit v1.8.0