From cc2207557c22a88475e28f6a05a416c0fa97e527 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 25 八月 2025 18:53:15 +0800
Subject: [PATCH] 1111 删除不需要内容;
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 228 ++++++--------------------------------------------------
1 files changed, 26 insertions(+), 202 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 31df10d..80b81d4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -24,7 +24,6 @@
import NetPackCommon
import PlayerControl
import GameWorld
-import GameObj
import FBCommon
import IpyGameDataPY
import PlayerOnline
@@ -33,7 +32,6 @@
import PyGameData
import ItemControler
import SkillCommon
-import AttackCommon
import BattleObj
import TurnPassive
import TurnSkill
@@ -267,12 +265,12 @@
batObj = batObjMgr.getBatObj(objID)
if not batObj:
continue
- if batObj.GetHP() > 0:
+ if batObj.IsAlive():
allKilled = False
break
if allKilled:
- self.winFaction = ChConfig.Def_FactionA if faction == ChConfig.Def_FactionB else ChConfig.Def_FactionA
+ self.winFaction = ChConfig.Def_FactionA if faction == ChConfig.Def_FactionB else ChConfig.Def_FactionB
DoTurnFightOver(self.guid)
return self.winFaction
@@ -556,7 +554,7 @@
batObjMgr = BattleObj.GetBatObjMgr()
initXP = IpyGameDataPY.GetFuncCfg("AngerXP", 1)
- atkBackSkillIDList = IpyGameDataPY.GetFuncEvalCfg("ParryCfg", 3)
+ atkBackSkillIDList = IpyGameDataPY.GetFuncEvalCfg("ParryCfg", 2)
for posNumKey, heroInfo in heroDict.items():
posNum = int(posNumKey)
@@ -597,6 +595,7 @@
batObj.SetLineupPos(posNum, num)
batObj.SetFightPower(fightPower)
batObj.SetLV(lv)
+ batObj.SetAtkDistType(atkDistType)
if npcID:
batObj.SetNPCID(npcID)
elif lineupPlayerID:
@@ -1112,6 +1111,7 @@
return
def OnTimelineChange(turnFight):
+ ## 每个时间节点变化时处理
nowTimeline = turnFight.getTimeline()
@@ -1120,8 +1120,14 @@
for batLineup in batFaction.lineupDict.values():
for objID in batLineup.posObjIDDict.values():
batObj = batObjMgr.getBatObj(objID)
- if not batObj or batObj.GetHP() <= 0:
+ #GameWorld.DebugLog("OnTimelineChange! objID=%s" % (objID))
+ if not batObj or not batObj.IsAlive():
continue
+
+ batObj.SetDict(ChConfig.Def_Obj_Dict_TurnComboNum, 0)
+ batObj.SetDict(ChConfig.Def_Obj_Dict_TurnMissNum, 0)
+ batObj.SetDict(ChConfig.Def_Obj_Dict_TurnParryNum, 0)
+
curID = batObj.GetID()
skillManager = batObj.GetSkillManager()
for index in range(0, skillManager.GetSkillCount()):
@@ -1148,10 +1154,12 @@
remainTime = buff.GetRemainTime()
if not remainTime:
# 永久buff不处理
+ #GameWorld.DebugLog(" 永久buff不处理! curID=%s,index=%s,skillID=%s" % (curID, index, buff.GetSkillID()))
continue
calcTimeline = buff.GetCalcTime()
passTurn = __calcPassturn(calcTimeline, nowTimeline, False)
if passTurn <= 0:
+ #GameWorld.DebugLog(" passTurn <= 0 passTurn=%s,calcTimeline=%s,nowTimeline=%s,skillID=%s" % (passTurn, calcTimeline, nowTimeline, buff.GetSkillID()))
continue
updRemainTime = max(0, remainTime - passTurn)
@@ -1194,40 +1202,6 @@
return
TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_BigTurnStart)
-
-# SetTimeline(gameObj, turnNum, 0)
-# # 重置连击、反击数
-# gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnComboNum, 0)
-# gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnAtkBackNum, 0)
-# gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnParryNum, 0)
-# gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnMissNum, 0)
-# gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnAtkAddXPCount, 0)
-# gameObj.SetDict(ChConfig.Def_Obj_Dict_TurnXPUseState, 0)
-# gameObj.SetDict(ChConfig.Def_PlayerKey_AttrFaintCD, 0) # 击晕CD
-#
-# objType = gameObj.GetGameObjType()
-# objID = gameObj.GetID()
-# objName = GetObjName(gameObj)
-# GameWorld.DebugLog("ObjPerTurnStart: 回合%s, %s objType-ID-HP(%s-%s-%s)" % (turnNum, objName, objType, objID, GameObj.GetHP(gameObj)))
-#
-# # 每回合开始减技能CD
-# skillManager = gameObj.GetSkillManager()
-# for i in range(skillManager.GetSkillCount()):
-# skill = skillManager.GetSkillByIndex(i)
-# remainTime = skill.GetRemainTime()
-# if not remainTime:
-# continue
-# skillID = skill.GetSkillID()
-# updRemainTime = max(0, remainTime - ChConfig.Def_PerTurnTick)
-# skill.SetRemainTime(updRemainTime)
-# GameWorld.DebugLog(" skillID=%s,remainTime=%s,updRemainTime=%s" % (skillID, remainTime, updRemainTime))
-#
-# # 刷新定时处理的buff效果
-# SkillShell.ProcessPersistBuff(gameObj, tick)
-#
-# PassiveBuffEffMng.OnPassiveSkillTrigger(gameObj, tagObj, None, ChConfig.TriggerType_TurnNum, tick)
-#
-# __logGameObjAttr(gameObj)
return
def TurnFightPerTurnBigEnd(turnFight, batObj, turnNum):
@@ -1271,6 +1245,8 @@
def AddTurnObjHurtValue(curBatObj, tagBatObj, hurtValue, lostHP, skillID=0, isBounce=False):
## 回合对象添加伤害值
# @param isBounce: 是否反弹伤害
+ if hurtValue <= 0:
+ return
curID = curBatObj.GetID()
tagID = tagBatObj.GetID()
if curID != tagID:
@@ -1279,7 +1255,7 @@
% (curID, tagID, skillID, hurtValue, lostHP, updStatValue, tagBatObj.GetHP(), isBounce))
if tagBatObj:
- updStatValue = tagBatObj.StatDefValue(lostHP)
+ updStatValue = tagBatObj.StatDefValue(hurtValue)
GameWorld.DebugLog(" 统计承伤: curID=%s,tagID=%s,skillID=%s,hurtValue=%s,lostHP=%s,updStatValue=%s,curHP=%s,isBounce=%s"
% (tagID, curID, skillID, hurtValue, lostHP, updStatValue, tagBatObj.GetHP(), isBounce))
@@ -1303,12 +1279,11 @@
objName = GetObjName(curBatObj)
# 是否可行动状态判断
- canAction = True
-
+ canAction = curBatObj.CanAction()
if not canAction:
GameWorld.DebugLog("★回合%s %s 当前状态不可行动!" % (turnNum, objName))
return
-
+
atk = curBatObj.GetAtk()
curXP = curBatObj.GetXP()
GameWorld.DebugLog("★回合%s %s 行动 : atk=%s,curHP=%s/%s,curXP=%s" % (turnNum, objName, atk, curHP, curBatObj.GetMaxHP(), curXP))
@@ -1338,6 +1313,9 @@
if SkillCommon.isAngerSkill(useSkill):
if curXP < xpMax:
continue
+ if curBatObj.IsInState(ChConfig.BatObjState_Sneer):
+ GameWorld.DebugLog("嘲讽状态下,无法主动释放怒技!") # 可被动释放怒技,如怒技追击
+ continue
useCnt = -1 # xp技能优先释放
else:
useCnt = curBatObj.GetSkillUseCnt(skillID)
@@ -1354,166 +1332,12 @@
TurnPassive.OnTriggerPassiveEffect(turnFight, curBatObj, ChConfig.TriggerWay_HeroActionEnd)
return True
-def DoAttack(curBatObj, tagBatObj, tick, turnBattleType=ChConfig.TurnBattleType_Normal, useSkill=None):
-# curID = curBatObj.GetID()
-# npcID = curBatObj.GetNPCID()
-# objName = GetObjName(curBatObj)
-# GameWorld.DebugLog(" ● %s DoAttack: curID=%s,,turnBattleType=%s" % (objName, curID, turnBattleType))
-#
-# atkOK = False
-# curBatObj.SetDict(ChConfig.Def_Obj_Dict_TurnBattleType, turnBattleType)
-#
-# if turnBattleType == ChConfig.TurnBattleType_AtkBack:
-# if not tagBatObj:
-# return
-# skillManager = curBatObj.GetSkillManager()
-# for index in range(0, skillManager.GetSkillCount()):
-# skill = skillManager.GetSkillByIndex(index)
-# if not skill:
-# continue
-# if skill.GetFuncType() == ChConfig.Def_SkillFuncType_AtkbackSkill:
-# useSkill = skill
-# break
-# atkOK = SkillShell.DoLogic_UseSkill(curBatObj, tagBatObj, useSkill, tick)
-# elif turnBattleType == ChConfig.TurnBattleType_Combo:
-# if not tagBatObj:
-# return
-# atkOK = SkillShell.DoLogic_UseSkill(curBatObj, tagBatObj, useSkill, tick)
-# else:
-# curXP = GameObj.GetXP(curBatObj)
-# xpMax = IpyGameDataPY.GetFuncCfg("AngerXP", 2)
-# skillManager = curBatObj.GetSkillManager()
-# useSkillList = []
-# #GameWorld.DebugLog('skillCount=%s' % skillManager.GetSkillCount(), npcID)
-# for index in range(0, skillManager.GetSkillCount()):
-# useSkill = skillManager.GetSkillByIndex(index)
-# if not useSkill:
-# continue
-# if useSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_AtkbackSkill]:
-# #基础普攻不能主动释放,目前仅用于反击
-# continue
-# #被动技能无法使用
-# if SkillCommon.isPassiveSkill(useSkill):
-# continue
-# #还在冷却时间内无法释放
-# if useSkill.GetRemainTime():
-# continue
-# skillID = useSkill.GetSkillID()
-# # 常规攻击优先xp
-# if SkillCommon.isAngerSkill(useSkill) and turnBattleType == ChConfig.TurnBattleType_Normal:
-# if curXP < xpMax:
-# continue
-# useCnt = -1 # xp技能优先释放
-# else:
-# useCnt = curBatObj.GetDictByKey(ChConfig.Def_NPC_Dict_SkillUseCnt % skillID) # 该技能已使用次数
-# useSkillList.append([useCnt, index, skillID, useSkill])
-#
-# useSkillList.sort() # 按使用次数优先升序排,使用次数低的优先判断使用
-# #GameWorld.DebugLog(' 技能使用顺序 = useSkillList%s' % str(useSkillList), npcID)
-#
-# for useInfo in useSkillList:
-# useSkill = useInfo[-1]
-# #skillID = useSkill.GetSkillID()
-# atkOK, tagBatObj = OnUseSkill(curBatObj, useSkill, tick)
-# if atkOK:
-# break
-#
-# curBatObj.SetDict(ChConfig.Def_Obj_Dict_TurnBattleType, 0) # 无论攻击成功与否都重置战斗类型
-#
-# tagID = 0
-# tagHP = 0
-# if tagObj:
-# tagID = tagObj.GetID()
-# tagHP = GameObj.GetHP(tagObj)
-# GameWorld.DebugLog(' atkOK=%s,tagID=%s,tagHP=%s' % (atkOK, tagID, tagHP), npcID)
-# if not atkOK:
-# return
-#
-# if not tagObj:
-# return
-#
-# if GameObj.GetFaction(curNPC) == GameObj.GetFaction(tagObj):
-# # 同阵营直接返回,不处理连击、反击
-# return True
-#
-# curHP = GameObj.GetHP(curNPC)
-# tagHP = GameObj.GetHP(tagObj)
-# tagID = tagObj.GetID()
-# GameWorld.DebugLog(" curID-HP=(%s-%s),tagID-HP=(%s-%s)" % (curID, curHP, tagID, tagHP))
-# if tagHP <= 0 or curHP <= 0:
-# return True
-#
-# # 反击,反击可打断连击,所以优先判断
-# if CanAtkBack(curNPC, tagObj):
-# DoAttack(tagObj, curNPC, tick, ChConfig.TurnBattleType_AtkBack)
-# return True
-#
-# # 连击
-# if CanCombo(curNPC, tagObj):
-# DoAttack(curNPC, tagObj, tick, ChConfig.TurnBattleType_Combo, useSkill)
-#
- return True
-
-def CanAtkBack(atkObj, defObj):
- ## 可否反击
- posNum = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightPosInfo) % 100
- if posNum <= 0:
- GameWorld.DebugLog(" 被非主战单位攻击时无法触发反击: atkID=%s,posNum=%s" % (atkObj.GetID(), posNum))
- return False
- atkDistType = AttackCommon.GetAtkDistType(defObj)
- if atkDistType == ChConfig.AtkDistType_Long:
- if not IpyGameDataPY.GetFuncCfg("ParryCfg", 2):
- GameWorld.DebugLog(" 远程单位不可反击: defID=%s" % (defObj.GetID()))
- return False
- defAtkBackRate = GameObj.GetAtkBackRate(defObj) # 防方反击率
- atkBackNum = defObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnAtkBackNum) # 已反击次数
- if atkBackNum > 10:
- # 内置最高反击数防范
- return False
- if atkBackNum > 0:
- validPerList = IpyGameDataPY.GetFuncEvalCfg("TurnFight", 4)
- vaildPer = validPerList[atkBackNum - 1] if len(validPerList) >= atkBackNum else 0
- defAtkBackRate = int(defAtkBackRate * vaildPer / 100.0)
-
- atkAtkBackDefRate = GameObj.GetAtkBackDefRate(atkObj) # 攻方抵抗反击率
- atkBackRate = max(0, defAtkBackRate - atkAtkBackDefRate)
- if atkBackRate <= 0 or not GameWorld.CanHappen(atkBackRate):
- GameWorld.DebugLog(" 无法反击: defID=%s,atkBackNum=%s,atkBackRate=%s=(defAtkBackRate=%s - atkAtkBackDefRate=%s)"
- % (defObj.GetID(), atkBackNum, atkBackRate, defAtkBackRate, atkAtkBackDefRate))
- return False
- GameWorld.DebugLog(" 可以反击: defID=%s,atkBackNum=%s,atkBackRate=%s=(defAtkBackRate=%s - atkAtkBackDefRate=%s)"
- % (defObj.GetID(), atkBackNum, atkBackRate, defAtkBackRate, atkAtkBackDefRate))
- return True
-
-def CanCombo(atkObj, defObj):
- ## 可否连击
-
- atkComboRate = GameObj.GetComboRate(atkObj) # 攻方连击率
- comboNum = atkObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnComboNum) # 已连击次数
- if comboNum > 10:
- # 内置最高连击数防范
- return False
- if comboNum > 0:
- validPerList = IpyGameDataPY.GetFuncEvalCfg("TurnFight", 3)
- vaildPer = validPerList[comboNum - 1] if len(validPerList) >= comboNum else 0
- atkComboRate = int(atkComboRate * vaildPer / 100.0)
-
- defComboReduce = GameObj.GetComboDefRate(defObj) # 防方抵抗连击率
- comboRate = max(0, atkComboRate - defComboReduce)
- if comboRate <= 0 or not GameWorld.CanHappen(comboRate):
- GameWorld.DebugLog(" 无法连击: atkID=%s,comboNum=%s,comboRate=%s=(atkComboRate=%s - defComboReduce=%s)"
- % (atkObj.GetID(), comboNum, comboRate, atkComboRate, defComboReduce))
- return False
- GameWorld.DebugLog(" 可以连击: atkID=%s,comboNum=%s,comboRate=%s=(atkComboRate=%s - defComboReduce=%s)"
- % (atkObj.GetID(), comboNum, comboRate, atkComboRate, defComboReduce))
- return True
-
def SetObjKilled(turnFight, gameObj, killer=None, useSkill=None):
objID = gameObj.GetID()
- GameWorld.DebugLog(" %s 回合战斗主体被击杀: curID=%s" % (GetObjName(gameObj), objID))
- gameObj.SetHP(0)
killerObjID = killer.GetID() if killer else 0
skillID = useSkill.GetSkillID() if useSkill else 0
+ GameWorld.DebugLog(" %s 回合战斗主体被击杀: curID=%s,killerObjID=%s,skillID=%s" % (GetObjName(gameObj), objID, killerObjID, skillID))
+ gameObj.SetDead()
clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCTurnFightObjDead)
clientPack.ObjID = objID
@@ -1551,7 +1375,7 @@
turnFight.costTime = time.time() - turnFight.startTime
winFaction = turnFight.winFaction
- GameWorld.DebugLog("--- 战斗结束处理 --- %s, winFaction=%s, costTime=%ss" % (guid, winFaction, turnFight.costTime))
+ GameWorld.DebugLog("--- 战斗结束处理 ---, winFaction=%s, costTime=%ss, %s" % (winFaction, turnFight.costTime, guid))
# 统计明细
batObjMgr = BattleObj.GetBatObjMgr()
@@ -1577,7 +1401,7 @@
atkHurt = batObj.hurtStat
defHurt = batObj.defStat
cureHP = batObj.cureStat
- GameWorld.DebugLog(" Pos:%s ID=%s-%s-%s,,HP=%s/%s, 输出=%s,承伤=%s,治疗=%s"
+ GameWorld.DebugLog(" Pos:%s ID=%s,npcID=%s,heroID=%s,HP=%s/%s, 输出=%s,承伤=%s,治疗=%s"
% (posNum, objID, npcID, heroID, batObj.GetHP(), batObj.GetMaxHP(), atkHurt, defHurt, cureHP))
lineupStatInfo[str(posNum)] = {"ObjID":objID, "HeroID":heroID, "NPCID":npcID, "AtkHurt":atkHurt, "DefHurt":defHurt, "CureHP":cureHP}
--
Gitblit v1.8.0