| | |
| | | self.lineupInfo = {} # 传入初始化的阵容信息
|
| | | self.shapeType = 0 # 阵型
|
| | | self.fightPower = 0 # 阵容总战力
|
| | | self.minggeObj = None # 命格战斗对象
|
| | | self.posObjIDDict = {} # 站位对应战斗实体 {站位编号:batObjID, ...}, 站位编号小于0为非主战单位,如主公、红颜等
|
| | | self.heroObjIDDict = {} # 武将ID对应ObjID {heroID:batObjID, ...}
|
| | | self.lingshouObjIDDict = {} # 灵兽战斗单位 {位置编号:batObjID, ...}
|
| | | self.beautyObjIDDict = {} # 红颜战斗单位 {位置编号:batObjID, ...}
|
| | | self.actionNum = ActionNumStart # 行动位置,从1开始
|
| | | self.totalHurt = 0 # 阵容总输出
|
| | |
|
| | |
| | |
|
| | | def isEmpty(self): return not self.posObjIDDict
|
| | |
|
| | | def setLineup(self, lineupInfo):
|
| | | def setLineupInfo(self, lineupInfo):
|
| | | ## 设置阵容
|
| | | # @param lineupInfo: 阵容信息
|
| | | self.clearLineup()
|
| | |
| | | batObjMgr.delBatObj(objID)
|
| | | for objID in self.lingshouObjIDDict.values():
|
| | | batObjMgr.delBatObj(objID)
|
| | | for objID in self.beautyObjIDDict.values():
|
| | | batObjMgr.delBatObj(objID)
|
| | | if self.minggeObj:
|
| | | batObjMgr.delBatObj(self.minggeObj.GetID())
|
| | | self.lineupInfo = {}
|
| | | self.posObjIDDict = {}
|
| | | self.heroObjIDDict = {}
|
| | | self.lingshouObjIDDict = {}
|
| | | self.beautyObjIDDict = {}
|
| | | self.fightPower = 0
|
| | | self.totalHurt = 0
|
| | | return
|
| | |
| | | if heroID not in self.heroObjIDDict:
|
| | | return
|
| | | return BattleObj.GetBatObjMgr().getBatObj(self.heroObjIDDict[heroID])
|
| | | |
| | | def getMinggeObj(self): return self.minggeObj
|
| | |
|
| | | class BatFaction():
|
| | | ## 战斗阵营
|
| | |
| | | if not lineupInfo:
|
| | | continue
|
| | | batLineup = batFaction.getBatlineup(num)
|
| | | batLineup.setLineup(lineupInfo)
|
| | | batLineup.setLineupInfo(lineupInfo)
|
| | | return
|
| | |
|
| | | def sortActionQueue(self):
|
| | |
| | | lineup = GetPlayerLineupByID(curPlayer, batPresetID, exclusiveMapID)
|
| | | if lineup.IsEmpty():
|
| | | return {}
|
| | | batPresetID = lineup.batPresetID
|
| | |
|
| | | heroDict = {}
|
| | | curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptHero)
|
| | |
| | | if not heroDict:
|
| | | return {}
|
| | |
|
| | | mgPresetID = PlayerPreset.GetFuncPresetID(curPlayer, batPresetID, ShareDefine.FuncPreset_Mingge)
|
| | | olPlayer = PlayerOnline.GetOnlineMgr().GetOnlinePlayer(curPlayer)
|
| | | mgSkillLVDict = olPlayer.GetCalcSpecInfo(ChConfig.Def_CalcAttr_Mingge, mgPresetID)
|
| | | mgSkillIDList = []
|
| | | for skillTypeID, skillLV in mgSkillLVDict.items():
|
| | | skillID = skillTypeID + skillLV - 1
|
| | | if skillID not in mgSkillIDList:
|
| | | mgSkillIDList.append(skillID)
|
| | | #shapeType = 0
|
| | | lineupInfo = {"PlayerID":playerID, "FightPower":lineup.fightPower, "BatPresetID":batPresetID, "Hero":heroDict}
|
| | | if mgSkillIDList:
|
| | | lineupInfo["MGSkillIDList"] = mgSkillIDList
|
| | | return lineupInfo
|
| | |
|
| | | def GetNPCLineupInfo(lineupID, strongerLV=0, difficulty=0, isLog=True, viewNPCID=0):
|
| | |
| | | lineupPlayerID = lineupInfo.get("PlayerID", 0) # 阵容所属玩家ID
|
| | | npcLineupID = lineupInfo.get("NPCLineupID", 0)
|
| | | GameWorld.DebugLogEx("SummonLineupObjs faction:%s,num:%s,npcLineupID=%s,lineupPlayerID=%s", faction, num, npcLineupID, lineupPlayerID)
|
| | | mgSkillIDList = lineupInfo.get("MGSkillIDList", [])
|
| | |
|
| | | turnFight = batLineup.turnFight
|
| | | tfGUID = turnFight.guid
|
| | | heroDict = lineupInfo.get("Hero", {})
|
| | |
|
| | | batObjMgr = BattleObj.GetBatObjMgr()
|
| | | |
| | | # 命格
|
| | | #mgSkillIDList = [9000014] # 测试用
|
| | | if mgSkillIDList:
|
| | | minggeObj = batObjMgr.addBatObj()
|
| | | if minggeObj:
|
| | | batLineup.minggeObj = minggeObj
|
| | | minggeObj.SetOwnerID(lineupPlayerID)
|
| | | minggeObj.SetTFGUID(tfGUID)
|
| | | minggeObj.SetFaction(faction)
|
| | | minggeObj.SetLineupPos(ChConfig.TFPosNum_Mingge, num)
|
| | | skillManager = minggeObj.GetSkillManager()
|
| | | skillManager.SkillReset()
|
| | | for skillID in mgSkillIDList:
|
| | | skillManager.LearnSkillByID(skillID)
|
| | | GameWorld.DebugLogEx("AddBatObj 命格: faction:%s,num:%s,objID=%s,skillIDList=%s", faction, num, minggeObj.GetID(), skillManager.GetSkillIDList())
|
| | | ResetObjSkill(minggeObj)
|
| | | minggeObj.InitBatAttr({ChConfig.AttrID_MaxHP:1})
|
| | | |
| | | # 武将
|
| | | initXP = IpyGameDataPY.GetFuncCfg("AngerXP", 1)
|
| | | for posNumKey, heroInfo in heroDict.items():
|
| | | posNum = int(posNumKey)
|
| | |
| | | batLineup.totalHurt = 0
|
| | | facDRLineupInfo[str(num)] = batLineup.lineupInfo
|
| | | GameWorld.DebugLogEx("阵容明细: faction=%s,num=%s", faction, num)
|
| | | for posNum, objID in batLineup.posObjIDDict.items():
|
| | | posObjIDList = [[posNum, objID] for posNum, objID in batLineup.posObjIDDict.items()]
|
| | | mgObj = batLineup.minggeObj # 命格
|
| | | if mgObj:
|
| | | posObjIDList.append([mgObj.GetPosNum(), mgObj.GetID()])
|
| | | # 灵兽
|
| | | for posNum, objID in posObjIDList:
|
| | | batObj = batObjMgr.getBatObj(objID)
|
| | | if not batObj:
|
| | | continue
|
| | | heroCount += 1
|
| | | objID = batObj.GetID()
|
| | | npcID = batObj.GetNPCID()
|
| | | heroID = batObj.GetHeroID()
|
| | |
| | | batLineup.totalHurt += atkHurt
|
| | | batFaction.totalHurt += atkHurt
|
| | | dead = 0 if batObj.IsAlive() else 1
|
| | | if heroID:
|
| | | heroCount += 1
|
| | | GameWorld.DebugLogEx(" 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,
|