From 666882e6e4f8bfbc698c21229d4bbd3f4a318738 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 22 六月 2019 16:59:25 +0800
Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 - 改变技能特效

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py             |   42 +++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py                   |    4 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4110.py |   26 +++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                            |    3 +
 4 files changed, 74 insertions(+), 1 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
index f705570..e700b1c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -1379,6 +1379,9 @@
     
     #技能攻击
     skillID = curSkill.GetSkillID()
+    changeSkillID = PassiveBuffEffMng.GetPassiveSkillValueByTriggerTypeEx(attacker, None, curSkill, ChConfig.TriggerType_ChangeSkillEff)
+    if changeSkillID:
+        skillID = changeSkillID
     battleType = AttackCommon.GetBattleType(attacker, curSkill)
     #无目标类技能
     if not defender:
@@ -2757,6 +2760,7 @@
     # ChangeAction(paAttack);
     # m_LastBattleTick = GetGameWorldManager()->GetTick();
     #===========================================================================
+    
     sendPack = ChNetSendPack.tagUseSkillPos()
     sendPack.Clear()
     sendPack.ObjID = attacker.GetID()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 2631cf6..babd797 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -4482,7 +4482,8 @@
 TriggerType_SkillSuccessExpend, # 使用技能成功后不触发技能 处理消耗等问题用 87
 TriggerType_ThumpSkillValue, # 重击增加技能固定值伤害 88
 TriggerType_HitValue, # 记录命中个数 89
-) = range(1, 90)
+TriggerType_ChangeSkillEff, # 改变技能特效广播 90
+) = range(1, 91)
 
 
 #不可以佩戴翅膀的地图
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4110.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4110.py
new file mode 100644
index 0000000..796c2e7
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4110.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 攻击方的最大生命百分比转化为固定伤害值
+#
+# @author: Alee
+# @date 2019-6-18 下午09:24:04
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+import ChConfig
+import GameObj
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    return True
+    
+
+def GetValue(attacker, defender, effect, skillTypeID):
+    if effect.GetEffectValue(1):
+        return effect.GetEffectValue(1)
+    return skillTypeID
+
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 51ee15f..d1f1edd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -405,6 +405,7 @@
              4107:ChConfig.TriggerType_SkillValue,   # 增加技能伤害固定值 82
              4108:ChConfig.TriggerType_SkillSuccess,  # 使用技能成功后不触发技能 处理消耗等问题用 87
              4109:ChConfig.TriggerType_SkillValue,   # 增加技能伤害固定值 82
+             4110:ChConfig.TriggerType_ChangeSkillEff, # 改变技能特效
              }
     return tdict.get(effectID, -1) 
     #===========================================================================
@@ -1707,3 +1708,44 @@
     return True
 
 
+# 被动技能改变值  无条件限制 纯取值
+def GetPassiveSkillValueByTriggerTypeEx(attacker, defender, connSkill, triggerType):
+    attacker = FindRealAttacker(attacker)
+    if not attacker:
+        return 0
+    
+    passiveEff = GetPassiveEffManager().GetPassiveEff(attacker)
+    if not passiveEff:
+        return 0
+    connSkillID = connSkill.GetSkillTypeID() if connSkill else 0
+    skills = passiveEff.GetPassiveSkillsByTriggerType(triggerType, connSkill)
+    if not skills:
+        return 0
+    
+    curValue = 0
+
+    for skillTypeID, effectID in skills:
+        if connSkillID == skillTypeID:
+            continue
+        curSkill = attacker.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
+        if not curSkill:
+            continue
+
+        effect = SkillCommon.GetSkillEffectByEffectID(curSkill, effectID)
+        if not effect:
+            continue
+        pyName = "PassiveSkill_%s" % effectID
+
+        callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "CheckCanHappen"))
+        
+        # 条件不满足
+        if callFunc and not callFunc(attacker, defender, effect, curSkill):
+            continue
+        
+        callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetValue"))
+        if callFunc is None:
+            continue
+        
+        curValue += callFunc(attacker, defender, effect, skillTypeID)
+        
+    return curValue

--
Gitblit v1.8.0