From c35e176a3b05f745600c6e60f168313d2b9e7b30 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 17 九月 2025 12:00:19 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(司马懿技能;增加按层级结算持续buff效果5003;增加非按攻击力计算伤害支持;技能伤害增加可限制最大攻击力百分比上限配置;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py |  119 ++++++++++-------------------------------------------------
 1 files changed, 20 insertions(+), 99 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 4f4bdcb..f1d7758 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
@@ -45,15 +45,10 @@
 import GameObj
 import BuffSkill
 import PlayerState
-import MirrorAttack
 import ChPyNetSendPack
-import NPCHurtManager
 import NetPackCommon
-import FamilyRobBoss
 import FBCommon
 import ChNPC
-import BossHurtMng
-import NPCHurtMgr
 import ChNetSendPack
 import TurnAttack
 
@@ -438,28 +433,6 @@
     #NPC读表取
     return attack.GetHurtType()
 
-def GetAtkDistType(curObj):
-    ## 获取是近战还是远程,默认近战
-    if curObj.GetGameObjType() != IPY_GameWorld.gotNPC:
-        return ChConfig.AtkDistType_Short
-    
-    playerID = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_LineupPlayerID)
-    if not playerID:
-        return ChConfig.AtkDistType_Short
-    
-    heroID = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_HeroID)
-    if heroID:
-        heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID)
-        if heroIpyData:
-            return heroIpyData.GetAtkDistType()
-        
-    npcID = curObj.GetNPCID()
-    npcDataEx = NPCCommon.GetNPCDataEx(npcID)
-    if npcDataEx:
-        return npcDataEx.GetAtkDistType()
-    
-    return ChConfig.AtkDistType_Short
-
 #--------------------------------------------------------------------------
 ## 设置玩家进入战斗状态
 #  @param defender 当前玩家(被攻击了)
@@ -638,19 +611,11 @@
         
     curObjType = curObj.GetGameObjType()
     if curObjType == IPY_GameWorld.gotPlayer:
-        #BossHurtMng.BossAddPlayerInHurtList(curObj, curTagObj, hurtHP)
-        FamilyRobBoss.OnPlayerHurtFamilyOwnerBoss(curObj, curTagObj, hurtHP)
         if curTagObj.GetGameObjType() == IPY_GameWorld.gotNPC:
             FBLogic.DoFB_Player_HurtNPC(curObj, curTagObj, hurtHP)
         if GameObj.GetHP(curTagObj) == 0:
             curTagObj.SetDict(ChConfig.Def_PlayerKey_LastHurt, curObj.GetPlayerID())
             
-        if NPCHurtManager.AddHurtValue(curObj, curTagObj, hurtHP, isBounce):
-            return
-        
-        if NPCHurtMgr.AddHurtValue(curObj, curTagObj, hurtHP, isBounce):
-            return
-        
         curTeam = curObj.GetTeam()
         if curTeam == None:
             #无队伍,添加个人伤害
@@ -716,10 +681,6 @@
         #if not CheckAttackNPCByCnt(attacker, defender):
         #    return False
         
-        #击杀次数判断
-        if not NPCHurtManager.IsAssistPlayer(attacker.GetPlayerID(), defender) and not CheckKillNPCByCnt(attacker, defender):
-            return False
-        
         #仙盟归属NPC判断
         if not CheckCanAttackFamilyOwnerNPC(attacker, defender):
             return False
@@ -730,10 +691,6 @@
         #if not CheckAttackNPCByCnt(defender, attacker, False):
         #    return False
         
-        #击杀次数判断
-        if not CheckKillNPCByCnt(defender, attacker, False) and not NPCHurtManager.IsAssistPlayer(defender.GetPlayerID(), attacker):
-            return False
-        
         #仙盟归属NPC判断
         if not CheckCanAttackFamilyOwnerNPC(defender, attacker, False):
             return False
@@ -741,11 +698,11 @@
     # NPC打NPC
     elif atkObjType == IPY_GameWorld.gotNPC and defObjType == IPY_GameWorld.gotNPC:
         if PetControl.IsPet(attacker) or attacker.GetGameNPCObjType()== IPY_GameWorld.gnotSummon:
