7220 【后端】【2.0】灵器开发1.0版(增加灵器属性表,灵器战力由评分计算,评分由基础属性+灵器属性组成,原翅膀模块改为灵器模块)
| | |
| | | list Skills; //被动技能
|
| | | };
|
| | |
|
| | | //灵根表 #tagDienstgrad
|
| | | //灵根表 #tagRolePoint
|
| | |
|
| | | struct tagRolePoint
|
| | | {
|
| | |
| | | list PointQualityIntervalList; //点数品质进阶属性点区间列表
|
| | | };
|
| | |
|
| | | //灵器属性表 #tagLingQiAttr
|
| | |
|
| | | struct tagLingQiAttr
|
| | | {
|
| | | BYTE _ItemID; //属性ID
|
| | | list LingQiAttrID; //灵器属性ID
|
| | | list LingQiAttrValue; //灵器属性数值
|
| | | DWORD LingQiAttrScore; //灵器属性评分
|
| | | };
|
| | |
|
| | | //境界表 #tagRealm
|
| | |
|
| | | struct tagRealm
|
| | |
| | | Def_MFPType_Plus, # 强化 2
|
| | | Def_MFPType_Stone, # 宝石 3
|
| | | Def_MFPType_LingGen, # 灵根 4
|
| | | Def_MFPType_Wing, # 翅膀 5
|
| | | Def_MFPType_LingQi, # 灵器 5
|
| | | Def_MFPType_Wash, # 洗练 6
|
| | | Def_MFPType_Pet, # 灵宠 7
|
| | | Def_MFPType_Horse, # 坐骑 8
|
| | |
| | | Def_CalcAttrFunc_Plus, # 装备位强化 5
|
| | | Def_CalcAttrFunc_Stone, # 装备宝石 6
|
| | | Def_CalcAttrFunc_Wash, # 洗练 7
|
| | | Def_CalcAttrFunc_Wing, # 翅膀 8
|
| | | Def_CalcAttrFunc_Wing, # 翅膀 - 废弃 8
|
| | | Def_CalcAttrFunc_Pet, # 灵宠 9
|
| | | Def_CalcAttrFunc_Horse, # 坐骑 10
|
| | | Def_CalcAttrFunc_Prestige, # 境界 11
|
| | |
| | | Def_CalcAttrFunc_MagicWeapon4, # 王者法宝 35
|
| | | Def_CalcAttrFunc_Coat, # ʱװ 36
|
| | | Def_CalcAttrFunc_LingQi, # 灵器 37
|
| | | ) = range(38)
|
| | | Def_CalcAttrFunc_LingQiAttr, # 灵器属性 38
|
| | | ) = range(39)
|
| | |
|
| | | # 技能功能点列表 - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
|
| | | CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
|
| | | # 不计算战力的功能点列表 - 由其他方式计算的战力的功能点,如装备用评分计算
|
| | | CalcAttrFuncNoFightPowerList = [Def_CalcAttrFunc_Equip, Def_CalcAttrFunc_DogzEquip]
|
| | | CalcAttrFuncNoFightPowerList = [Def_CalcAttrFunc_Equip, Def_CalcAttrFunc_DogzEquip, Def_CalcAttrFunc_LingQiAttr]
|
| | |
|
| | | #战斗力分组类型对应功能点属性分类索引列表,并不是一一对应的,有些战斗力类型可由多个功能点组成
|
| | | #***注意***: 以下功能点需包含上面定义的所有功能点,不然会导致有些属性无法加上
|
| | |
| | | ShareDefine.Def_MFPType_Star:[Def_CalcAttrFunc_Star],
|
| | | ShareDefine.Def_MFPType_Plus:[Def_CalcAttrFunc_Plus],
|
| | | ShareDefine.Def_MFPType_Stone:[Def_CalcAttrFunc_Stone],
|
| | | ShareDefine.Def_MFPType_Wing:[Def_CalcAttrFunc_Wing, Def_CalcAttrFunc_LingQi],
|
| | | ShareDefine.Def_MFPType_LingQi:[Def_CalcAttrFunc_LingQi, Def_CalcAttrFunc_LingQiAttr],
|
| | | ShareDefine.Def_MFPType_Wash:[Def_CalcAttrFunc_Wash],
|
| | | ShareDefine.Def_MFPType_Pet:[Def_CalcAttrFunc_Pet, Def_CalcAttrFunc_PetSign, Def_CalcAttrFunc_PetSkill],
|
| | | ShareDefine.Def_MFPType_PetSoul:[Def_CalcAttrFunc_PetSoul],
|
| | |
| | | ShareDefine.Def_MFPType_Plus:"强化",
|
| | | ShareDefine.Def_MFPType_Stone:"宝石",
|
| | | ShareDefine.Def_MFPType_Wash:"洗练",
|
| | | ShareDefine.Def_MFPType_Wing:"翅膀",
|
| | | ShareDefine.Def_MFPType_LingQi:"灵器",
|
| | | ShareDefine.Def_MFPType_Pet:"灵宠",
|
| | | ShareDefine.Def_MFPType_Horse:"坐骑",
|
| | | ShareDefine.Def_MFPType_Prestige:"境界",
|
| | |
| | | ChConfig.Def_CalcAttrFunc_Plus:"强化",
|
| | | ChConfig.Def_CalcAttrFunc_Stone:"宝石",
|
| | | ChConfig.Def_CalcAttrFunc_Wash:"洗练",
|
| | | ChConfig.Def_CalcAttrFunc_Wing:"翅膀",
|
| | | ChConfig.Def_CalcAttrFunc_LingQi:"灵器",
|
| | | ChConfig.Def_CalcAttrFunc_LingQiAttr:"灵器属性",
|
| | | ChConfig.Def_CalcAttrFunc_Pet:"灵宠",
|
| | | ChConfig.Def_CalcAttrFunc_Horse:"坐骑",
|
| | | ChConfig.Def_CalcAttrFunc_Prestige:"境界",
|
| | |
| | | ("list", "PointQualityIntervalList", 0),
|
| | | ),
|
| | |
|
| | | "LingQiAttr":(
|
| | | ("BYTE", "ItemID", 1),
|
| | | ("list", "LingQiAttrID", 0),
|
| | | ("list", "LingQiAttrValue", 0),
|
| | | ("DWORD", "LingQiAttrScore", 0),
|
| | | ),
|
| | |
|
| | | "Realm":(
|
| | | ("WORD", "Lv", 1),
|
| | | ("DWORD", "NeedLV", 0),
|
| | |
| | | def GetFightPowerPerPoint(self): return self.FightPowerPerPoint # 每点附加战斗力
|
| | | def GetPointQualityAttrDict(self): return self.PointQualityAttrDict # 点数品质进阶增加属性, {职业:{属性ID:[阶段属性,..],..},..}
|
| | | def GetPointQualityIntervalList(self): return self.PointQualityIntervalList # 点数品质进阶属性点区间列表 |
| | | |
| | | # 灵器属性表 |
| | | class IPY_LingQiAttr(): |
| | | |
| | | def __init__(self): |
| | | self.ItemID = 0
|
| | | self.LingQiAttrID = []
|
| | | self.LingQiAttrValue = []
|
| | | self.LingQiAttrScore = 0 |
| | | return |
| | | |
| | | def GetItemID(self): return self.ItemID # 属性ID
|
| | | def GetLingQiAttrID(self): return self.LingQiAttrID # 灵器属性ID
|
| | | def GetLingQiAttrValue(self): return self.LingQiAttrValue # 灵器属性数值
|
| | | def GetLingQiAttrScore(self): return self.LingQiAttrScore # 灵器属性评分 |
| | | |
| | | # 境界表 |
| | | class IPY_Realm(): |
| | |
| | | self.ipyDienstgradLen = len(self.ipyDienstgradCache)
|
| | | self.ipyRolePointCache = self.__LoadFileData("RolePoint", IPY_RolePoint)
|
| | | self.ipyRolePointLen = len(self.ipyRolePointCache)
|
| | | self.ipyLingQiAttrCache = self.__LoadFileData("LingQiAttr", IPY_LingQiAttr)
|
| | | self.ipyLingQiAttrLen = len(self.ipyLingQiAttrCache)
|
| | | self.ipyRealmCache = self.__LoadFileData("Realm", IPY_Realm)
|
| | | self.ipyRealmLen = len(self.ipyRealmCache)
|
| | | self.ipyGodWeaponCache = self.__LoadFileData("GodWeapon", IPY_GodWeapon)
|
| | |
| | | def GetDienstgradByIndex(self, index): return self.ipyDienstgradCache[index]
|
| | | def GetRolePointCount(self): return self.ipyRolePointLen
|
| | | def GetRolePointByIndex(self, index): return self.ipyRolePointCache[index]
|
| | | def GetLingQiAttrCount(self): return self.ipyLingQiAttrLen
|
| | | def GetLingQiAttrByIndex(self, index): return self.ipyLingQiAttrCache[index]
|
| | | def GetRealmCount(self): return self.ipyRealmLen
|
| | | def GetRealmByIndex(self, index): return self.ipyRealmCache[index]
|
| | | def GetGodWeaponCount(self): return self.ipyGodWeaponLen
|
| | |
| | |
|
| | | classLV = 0 # 灵器阶默认为0
|
| | | allAttrList = [{} for _ in range(4)]
|
| | | lingQiAttrList = [{} for _ in range(4)]
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | equipScoreTotal = 0
|
| | | lv = curPlayer.GetLV()
|
| | | OutOfPrintAttrFormatDict = IpyGameDataPY.GetFuncEvalCfg("OutOfPrintValue", 2, {})
|
| | |
|
| | | for equipPlace in ChConfig.EquipPlace_LingQi:
|
| | | |
| | | if equipPlace == ShareDefine.retWing:
|
| | | PlayerWing.CalcWingAttr(curPlayer)
|
| | | continue
|
| | |
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if not ipyData:
|
| | |
| | | # 过期
|
| | | continue
|
| | |
|
| | | equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
|
| | | |
| | | itemID = curEquip.GetItemTypeID()
|
| | | #基础属性效果
|
| | | for effIndex in xrange(curEquip.GetEffectCount()):
|
| | | curEff = curEquip.GetEffectByIndex(effIndex)
|
| | | effID = curEff.GetEffectID()
|
| | | if effID == 0:
|
| | | break
|
| | | PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), allAttrList)
|
| | | PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), lingQiAttrList)
|
| | |
|
| | | #GameWorld.DebugLog("灵器属性: %s" % allAttrList)
|
| | | #灵器属性
|
| | | lingQiIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LingQiAttr", itemID)
|
| | | if lingQiIpyData:
|
| | | lingQiAttrIDList = lingQiIpyData.GetLingQiAttrID()
|
| | | lingQiAttrValueList = lingQiIpyData.GetLingQiAttrValue()
|
| | | for lqIndex, lqAttrID in enumerate(lingQiAttrIDList):
|
| | | if str(lqAttrID) in OutOfPrintAttrFormatDict:
|
| | | attrFormat = OutOfPrintAttrFormatDict[str(lqAttrID)]
|
| | | maxOOPValue = lingQiAttrValueList[lqIndex]
|
| | | lqAttrValue = eval(FormulaControl.GetCompileFormula("OutOfPrintAttrFormat_%s" % lqAttrID, attrFormat))
|
| | | else:
|
| | | lqAttrValue = lingQiAttrValueList[lqIndex]
|
| | | |
| | | PlayerControl.CalcAttrDict_Type(lqAttrID, lqAttrValue, lingQiAttrList)
|
| | | |
| | | #灵器各部位其他属性
|
| | | if equipPlace == ShareDefine.retWing:
|
| | | PlayerWing.CalcWingAttrEx(curPlayer, curEquip, allAttrList)
|
| | | |
| | | lqFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_LingQi, lqFightPowerEx)
|
| | | |
| | | #GameWorld.DebugLog("灵器属性1: %s" % allAttrList)
|
| | | #GameWorld.DebugLog("灵器属性2: %s" % lingQiAttrList)
|
| | | #GameWorld.DebugLog("灵器评分战力: equipScoreTotal=%s, %s" % (equipScoreTotal, lqFightPowerEx))
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQi, allAttrList)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQiAttr, lingQiAttrList)
|
| | | return
|
| | |
|
| | | def __CalcEquips_Effect(curPlayer, classLV):
|
| | |
| | | PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrListEquip)
|
| | | #GameWorld.DebugLog(" 传奇属性: ID=%s +%s" % (legendAttrID, legendAttrValue))
|
| | | __CalcFuncAddEquipAttrPer(equipPlace, legendAttrID, legendAttrValue, equip_addEquipBaseAttrPerList)
|
| | | |
| | | #绝世属性 - 暂不考虑
|
| | | #CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
|
| | |
|
| | | #物品强化属性
|
| | | __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrListPlus, plus_addEquipBaseAttrPerList)
|
| | |
| | | #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, stone_addEquipBaseAttrPerList, insideAttrDictStone, "Stone")
|
| | | #__CalcFuncAddEquipAttrValue(allEquipBaseAttrDict, baseEquipBaseAttrDict, equipBaseAttrDict, wash_addEquipBaseAttrPerList, insideAttrDictWash, "Wash")
|
| | |
|
| | | #保存计算值
|
| | | #PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
|
| | | #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
|
| | | equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
|
| | |
|
| | |
| | | PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListEquip)
|
| | | #legendAttrDict[attrID] = legendAttrDict.get(attrID, 0) + value
|
| | |
|
| | | return
|
| | |
|
| | |
|
| | | # 装备绝版属性,随等级变化需在升级再处理
|
| | | def CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip):
|
| | | ## 计算绝版属性
|
| | | |
| | | # 绝版属性ID列表
|
| | | OutOfPrintAttrIDList = [curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetOutOfPrintAttrID, i) \
|
| | | for i in range(curEquip.GetUserAttrCount(ShareDefine.Def_IudetOutOfPrintAttrID))]
|
| | | # 绝版属性值列表
|
| | | OutOfPrintAttrValueList = [curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetOutOfPrintAttrValue, i) \
|
| | | for i in range(curEquip.GetUserAttrCount(ShareDefine.Def_IudetOutOfPrintAttrValue))]
|
| | | if not OutOfPrintAttrIDList or len(OutOfPrintAttrIDList) != len(OutOfPrintAttrValueList):
|
| | | return
|
| | | |
| | | lv = curPlayer.GetLV()
|
| | | OutOfPrintAttrFormatDict = IpyGameDataPY.GetFuncEvalCfg("OutOfPrintValue", 2, {})
|
| | | for i, attrID in enumerate(OutOfPrintAttrIDList):
|
| | | if str(attrID) not in OutOfPrintAttrFormatDict:
|
| | | continue
|
| | | attrFormat = OutOfPrintAttrFormatDict[str(attrID)]
|
| | | maxOOPValue = OutOfPrintAttrValueList[i]
|
| | | value = eval(FormulaControl.GetCompileFormula("OutOfPrintAttrFormat_%s" % attrID, attrFormat))
|
| | | GameWorld.DebugLog("加绝版属性: %s +%s" % (attrID, value))
|
| | | PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListOutOfPrintEquip)
|
| | | |
| | | return
|
| | |
|
| | |
|
| | | ## 计算装备对基本属性的改变 |
| | | # @return None
|
| | | def CalcEquips_OutOfPrint(curPlayer):
|
| | | # 境界装备改版,先屏蔽,之后再处理
|
| | | return
|
| | | allAttrListOutOfPrintEquip = [{} for _ in range(4)] # 绝版装备属性 需在等级变化独立计算
|
| | | |
| | | packType = IPY_GameWorld.rptEquip
|
| | | playerEquip = curPlayer.GetItemManager().GetPack(packType)
|
| | |
|
| | | #玩家当前可装备的装备类型
|
| | | for equipIndex in xrange(playerEquip.GetCount()):
|
| | | if equipIndex not in ShareDefine.RoleEquipType :
|
| | | continue
|
| | | |
| | | # 翅膀属性在翅膀功能单独刷新
|
| | | if equipIndex == ShareDefine.retWing:
|
| | | continue
|
| | | |
| | | curEquip = playerEquip.GetAt(equipIndex)
|
| | | if curEquip.IsEmpty():
|
| | | continue
|
| | | |
| | | if not ItemCommon.CheckItemCanUseByExpireTime(curEquip):
|
| | | # 过期
|
| | | continue
|
| | | |
| | | #绝世属性
|
| | | CalcAttr_OutOfPrintAttr(curPlayer, curEquip, allAttrListOutOfPrintEquip)
|
| | |
|
| | | #保存计算值
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
|
| | | return
|
| | |
|
| | | def __CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrList, plus_addEquipBaseAttrPerList):
|
| | |
| | | break
|
| | | attrDict[effectID] = attrDict.get(effectID, 0) + curEffect.GetEffectValue(0)
|
| | |
|
| | | skillGS = 0
|
| | | gsValueEx = 0
|
| | | skillGSDict = IpyGameDataPY.GetFuncCfg("EquipGSFormula", 4)
|
| | | for i in xrange(curItem.GetAddSkillCount()):
|
| | | addSkillID = curItem.GetAddSkill(i)
|
| | | if not addSkillID:
|
| | | break
|
| | | skillGS += skillGSDict.get(str(addSkillID), 0)
|
| | | gsValueEx += skillGSDict.get(str(addSkillID), 0)
|
| | |
|
| | | itemID = curItem.GetItemTypeID()
|
| | | classLV = GetItemClassLV(curItem)
|
| | | color = curItem.GetItemColor()
|
| | | isSuit = 1 if curItem.GetSuiteID() > 0 else 0
|
| | | gsParamIpyData = IpyGameDataPY.GetIpyGameData("EquipGSParam", classLV, color, isSuit)
|
| | | gsParamIpyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipGSParam", classLV, color, isSuit)
|
| | | # 传奇属性
|
| | | legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
|
| | | legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
|
| | |
| | | attrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
|
| | | attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
|
| | |
|
| | | lingQiIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LingQiAttr", itemID)
|
| | | if lingQiIpyData:
|
| | | gsValueEx += lingQiIpyData.GetLingQiAttrScore()
|
| | | |
| | | Atk = attrDict.get(ShareDefine.Def_Effect_Atk, 0)
|
| | | MinAtk = attrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
|
| | | MaxAtk = attrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
|
| | |
| | | value = eval(FormulaControl.GetCompileFormula("EquipGSFormula3", IpyGameDataPY.GetFuncCfg("EquipGSFormula", 3)))
|
| | | else:
|
| | | value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
|
| | | value += skillGS
|
| | | value += gsValueEx
|
| | | return value
|
| | |
|
| | | def GetZhuXianEquipTotalGS(curPlayer):
|
| | |
| | | PlayerGreatMaster.Sync_GreatMasterFreeSkillPoint(curPlayer)
|
| | | # 升级需要执行的游戏功能处理
|
| | | GameFuncComm.DoFuncOpenLogic(curPlayer)
|
| | | #ChEquip.CalcEquips_OutOfPrint(curPlayer) # 缓存绝版属性
|
| | | ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) # 灵器属性会随等级成长
|
| | | if aftLV%10 == 0:
|
| | | # 控制下刷新次数
|
| | | PlayerPet.CalcPetItemAddPlayerAttr(curPlayer) # 宠物有随等级变化的技能
|
| | |
| | | ChEquip.RefreshPlayerEquipAttribute(curPlayer)
|
| | | ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
|
| | | #SkillShell.RefreshPlayerBuffOnAttrAddEffect(curPlayer)
|
| | | #PlayerWing.CalcWingAttr(curPlayer) # 翅膀暂时算在灵器里面
|
| | | PlayerHorse.CalcHorseAttrEx(curPlayer)
|
| | | PlayerPrestigeSys.CalcOfficialRankAttr(curPlayer)
|
| | | PlayerGodWeapon.CalcGodWeaponAttr(curPlayer)
|
| | |
| | | ChConfig.TYPE_Calc_StoneBasePer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Stone],
|
| | | ChConfig.TYPE_Calc_RealmBasePer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Prestige],
|
| | | ChConfig.TYPE_Calc_HorseAtkPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Horse],
|
| | | ChConfig.TYPE_Calc_WingHPPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Wing],
|
| | | }
|
| | | # 3.2 统计各功能之间非线性属性交叉影响累加
|
| | | funcCrossAttrPerInfoDict = {} # 百分比交叉影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...}
|
| | |
| | | # 3.3 统计所有功能固定属性影响累加
|
| | | allFixAttrDict = {} # 固定属性层级总属性基值
|
| | | for funcIndex, funcAttrList in enumerate(funcAttrInfoList):
|
| | | # 技能模块不算计入功能固定属性、不计战力
|
| | | # 技能模块不计入功能固定属性、不计战力
|
| | | if funcIndex in ChConfig.CalcAttrFuncSkillList:
|
| | | continue
|
| | | AddAttrDictValue(allFixAttrDict, funcAttrList[ChConfig.CalcAttr_Battle])
|
| | |
| | | mfpAttrExDict = {}
|
| | | for funcIndex in attrFuncIndexList:
|
| | | if funcIndex in ChConfig.CalcAttrFuncSkillList:
|
| | | # 技能模块不算计入功能固定属性、不计战力
|
| | | # 技能模块不计入功能固定属性、不计战力
|
| | | continue
|
| | | funcAttrList = funcAttrInfoList[funcIndex]
|
| | | funcInsidePerAttrDict = funcInsidePerAttrList[funcIndex] # 功能点内部百分比加成属性
|
| | |
| | | GameWorld.DebugLog("没有精炼值")
|
| | | return
|
| | | WingProgressUP(curWing, totalPoint, materialItemDict, curPlayer)
|
| | | CalcWingAttr(curPlayer)
|
| | | ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
|
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_WingRefine, 1)
|
| | | return
|
| | |
| | | # @param curPlayer 玩家
|
| | | # @param allAttrList 属性列表
|
| | | # @return None
|
| | | def CalcWingAttr(curPlayer):
|
| | | |
| | | classLV = 0
|
| | | equipPlace = ShareDefine.retWing
|
| | | allAttrList = [{} for _ in range(4)]
|
| | | |
| | | curWing = None
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if ipyData:
|
| | | curWing = equipPack.GetAt(ipyData.GetGridIndex())
|
| | | |
| | | if not ItemCommon.CheckItemCanUse(curWing):
|
| | | #GameWorld.DebugLog("没有穿戴翅膀!")
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wing, allAttrList)
|
| | | return
|
| | | |
| | | if not ItemCommon.CheckItemCanUseByExpireTime(curWing):
|
| | | # 过期
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wing, allAttrList)
|
| | | return False
|
| | | |
| | | # 物品表固定效果属性
|
| | | for effIndex in xrange(curWing.GetEffectCount()):
|
| | | curEff = curWing.GetEffectByIndex(effIndex)
|
| | | effID = curEff.GetEffectID()
|
| | | if effID == 0:
|
| | | continue
|
| | | PlayerControl.CalcAttrDict_Type(effID, curEff.GetEffectValue(0), allAttrList)
|
| | | #GameWorld.DebugLog("翅膀固定属性: %s" % allAttrList)
|
| | | def CalcWingAttrEx(curPlayer, curWing, allAttrList):
|
| | |
|
| | | # 精炼属性
|
| | | wingAttrIpyData = GetWingRefineAttrData(curWing.GetItemTypeID())
|
| | |
| | | for effID, value in fujiaValueDict.items():
|
| | | PlayerControl.CalcAttrDict_Type(effID, int(value * rate), allAttrList)
|
| | | #GameWorld.DebugLog(" 精炼属性: %s" % allAttrList)
|
| | | |
| | | # 传奇属性
|
| | | ChEquip.CalcAttr_LegendAttr(curPlayer, curWing, allAttrList)
|
| | | #GameWorld.DebugLog(" 传奇属性: %s" % allAttrList)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wing, allAttrList)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | Def_MFPType_Plus, # 强化 2
|
| | | Def_MFPType_Stone, # 宝石 3
|
| | | Def_MFPType_LingGen, # 灵根 4
|
| | | Def_MFPType_Wing, # 翅膀 5
|
| | | Def_MFPType_LingQi, # 灵器 5
|
| | | Def_MFPType_Wash, # 洗练 6
|
| | | Def_MFPType_Pet, # 灵宠 7
|
| | | Def_MFPType_Horse, # 坐骑 8
|