From d41a44a9fd316c021c4e85bde9cb0fab4c2e0be1 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 15 三月 2019 17:23:43 +0800
Subject: [PATCH] 2683 子 天赋技能和新增双职业各两个技能 / 【后端】天赋技能
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py | 26 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1015.py | 41 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_809.py | 27 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 76 +++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_43.py | 46 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4524.py | 58 ++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4073.py | 23 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4525.py | 41 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4072.py | 27 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py | 4
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py | 28 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py | 8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py | 21 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py | 28 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 14 +
20 files changed, 441 insertions(+), 52 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index f35908b..2be3515 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -1639,31 +1639,7 @@
WriteHurtLog(attacker, defObj, curSkill, hurtValue, hurtType, "公式层")
- # 优先处理神兵护盾
- hurtValue = CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick)
-
- # 伤害吸收盾回血型
- buffManager = defObj.GetBuffState()
- curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShieldXMZJ)
- if skillID:
- absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
- if absortValue:
- hurtValue -= absortValue
- findBuff = SkillCommon.FindBuffByID(defObj, skillID)[0]
- if findBuff:
- # 用于回血
- findBuff.SetValue(int(findBuff.GetValue() + absortValue))
-
- if defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue):
- # 麒麟护盾吸收伤害,将抵消的伤害存储
- absortValue = int(defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue)/float(ShareDefine.Def_MaxRateValue)*hurtValue)
- hurtValue -= absortValue
-
- # 吸收至指定血量比例值
- absorbHurt = defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShield)
- if absorbHurt <= defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax):
- maxValue = min(absorbHurt + absortValue, defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax))
- defObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, maxValue) # 记录护盾吸收的伤害用于爆炸
+ hurtValue = CalcHurtHPWithBuff(atkObj, defObj, hurtValue, curSkill, tick)
# buff减少伤害百分比
reducePer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ReduceHurtHPPer)
@@ -1767,6 +1743,46 @@
#===========================================================================
return resultHurtType
+
+# 计算伤害后,因各种buff和状态的影响处理
+def CalcHurtHPWithBuff(atkObj, defObj, hurtValue, curSkill, tick):
+ # 优先处理神兵护盾
+ hurtValue = CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick)
+
+ # 伤害吸收盾回血型
+ buffManager = defObj.GetBuffState()
+ curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShieldXMZJ)
+ if skillID:
+ absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
+ if absortValue:
+ hurtValue -= absortValue
+ findBuff = SkillCommon.FindBuffByID(defObj, skillID)[0]
+ if findBuff:
+ # 用于回血
+ findBuff.SetValue(int(findBuff.GetValue() + absortValue))
+
+ if defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue):
+ # 麒麟护盾吸收伤害,将抵消的伤害存储
+ absortValue = int(defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldValue)/float(ShareDefine.Def_MaxRateValue)*hurtValue)
+ hurtValue -= absortValue
+
+ # 吸收至指定血量比例值
+ absorbHurt = defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShield)
+ if absorbHurt <= defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax):
+ maxValue = min(absorbHurt + absortValue, defObj.GetDictByKey(ChConfig.Def_PlayerKey_AbsorbShieldMax))
+ defObj.SetDict(ChConfig.Def_PlayerKey_AbsorbShield, maxValue) # 记录护盾吸收的伤害用于爆炸
+
+ # 天罡护法,将期间受到的伤害总值用于回血,不改变伤害
+ curEffect, plusValue, skillID2 = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_StoreBlood)
+ if skillID2:
+ absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
+ if absortValue:
+ findBuff = SkillCommon.FindBuffByID(defObj, skillID2)[0]
+ if findBuff:
+ # 用于回血
+ findBuff.SetValue(int(findBuff.GetValue() + absortValue))
+ return hurtValue
+
# GM 命令 HurtLog 查看战斗伤害日志
@@ -1951,6 +1967,11 @@
# 暴击增加技能伤害
atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer)
+ atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer)
+
+ # buff中暴击减层,无触发技能
+ PassiveBuffEffMng.OnPassiveBuffTrigger(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSubLayer, tick)
+
if isLuckyHit:
# 会心一击时增加会心伤害百分比
@@ -2195,7 +2216,8 @@
atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtValue, resultHurtType.RealHurtHP)
if defObj.GetGameObjType() == IPY_GameWorld.gotNPC:
atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtNPCObjID, defObj.GetID())
-
+ else:
+ defObj.SetDict(ChConfig.Def_PlayerKey_LastAttackerObjID, atkObj.GetID())
return
@@ -2348,7 +2370,7 @@
atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
atkBackHP += int(hurtValue * atkBackHPPer*1.0 / ChConfig.Def_MaxRateValue)
-
+
suckHP += atkBackHP
if suckHP <= 0:
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 4edf89d..d70b3fb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -1499,9 +1499,10 @@
curPlayerSkill = curPlayer.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
if curPlayerSkill:
-
- #设置玩家所学技能冷却CD
- SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
+
+ if not IsSkipSkillCD:
+ #设置玩家所学技能冷却CD
+ SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
#调用任务触发器
#EventShell.EventRespons_UseSkillOK(curPlayer, skillTypeID)
#执行连环被动技能处理
@@ -1516,6 +1517,27 @@
# 普攻和对敌技能
UseSkillOver(curPlayer, target, curSkill, tick)
return True
+
+# 无冷却状态
+def IsSkipSkillCD(curPlayer, target, curSkill, tick):
+ # 暴击情况下
+ isSuperHit = False
+ for i in xrange(g_skillHurtList.GetHurtCount()):
+ hurtObj = g_skillHurtList.GetHurtAt(i)
+ if not hurtObj:
+ continue
+
+ if hurtObj.GetAttackType() == ChConfig.Def_HurtType_SuperHit:
+ isSuperHit = True
+ break
+
+ if isSuperHit:
+ if PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(curPlayer, None, curSkill, ChConfig.TriggerType_SuperHitSkipCD):
+ return True
+ if PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(curPlayer, None, curSkill, ChConfig.TriggerType_SuperHitSkipCD):
+ return True
+ return False
+
# 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
def OnHurtTypeTriggerSkill(attacker, target, curSkill, tick):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index f51c7c8..e180657 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -573,6 +573,7 @@
Def_Skill_Effect_AbsorbShield = 801 # A值记录吸收伤害值,B值记录吸收值上限为xx%血量上限值 C值为释放的爆炸技能ID 如麒麟盾
Def_Skill_Effect_AbsorbShieldXMZJ = 802 # 须弥真界 神兵技能吸收伤害 百分比
Def_Skill_Effect_BoomSeedHurt = 804 # BUFF种子单层伤害
+Def_Skill_Effect_StoreBlood = 809 # 将期间受到的伤害总值,用于最后回血,不影响伤害
Def_Skill_Effect_AttackReplace = 1009 #攻击计算,野外小怪伤害替换1010 (2018-03-07增加精英怪)
Def_Skill_Effect_Attack = 1010 #攻击计算
Def_Skill_Effect_LayerCnt = 1011 # BUFF层级数量 A值层数,B值层数处理方式0递增1递减
@@ -632,7 +633,7 @@
#---------需要记录在buff管理器中的效果ID,主要用于查找用---------------------------
-Def_BuffManager_EffectsID = [Def_Skill_Effect_ProBloodPer, Def_Skill_Effect_AbsorbShieldXMZJ]
+Def_BuffManager_EffectsID = [Def_Skill_Effect_ProBloodPer, Def_Skill_Effect_AbsorbShieldXMZJ, Def_Skill_Effect_StoreBlood]
#-------------------------------------------------------------------------
#基础属性效果ID
@@ -3017,13 +3018,16 @@
Def_PlayerState_LoseBlood2, # 职业2持续掉血状态 14
Def_PlayerState_LoseBlood3, # 职业3持续掉血状态 15
Def_PlayerState_MissSneerAtk, # 对嘲讽攻击免疫表现为miss 16
-) = range(17)
+ Def_PlayerState_BeInAir, # 浮空(做法同眩晕类) 17
+) = range(18)
#---SetDict 含NPC字典KEY,不存于数据库---
Def_GameObjKey_InheritOwner = "InheritOwner" # 类暴风雪计算时用主人属性
#---SetDict 玩家字典KEY,不存于数据库---
# key的长度不能超过29个字节
+Def_PlayerKey_AddBuffLayer = "addBuffLayer" # buff当前层数
+Def_PlayerKey_BuffHurtCnt = "BuffHurtCnt" # 持续buff掉血次数
Def_PlayerKey_Zhansha = "zhansha" # 斩杀标志
Def_PlayerKey_ZhuxianRate = "ZXRate" # 诛仙一击的概率
Def_PlayerKey_ZhuxianHurtPer = "ZXHurtPer" # 诛仙一击的伤害%
@@ -3175,6 +3179,7 @@
Def_PlayerKey_IgnoreDefRateReduce = "IgnoreDefRateReduce" # 抗无视防御概率
Def_PlayerKey_LastHurtValue = "LastHurtValue" # 最后一次伤害值
Def_PlayerKey_LastHurtNPCObjID = "LastHurtNPCObjID" # 最后攻击的NPCObjID
+Def_PlayerKey_LastAttackerObjID = "LastAttackerObjID" # 被攻击者记录的最近攻击玩家ID
Def_PlayerKey_ReduceSkillCDPer = "ReduceSkillCDPer" # 减技能CD万分率
Def_PlayerKey_CommMapExpRate = "CommMapExpRate" # 常规地图经验倍率加成
Def_PlayerKey_FinalHurtPer = "FinalHurtPer" # 最终伤害百分比
@@ -4537,7 +4542,10 @@
TriggerType_BeLuckyHit, # 被会心一击触发技能 64
TriggerType_BeLuckyHitSubPer, # 减少受到的会心伤害 65
TriggerType_ZhongjiZhansha, # 终极斩杀 66
-) = range(1, 67)
+TriggerType_SuperHitSubLayer, # 暴击减层 67
+TriggerType_SuperHitSkipCD, # 暴击无冷却 68
+TriggerType_BuffHurtCnt, # 当持续buff伤害第X次时触发技能 69
+) = range(1, 70)
# NPC功能类型定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
index a212d18..eb752ad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -55,14 +55,16 @@
# @param pyState 状态
# @param isTrue 是否设置该状态
# @return None
-def SetPyPlayerState(gameObj, pyState, isTrue):
+def SetPyPlayerState(gameObj, pyState, isAdd):
if pyState not in ChConfig.Def_PlayerStateList:
return
curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
- if isTrue:
+ if isAdd:
+ # 增加
updState = curState | pow(2, pyState)
else:
+ # 删除
if curState & pow(2, pyState) == 0:
return
else:
@@ -70,7 +72,7 @@
#GameWorld.DebugLog("SetPyPlayerState (%s - %s), curState=%s,updState=%s"
- # % (pyState, isTrue, curState, updState))
+ # % (pyState, isAdd, curState, updState))
gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, updState)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
index ca17209..3c3f3ae 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -220,10 +220,10 @@
curBuff.SetLayer(curLayerCnt + 1)
#BUFF层级变化触发被动
if buffOwner:
- curObj.SetDict("addBuffLayer", curBuff.GetLayer())
+ curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, curBuff.GetLayer())
PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick)
PassiveBuffEffMng.OnPassiveBuffTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick)
- curObj.SetDict("addBuffLayer", 0)
+ curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, 0)
else:
curBuff.SetLayer(layerMaxCnt)
changeLayer = True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py
index 8f90924..2e5560a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1089.py
@@ -16,6 +16,8 @@
import GameWorld
import ChConfig
import GameObj
+import IPY_GameWorld
+import PassiveBuffEffMng
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -40,7 +42,28 @@
curBuffSkillID = curBuff.GetSkill().GetSkillTypeID()
SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed)
+ if curEffect.GetEffectValue(2) and buffOwner:
+ SkillCommon.SkillAddHP(buffOwner, curBuffSkillID, singleDecHP)
+
+ OnPassiveSkillByHurtCount(defender, curBuff, curEffect, buffOwner)
return
+
+
+def OnPassiveSkillByHurtCount(defender, curBuff, curEffect, buffOwner):
+ if not buffOwner:
+ return
+ if buffOwner.GetGameObjType() != IPY_GameWorld.gotPlayer:
+ return
+ # 执行次数。 当汲灵对目标造成3次伤害时,可降低目标20%的防御
+ curBuff.SetValue1(curBuff.GetValue1() + 1)
+ tick = GameWorld.GetGameWorld().GetTick()
+
+ defender.SetDict(ChConfig.Def_PlayerKey_BuffHurtCnt, curBuff.GetValue1())
+ PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, defender, curBuff.GetSkill(), ChConfig.TriggerType_BuffHurtCnt, tick)
+ defender.SetDict(ChConfig.Def_PlayerKey_BuffHurtCnt, 0)
+
+ return
+
## 持续性Buff消失
# @param defender 承受者
@@ -63,6 +86,9 @@
buffOwner = SkillCommon.GetBuffOwner(curBuff)
SkillCommon.SkillLostHP(defender, curSkill.GetSkillTypeID(), buffOwner, buffValue, tick, hurtType=ChConfig.Def_HurtType_Bleed)
+
+ # 执行次数
+ OnPassiveSkillByHurtCount(defender, curBuff, curEffect, buffOwner)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1015.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1015.py
new file mode 100644
index 0000000..3d62c4c
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1015.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 吸收对方属性,有目标技能(41),最多3种属性, 增益buff
+#
+# @author: Alee
+# @date 2019-3-15 下午04:48:41
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import BuffSkill
+import IPY_GameWorld
+#---------------------------------------------------------------------
+
+## buff线性增加属性
+# @param defender Buff承受者
+# @param curEffect 技能效果
+# @param calcDict 技能效果累加总表
+# @return None
+def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
+ attrType = curEffect.GetEffectValue(0)
+
+ vauleFunc = [curBuff.GetValue, curBuff.GetValue1, curBuff.GetValue2]
+ calcDict[attrType] = calcDict.get(attrType, 0) + vauleFunc[min(2, curEffect.GetEffectValue(2))]()
+ return
+
+
+## 返回buff类型,线性与否
+# @param
+# @return None
+# @remarks 函数详细说明.
+def GetCalcType():
+ return ChConfig.TYPE_Linear
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_809.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_809.py
new file mode 100644
index 0000000..d5470fe
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_809.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 将期间受到的伤害总值,用于最后回血,不影响伤害
+#
+# @author: Alee
+# @date 2019-3-14 下午08:34:57
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import SkillCommon
+
+def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
+ if curObj.GetHP() <= 0:
+ return
+
+ value = curBuff.GetValue()
+ if value <= 0:
+ return
+
+ SkillCommon.SkillAddHP(curObj, 0, value)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_43.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_43.py
new file mode 100644
index 0000000..9460df8
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_43.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 吸收对方属性,有目标技能(41), 增益buff
+#
+# @author: Alee
+# @date 2019-3-15 下午04:05:05
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import BaseAttack
+import BuffSkill
+import IPY_GameWorld
+import SkillCommon
+import EffGetSet
+
+
+def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
+ if not defender:
+ return
+ if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
+ return
+
+ addBuffValueList = []
+ # 效果ID | 属性项,万分率
+ # 最多吸收目标3种属性 存入buffvalue
+ for i in range(3):
+ attrIndex = curSkill.GetEffect(i).GetEffectValue(0)
+ if not attrIndex:
+ break
+ curValue = EffGetSet.GetValueByEffIndex(defender, attrIndex)
+ curValue = int(curValue * curSkill.GetEffect(i).GetEffectValue(1) / ChConfig.Def_MaxRateValue)
+
+ addBuffValueList.append(curValue)
+
+ buffType = SkillCommon.GetBuffType(curSkill)
+ BuffSkill.DoAddBuff(attacker, buffType, curSkill, tick, addBuffValueList, attacker)
+
+ #处理技能触发和攻击成功逻辑
+ return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
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 ab1c352..07c913c 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
@@ -68,5 +68,3 @@
return True
-def GetValue(attacker, defender, passiveEffect):
- return 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py
index fdf8ad8..0bc1404 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4514.py
@@ -39,5 +39,3 @@
return True
-def GetValue(attacker, defender, passiveEffect):
- return 0
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py
index ca05704..f0e8fc5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4519.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
-# @todo: 进入濒死状态 血量为1, 不触发技能
+# @todo: 进入濒死状态 血量为1
#
# @author: Alee
# @date 2017-12-9 下午09:41:44
@@ -30,12 +30,15 @@
return False
attacker.SetHP(1)
-
- return False
+
+ # False 可用于多次触发不死的作用
+ return True if passiveEffect.GetEffectValue(1) else False
def GetSkillData(passiveEffect):
- return
+ skillID = passiveEffect.GetEffectValue(1)
+
+ return GameWorld.GetGameData().GetSkillBySkillID(skillID)
def AfterUsePassiveSkill(attacker, defender, passiveEffect, tick):
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py
index 0754760..18d19b5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4520.py
@@ -25,7 +25,7 @@
if passiveEffect.GetEffectValue(2) and passiveEffect.GetEffectValue(2) != skillTypeID:
# 验证关联技能
return False
- return defender.GetDictByKey("addBuffLayer") == passiveEffect.GetEffectValue(0)
+ return defender.GetDictByKey(ChConfig.Def_PlayerKey_AddBuffLayer) == passiveEffect.GetEffectValue(0)
def GetSkillData(passiveEffect):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4524.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4524.py
new file mode 100644
index 0000000..53d4bc9
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4524.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+# @todo: buff暴击攻击减自身buff层
+#
+# @author: Alee
+# @date 2018-1-30 下午05:11:45
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import SkillCommon
+import BuffSkill
+import SkillShell
+import IPY_GameWorld
+
+def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+ # 先判断概率
+ rate = passiveEffect.GetEffectValue(0)
+ if rate and not GameWorld.CanHappen(rate):
+ return False
+
+ FBSkillValid = passiveEffect.GetEffectValue(1)
+ if FBSkillValid == 0:
+ # 0 为 只有主动法宝技能暴击可触发
+ useSkill = skillkwargs.get("useSkill", None)
+ if not useSkill:
+ return False
+ if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSkill:
+ 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:
+ return False
+
+ if buff.GetLayer() <= 0:
+ return False
+
+ BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())
+
+ return True
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4525.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4525.py
new file mode 100644
index 0000000..8a4d567
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4525.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+# @todo: buff中技能暴击无冷却
+#
+# @author: Alee
+# @date 2018-1-30 下午05:11:45
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import SkillCommon
+import BuffSkill
+import SkillShell
+import IPY_GameWorld
+
+def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+ # 先判断概率
+ rate = passiveEffect.GetEffectValue(0)
+ if rate and not GameWorld.CanHappen(rate):
+ return False
+
+ FBSkillValid = passiveEffect.GetEffectValue(1)
+ if FBSkillValid == 0:
+ # 0 为 只有主动法宝技能暴击可触发
+ useSkill = skillkwargs.get("useSkill", None)
+ if not useSkill:
+ return False
+ if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_FbSkill:
+ return False
+
+
+ return True
+
+
+def GetValue(attacker, defender, passiveEffect):
+ return 1
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py
index fcee521..909b4eb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4053.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
-# 对目标的buff层级达到第几层触发技能
+# 对目标的buff层级达到第几层触发技能, 附加效果指定目标为最近一次攻击的玩家
#
# @author: Alee
# @date 2018-1-9 下午09:39:37
@@ -10,10 +10,30 @@
# @note:
#
#---------------------------------------------------------------------
-
+import SkillShell
+import GameWorld
+import ChConfig
+import IPY_GameWorld
def CheckCanHappen(attacker, defender, effect, curSkill):
+ if defender.GetDictByKey(ChConfig.Def_PlayerKey_AddBuffLayer) != effect.GetEffectValue(0):
+ return False
- return defender.GetDictByKey("addBuffLayer") == effect.GetEffectValue(0)
+ if effect.GetEffectValue(1):
+ # 走到此逻辑 中buff和释放buff是同一个人
+ #附加效果指定目标为最近一次攻击的玩家
+ playerID = attacker.GetDictByKey(ChConfig.Def_PlayerKey_LastAttackerObjID)
+ if not playerID:
+ return False
+ curObj = GameWorld.GetObj(playerID, IPY_GameWorld.gotPlayer)
+
+ #人物需要判断是否为空
+ if not curObj:
+ return False
+ if curObj.IsEmpty():
+ return False
-
+ #强行释放技能
+ SkillShell.UsePassiveTriggerSkill(attacker, curSkill, curObj, GameWorld.GetGameWorld().GetTick(), True)
+ return False
+ return True
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py
new file mode 100644
index 0000000..066ae9e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4071.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+# @todo: 攻击将造成伤害的XX%转化为自身生命
+#
+# @author: Alee
+# @date 2018-1-9 下午09:39:37
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+import GameObj
+import ChConfig
+
+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/PassiveBuff/PassiveSkill_4072.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4072.py
new file mode 100644
index 0000000..153d45c
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4072.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 暴击有概率触发无技能冷却
+#
+# @author: Alee
+# @date 2019-3-14 下午06:01:20
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+import GameWorld
+import ChConfig
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ # 先判断概率
+ rate = effect.GetEffectValue(0)
+ if rate and not GameWorld.CanHappen(rate):
+ return False
+
+ return True
+
+def GetValue(attacker, defender, effect):
+ return 1
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4073.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4073.py
new file mode 100644
index 0000000..29791ed
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4073.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 当持续buff伤害第X次时触发技能
+# 当汲灵对目标造成3次伤害时,可降低目标20%的防御
+# @author: Alee
+# @date 2019-3-15 下午03:26:32
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+
+import ChConfig
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ if defender.GetDictByKey(ChConfig.Def_PlayerKey_BuffHurtCnt) != effect.GetEffectValue(0):
+ return False
+
+ return True
\ No newline at end of file
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 e262780..8c38c83 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -351,6 +351,9 @@
4068:ChConfig.TriggerType_LockHP, # 锁血触发技能 63
4069:ChConfig.TriggerType_ZhongjiZhansha, # 终极斩杀 64
4070:ChConfig.TriggerType_DebuffOff, # 抵消一次debuff 23
+ 4071:ChConfig.TriggerType_Buff_SuckBloodPer, # 攻击 百分比吸血
+ 4072:ChConfig.TriggerType_SuperHitSkipCD, # 暴击无冷却 68
+ 4073:ChConfig.TriggerType_BuffHurtCnt, # 当持续buff伤害第X次时触发技能 69
}
return tdict.get(effectID, -1)
#===========================================================================
@@ -375,12 +378,12 @@
4506:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能 只刷新属性 不触发技能
4507:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
4508:ChConfig.TriggerType_Buff_AttackSubLayer, # BUFF类:攻击减buff层,0消失
- 4514:ChConfig.TriggerType_Buff_BeAttackSubLayer, # BUFF类:被攻击减buff层,0消失
4509:ChConfig.TriggerType_Buff_SuckBloodPer, # BUFF类: 百分比吸血, 此处非属性类
4510:ChConfig.TriggerType_Buff_MustBeHit, # BUFF类: 无视闪避必中
4511:ChConfig.TriggerType_AttackAddFinalValue, #攻击增加输出伤害11
4512:ChConfig.TriggerType_ReduceHurtHPPer, # 百分比减少攻击计算后伤害
4513:ChConfig.TriggerType_AttackAddFinalValue, #攻击增加输出伤害11
+ 4514:ChConfig.TriggerType_Buff_BeAttackSubLayer, # BUFF类:被攻击减buff层,0消失
4515:ChConfig.TriggerType_AddIceAtkPer, # BUFF类:攻击附加真实伤害百分比
4516:ChConfig.TriggerType_ChangeHurtToHP, # BUFF类:buff中把受到伤害的xx%转化为生命值
4517:ChConfig.TriggerType_DebuffOff, # BUFF类: 抵消debuff
@@ -389,6 +392,9 @@
4520:ChConfig.TriggerType_AddLayer, # BUFF类: 目标BUFF层级增加时 52
4521:ChConfig.TriggerType_BeLuckyHitSubPer, # 减少受到的会心伤害 65
4522:ChConfig.TriggerType_DebuffOff, # BUFF类: 抵消debuff
+ 4523:ChConfig.TriggerType_SuperHitSkillPer, # 暴击时,增加技能伤害 10
+ 4524:ChConfig.TriggerType_SuperHitSubLayer, # 暴击减层 67
+ 4525:ChConfig.TriggerType_SuperHitSkipCD, # 暴击无冷却 68
803:ChConfig.TriggerType_BloodShield, # 血盾
806:ChConfig.TriggerType_BloodShield, # 血盾
--
Gitblit v1.8.0