-            #击杀次数判断
-            if not CheckKillNPCByCnt(attacker, defender, False):
-                ownerPlayer = GetAttackPlayer(attacker)[0]
-                if ownerPlayer and not NPCHurtManager.IsAssistPlayer(ownerPlayer.GetPlayerID(), defender):
-                    return False
+            ##击杀次数判断
+            #if not CheckKillNPCByCnt(attacker, defender, False):
+            #    ownerPlayer = GetAttackPlayer(attacker)[0]
+            #    if ownerPlayer and not NPCHurtManager.IsAssistPlayer(ownerPlayer.GetPlayerID(), defender):
+            #        return False
                 
             #仙盟归属NPC判断
             if not CheckCanAttackFamilyOwnerNPC(attacker, defender, False):
@@ -858,28 +815,15 @@
         if not GameFuncComm.GetFuncCanUse(atkPlayer, funcID):
             PlayerControl.NotifyCode(atkPlayer, funcSysMark)
             return
-    canKillCnt = BossHurtMng.GetCanKillBossCnt(atkPlayer, index)[0]
-    
-    if canKillCnt <= 0:
-        #if BossHurtMng.GetPlayerBossHurt(atkPlayer, defender):
-        #    GameWorld.DebugLog("攻击过该boss可继续攻击")
-        #    return True
-        #次数不足
-        # 实际攻击者类型None则需要提示玩家
-        if npcObjType is None:
-            if isNotify:
-                sysMark = IpyGameDataPY.GetFuncEvalCfg('KillBossCntLimit', 3, {}).get(index, '')
-                PlayerControl.NotifyCode(atkPlayer, sysMark)
-        return False
-    
-    npcDataEx = NPCCommon.GetNPCDataEx(npcID)
-    if npcDataEx and npcDataEx.GetFightPowerLackAtkLimit():
-        if npcDataEx.GetSuppressFightPower() > PlayerControl.GetFightPower(atkPlayer):
-            if isNotify:
-                PlayerControl.NotifyCode(atkPlayer, "BossFightPowerHint") 
-            #GameWorld.DebugLog("战力不足,无法攻击boss! npcID=%s,SuppressFightPower=%s > playerFightPower=%s" 
-            #                   % (npcID, npcDataEx.GetSuppressFightPower(), PlayerControl.GetFightPower(atkPlayer)))               
-            return False
+        
+    #npcDataEx = NPCCommon.GetNPCDataPy(npcID)
+    #if npcDataEx and npcDataEx.GetFightPowerLackAtkLimit():
+    #    if npcDataEx.GetSuppressFightPower() > PlayerControl.GetFightPower(atkPlayer):
+    #        if isNotify:
+    #            PlayerControl.NotifyCode(atkPlayer, "BossFightPowerHint") 
+    #        #GameWorld.DebugLog("战力不足,无法攻击boss! npcID=%s,SuppressFightPower=%s > playerFightPower=%s" 
+    #        #                   % (npcID, npcDataEx.GetSuppressFightPower(), PlayerControl.GetFightPower(atkPlayer)))               
+    #        return False
         
     return True
 
@@ -906,9 +850,6 @@
     hasAttackCnt = atkPlayer.NomalDictGetProperty(ChConfig.Def_PDict_WorldBoss_HurtCnt, 0)
     
     if hasAttackCnt >= limitCnt:
-        #if BossHurtMng.GetPlayerBossHurt(atkPlayer, defender):
-        #    GameWorld.DebugLog("攻击过该boss可继续攻击")
-        #    return True
         #次数不足
         # 实际攻击者类型None则需要提示玩家
         if npcObjType is None:
@@ -2150,9 +2091,6 @@
         aBurnValue = atkwargs.get('burnValue', 0)
         aBurnPer = atkwargs.get('burnPer', 0)
         hurtFormulaKey = atkwargs.get('hurtFormulaKey', None)
