From 14661edf6156dbc38b2fe4bdf0a15cceacc52897 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 31 五月 2019 16:04:19 +0800
Subject: [PATCH] 6805 【后端】【2.0】副本前端化(去除木桩非自定义场景召唤限制,最大同时存在木桩数改为3个,设置玩家血量改为玩家掉血)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py | 45 ++++++++++++++++++++++++++-------------------
1 files changed, 26 insertions(+), 19 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 b8fe78a..1319532 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -264,7 +264,7 @@
# @param isEnhanceSkill 是否为附加技能
# @return True 攻击成功 None 不可攻击
# @remarks 通过调用 Obj_Attack_Obj.GetTagRelation 获取返回值
-def Attack(attacker, defender, useSkill, tick, skillPercent=1, skillEnhance=0, attackTime=1, isEnhanceSkill=False):
+def Attack(attacker, defender, useSkill, tick, skillPercent=10000, skillEnhance=0, attackTime=1, isEnhanceSkill=False):
global g_skillHurtList
if attacker.GetGameObjType() == IPY_GameWorld.gotNPC:
@@ -922,8 +922,8 @@
curTag = None
if attacker.GetAttackMode() == IPY_GameWorld.amContest:
# 单一目标锁定模式
- curTag = GameWorld.GetObj(attacker.SetDict(ChConfig.Def_PlayerKey_SelectObjID),
- attacker.SetDict(ChConfig.Def_PlayerKey_SelectObjType))
+ curTag = GameWorld.GetObj(attacker.GetDictByKey(ChConfig.Def_PlayerKey_SelectObjID),
+ attacker.GetDictByKey(ChConfig.Def_PlayerKey_SelectObjType))
if not curTag:
useSkillTagID = attacker.GetUseSkillTagID()
@@ -974,16 +974,18 @@
if not curTag:
continue
- if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
- if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
- #npc主人是玩家不能攻击
+ #非自定义场景才需要判断
+ if not attacker.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomScene):
+ if curSkillUseTag == ChConfig.Def_UseSkillTag_CanAttackNPC:
+ if NPCCommon.GetNpcObjOwnerIsPlayer(curTag):
+ #npc主人是玩家不能攻击
+ continue
+
+ if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
+ # 最远距离防范
+ GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
continue
-
- if GameWorld.GetDist(curTag.GetPosX(), curTag.GetPosY(), attacker.GetPosX(), attacker.GetPosY()) > attacker.GetSight():
- # 最远距离防范
- GameWorld.DebugLog("#--- 最远距离防范[%s-%s]"%(attacker.GetID(), curTag.GetID()))
- continue
-
+
if CheckFunc != None:
#检查是否受影响
if not CheckFunc(attacker, curTag, curSkill, tick):
@@ -1093,6 +1095,9 @@
#不在影响对象列表中
if curObjType not in hurtTypeList:
+ return None, None
+
+ if attacker.GetSightLevel() != curObj.GetSightLevel():
return None, None
#攻击对象
@@ -1470,7 +1475,7 @@
if curPlayerSkill:
SkillCommon.SetSkillRemainTime(curPlayerSkill, PlayerControl.GetReduceSkillCDPer(curPlayer), tick, curPlayer)
- if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
+ if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_GiftSkill, ChConfig.Def_SkillFuncType_FbSPSkill]:
UseSkillOver(curPlayer, target, curSkill, tick)
else:
OnHurtTypeTriggerPassiveSkill(curPlayer, target, curSkill, tick)
@@ -1550,7 +1555,7 @@
return True
return False
-
+### 不管什么技能都会到此处
#只对第一目标造成某伤害类型时触发技能
def OnHurtTypeTriggerSkillFirstObj(attacker, curSkill, tick):
if g_skillHurtList.GetHurtCount() == 0:
@@ -1567,10 +1572,12 @@
return
if hurtType == ChConfig.Def_HurtType_SuperHit:
PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SuperHit, tick)
+ PassiveBuffEffMng.OnPassiveBuffTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SuperHit, tick)
elif hurtType == ChConfig.Def_HurtType_ThumpHit:
PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_ThumpHit, tick)
return
-
+
+
# 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
def OnHurtTypeTriggerSkill(attacker, target, curSkill, tick):
usePassiveSkillResult = True # 第一次判断不能调用,即代表都不可用无需循环
@@ -1642,8 +1649,6 @@
# 根据伤血类型触发技能,群攻只触发一次,放在伤血列表被清之前
OnHurtTypeTriggerSkill(attacker, defender, curSkill, tick)
- #释放技能即可处理的 不区分攻击和非攻击
- PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillSuccess, tick)
# 普通或者可以主动释放的攻击性技能
if not curSkill or (curSkill.GetSkillType() == ChConfig.Def_SkillType_Atk and\
@@ -1665,6 +1670,8 @@
else:
PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillOverNoAttack, tick)
+ #释放技能即可处理的 不区分攻击和非攻击
+ PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SkillSuccess, tick)
return
@@ -2255,7 +2262,7 @@
dist = GameWorld.GetDist(tagObj.GetPosX(), tagObj.GetPosY(),
defender.GetPosX(), defender.GetPosY())
- skillPer = (skillPercent - dist * changePer) / float(ChConfig.Def_MaxRateValue)
+ skillPer = (skillPercent - dist * changePer)
#GameWorld.Log("skillPer :%s"%skillPer)
#执行群攻 并取得被攻击对象列表
@@ -2621,7 +2628,7 @@
if not hurtEffect:
continue
- hurtPer = hurtEffect.GetEffectValue(0)*1.0/ChConfig.Def_MaxRateValue # 单层伤害
+ hurtPer = hurtEffect.GetEffectValue(0) # 单层伤害
# 伤害乘以层
skillPercent = hurtPer * max(buff.GetLayer(), 1)
--
Gitblit v1.8.0