From fbf3fe5655d97c67db3bf07706ab5af232dcc9a5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 18 九月 2025 19:17:48 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(甘夫人技能;增加连击、追击增伤减伤属性;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py |  392 ++++++++++++++-----------------------------------------
 1 files changed, 102 insertions(+), 290 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 d4639ce..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
@@ -31,7 +31,6 @@
 import PlayerControl
 import NPCCommon
 import SkillCommon
-import EffGetSet
 import FBLogic
 import ReadChConfig
 import PetControl
@@ -46,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
 
@@ -374,15 +368,6 @@
     AddHurtValue(defender, attacker.GetPlayerID(), ChConfig.Def_NPCHurtTypePlayer, 1)
     return
 
-## 被攻击者被动buff触发
-#  @param curTagPlayer 被攻击者
-#  @param tick 当前时间
-#  @param isSuperHit 暴击
-#  @return None
-#  @remarks 函数详细说明.
-def DefenderSpringBuff(curTagPlayer, tick, isSuperHit=False):
-    return
-   
 #---------------------------------------------------------------------
 
 def GetBattleRelationType(attacker, defender):
@@ -448,66 +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 value 基础值
-#  @param skill 技能
-#  @return 增强后的值
-#  @remarks 函数详细说明.
-def GetEnhanceValue(value, skill):
-    per = skill.GetEffect(0).GetEffectValue(0)
-    eff = skill.GetEffect(0).GetEffectValue(1)
-    #GameWorld.Log("被动 -> 自身属性,技能ID = %s,技能增强 = %s,附加 = %s , 基础值 = %s"%(skill.GetSkillName(),per,eff,value))
-    return max(value * per / ChConfig.Def_MaxRateValue + eff , 1)
-
-## 输入基础数值,返回增强后的值 (LV)- 效果加强
-#  @param value 基础值
-#  @param eff 效果
-#  @return 增强后的值
-#  @remarks 函数详细说明.
-def GetEnhanceValue_Eff(value, eff):
-    per = eff.GetEffectValue(0)
-    eff = eff.GetEffectValue(1)
-    #GameWorld.Log("value = %s,per = %s,erf = %s"%(value,per,eff))
-    return max(value * per / ChConfig.Def_MaxRateValue + eff , 1)
-
-## 输入基础效果值,(玩家索引) -> 技能增强
-#  @param curPlayer 当前玩家
-#  @param curEffect 当前效果
-#  @return 增强后的值
-#  @remarks 函数详细说明.
-def GetEnhanceIndexValue_Eff(curPlayer, curEffect):
-    index = curEffect.GetEffectValue(0)
-    skillPer = curEffect.GetEffectValue(1)
-    effect = curEffect.GetEffectValue(2)
-    maxValue = EffGetSet.GetValueByEffIndex(curPlayer, index)
-    #GameWorld.Log("-----%s,%s,%s,%s"%(index,skillPer,effect,maxValue))
-    
-    if maxValue == None:
-        return 0
-    
-    return max(maxValue * skillPer / ChConfig.Def_MaxRateValue + effect , 1)
 #--------------------------------------------------------------------------
 ## 设置玩家进入战斗状态
 #  @param defender 当前玩家(被攻击了)
@@ -686,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:
             #无队伍,添加个人伤害
@@ -764,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
@@ -778,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
@@ -789,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):
@@ -906,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
 
@@ -954,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:
@@ -1379,25 +1272,6 @@
             
     return hurtType, hurtTypeResultDict
 