-        #if hurtFormulaKey == "Burn":
-        #    pass
-        #else:
         hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("DOTFormula", 1))
     elif not curSkill:
         hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 3))
@@ -2239,8 +2177,6 @@
             atkObj.SetDict(ChConfig.Def_PlayerKey_LastHurtNPCObjID, defObj.GetID())
         else:
             defObj.SetDict(ChConfig.Def_PlayerKey_LastAttackerObjID, atkObj.GetID())
-            
-    TurnAttack.AddTurnObjHurtValue(atkObj, defObj, resultHurtType.HurtType, resultHurtType.RealHurtHP, resultHurtType.LostHP, curSkill)
     
     #if resultHurtType.RealHurtHP:
     #    PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_BeHurt, tick)
@@ -2335,9 +2271,9 @@
     #    GameWorld.DebugLog("不能攻击,不反弹")
     #    return
     #杀怪次数判断
-    if not CheckKillNPCByCnt(defObj, atkObj, False) and not NPCHurtManager.IsAssistPlayer(defObj.GetPlayerID(), atkObj):
-        #GameWorld.DebugLog("不能攻击,不反弹")
-        return
+    #if not CheckKillNPCByCnt(defObj, atkObj, False) and not NPCHurtManager.IsAssistPlayer(defObj.GetPlayerID(), atkObj):
+    #    #GameWorld.DebugLog("不能攻击,不反弹")
+    #    return
     
     #没有反弹退出
     defObj_DamageBackRate = defObj.GetDamageBackRate()
@@ -2549,17 +2485,6 @@
     '''
     #关系有3层,无-友好-敌人
     
-    #镜像PK下,无视PK区域、PK模式等,仅验证双方是否同一阵营
-    curBattleID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MirrorBattleID)
-    tagBattleID = tagPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MirrorBattleID)
-    if curBattleID and curBattleID == tagBattleID:
-        battle = MirrorAttack.GetMirrorBattleByID(curBattleID)
-        if battle.batState != ChConfig.Def_MirrorBatState_Fight:
-            return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
-        if curPlayer.GetFaction() != tagPlayer.GetFaction():
-            return ChConfig.Type_Relation_Enemy , ChConfig.Def_PASysMessage_None
-        return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_None
-    
     #判断是否可释放(增/减)技能或普攻
     if CheckPlayersRelationInFB_IsNone(curPlayer, tagPlayer):
         return ChConfig.Type_Relation_None, ChConfig.Def_PASysMessage_None
@@ -2627,10 +2552,6 @@
     elif curPlayerAttackMode == IPY_GameWorld.amAll:
         pass
     
-    # 协助关系不可攻击
-    if NPCHurtManager.IsAssistRelation(curPlayer, tagPlayer):
-        return ChConfig.Type_Relation_Friend, ChConfig.Def_PASysMessage_NotAttackTeam
-        
     # 以下为所属区域的一些特殊处理
     #普通区
     if curPlayerAreaType == IPY_GameWorld.gatNormal:
@@ -2708,8 +2629,8 @@
     if GameObj.GetHP(curObjDetel) > 0:
         return
     
-    if TurnAttack.SetTurnObjKilled(curObjDetel, atkObj):
-        return
+    #if TurnAttack.SetTurnObjKilled(curObjDetel, atkObj):
+    #    return
         
     #---玩家处理---
     if curObjDetel.GetGameObjType() == IPY_GameWorld.gotPlayer:
@@ -2787,7 +2708,7 @@
     srcID, srcType = 0, 0
     if srcObj:
         srcID, srcType = srcObj.GetID(), srcObj.GetGameObjType()
-    turnFight = TurnAttack.GetTurnFightMgr().getNPCTurnFight(curObj.GetID())
+    turnFight = TurnAttack.GetTurnFightMgr().getTurnFight(curObj.GetTFGUID())
     if turnFight:
         clientPack = ChNetSendPack.tagObjPropertyRefreshView()
         clientPack.ObjID = curObj.GetID()

--
Gitblit v1.8.0