From c67a2d59e881e3d1df1a4142983e76e8fb5db24a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 28 十二月 2018 21:26:28 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(匹配规则优化,优先匹配同段位的,同段位不足两个人的支持按段位区间匹配)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py |   32 +++++++++++++++++++++-----------
 1 files changed, 21 insertions(+), 11 deletions(-)

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..ab1c352 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,16 +19,30 @@
 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
-
+    
     buffType = SkillCommon.GetBuffType(curSkill)
     buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
     #通过类型获取目标的buff管理器为空,则跳出
     if buffTuple == ():
         return False
-
+    
     buffManager = buffTuple[0]
     buff = buffManager.FindBuff(curSkill.GetSkillTypeID())
     if not buff:
@@ -36,23 +50,19 @@
 
     if buff.GetLayer() <= 0:
         return False
-
-    rate = passiveEffect.GetEffectValue(0)
-    if rate and not GameWorld.CanHappen(rate):
-        return False
+    triggerSkillID = passiveEffect.GetEffectValue(1)
     
     BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())
     
-    triggerSkillID = passiveEffect.GetEffectValue(1)
     if triggerSkillID and attacker.GetGameObjType() == IPY_GameWorld.gotPlayer:
         skillManager = attacker.GetSkillManager()
         #获得技能
-        curSkill = skillManager.FindSkillBySkillTypeID(triggerSkillID)
-        if curSkill:
+        triggerSkill = skillManager.FindSkillBySkillTypeID(triggerSkillID)
+        if triggerSkill:
             #玩家技能会升级
-            SkillShell.UsePassiveTriggerSkill(attacker, curSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
+            SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
         else:
-            triggerSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+            triggerSkill = GameWorld.GetGameData().GetSkillBySkillID(triggerSkillID)
             if triggerSkill:
                 SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
     return True

--
Gitblit v1.8.0