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/Skill/PassiveBuffEffMng.py             |    1 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py  |   18 ++++++++++++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py        |    8 +++++++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4064.py |   21 +++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                            |    3 ++-
 5 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index dca95dd..fdba3cf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4366,7 +4366,8 @@
 TriggerType_StormAttackReduceCD, # 类剑刃风暴攻击每攻击一次减少CD  58
 TriggerType_AttackAddFinalPer,   #增加最终伤害百分比 59
 TriggerType_SummonDie,   #自身召唤兽死亡触发技能 60
-) = range(1, 61)
+TriggerType_GiftReduceCD, # 天赋用的减CD 61
+) = range(1, 62)
 
 
 # NPC功能类型定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index 16ce277..1913474 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -99,6 +99,13 @@
     coolDownTime = curSkill.GetCoolDownTime()
     remainTime = coolDownTime
     if isPassiveSkill(curSkill):
+        if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
+            # 天赋有减CD效果
+            reduceSkillCDPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, None, curSkill, ChConfig.TriggerType_GiftReduceCD)
+            # 减CD比率
+            if reduceSkillCDPer > 0:
+                remainTime = int(remainTime * max(0, ShareDefine.Def_MaxRateValue - reduceSkillCDPer) / ShareDefine.Def_MaxRateValue)
+                
         # 被动技能的处理和主动技能区分
         curSkill.SetRemainTime(remainTime)
         return
@@ -108,7 +115,6 @@
     #    remainTime = skillData.GetCoolDownTime()
     
     reduceSkillCDPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, None, curSkill, ChConfig.TriggerType_ReduceCD)
-
     # 减CD比率
     if reduceSkillCDPer > 0:
         remainTime = int(remainTime * max(0, ShareDefine.Def_MaxRateValue - reduceSkillCDPer) / ShareDefine.Def_MaxRateValue)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
index fdd6126..f01be80 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
@@ -19,6 +19,20 @@
 import IPY_GameWorld
 
 def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+    # 先判断概率
+    rate = passiveEffect.GetEffectValue(0)
+    if rate and not GameWorld.CanHappen(rate):
+        return False
+    
+    # 关联技能
+    checkSkillID = passiveEffect.GetEffectValue(2)
+    if checkSkillID:
+        useSkill = skillkwargs.get("useSkill", None)
+        if not useSkill:
+            return False
+        if useSkill.GetSkillTypeID() != checkSkillID:
+            return False
+        
     curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
     if not curSkill:
         return False
@@ -35,10 +49,6 @@
         return False
 
     if buff.GetLayer() <= 0:
-        return False
-
-    rate = passiveEffect.GetEffectValue(0)
-    if rate and not GameWorld.CanHappen(rate):
         return False
     
     BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4064.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4064.py
new file mode 100644
index 0000000..b103e95
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4064.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+# @todo: 天赋减CD
+#
+# @author: Alee
+# @date 2018-1-9 下午09:39:37
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameObj
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    return True
+
+def GetValue(attacker, defender, effect):
+    return effect.GetEffectValue(0)
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 eca9caa..4cac370 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -339,6 +339,7 @@
              4061:ChConfig.TriggerType_AttackOverPassive,  # 攻击(对敌技能)后被动技能被触发在其他被动效果处理后调用,触发顺序原因
              4062:ChConfig.TriggerType_AttackAddFinalPer, # 增加最终伤害百分比 59
              4063:ChConfig.TriggerType_SummonDie,   #自身召唤兽死亡触发技能 60
+             4064:ChConfig.TriggerType_GiftReduceCD, # 天赋减少CD9, #CD
              }
     return tdict.get(effectID, -1) 
     #===========================================================================

--
Gitblit v1.8.0