#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
##@package GM.Commands.TurnFight
|
#
|
# @todo:»ØºÏÕ½¶·
|
# @author hxp
|
# @date 2025-09-25
|
# @version 1.0
|
#
|
# ÏêϸÃèÊö: »ØºÏÕ½¶·
|
#
|
#-------------------------------------------------------------------------------
|
#"""Version = 2025-09-25 17:30"""
|
#-------------------------------------------------------------------------------
|
|
import ChConfig
|
import GameWorld
|
import ChPyNetSendPack
|
import NetPackCommon
|
import TurnAttack
|
import BattleObj
|
|
FactionList = [1, 2]
|
|
## GMÃüÁîÖ´ÐÐÈë¿Ú
|
# @param curPlayer µ±Ç°Íæ¼Ò
|
# @param msgList ²ÎÊýÁбí
|
# @return None
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def OnExec(curPlayer, msgList):
|
if not msgList:
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÊôÐÔ: TurnFight a ÊôÐÔID Öµ [ÕóÓª λÖÃ] ")
|
GameWorld.DebugAnswer(curPlayer, "»÷ɱĿ±ê: TurnFight k ÕóÓª [λÖà ...] ")
|
GameWorld.DebugAnswer(curPlayer, "Êä³öÃ÷ϸ: TurnFight p [ÕóÓª λÖÃ] ")
|
GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß")
|
GameWorld.DebugAnswer(curPlayer, "λÖ㺠1~6ºÅλ")
|
GameWorld.DebugAnswer(curPlayer, "ÊôÐÔID: 6-¹¥,7-·À,8-HPMax,9-HP,12-Å")
|
return
|
|
value = msgList[0]
|
if value == "a":
|
__doSetAttr(curPlayer, msgList)
|
elif value == "k":
|
__doKillObj(curPlayer, msgList)
|
elif value == "p":
|
__printInfo(curPlayer, msgList)
|
|
return
|
|
def __doSetAttr(curPlayer, msgList):
|
## ÉèÖÃÊôÐÔ
|
attrID = msgList[1] if len(msgList) > 1 else 1
|
attrValue = msgList[2] if len(msgList) > 2 else 1
|
faction = msgList[3] if len(msgList) > 3 else 1
|
posNum = msgList[4] if len(msgList) > 4 else 1
|
|
if faction not in FactionList:
|
GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß")
|
return
|
|
mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer)
|
turnFight = mainFightMgr.turnFight
|
if not turnFight.isInFight():
|
GameWorld.DebugAnswer(curPlayer, "Ö÷Ïß·ÇÕ½¶·ÖÐ")
|
return
|
batFaction = turnFight.getBatFaction(faction)
|
batLineup = batFaction.getBatlineup(1)
|
objID = batLineup.posObjIDDict.get(posNum)
|
batObj = None
|
batObjMgr = BattleObj.GetBatObjMgr()
|
if objID:
|
batObj = batObjMgr.getBatObj(objID)
|
if not batObj:
|
GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸ÃÕ½¶·¶ÔÏó:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum))
|
return
|
if not batObj.IsAlive():
|
GameWorld.DebugAnswer(curPlayer, "¸Ã¶ÔÏóÒѱ»»÷ɱ:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum))
|
return
|
|
if attrID not in ChConfig.AttrIDList:
|
GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸ÃÊôÐÔID:%s" % (attrID))
|
return
|
|
objName = TurnAttack.GetObjName(batObj)
|
GameWorld.DebugAnswer(curPlayer, "%s" % (objName))
|
batObj.GMSetBatAttr(attrID, attrValue)
|
if attrID == ChConfig.AttrID_HP:
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÉúÃü:%s/%s" % (batObj.GetHP(), batObj.GetMaxHP()))
|
elif attrID == ChConfig.AttrID_XP:
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÅÆø:%s" % (batObj.GetXP()))
|
else:
|
GameWorld.DebugAnswer(curPlayer, "ÉèÖÃÊôÐÔID:%s,V=%s" % (attrID, attrValue))
|
|
return
|
|
def __doKillObj(curPlayer, msgList):
|
faction = msgList[1] if len(msgList) > 1 else 2
|
posNumList = msgList[2:]
|
if faction not in FactionList:
|
GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß")
|
return
|
mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer)
|
turnFight = mainFightMgr.turnFight
|
if not turnFight.isInFight():
|
GameWorld.DebugAnswer(curPlayer, "Ö÷Ïß·ÇÕ½¶·ÖÐ")
|
return
|
clientPack = ChPyNetSendPack.tagSCTurnFightReportSign()
|
clientPack.Sign = 0
|
|
batObjMgr = BattleObj.GetBatObjMgr()
|
batFaction = turnFight.getBatFaction(faction)
|
batLineup = batFaction.getBatlineup(1)
|
for posNum in posNumList:
|
objID = batLineup.posObjIDDict.get(posNum)
|
if not objID:
|
continue
|
batObj = batObjMgr.getBatObj(objID)
|
if not batObj:
|
GameWorld.DebugAnswer(curPlayer, "²»´æÔÚ¸ÃÕ½¶·¶ÔÏó:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum))
|
continue
|
if not batObj.IsAlive():
|
GameWorld.DebugAnswer(curPlayer, "¸Ã¶ÔÏóÒѱ»»÷ɱ:ÕóÓª:%s,λÖÃ:%s" % (faction, posNum))
|
continue
|
GameWorld.DebugAnswer(curPlayer, "»÷ɱ: %s" % TurnAttack.GetObjName(batObj))
|
TurnAttack.SetObjKilled(turnFight, batObj)
|
|
turnFight.checkOverByKilled()
|
|
clientPack.Sign = 1
|
NetPackCommon.SendFakePack(curPlayer, clientPack)
|
return
|
|
def __printInfo(curPlayer, msgList):
|
## Êä³öÐÅÏ¢
|
faction = msgList[1] if len(msgList) > 1 else 0
|
posNum = msgList[2] if len(msgList) > 2 else 0
|
factionList = [faction] if faction else FactionList
|
posNumList = [posNum] if posNum else range(1, 1 + 6)
|
|
mainFightMgr = TurnAttack.GetMainFightMgr(curPlayer)
|
turnFight = mainFightMgr.turnFight
|
if not turnFight.isInFight():
|
GameWorld.DebugAnswer(curPlayer, "Ö÷Ïß·ÇÕ½¶·ÖÐ")
|
return
|
batObjMgr = BattleObj.GetBatObjMgr()
|
for faction in factionList:
|
if faction not in FactionList:
|
GameWorld.DebugAnswer(curPlayer, "ÕóÓª£º 1-×ó±ß£»2-ÓÒ±ß")
|
continue
|
GameWorld.DebugAnswer(curPlayer, "---------- ¡¾ÕóÓª%s¡¿ ----------" % faction)
|
batFaction = turnFight.getBatFaction(faction)
|
batLineup = batFaction.getBatlineup(1)
|
for posNum in posNumList:
|
objID = batLineup.posObjIDDict.get(posNum)
|
if not objID:
|
continue
|
batObj = batObjMgr.getBatObj(objID)
|
objName = TurnAttack.GetObjName(batObj)
|
GameWorld.DebugAnswer(curPlayer, "--- %s%s" % (objName, "" if batObj.IsAlive() else " [±»»÷ɱ]"))
|
GameWorld.DebugAnswer(curPlayer, "HP:%s/%s, Atk:%s, Def:%s" % (batObj.GetHP(), batObj.GetMaxHP(), batObj.GetAtk(), batObj.GetDef()))
|
attrDict = batObj.GetBatAttrDict()
|
GameWorld.DebugAnswer(curPlayer, "ÊôÐÔ:%s" % attrDict)
|
skillMgr = batObj.GetSkillManager()
|
skillIDList = skillMgr.GetSkillIDList()
|
GameWorld.DebugAnswer(curPlayer, "¼¼ÄÜ: %s,%s" % (len(skillIDList), skillIDList))
|
buffMgr = batObj.GetBuffManager()
|
GameWorld.DebugAnswer(curPlayer, "Buff: %s" % buffMgr.GetBuffCount())
|
for index in range(buffMgr.GetBuffCount()):
|
buff = buffMgr.GetBuffByIndex(index)
|
GameWorld.DebugAnswer(curPlayer, "ID:%s,SkillID:%s,»ØºÏ:%s,²ã:%s,V:%s"
|
% (buff.GetBuffID(), buff.GetSkillID(), buff.GetRemainTime(), buff.GetLayer(),
|
[buff.GetValue1(), buff.GetValue2(), buff.GetValue3()]
|
))
|
|
return
|
|
|