From bc915a9b717eccef3c8d825f9af79a7596394ac7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 09 五月 2019 11:34:27 +0800
Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 30 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4534.py | 26 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4101.py | 33 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py | 5
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 36 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py | 36 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py | 31 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4098.py | 37 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py | 55 ++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py | 46 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 2
Tool/数据库/ChangeAccount/ChangeAccount.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4535.py | 35 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4100.py | 30 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py | 9
/dev/null | 21 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py | 22 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4099.py | 45 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py | 91 ++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py | 11
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py | 34 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 29 ++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 14
26 files changed, 575 insertions(+), 112 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 edc2bf1..e091ed9 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
@@ -1566,6 +1566,8 @@
# Elf灵为替身攻击,要取玩家的属性,NPC为主人则还是取灵
def ElfChangeAttacker(attacker):
+ if not attacker:
+ return attacker
if attacker.GetGameObjType() != IPY_GameWorld.gotNPC:
# --玩家
return attacker
@@ -2095,6 +2097,7 @@
# atkSkillPer 包含普攻,所以不是用技能增强处理
atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
+ atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_BeAttackAddSkillPer)
if isSuperHit and hurtType == ChConfig.Def_HurtType_SuperHit:
aSuperHit += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitValue)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 4409a43..2af735a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -583,6 +583,7 @@
Def_Skill_Effect_PowerPart = 1206 # 充能能量分段,触发即算一次充能,拉进度条蓄力
Def_Skill_Effect_ProcessAttack = 1314 # 间隔性攻击,A值为攻击次数,B值为是否广播客户端
Def_Skill_Effect_BuffTick = 9999 #BUFF的时间处理间隔
+Def_Skill_Effect_BurnToAddHP = 1091 #buff中灼烧伤害转化吸血给 放灼烧者
Def_Skill_Effect_ProBloodPer = 4505 #buff中中毒伤害百分比增加(给受害者的buff)
#写死的技能效果ID------------NPC专用
@@ -629,7 +630,8 @@
#---------需要记录在buff管理器中的效果ID,主要用于查找用---------------------------
-Def_BuffManager_EffectsID = [Def_Skill_Effect_AbsorbShield, Def_Skill_Effect_AbsorbShieldXMZJ, Def_Skill_Effect_StoreBlood]
+Def_BuffManager_EffectsID = [Def_Skill_Effect_AbsorbShield, Def_Skill_Effect_AbsorbShieldXMZJ,
+ Def_Skill_Effect_StoreBlood, Def_Skill_Effect_BurnToAddHP, Def_Skill_Effect_BuffState]
#-------------------------------------------------------------------------
#基础属性效果ID
@@ -645,9 +647,6 @@
# 非线性增加
#1015:("NoLinePlus", [TYPE_Calc_AttrATKMin, TYPE_Calc_AttrATKMax]), # 提高攻击力百分比
- # 非线性减少
- #1098:("NoLineReduce", [TYPE_Calc_AttrATKMax, TYPE_Calc_AttrATKMin,
- # TYPE_Calc_AttrMATKMax, TYPE_Calc_AttrMATKMin]), # 降低攻击百分比
# 根据等级段线性增加,效果B值为等级段配置
500:("LinePlusByLV", [TYPE_Calc_HPCureEnhance]), # 提高血瓶恢复效果
@@ -3018,13 +3017,14 @@
Def_PlayerState_LimitSkill, # 禁魔状态 10
Def_PlayerState_LimitAddHP, # 禁疗状态 11
Def_PlayerState_Blind, # 致盲状态 12
- Def_PlayerState_LoseBlood1, # 灼烧 13
+ Def_PlayerState_Burn, # 灼烧 13
Def_PlayerState_LoseBlood2, # 职业2持续掉血状态 14
Def_PlayerState_LoseBlood3, # 职业3持续掉血状态 15
Def_PlayerState_MissSneerAtk, # 对嘲讽攻击免疫表现为miss 16
Def_PlayerState_BeInAir, # 浮空(做法同眩晕类) 17
Def_PlayerState_zqdlj, # 紫气东来金灵根技能状态 18
-) = range(19)
+ Def_PlayerState_Ice, # 寒冰状态(同减速) 19
+) = range(20)
#---SetDict 含NPC字典KEY,不存于数据库---
Def_GameObjKey_InheritOwner = "InheritOwner" # 类暴风雪计算时用主人属性
@@ -4421,7 +4421,7 @@
TriggerType_AttackKill, # 斩杀
TriggerType_WillDead, # 进入濒死状态时触发技能 25
TriggerType_BuffBoom, # 中毒后爆炸
-TriggerType_Success_Buff_SkillPer, # 提高4501成功概率
+TriggerType_BeAttackAddSkillPer, # 被攻击提高技能伤害
TriggerType_HurtObjAddBuff, # 在算伤害时群攻1对1加buff,可用于一个伤害多次触发
TriggerType_BeBoomSeed, # 被动引爆视野内对象的buff种子 29
TriggerType_AttackCnt, # 增加技能攻击数量(效果ID1200) 30
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
index fcc507e..0439145 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameObj.py
@@ -86,14 +86,21 @@
# @param pyState 状态
# @return 是否该状态
# @remarks 该状态为buff对应的自定义状态效果
-# 目前当目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态
-# 故该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态)
+
+#===============================================================================
+# 此问题在4012 消失时处理
+# # 目前当目标身上多个buff都有同一效果时(如定身),在一个buff消失时会解除该状态
+# # 故该状态标记仅为一个非精确的标记,应用中请注意!!!(当且仅当多个buff有同一个效果时会提前结束该状态)
+#===============================================================================
def GetPyPlayerState(gameObj, pyState):
curState = gameObj.GetDictByKey(ChConfig.Def_PlayerKey_CurState)
state = curState & pow(2, pyState)
return state
+def ClearPyPlayerState(gameObj):
+ gameObj.SetDict(ChConfig.Def_PlayerKey_CurState, 0)
+ return
def GetPetDamPer(gameObj): return gameObj.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer)
def SetPetDamPer(gameObj, value):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 294025a..12aa572 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -95,6 +95,7 @@
import PlayerDogz
import ChPlayer
import GMShell
+import GameObj
import random
import types
@@ -5162,6 +5163,7 @@
DoPlayerDead(curPlayer)
PlayerTJG.PlayerTJGReborn(curPlayer, tick)
+ GameObj.ClearPyPlayerState(curPlayer)
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 88f9e7d..6a8df92 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -25,6 +25,7 @@
import OperControlManager
import GameObj
import CrossPlayerData
+import AttackCommon
#---------------------------------------------------------------------
#---------------------------------------------------------------------
@@ -51,6 +52,8 @@
and SkillCommon.GetSkillBattleType(curSkill) == ChConfig.Def_BattleRelationType_CommNoBoss:
# 释放后 对指定BOSS无效的技能
return True
+
+ buffOwner = AttackCommon.ElfChangeAttacker(buffOwner) # Elf灵为替身攻击,要取玩家的属性
result = AddBuffNoRefreshState(curObj, buffType, curSkill, tick, addBuffValueList, buffOwner, addForce)
@@ -378,7 +381,7 @@
if triggerType == -1:
continue
passiveEff = PassiveBuffEffMng.GetPassiveEffManager().InitObjPassiveEff(curObj)
- passiveEff.AddBuffInfoByEffect(curEffect, skillID)
+ passiveEff.AddBuffInfoByEffect(curEffect, skillID, onwerID, onwerType)
#添加BUFF后的特殊处理
@@ -568,6 +571,8 @@
return curBuff, i
return None, 0
+
+
#---------------------------------------------------------------------
## 刷新BUFF的时间
# @param curBuff 当前BUFF
@@ -685,8 +690,10 @@
SkillShell.ClearBuffEffectBySkillID(curObj, curSkill.GetSkillID(), ownerID, ownerType)
addSkillID = curObj.GetDictByKey(ChConfig.Def_PlayerKey_SkillInDelBuff)
- if addSkillID and addSkillID not in skillIDListInDelBuff:
- skillIDListInDelBuff.append(addSkillID)
+ if addSkillID:
+ skillInfo = [addSkillID, ownerID, ownerType]
+ if skillInfo not in skillIDListInDelBuff:
+ skillIDListInDelBuff.append(skillInfo)
OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick)
@@ -699,12 +706,15 @@
# DoBuffDisApper不能做Buff添加和删除逻辑!!!!!不然指针会错乱, 故在外层处理
def OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick):
posX, posY = curObj.GetPosX(), curObj.GetPosY()
- for skillID in skillIDListInDelBuff:
- skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+ for skillInfo in skillIDListInDelBuff:
+ attacker = GameWorld.GetObj(skillInfo[1], skillInfo[2])
+ if not attacker:
+ attacker = curObj
+ skillData = GameWorld.GetGameData().GetSkillBySkillID(skillInfo[0])
if not skillData:
continue
- SkillShell.Trigger_UseSkill(curObj, curObj, skillData, tick, posX, posY)
+ SkillShell.Trigger_UseSkill(attacker, curObj, skillData, tick, posX, posY)
return
#---------------------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
index d8576ba..aaafc21 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -22,6 +22,7 @@
import PlayerControl
import PassiveBuffEffMng
import GameObj
+import BuffSkill
#---------------------------------------------------------------------
#全局变量
#---------------------------------------------------------------------
@@ -44,6 +45,14 @@
SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed)
+ if buffOwner and GameObj.GetHP(buffOwner) > 0:
+ # 此处暂无法用被动效果实现
+ buffManager = defender.GetProcessDeBuffState()
+ burnToHPEffect, plusValue, skillID = BuffSkill.FindBuffEffectByOwnertID(buffManager, ChConfig.Def_Skill_Effect_BurnToAddHP,
+ buffOwner.GetID(), buffOwner.GetGameObjType())
+ if burnToHPEffect:
+ addHP = singleDecHP*burnToHPEffect.GetEffectValue(0)/ChConfig.Def_MaxRateValue
+ SkillCommon.SkillAddHP(buffOwner, curBuffSkillID, buffOwner, addHP, tick, hurtType=ChConfig.Def_HurtTYpe_Recovery)
return
# 灼烧的特征为延长buff时间,重算伤害
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py
new file mode 100644
index 0000000..952ed5a
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1090.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 两个人之间有一条特效连接,配合9999用于判断距离
+#
+# @author: Alee
+# @date 2019-5-6 下午04:30:33
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+#导入
+import SkillCommon
+import GameWorld
+import ChConfig
+
+def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
+ buffOwner = SkillCommon.GetBuffOwner(curBuff)
+
+ if not buffOwner:
+ curBuff.SetRemainTime(0)
+ return
+
+ if GameWorld.GetDistEx(defender.GetPosX(), defender.GetPosY(), buffOwner.GetPosX(), buffOwner.GetPosY()) > curEffect.GetEffectValue(0):
+ curBuff.SetRemainTime(0)
+ return
+ return
+
+
+def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
+
+ attrType = curEffect.GetEffectValue(1)
+ value = curEffect.GetEffectValue(2)
+ calcDict[attrType] = calcDict.get(attrType, 0) - value
+
+ return
+
+## 返回buff类型,线性与否
+# @param
+# @return None
+# @remarks 函数详细说明.
+def GetCalcType():
+ return ChConfig.TYPE_NoLinear
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
index c98bdaa..d837829 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
@@ -47,14 +47,42 @@
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
stateType = curEffect.GetEffectValue(0)
- GameObj.SetPyPlayerState(curObj, stateType, 0)
+ if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
+ GameObj.SetPyPlayerState(curObj, stateType, 0)
+ GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
return
def OnBuffDisappearEx(curObj, curSkill, curBuff, curEffect, tick):
stateType = curEffect.GetEffectValue(0)
- GameObj.SetPyPlayerState(curObj, stateType, 0)
+ if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
+ GameObj.SetPyPlayerState(curObj, stateType, 0)
+ GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
return
-
\ No newline at end of file
+
+# 大于等于2个状态 则不清理状态
+def CanDelStateEffect(curObj, effectID, stateType):
+ cnt = 0
+ for buffType in xrange(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):
+ buffTuple = SkillCommon.GetBuffManagerByBuffType(curObj, buffType)
+ #通过类型获取目标的buff管理器为空,则跳出
+ if buffTuple == ():
+ continue
+
+ buffManager = buffTuple[0]
+
+ for i in range(buffManager.GetEffectCount()):
+ effect = buffManager.GetEffect(i)
+ if not effect:
+ continue
+ if effect.GetEffectID() != effectID:
+ continue
+
+ if effect.GetEffectValue(0) == stateType:
+ cnt += 1
+ if cnt >= 2:
+ return False
+
+ return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py
index 48e2308..bc55b14 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_801.py
@@ -31,12 +31,15 @@
def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
+ skillID = curEffect.GetEffectValue(2)
+ if not skillID:
+ return
boomValue = curBuff.GetValue1()
# 剩余护盾值用于爆炸
if boomValue == 0:
return
- skillData = GameWorld.GetGameData().GetSkillBySkillID(curEffect.GetEffectValue(2))
+ skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
if not skillData:
return
# 存储起来用于伤害
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py
new file mode 100644
index 0000000..6ded1ef
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_903.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 减速专用,受属性影响如符文
+#
+# @author: Alee
+# @date 2019-5-8 下午02:55:40
+# @version 1.0
+#
+# @note:
+#
+
+#------------------------------------------------------------------------------
+#导入
+import ChConfig
+import PlayerControl
+import IPY_GameWorld
+#---------------------------------------------------------------------
+
+## buff非线性减少属性
+# @param defender Buff承受者
+# @param curEffect 技能效果
+# @param calcDict 技能效果累加总表
+# @return None
+def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
+
+ effect = curEffect.GetEffectValue(0)
+ if curBuff and curBuff.GetLayer():
+ # 层级叠加效果
+ effect = effect*curBuff.GetLayer()
+
+ effect += curBuff.GetValue()
+ calcDict[ChConfig.TYPE_Calc_AttrSpeed] = calcDict.get(ChConfig.TYPE_Calc_AttrSpeed, 0) - effect
+
+ return
+
+
+## 返回buff类型,线性与否
+# @param
+# @return None
+# @remarks 函数详细说明.
+def GetCalcType():
+ return ChConfig.TYPE_NoLinear
+
+
+##计算增强值
+# @param attacker 攻击者实例
+# @param curSkill 技能实例
+# @param curEffect 当前技能效果1
+# @return 总值
+def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
+
+ return [PlayerControl.GetSubSpeedPer(attacker)]
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 bc90b1e..2fb69b6 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
@@ -1747,6 +1747,35 @@
return returnInfo
+
+def FindBuffByOwner(gameObj, skillTypeID, ownerID, ownerType):
+ findSkill = GameWorld.GetGameData().GetSkillBySkillID(skillTypeID)
+ buffType = GetBuffType(findSkill)
+ buffTuple = GetBuffManagerByBuffType(gameObj, buffType)
+ if buffTuple == ():
+ return None
+
+ buffManager = buffTuple[0]
+ for i in range(0, buffManager.GetBuffCount()):
+ curBuff = buffManager.GetBuff(i)
+ if not curBuff:
+ continue
+
+ #判断是否拥有同一类型的技能
+ if curBuff.GetSkill().GetSkillTypeID() != skillTypeID:
+ continue
+
+ #判断是否拥有同一类型的技能
+ if curBuff.GetOwnerID() != ownerID:
+ continue
+
+ if curBuff.GetOwnerType() != ownerType:
+ continue
+
+ return curBuff
+
+ return None
+
#---------------------------------------------------------------------
## 执行清空命令 参数:玩家, 保留技能类型列表
# @param curPlayer 玩家
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py
index 165c6f0..18b1bbb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py
@@ -35,43 +35,24 @@
#清除失败也触发CD
return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
- skillType = curSkill.GetEffect(0).GetEffectValue(0)
- if skillType == 0:
- # 无配置代表清除负面buff任意1个
- skillTypeList = [
- ChConfig.Def_SkillType_LstDepBuff , #持续减益BUFF 4
- ChConfig.Def_SkillType_DepBuff , #减益BUFF 6
- ChConfig.Def_SkillType_Action , #影响行为BUFF 14
- ]
- else:
- skillTypeList = [skillType]
-
delSuccess = False
+ buffSkill = None
+ buffType = 0
- for skillType in skillTypeList:
-
- buffType = ChConfig.Def_SkillBuffList.get(skillType)
- buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType)
- if buffTuple == ():
- continue
-
- buffManager = buffTuple[0]
- if buffManager.GetBuffCount() == 0:
- continue
-
- curBuff = buffManager.GetBuff(0)
- ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
-
- #删除Buff
- BuffSkill.DoBuffDisApperEx(defender, curBuff, tick)
- buffSkill = curBuff.GetSkill()
- if not buffSkill:
- continue
- skillID = buffSkill.GetSkillID()
- buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
- SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
- delSuccess = True
- break
+ # 优先清理指定技能
+ theSkillID = curSkill.GetEffect(0).GetEffectValue(1)
+ if theSkillID:
+ if curSkill.GetEffect(0).GetEffectValue(1):
+ findBuff = SkillCommon.FindBuffByID(defender, theSkillID)
+ else:
+ findBuff = SkillCommon.FindBuffByOwner(defender, theSkillID, attacker.GetID(), attacker.GetGameObjType())
+ if findBuff:
+ delSuccess = True
+ buffSkill = findBuff.GetSkill()
+ buffType = ChConfig.Def_SkillBuffList.get(buffSkill.GetSkillType())
+ else:
+ # 某类技能中的一个
+ delSuccess, buffSkill, buffType = ClearBySkillType(curSkill, defender, tick)
if not delSuccess:
# 没有可清除BUFF也进入CD
@@ -103,4 +84,44 @@
return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
+def ClearBySkillType(curSkill, defender, tick):
+ skillType = curSkill.GetEffect(0).GetEffectValue(0)
+ if skillType == 0:
+ # 无配置代表清除负面buff任意1个
+ skillTypeList = [
+ ChConfig.Def_SkillType_LstDepBuff , #持续减益BUFF 4
+ ChConfig.Def_SkillType_DepBuff , #减益BUFF 6
+ ChConfig.Def_SkillType_Action , #影响行为BUFF 14
+ ]
+ else:
+ skillTypeList = [skillType]
+
+ delSuccess = False
+ buffSkill = None
+ buffType = 0
+ for skillType in skillTypeList:
+
+ buffType = ChConfig.Def_SkillBuffList.get(skillType)
+ buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType)
+ if buffTuple == ():
+ continue
+
+ buffManager = buffTuple[0]
+ if buffManager.GetBuffCount() == 0:
+ continue
+
+ curBuff = buffManager.GetBuff(0)
+ ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
+
+ #删除Buff
+ BuffSkill.DoBuffDisApperEx(defender, curBuff, tick)
+ buffSkill = curBuff.GetSkill()
+ if not buffSkill:
+ continue
+ skillID = buffSkill.GetSkillID()
+ buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
+ SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
+ delSuccess = True
+ break
+ return delSuccess, buffSkill, buffType
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py
index 60eddc4..7a5f7b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4503.py
@@ -1,33 +1,32 @@
#!/usr/bin/python
# -*- coding: GBK -*-
#
-# @todo: buff中攻击目标处于XX状态提高增加伤害
+##@package
+#
+# @todo: buff中攻击处于xx状态目标触发技能
#
# @author: Alee
-# @date 2018-1-30 下午05:11:45
+# @date 2019-5-7 下午09:17:25
# @version 1.0
#
# @note:
#
#---------------------------------------------------------------------
-import ChConfig
import GameWorld
import GameObj
def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
- if not defender:
- return False
-
- if not passiveEffect.GetEffectValue(1):
- # 不配置状态的情况
- return True
-
- if GameObj.GetPyPlayerState(defender, passiveEffect.GetEffectValue(1)):
- #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
- return True
- return False
+ if passiveEffect.GetEffectValue(0):
+ if not GameObj.GetPyPlayerState(defender, passiveEffect.GetEffectValue(0)):
+ #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
+ return False
+ return True
-def GetValue(attacker, defender, passiveEffect):
- return passiveEffect.GetEffectValue(0)
+def GetSkillData(passiveEffect):
+ skillID = passiveEffect.GetEffectValue(1)
+ return GameWorld.GetGameData().GetSkillBySkillID(skillID)
+
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py
index 40b0865..304ed07 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4517.py
@@ -17,7 +17,7 @@
import BuffSkill
import IPY_GameWorld
-def CheckCanHappen(attacker, defender, effect, tagSkill):
+def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
debuffState = effect.GetEffectValue(1)
if debuffState and debuffState != SkillCommon.GetBuffStateType(tagSkill):
return False
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py
index 03887ce..0031ada 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4522.py
@@ -17,7 +17,7 @@
import BuffSkill
import IPY_GameWorld
-def CheckCanHappen(attacker, defender, effect, tagSkill):
+def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
debuffState = effect.GetEffectValue(1)
if debuffState and debuffState != SkillCommon.GetBuffStateType(tagSkill):
return False
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4534.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4534.py
new file mode 100644
index 0000000..4be5ba2
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4534.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: buff中抵消指定技能buff
+#
+# @author: Alee
+# @date 2019-5-7 下午09:27:34
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import SkillCommon
+import BuffSkill
+import IPY_GameWorld
+
+def CheckCanHappen(attacker, defender, effect, tagSkill, **skillkwargs):
+ if effect.GetEffectValue(0) != tagSkill.GetSkillTypeID():
+ return False
+ return True
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4535.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4535.py
new file mode 100644
index 0000000..9d59848
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4535.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: buff中被攻击提高技能伤害
+#
+# @author: Alee
+# @date 2019-5-7 下午09:32:34
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import GameObj
+import SkillCommon
+
+def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+
+ if passiveEffect.GetEffectValue(1):
+ if not defender:
+ return False
+
+ if skillkwargs.get("ownerID", 0) != defender.GetID():
+ return False
+ if skillkwargs.get("ownerType", 0) != defender.GetGameObjType():
+ return False
+ return True
+
+
+def GetValue(attacker, defender, passiveEffect):
+ return passiveEffect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4030.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4030.py
deleted file mode 100644
index 9a4d4ae..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4030.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-# @todo: 提高4501成功概率
-#
-# @author: Alee
-# @date 2018-1-9 下午09:39:37
-# @version 1.0
-#
-#
-#---------------------------------------------------------------------
-
-import ItemControler
-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_4096.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py
new file mode 100644
index 0000000..b633857
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 目标指定skillTypeID的buff下,按层级算提高技能伤害, 属于自己的buff才有效
+#
+# @author: Alee
+# @date 2019-5-6 下午05:10:52
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import SkillCommon
+import GameObj
+
+# 目标某个状态时触发
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ if not defender:
+ return False
+ if not GameObj.GetPyPlayerState(defender, effect.GetEffectValue(1)):
+ #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
+ return False
+ return True
+
+
+def GetValue(attacker, defender, effect):
+ buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(2), attacker.GetID(), attacker.GetGameObjType())
+ if not buff:
+ return 0
+ return effect.GetEffectValue(0)*buff.GetLayer()
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4098.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4098.py
new file mode 100644
index 0000000..5ad2a9e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4098.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 目标指定buff下,大于等于层级提高技能伤害
+#
+# @author: Alee
+# @date 2019-5-6 下午05:10:52
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import SkillCommon
+import GameObj
+
+# 目标某个状态时触发
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ if not defender:
+ return False
+
+ buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(1), attacker.GetID(), attacker.GetGameObjType())
+ if not buff:
+ return False
+
+ if buff.GetLayer() < effect.GetEffectValue(2):
+ return False
+ return True
+
+
+def GetValue(attacker, defender, effect):
+ return effect.GetEffectValue(0)
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4099.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4099.py
new file mode 100644
index 0000000..c16cf5e
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4099.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 被指定buff下的玩家攻击进入濒死状态触发技能
+#
+# @author: Alee
+# @date 2019-5-7 下午05:56:05
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import GameObj
+import SkillCommon
+import IPY_GameWorld
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ if not defender:
+ return False
+ if attacker.GetPlayerAction() == IPY_GameWorld.paDie:
+ # 当前已经被处理为死亡,那么就不触发
+ return False
+
+ zhanshaState = attacker.GetDictByKey(ChConfig.Def_PlayerKey_Zhansha)
+
+ if zhanshaState:
+ # 按位判断,1为斩杀情况下,此技能不可被触发,2为终极斩杀不触发,3为任何斩杀都不触发
+ if (effect.GetEffectValue(2) & pow(2, zhanshaState-1)) != 0:
+ return False
+
+ buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(0), attacker.GetID(), attacker.GetGameObjType())
+ if not buff:
+ return False
+
+ if buff.GetLayer() < effect.GetEffectValue(1):
+ return False
+
+ GameObj.SetHP(attacker, 1) # 为了避免生命为0时,屏蔽过多逻辑
+
+ return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4100.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4100.py
new file mode 100644
index 0000000..91b0d17
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4100.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 攻击指定buff下的玩家后触发被动技能
+#
+# @author: Alee
+# @date 2019-5-7 下午08:06:30
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import GameObj
+import SkillCommon
+
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ buff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(0), attacker.GetID(), attacker.GetGameObjType())
+ if not buff:
+ return False
+
+ if buff.GetLayer() < effect.GetEffectValue(1):
+ return False
+
+ return True
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4101.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4101.py
new file mode 100644
index 0000000..e11c5d0
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4101.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 清除指定buff成功后提高技能伤害
+#
+# @author: Alee
+# @date 2019-5-8 下午02:31:07
+# @version 1.0
+#
+# @note:
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import GameObj
+import SkillCommon
+
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+ findBuff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(0), attacker.GetID(), attacker.GetGameObjType())
+ if not findBuff:
+ return False
+ return True
+
+
+def GetValue(attacker, defender, effect):
+ findBuff = SkillCommon.FindBuffByOwner(defender, effect.GetEffectValue(1), attacker.GetID(), attacker.GetGameObjType())
+ if not findBuff:
+ return 0
+ return effect.GetEffectValue(0)*findBuff.GetLayer()
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 b5369d5..9944a6e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -309,7 +309,6 @@
4027:ChConfig.TriggerType_AttackKill, # 斩杀 24
4028:ChConfig.TriggerType_WillDead, # 进入濒死状态时触发技能 25
4029:ChConfig.TriggerType_BuffBoom, # 中毒后爆炸 26
- #4030:ChConfig.TriggerType_Success_Buff_SkillPer, # 提高4501成功概率 27
4031:ChConfig.TriggerType_HurtObjAddBuff, # 在算伤害时群攻1对1加buff,可用于一个伤害多次触发 28
4032:ChConfig.TriggerType_BeBoomSeed, # 被动引爆视野内对象的buff种子 29
4033:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4
@@ -373,7 +372,12 @@
4093:ChConfig.TriggerType_NoControl, # 使关联技能不受控制 78
4094:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
4095:ChConfig.TriggerType_SuperHitSuckBloodPer, # BUFF类: 暴击百分比吸血, 79
+ 4096:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
4097:ChConfig.TriggerType_BurnPer, # 灼烧伤害百分比 80
+ 4098:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
+ 4099:ChConfig.TriggerType_WillDead, # 进入濒死状态时触发技能 25
+ 4100:ChConfig.TriggerType_AttackOver, # 攻击(对敌技能)后被动技能被触发 4
+ 4101:ChConfig.TriggerType_AttackAddSkillPer, # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
}
return tdict.get(effectID, -1)
#===========================================================================
@@ -394,7 +398,7 @@
4500:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
4501:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类:提高主动技能的技能伤害
4502:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能
- #4503:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类: 攻击时提高增加伤害
+ 4503:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
4504:ChConfig.TriggerType_BounceHP, # BUFF类: 反弹伤害固定值
4506:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能 只刷新属性 不触发技能
4507:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
@@ -424,6 +428,8 @@
4531:ChConfig.TriggerType_BounceHPPerByAttacker, # 反弹伤害百分比值, 由攻击方决定 77
4532:ChConfig.TriggerType_SuperHit, # buff中对第一目标暴击触发技能
4533:ChConfig.TriggerType_BurnDisappear, # 灼烧消失触发 81
+ 4534:ChConfig.TriggerType_DebuffOff, # BUFF类: 抵消debuff
+ 4535:ChConfig.TriggerType_BeAttackAddSkillPer, # buff中, 被攻击提高技能伤害
803:ChConfig.TriggerType_BloodShield, # 血盾
806:ChConfig.TriggerType_BloodShield, # 血盾
@@ -449,7 +455,7 @@
self.AffectSuperEquipEffectCntDict = {} # 特殊装备技能效果对应的已计算后的数值,直接调用
#记录会影响其他技能或者被动触发释放技能的BUFF
- def AddBuffInfoByEffect(self, effect, skillID):
+ def AddBuffInfoByEffect(self, effect, skillID, onwerID, onwerType):
effectID = effect.GetEffectID()
#{(触发方式/点, 关联技能):{BUFFID:【效果】}}
@@ -464,7 +470,7 @@
if skillID not in self.AffectBuffDict[keyTuple]:
self.AffectBuffDict[keyTuple][skillID] = []
- self.AffectBuffDict[keyTuple][skillID].append(effect) # 存储受影响的信息
+ self.AffectBuffDict[keyTuple][skillID].append([effect, onwerID, onwerType]) # 存储受影响的信息
return
@@ -817,6 +823,8 @@
buffSkill = curBuff.GetSkill()
if not buffSkill:
continue
+
+ onwerID, onwerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
for effectIndex in range(0, buffSkill.GetEffectCount()):
curEffect = buffSkill.GetEffect(effectIndex)
effectID = curEffect.GetEffectID()
@@ -827,7 +835,7 @@
if triggerType == -1:
continue
passiveEff = self.InitObjPassiveEff(gameObj)
- passiveEff.AddBuffInfoByEffect(curEffect, buffSkill.GetSkillID())
+ passiveEff.AddBuffInfoByEffect(curEffect, buffSkill.GetSkillID(), onwerID, onwerType)
return
@@ -1327,7 +1335,8 @@
if not IsValidPassiveSkill(curSkill):
continue
- for passiveEffect in effectList:
+ for effectInfo in effectList:
+ passiveEffect = effectInfo[0]
# 被动触发的技能
pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
@@ -1335,7 +1344,7 @@
if not callFunc:
continue
- if not callFunc(attacker, defender, passiveEffect, tagSkill):
+ if not callFunc(attacker, defender, passiveEffect, tagSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
continue
callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "DoLogic"))
@@ -1396,14 +1405,15 @@
if not IsValidPassiveSkill(curSkill):
continue
- for passiveEffect in effectList:
+ for effectInfo in effectList:
+ passiveEffect = effectInfo[0]
# 被动触发的技能
pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "CheckCanHappen"))
if not callFunc:
continue
- if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill):
+ if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
continue
callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetSkillData"))
@@ -1473,11 +1483,11 @@
if not IsValidPassiveSkill(curSkill):
continue
- for passiveEffect in effectList:
+ for effectInfo in effectList:
if stopPassiveSkill and curSkill.GetFuncType() != ChConfig.Def_SkillFuncType_GiftSkill:
# 只有天赋才可以再次被触发
continue
-
+ passiveEffect = effectInfo[0]
# 被动触发的技能
pyName = "PassiveBuff_%s"%passiveEffect.GetEffectID()
@@ -1486,7 +1496,7 @@
continue
# 条件不满足
- if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill):
+ if not callFunc(attacker, defender, passiveEffect, skillID, useSkill=useSkill, ownerID=effectInfo[1], ownerType=effectInfo[2]):
continue
callFunc = GameWorld.GetExecFunc(PassiveBuff, "%s.%s" % (pyName, "GetValue"))
@@ -1494,7 +1504,7 @@
continue
# 如被动技能:千幻冥炎真实伤害从2变4倍
- curValue += GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_PassiveBuffValue)
+ #curValue += GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_PassiveBuffValue)
curValue += callFunc(attacker, defender, passiveEffect)
return curValue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 2d2ee46..5478a20 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -717,9 +717,27 @@
continue
npcObj.StopMove()
npcObj.ChangePos(npcPos.PosX, npcPos.PosY)
-
+ BeatBackMove(curPlayer, npcObj)
return
+# 针对NPC被推出远距离一直卡墙角问题,法宝挑战副本特殊处理为超过4米 NPC自动回退一些
+def BeatBackMove(curPlayer, npcObj):
+ if GameWorld.GetMap().GetMapID() != ChConfig.Def_FBMapID_MagicWeapon:
+ return
+ if npcObj.GetCurAction() == IPY_GameWorld.laNPCSkillWarning:
+ return
+
+ posMap = npcObj.GetRefreshPosAt(npcObj.GetCurRefreshPointIndex())
+ #范围校验
+ posMapX = posMap.GetPosX()
+ posMapY = posMap.GetPosY()
+ if GameWorld.GetDist(npcObj.GetPosX(), npcObj.GetPosY(), posMapX, posMapY) < 8:
+ # 单次位移不超过5米
+ return
+ npcControl = NPCCommon.NPCControl(npcObj)
+ moveDestX, moveDestY = npcControl.GetMoveNearPosEx(posMapX, posMapY, 5)
+ npcObj.Move(moveDestX, moveDestY)
+ return
#===============================================================================
# //B4 03 吸引NPC仇恨 #tagNPCAttention
@@ -2719,10 +2737,12 @@
if callFunc:
callFunc(objDetel, curEffect, allAttrList[index], curBuff)
- # 持续性属性变化的buff,目前只有持续减益
- callFunc = GameWorld.GetExecFunc(GameBuffs, "BuffProcess_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
- if callFunc:
- callFunc(objDetel, curEffect, allAttrList[index], curBuff)
+ #是否持续性技能
+ if curBuff and curBuff.GetSkill().GetSkillType() in ChConfig.Def_LstBuff_List:
+ # 持续性属性变化的buff,目前只有持续减益
+ callFunc = GameWorld.GetExecFunc(GameBuffs, "BuffProcess_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
+ if callFunc:
+ callFunc(objDetel, curEffect, allAttrList[index], curBuff)
return
## 获得buff效果的计算模块文件后缀
diff --git "a/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/ChangeAccount.py" "b/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/ChangeAccount.py"
index bcd004c..cde7cf8 100644
--- "a/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/ChangeAccount.py"
+++ "b/Tool/\346\225\260\346\215\256\345\272\223/ChangeAccount/ChangeAccount.py"
@@ -69,7 +69,7 @@
print 'table:tagDSAccount update successfully! cnt=%s changeto %s-%s'%(cnt, DBConfig.Spid, DBConfig.Serverid)
- for table in ['tagDBPlayer', 'tagAccIDSendPrize', 'tagDBGMIP', 'tagGameWorldEvent']:
+ for table in ['tagDBPlayer', 'tagAccIDSendPrize', 'tagDBGMIP', 'tagGameWorldEvent', 'tagPayInfo']:
# 修改玩家表和账号表中的玩家账号
colPlayer = db[table]
cnt = 0
--
Gitblit v1.8.0