-
-def __HurtTypeHappen_LuckyHit(atkObj, defObj, happenState, curSkill):
-    ''' 判断伤害类型是否发生 - 会心一击
-    @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值
-    '''
-    if IsHappenStateByType(happenState, ChConfig.Def_Skill_HappenState_LuckyHit):
-        return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj)
-    
-    aLuckyHitRate = atkObj.GetLuckyHitRate()
-    dLuckyHitRateReduce = PlayerControl.GetLuckyHitRateReduce(defObj)
-    
-
-    atkLuckyHitRate = eval(ReadChConfig.GetChConfig("CalcLuckyHitRate"))
-    if atkLuckyHitRate <= 0:
-        return
-    if GameWorld.CanHappen(atkLuckyHitRate):
-        return True, atkObj.GetLuckyHitVal(), PlayerControl.GetLuckyHitReduce(defObj)
-    return
-
 def __HurtTypeHappen_SuperHit(atkObj, defObj, happenState, curSkill):
     ''' 判断伤害类型是否发生 - 暴击
     @return: 是否触发, 触发时伤害计算固定值, 触发时防守方的伤害减免固定值
@@ -1423,22 +1297,12 @@
     ''' 判断伤害类型是否发生 - 防守方抵御
     @return: 是否触发, 触发时伤害计算值, 触发时防守方的伤害减免值
     '''
-    chanceDefPer = PlayerControl.GetDamChanceDef(defObj)
-    if not chanceDefPer:
-        return
-    if GameWorld.CanHappen(ChConfig.Def_ChanceDefRate):
-        return True, 0, chanceDefPer
-    return
-
-#def __HurtTypeHappen_Zhuxian(atkObj, defObj, happenState, curSkill):
-#    """诛仙一击"""
-#    rate = PlayerControl.GetZhuXianRate(atkObj)
-#    if not rate:
+#    chanceDefPer = PlayerControl.GetDamChanceDef(defObj)
+#    if not chanceDefPer:
 #        return
-#    
-#    if GameWorld.CanHappen(rate):
-#        return True, PlayerControl.GetZhuXianHurtPer(atkObj), 0
-#    return
+#    if GameWorld.CanHappen(ChConfig.Def_ChanceDefRate):
+#        return True, 0, chanceDefPer
+    return
 
 # 致命一击
 def __HurtTypeHappen_Deadly(atkObj, defObj, happenState, curSkill):
@@ -1483,21 +1347,21 @@
     if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
         reducePer = SkillCommon.GetSkillReducePerByID(defObj, skillTypeID)
         
-        #根据防守方职业 计算攻击方伤害加成
-        if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
-            addPer += PlayerControl.GetJobAHurtAddPer(atkObj)
-        elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
-            addPer += PlayerControl.GetJobBHurtAddPer(atkObj)
-        elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
-            addPer += PlayerControl.GetJobCHurtAddPer(atkObj)
-        
-        #根据攻击方职业 计算防守方伤害减免
-        if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
-            reducePer += PlayerControl.GetJobAAtkReducePer(defObj)
-        elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
-            reducePer += PlayerControl.GetJobBAtkReducePer(defObj)
-        elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
-            reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
+#        #根据防守方职业 计算攻击方伤害加成
+#        if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
+#            addPer += PlayerControl.GetJobAHurtAddPer(atkObj)
+#        elif defObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
+#            addPer += PlayerControl.GetJobBHurtAddPer(atkObj)
+#        elif defObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
+#            addPer += PlayerControl.GetJobCHurtAddPer(atkObj)
+#        
+#        #根据攻击方职业 计算防守方伤害减免
+#        if atkObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
+#            reducePer += PlayerControl.GetJobAAtkReducePer(defObj)
+#        elif atkObj.GetJob() in [ShareDefine.PlayerJob_Wizard, ShareDefine.PlayerJob_ForceUser]:
+#            reducePer += PlayerControl.GetJobBAtkReducePer(defObj)
+#        elif atkObj.GetJob() in [ShareDefine.PlayerJob_Assassin, ShareDefine.PlayerJob_BowMaster]:
+#            reducePer += PlayerControl.GetJobCAtkReducePer(defObj)
         
     if addPer or reducePer:
         addSkillPer = addPer - reducePer
@@ -1620,24 +1484,25 @@
     
 # 攻击时防守方神兵护盾的处理
 def CalcAtkProDef(atkObj, defObj, hurtValue, curSkill, tick):
-    if defObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
-        return hurtValue
-    
-    if not CheckIsPlayerOnwer(atkObj):
-        return hurtValue
-
-    curProDef = PlayerControl.GetProDef(defObj)
-    if not curProDef:
-        return hurtValue
-    
-    absortValue = min(PlayerControl.GetProDefAbsorb(defObj)*hurtValue/ChConfig.Def_MaxRateValue, curProDef)
-    
-    PlayerControl.SetProDef(defObj, curProDef - absortValue)
-    
-    # 被动技能触发
-    defObj.SetDict(ChConfig.Def_PlayerKey_GodWeaponBeforeProDef, curProDef)
-    PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_ProDefValue, tick)
-    return hurtValue - absortValue
+    return hurtValue
+#    if defObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
+#        return hurtValue
+#    
+#    if not CheckIsPlayerOnwer(atkObj):
+#        return hurtValue
+#
+#    curProDef = PlayerControl.GetProDef(defObj)
+#    if not curProDef:
+#        return hurtValue
+#    
+#    absortValue = min(PlayerControl.GetProDefAbsorb(defObj)*hurtValue/ChConfig.Def_MaxRateValue, curProDef)
+#    
+#    PlayerControl.SetProDef(defObj, curProDef - absortValue)
+#    
+#    # 被动技能触发
+#    defObj.SetDict(ChConfig.Def_PlayerKey_GodWeaponBeforeProDef, curProDef)
+#    PassiveBuffEffMng.OnPassiveSkillTrigger(defObj, atkObj, None, ChConfig.TriggerType_ProDefValue, tick)
+#    return hurtValue - absortValue
 
 
 # 设置玩家一次主动型攻击中的第一个防御者
@@ -1646,7 +1511,7 @@
         return
     
     if curSkill and curSkill.GetFuncType() not in [ChConfig.Def_SkillFuncType_FbSkill,
-                                          ChConfig.Def_SkillFuncType_TurnNormaAttack]:
+                                          ChConfig.Def_SkillFuncType_TurnNormaSkill]:
         return
     
     if attacker.GetDictByKey(ChConfig.Def_PlayerKey_FirstDefender):
@@ -1817,20 +1682,20 @@
     fightPowerMax = ipyData.GetFightPowerMax()
     everyFightPower = ipyData.GetEveryFightPower()
     everyFightPowerLostHPEx = ipyData.GetEveryFightPowerLostHPEx()
-    if fightPowerMinByLV and fightPowerMin:
-        npcLV = NPCCommon.GetNPCLV(curNPC)
-        playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(npcLV)
-        if not playerCurLVIpyData:
-            return
-        ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力
-        reRate = ReFightPower / float(fightPowerMin)
-        #GameWorld.DebugLog("标准战力需要取等级表: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s,npcLV=%s,ReFightPower=%s,reRate=%s" 
-        #                   % (fightPowerMin, fightPowerMax, everyFightPower, npcLV, ReFightPower, reRate))
-        fightPowerMin = ReFightPower
-        fightPowerMax = int(fightPowerMax * reRate)
-        everyFightPower = int(everyFightPower * reRate)
-        #GameWorld.DebugLog("按比例更新战力值信息: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s" 
-        #                   % (fightPowerMin, fightPowerMax, everyFightPower))
+    #if fightPowerMinByLV and fightPowerMin:
+    #    npcLV = NPCCommon.GetNPCLV(curNPC)
+    #    playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(npcLV)
+    #    if not playerCurLVIpyData:
+    #        return
+    #   ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力
+    #    reRate = ReFightPower / float(fightPowerMin)
+    #    #GameWorld.DebugLog("标准战力需要取等级表: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s,npcLV=%s,ReFightPower=%s,reRate=%s" 
+    #    #                   % (fightPowerMin, fightPowerMax, everyFightPower, npcLV, ReFightPower, reRate))
+    #    fightPowerMin = ReFightPower
+    #    fightPowerMax = int(fightPowerMax * reRate)
+    #    everyFightPower = int(everyFightPower * reRate)
+    #    #GameWorld.DebugLog("按比例更新战力值信息: fightPowerMin=%s,fightPowerMax=%s,everyFightPower=%s" 
+    #    #                   % (fightPowerMin, fightPowerMax, everyFightPower))
         
     effFightPower = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPFightPower) \
                     + curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_TimeLostHPFightPowerEx) * ChConfig.Def_PerPointValue
@@ -2035,7 +1900,7 @@
     
     turnFightPosInfo = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightPosInfo)
     mustHit = False
-    if SkillCommon.isXPSkill(curSkill):
+    if SkillCommon.isAngerSkill(curSkill):
         mustHit = True
         GameWorld.DebugLog("        XP必命中")
         angerOverflow = max(GameObj.GetXP(atkObj) - IpyGameDataPY.GetFuncCfg("AngerXP", 2), 0)
@@ -2096,13 +1961,13 @@
     atkSkillPer = ChangeSkillHurtPer(atkObj, defObj, curSkill, atkSkillPer)
     
     # --- 新增普通攻击的数值和技能攻击的数值,根据类型各自计算
-    if atkObjType == IPY_GameWorld.gotPlayer:
-        if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaAttack:
-            atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj)
-            atkSkillValue += PlayerControl.GetNormalHurt(atkObj)
-        elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]:
-            atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj)
-            atkSkillValue += PlayerControl.GetFabaoHurt(atkObj)
+    #if atkObjType == IPY_GameWorld.gotPlayer:
+    #    if not curSkill or curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_TurnNormaSkill:
+    #        atkSkillPer += PlayerControl.GetNormalHurtPer(atkObj)
+    #        atkSkillValue += PlayerControl.GetNormalHurt(atkObj)
+    #    elif curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbSkill, ChConfig.Def_SkillFuncType_FbPassiveSkill]:
+    #        atkSkillPer += PlayerControl.GetFabaoHurtPer(atkObj)
+    #        atkSkillValue += PlayerControl.GetFabaoHurt(atkObj)
           
     atkSkillValue += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SkillValue)
     atkSkillValue += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SkillValue)
@@ -2149,19 +2014,19 @@
     if atkObjType == IPY_GameWorld.gotPlayer:
         aIgnoreDefRate = atkObj.GetIgnoreDefRate()  # 无视防御比率
         aSkillAtkRate = atkObj.GetSkillAtkRate()    # 技能攻击力加成
-        aDamagePVP = PlayerControl.GetDamagePVP(atkObj)     # PVP固定伤害
-        aDamagePVE = PlayerControl.GetDamagePVE(atkObj)     # PVE固定伤害
+        aDamagePVP = 0 #PlayerControl.GetDamagePVP(atkObj)     # PVP固定伤害
+        aDamagePVE = 0 #PlayerControl.GetDamagePVE(atkObj)     # PVE固定伤害
         
-        aNPCHurtAddPer = PlayerControl.GetNPCHurtAddPer(atkObj)     # PVE伤害加成
-        aDamagePerPVP = PlayerControl.GetDamagePerPVP(atkObj)     # 外层PVP伤害加成
+        aNPCHurtAddPer = 0 #PlayerControl.GetNPCHurtAddPer(atkObj)     # PVE伤害加成
+        aDamagePerPVP = 0 #PlayerControl.GetDamagePerPVP(atkObj)     # 外层PVP伤害加成
         aDamagePerPVP += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddPVPDamagePer)
         
-        aFinalHurt = PlayerControl.GetFinalHurt(atkObj)     # 最终固定伤害
+        aFinalHurt = 0#PlayerControl.GetFinalHurt(atkObj)     # 最终固定伤害
         # 被动增加最终伤害
         aFinalHurt += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
         aFinalHurt += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddFinalValue)
         
-        aOnlyFinalHurt = PlayerControl.GetOnlyFinalHurt(atkObj) # 额外固定伤害
+        aOnlyFinalHurt = 0 #PlayerControl.GetOnlyFinalHurt(atkObj) # 额外固定伤害
         aFightPower = PlayerControl.GetFightPower(atkObj)
     else:
         aIgnoreDefRate = 0  # 无视防御比率
@@ -2182,14 +2047,14 @@
     dFinalHurtReducePer = GameObj.GetFinalHurtReducePer(defObj)
     dFinalHurtReducePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, curSkill, ChConfig.TriggerType_dFinalHurtReducePer)
     if defObjType == IPY_GameWorld.gotPlayer:
-        dIgnoreDefRateReduce = PlayerControl.GetIgnoreDefRateReduce(defObj)  # 无视防御比率抗性
-        dSkillAtkRateReduce = PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少
-        dDamagePVPReduce = PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤
+        dIgnoreDefRateReduce = 0 #PlayerControl.GetIgnoreDefRateReduce(defObj)  # 无视防御比率抗性
+        dSkillAtkRateReduce = 0 #PlayerControl.GetSkillAtkRateReduce(defObj) # 技能攻击力减少
+        dDamagePVPReduce = 0 #PlayerControl.GetDamagePVPReduce(defObj) # PVP固定减伤
         #dDamReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReduce)
-        dDamagePerPVPReduce = PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤
+        dDamagePerPVPReduce = 0 #PlayerControl.GetDamagePerPVPReduce(defObj) # 外层PVP减伤
         dDamagePerPVPReduce += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_DamageReducePVP)
-        dFinalHurtReduce = PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少
-        dBeHurtPer = PlayerControl.GetBeHurtPer(defObj)      # 加深受到伤害百分比
+        dFinalHurtReduce = 0 #PlayerControl.GetFinalHurtReduce(defObj) # 最终固定伤害减少
+        dBeHurtPer = 0#PlayerControl.GetBeHurtPer(defObj)      # 加深受到伤害百分比
         dFightPower = PlayerControl.GetFightPower(defObj)
         
     else:
@@ -2226,17 +2091,14 @@
         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))
         GameWorld.DebugLog("    普攻伤害=%s" % (hurtValue))
-    elif SkillCommon.isTurnNormalAtkSkill(curSkill):
+    elif SkillCommon.isTurnNormalSkill(curSkill):
         hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 1))
         GameWorld.DebugLog("    普攻技能伤害=%s" % (hurtValue))
-    elif SkillCommon.isXPSkill(curSkill):
+    elif SkillCommon.isAngerSkill(curSkill):
         hurtValue = eval(IpyGameDataPY.GetFuncCompileCfg("HurtFormula", 2))
         GameWorld.DebugLog("    怒气技能伤害=%s" % (hurtValue))
     else:
@@ -2315,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)
@@ -2411,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()
@@ -2482,10 +2342,10 @@
         suckHP += atkObj.GetKillBackHP()
     
     # 攻击吸血
-    atkBackHP = PlayerControl.GetAtkBackHPPer(atkObj)
-    if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
-        #PVP 攻击回血
-        atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj)
+    atkBackHP = 0 #PlayerControl.GetAtkBackHPPer(atkObj)
+    #if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
+    #    #PVP 攻击回血
+    #    atkBackHP += PlayerControl.GetPVPAtkBackHP(atkObj)
     # 百分比吸血
     atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
     atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
@@ -2506,39 +2366,6 @@
     GameObj.SetHP(atkObj, min(GameObj.GetMaxHP(atkObj), GameObj.GetHP(atkObj) + suckHP), False)
     
     ChangeHPView(atkObj, None, 0, suckHP, ChConfig.Def_HurtTYpe_Recovery)
-    return
-
-## 攻击者回蓝逻辑
-#  @param atkObj 攻击者
-#  @param defObj 防守者
-#  @return None
-def CalcSuckMagic(atkObj, defObj, hurtValue):
-
-    if atkObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
-        return
-    
-    tick = GameWorld.GetGameWorld().GetTick()
-    if tick - atkObj.GetTickByType(ChConfig.TYPE_Player_Tick_SuckMagic) \
-        < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_SuckMagic]:
-        return
-    
-    atkObj.SetTickByType(ChConfig.TYPE_Player_Tick_SuckMagic, tick)
-    
-    suckMP = 0
-    
-    # 杀怪回蓝
-    if defObj.GetGameObjType() == IPY_GameWorld.gotNPC and GameObj.GetHP(defObj) <= 0:
-        suckMP += atkObj.GetKillBackMP()
-    
-    # 攻击吸蓝
-    atkBackMPPer = PlayerControl.GetAtkBackMPPer(atkObj)
-    if atkBackMPPer > 0:
-        suckMP += int(hurtValue * atkBackMPPer / float(ChConfig.Def_MaxRateValue))
-    
-    if suckMP <= 0:
-        return
-    
-    atkObj.SetMP(min(atkObj.GetMaxMP(), atkObj.GetMP() + suckMP))
     return
 
 #---------------------------------------------------------------------
@@ -2658,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
@@ -2736,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:
@@ -2817,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:
@@ -2852,13 +2664,13 @@
         return
 
     attackLV = curPlayer.GetLV()    # 攻击者等级
-    attackPrestige = PlayerControl.GetPrestige(curPlayer)    # 攻击者威望
+    attackPrestige = 0 #PlayerControl.GetPrestige(curPlayer)    # 攻击者威望
     attackNotoriety = curPlayer.GetInfamyValue()    # 攻击者恶名值
     attackPkValue = curPlayer.GetPKValue()  # 攻击者pk值
     attackFightPower = PlayerControl.GetFightPower(curPlayer) # 攻击者战斗力
     
     defendLV = defender.GetLV()    # 防守者等级
-    defendPrestige = PlayerControl.GetPrestige(defender)    # 防守者威望
+    defendPrestige = 0 #PlayerControl.GetPrestige(defender)    # 防守者威望
     defendNotoriety = defender.GetInfamyValue()    # 防守者恶名值
     defendPkValue = defender.GetPKValue()  # 防守者pk值
     defendFightPower = PlayerControl.GetFightPower(defender) # 防守者战斗力
@@ -2896,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