From 6e928c09df9d294e2f90cd91189a3c9abb7b007f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 31 十月 2025 17:58:33 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(词条技能1014 ~ 1019:增加技能初始CD支持,优化技能CD;优化技能属性、buff属性计算;修复纯buff怒技没有同步技能的bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py |   31 +++++++++++++++++++------------
 1 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index 4235cf7..1a0144f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -830,6 +830,8 @@
             
         batLineup.posObjIDDict[posNum] = objID
         GameWorld.DebugLog("AddBatObj %s,skill=%s" % (GetObjName(batObj), skillManager.GetSkillIDList()))
+        ResetObjSkill(batObj)
+        
         if npcID:
             #副本指定NPC属性
             fbNPCInitAttrDict = FBLogic.GetFBNPCInitAttr(curPlayer, turnFight, batObj)
@@ -864,8 +866,7 @@
         buffMgr.ClearBuff()
         
         # 重置技能
-        batObj.ResetSkillUseCnt()
-        ResetObjSkillCD(batObj)
+        ResetObjSkill(batObj)
         
         # 重刷属性、被动
         TurnBuff.RefreshBuffAttr(batObj)
@@ -1424,8 +1425,9 @@
             
             turnFight.ResetOneActionUseSkillCnt()
             batObj.SetTiming(ChConfig.TurnTiming_Before) # 重置时机到回合前
-            RefreshObjSkillByTurn(batObj) # 优先刷技能CD
-            
+            if turnNum > 1: # 第1回合不用刷新技能
+                RefreshObjSkillByTurn(batObj)
+                
             TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_BigTurnStart)
             
     return
@@ -1480,21 +1482,26 @@
     RefreshObjBuffTime(turnFight, batObj)
     return
 
-def ResetObjSkillCD(batObj):
-    ## 重置所有技能CD
+def ResetObjSkill(batObj):
+    ## 重置所有技能,一般是每场战斗开始的重置
+    curID = batObj.GetID()
+    batObj.ResetSkillUseCnt() # 使用次数
     skillManager = batObj.GetSkillManager()
     for index in range(0, skillManager.GetSkillCount()):
         curSkill = skillManager.GetSkillByIndex(index)
         if not curSkill:
             continue
-        remainTime = curSkill.GetRemainTime()
-        if remainTime <= 0:
-            continue
-        curSkill.SetRemainTime(0)
+        skillID = curSkill.GetSkillID()
+        initCD = curSkill.GetCoolDownInit()
+        if initCD:
+            curSkill.SetRemainTime(initCD)
+            GameWorld.DebugLog("技能初始CD: curID=%s,skillID=%s,initCD=%s" % (curID, skillID, initCD))
+        elif curSkill.GetRemainTime():
+            curSkill.SetRemainTime(0)
     return
 
 def RefreshObjSkillByTurn(batObj):
-    '''按回合刷新技能:默认以大回合统一减1回合,使用技能后设置剩余CD统一默认加1回合,即配置1回合,设置的CD是2
+    '''按回合刷新技能:默认以大回合统一减1回合
     '''
     curID = batObj.GetID()
     skillManager = batObj.GetSkillManager()
@@ -1504,7 +1511,6 @@
             continue
         skillID = curSkill.GetSkillID()
         preTurnUseCnt = batObj.GetSkillTurnUseCnt(skillID)
-        batObj.ResetSkillTurnUseCnt() # 重置回合使用次数
         remainTime = curSkill.GetRemainTime()
         if remainTime <= 0:
             continue
@@ -1515,6 +1521,7 @@
         curSkill.SetRemainTime(remainTime)
         GameWorld.DebugLog("    更新技能CD: curID=%s,skillID=%s,remainTime=%s" % (curID, skillID, remainTime))
         
+    batObj.ResetSkillTurnUseCnt() # 重置回合使用次数,放刷新CD后重置
     return
 
 def RefreshObjBuffTime(turnFight, batObj):

--
Gitblit v1.8.0