From 632add2bff0c18c0a28438596be441428dd7889d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 09 九月 2025 19:34:03 +0800 Subject: [PATCH] 121 【武将】武将系统-服务端(升星材料卡有升级突破时限制升星;遣散增加返还比例设定;重生增加等级消耗、返还比例设定,重生导致觉醒已解锁槽位失效时该槽位天赋属性同步失效;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py | 39 ++++++++++++++++++++------------------- 1 files changed, 20 insertions(+), 19 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py index bbb2c04..63fdd02 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerOnline.py @@ -469,7 +469,7 @@ skinID = skinIDList[0] InitAddPer += qualityIpyData.GetInitAddPer() - LVAddPer += qualityIpyData.GetLVAddPer() * heroLV + LVAddPer += qualityIpyData.GetLVAddPer() * max(0, heroLV - 1) BreakLVAddPer += qualityIpyData.GetBreakLVAddPer() * breakLV StarAddPer += qualityIpyData.GetStarAddPer() * star @@ -498,21 +498,6 @@ selfAttrDict[int(k)] = v heroSelfAttrInfo[heroID] = selfAttrDict - # 星级天赋 - starTalentAttrDict = {} - idCount = heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentID) - lvCount = heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentIDLV) - for aIndex in range(min(idCount, lvCount)): - talentID = heroItem.GetUserAttrByIndex(ShareDefine.Def_IudetHeroTalentID, aIndex) - talentLV = heroItem.GetUserAttrByIndex(ShareDefine.Def_IudetHeroTalentIDLV, aIndex) - stIpyData = IpyGameDataPY.GetIpyGameData("HeroTalent", talentID) - if not stIpyData: - continue - attrID = stIpyData.GetAttrID() - attrValue = stIpyData.GetAttrValue() * talentLV - starTalentAttrDict[attrID] = starTalentAttrDict.get(attrID, 0) + attrValue - heroStarTalentInfo[heroID] = starTalentAttrDict - # 突破潜能 breakAttrDict = {} breakIpyDataList = IpyGameDataPY.GetIpyGameDataList("HeroBreak", heroID) @@ -532,12 +517,15 @@ heroBreakAttrInfo[heroID] = breakAttrDict # 觉醒天赋 + maxUnlockSlot = IpyGameDataPY.GetFuncCfg("HeroStarTalent", 1) # 常规天赋槽个数 awakeTalentAttrDict = {} - awakeIpyDataList = IpyGameDataPY.GetIpyGameDataList("HeroAwake", heroID) + awakeIpyDataList = IpyGameDataPY.GetIpyGameDataListNotLog("HeroAwake", heroID) if awakeIpyDataList: for awakeIpyData in awakeIpyDataList: if awakeIpyData.GetAwakeLV() > awakeLV: break + unlockTalentSlot = awakeIpyData.GetUnlockTalentSlot() + maxUnlockSlot = max(maxUnlockSlot, unlockTalentSlot) attrIDList = awakeIpyData.GetAttrIDList() attrValueList = awakeIpyData.GetAttrValueList() for aIndex in range(min(len(attrIDList), len(attrValueList))): @@ -548,6 +536,21 @@ if skillID: lineupHero.heroSkillIDList.append(skillID) heroAwakeTalentInfo[heroID] = awakeTalentAttrDict + + # 星级天赋 + starTalentAttrDict = {} + idCount = heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentID) + lvCount = heroItem.GetUserAttrCount(ShareDefine.Def_IudetHeroTalentIDLV) + for aIndex in range(min(idCount, lvCount, maxUnlockSlot)): # 重生导致已觉醒槽位失效时属性也无效 + talentID = heroItem.GetUserAttrByIndex(ShareDefine.Def_IudetHeroTalentID, aIndex) + talentLV = heroItem.GetUserAttrByIndex(ShareDefine.Def_IudetHeroTalentIDLV, aIndex) + stIpyData = IpyGameDataPY.GetIpyGameData("HeroTalent", talentID) + if not stIpyData: + continue + attrID = stIpyData.GetAttrID() + attrValue = stIpyData.GetAttrValue() * talentLV + starTalentAttrDict[attrID] = starTalentAttrDict.get(attrID, 0) + attrValue + heroStarTalentInfo[heroID] = starTalentAttrDict # 羁绊统计 for fetterID in heroIpyData.GetFetterIDList(): @@ -772,8 +775,6 @@ GameWorld.DebugLog("主阵容变化,重新开始战斗", playerID) if mainTurnFight.mapID == ChConfig.Def_FBMapID_Main: TurnAttack.__doMainLevelWave(curPlayer, True) - elif mainTurnFight.mapID == ChConfig.Def_FBMapID_MainBoss: - TurnAttack.__doMainBossStart(curPlayer) # 否则只重新设置战斗属性 else: -- Gitblit v1.8.0