From 5c4ea9b4fd7f98d82e64878a5ce29d5747506f8c Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 24 一月 2019 14:08:09 +0800
Subject: [PATCH] 5924 【后端】【1.5.100】诛仙Boss功能(2秒不打,停止掉血)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py | 45 +++++++++++++++++++++++++++++++++++++--------
1 files changed, 37 insertions(+), 8 deletions(-)
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 949f755..22c8681 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
@@ -213,11 +220,12 @@
def PlayerLoginMergeServerSkillLogic(curPlayer, tick):
playerID = curPlayer.GetPlayerID()
- if not GameWorld.IsMergeServer():
+ if not GameWorld.IsCrossServer():
GameWorld.DebugLog("非跨服服务器上线不清除buff...", playerID)
return
- ClearBuffSkillTypeIDList = ReadChConfig.GetEvalChConfig("ClearBuffSkillTypeID")
+ #ClearBuffSkillTypeIDList = ReadChConfig.GetEvalChConfig("ClearBuffSkillTypeID")
+ ClearBuffSkillTypeIDList = []
# 跨服服务器上线清除增益/减益buff
GameWorld.Log("跨服服务器上线清除buff...", playerID)
clearBuffList = [] # 先汇总再清除,不然索引会变更
@@ -272,6 +280,15 @@
curSkill.SetRemainTime(0)
GameWorld.DebugLog(" SetRemainTime 0 skillName=%s,skillTypeID=%s"
% (curSkill.GetSkillName(), curSkill.GetSkillTypeID()), playerID)
+ return
+
+def ResetAllSkillCD(curPlayer):
+ skillManager = curPlayer.GetSkillManager()
+ for i in xrange(skillManager.GetSkillCount()):
+ skill = skillManager.GetSkillByIndex(i)
+ if skill.GetRemainTime() != 0:
+ skill.SetRemainTime(0)
+ skill.Sync_Skill()
return
## 刷新玩家所有技能的剩余时间(上线)
@@ -624,10 +641,10 @@
# @param curNPC NPC实例
# @param summonID 召唤兽的NPCID
# @return 召唤兽数量
-def GetSummonCountByNPCID(curNPC, summonID):
+def GetSummonCountByNPCID(gameObj, summonID):
count = 0
- for i in range(0, curNPC.GetSummonCount()):
- summonNPC = curNPC.GetSummonNPCAt(i)
+ for i in range(0, gameObj.GetSummonCount()):
+ summonNPC = gameObj.GetSummonNPCAt(i)
if not summonNPC:
continue
@@ -1127,6 +1144,10 @@
if curHP <= 0:
return
+ if PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(curObj, None, None, ChConfig.TriggerType_ForbidenCure):
+ # 禁止治疗
+ return
+
# 治疗加成
curePer = PlayerControl.GetCurePer(curObj) if curObjType == IPY_GameWorld.gotPlayer else ChConfig.Def_MaxRateValue
addValue = int(addValue*curePer*1.0/ChConfig.Def_MaxRateValue)
@@ -1195,6 +1216,11 @@
GameWorld.Log('###技能伤害血量异常,数值错误 = %s,技能类型ID = %s' % (lostValue, skillTypeID))
return
+ if not curObj.GetCanAttack():
+ # 无敌不掉血
+ ## 后续有其他情况也应考虑进来,如镖车是否某状态不掉血
+ return
+
#lostValue = GetGoblinLostHP(curObj, lostValue)
curObjType = curObj.GetGameObjType()
curSkill = GameWorld.GetGameData().FindSkillByType(skillTypeID, 1)
@@ -1206,10 +1232,13 @@
notifyLostValue = lostValue
curObjHP_BeforeAttack = GameObj.GetHP(curObj)
+ if curObjHP_BeforeAttack == 0:
+ # 没有血量不能再触发
+ return
if reduceHP :
+ lostValue = AttackCommon.CalcAtkProDef(buffOwner, curObj, lostValue, curSkill, tick)
# 血盾
-
lostValue = AttackCommon.CalcBloodShield(buffOwner, curObj, lostValue)
#剩余血量
@@ -1237,11 +1266,11 @@
# 濒死状态触发技能
if GameObj.GetHP(curObj) == 0:
PassiveBuffEffMng.OnPassiveSkillTrigger(curObj, None, curSkill, ChConfig.TriggerType_WillDead, tick)
-
+ PassiveBuffEffMng.OnPassiveBuffTrigger(curObj, None, curSkill, ChConfig.TriggerType_WillDead, tick)
#无法找到Buff拥有者
if not buffOwner:
- AttackCommon.DoLogic_ObjDead(curObj)
+ AttackCommon.DoLogic_ObjDead(None, curObj, curSkill, tick)
return
#NPC需要手动添加伤血和仇恨, 因为无调用DoAttack
--
Gitblit v1.8.0