10215 10213 【越南】【主干】【港台】【砍树】古宝升星效果与古宝共鸣(增加古宝星级属性;增加古宝共鸣;增加boss最终伤害属性;)
# Conflicts:
# ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
# ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
| | |
| | | BYTE UnlockItemCnt; //解锁所需物品数量
|
| | | };
|
| | |
|
| | | //古宝共鸣属性表
|
| | |
|
| | | struct tagGubaoResonanceAttr
|
| | | {
|
| | | WORD _ResonanceID; //共鸣ID
|
| | | BYTE _ResonanceStar; //共鸣星级
|
| | | list ResonanceAttrIDList; //共鸣总属性ID列表
|
| | | list ResonanceAttrValueList; //共鸣总属性值列表
|
| | | };
|
| | |
|
| | | //古宝共鸣组合表
|
| | |
|
| | | struct tagGubaoResonance
|
| | | {
|
| | | WORD _ResonanceID; //共鸣ID
|
| | | list GubaoIDList; //古宝ID列表
|
| | | };
|
| | |
|
| | | //古宝升星表
|
| | |
|
| | | struct tagGubaoStar
|
| | |
| | | WORD _GubaoID; //古宝ID
|
| | | BYTE _GubaoStar; //古宝星级
|
| | | list StarUPNeedItemInfo; //升星所需物品 [[物品ID,个数], ...]
|
| | | list StarAttrIDList; //累计总属性ID列表
|
| | | list StarAttrValueList; //累计总属性值列表
|
| | | list StarEffIDList; //星级特殊效果ID列表
|
| | | };
|
| | |
|
| | |
| | | DWORD CftFamilyWarHPPer; //仙盟联赛生命加成
|
| | | DWORD CftFamilyWarAtkPer; //仙盟联赛攻击加成
|
| | | DWORD CftFamilySitExpPer; //仙盟打坐经验加成
|
| | | DWORD CftBossFinalHurtPer; //Boss最终伤害加成系数
|
| | | };
|
| | |
|
| | | //NPC掉落表
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 15 古宝共鸣激活 #tagCMGubaoResonanceActivate
|
| | |
|
| | | class tagCMGubaoResonanceActivate(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ResonanceID", c_ushort), # 共鸣ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x15
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x15
|
| | | self.ResonanceID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGubaoResonanceActivate)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 15 古宝共鸣激活 //tagCMGubaoResonanceActivate:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ResonanceID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ResonanceID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGubaoResonanceActivate=tagCMGubaoResonanceActivate()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoResonanceActivate.Cmd,m_NAtagCMGubaoResonanceActivate.SubCmd))] = m_NAtagCMGubaoResonanceActivate
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 17 古宝升星 #tagCMGubaoStarUp
|
| | |
|
| | | class tagCMGubaoStarUp(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CF 古宝共鸣信息 #tagMCGubaoResonanceInfo
|
| | |
|
| | | class tagMCGubaoResonance(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ResonanceID", c_ushort), # 共鸣ID
|
| | | ("ResonanceStar", c_ubyte), # 已激活共鸣星级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ResonanceID = 0
|
| | | self.ResonanceStar = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGubaoResonance)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CF 古宝共鸣信息 //tagMCGubaoResonanceInfo:
|
| | | ResonanceID:%d,
|
| | | ResonanceStar:%d
|
| | | '''\
|
| | | %(
|
| | | self.ResonanceID,
|
| | | self.ResonanceStar
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGubaoResonanceInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | ResonanceInfoList = list() #(vector<tagMCGubaoResonance> ResonanceInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCF
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temResonanceInfoList = tagMCGubaoResonance()
|
| | | _pos = temResonanceInfoList.ReadData(_lpData, _pos)
|
| | | self.ResonanceInfoList.append(temResonanceInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCF
|
| | | self.Count = 0
|
| | | self.ResonanceInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ResonanceInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ResonanceInfoList[i].GetLength(), self.ResonanceInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ResonanceInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGubaoResonanceInfo=tagMCGubaoResonanceInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoResonanceInfo.Head.Cmd,m_NAtagMCGubaoResonanceInfo.Head.SubCmd))] = m_NAtagMCGubaoResonanceInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
|
| | |
|
| | | class tagMCHistoryReChargeAwardRecord(Structure):
|
| | |
| | | Def_Effect_FamilyWarAtkPer = 164 # 仙盟联赛攻击加成
|
| | | Def_Effect_FamilySitExpPer = 165 # 仙盟打坐经验加成
|
| | |
|
| | | Def_Effect_BossFinalHurtPer = 166 # Boss最终伤害万分率
|
| | |
|
| | | Def_Effect_ComboDefRate = 210 # 抗连击概率
|
| | | Def_Effect_AtkBackRate = 211 # 反击概率
|
| | | Def_Effect_AtkBackDefRate = 212 # 抗反击概率
|
| | |
| | | CDBPlayerRefresh_Lingyu, # 灵玉 261
|
| | | CDBPlayerRefresh_BossTrial, # 凭证积分 262
|
| | | CDBPlayerRefresh_GatherSoul, # 聚魂精华 263
|
| | | ) = range(146, 264)
|
| | | CDBPlayerRefresh_BossFinalHurtPer, # Boss最终输出伤害百分比 264
|
| | | ) = range(146, 265)
|
| | |
|
| | | TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
|
| | | TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
|
| | |
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 3
|
| | | RegisterPackCount = 4
|
| | |
|
| | | PacketCMD_1=0xB2
|
| | | PacketSubCMD_1=0x16
|
| | |
| | | PacketSubCMD_3=0x18
|
| | | PacketCallFunc_3=OnGubaoLVUp
|
| | |
|
| | | PacketCMD_4=0xB2
|
| | | PacketSubCMD_4=0x15
|
| | | PacketCallFunc_4=OnGubaoResonanceActivate
|
| | |
|
| | | ;神通
|
| | | [PlayerShentong]
|
| | | ScriptName = Player\PlayerShentong.py
|
| | |
| | | if atkObjType == IPY_GameWorld.gotPlayer and mapID == ChConfig.Def_FBMapID_FamilyBossMap:
|
| | | aFinalHurtPer += PlayerControl.GetFamilyBossHurtPer(atkObj)
|
| | |
|
| | | if atkObjType == IPY_GameWorld.gotPlayer and defObjType == IPY_GameWorld.gotNPC and ChConfig.IsGameBoss(defObj):
|
| | | killBossCntLimitDict = IpyGameDataPY.GetFuncEvalCfg('KillBossCntLimit') |
| | | limitIndex = GameWorld.GetDictValueByKey(killBossCntLimitDict, defObj.GetNPCID())
|
| | | if limitIndex != None:
|
| | | aFinalHurtPer += PlayerControl.GetBossFinalHurtPer(atkObj)
|
| | | |
| | | atkStateMark = GetObjAtkStateMark(atkObj)
|
| | | defStateMark = GetObjAtkStateMark(defObj)
|
| | | hurtFormulaKey = "%sV%s_%s" % (atkStateMark, defStateMark, atkType)
|
| | |
| | | Def_BuffValue_Count = 3 # buff记录的value个数
|
| | |
|
| | | #游戏对象属性--------------------------------------------
|
| | | Def_Calc_AllAttrType_MAX = 176
|
| | | Def_Calc_AllAttrType_MAX = 177
|
| | | #基本属性BUFF计算,顺序与 ObjProperty_AttrByIndex 对应,同时也为buff效果ID同步通知策划
|
| | | TYPE_Calc_AttrList = (
|
| | | TYPE_Calc_Metal, # 金 1
|
| | |
| | | TYPE_Calc_PetWeakenPer, # 弱化灵兽
|
| | | TYPE_Calc_SuperHitHurtPer, # 强化暴伤
|
| | | TYPE_Calc_SuperHitHurtDefPer, # 弱化暴伤 175
|
| | | TYPE_Calc_BossFinalHurtPer, # boss最终伤害百分比
|
| | | ) = range(1, Def_Calc_AllAttrType_MAX)
|
| | |
|
| | | ## 支持大数值属性,超过20E
|
| | |
| | | Def_PlayerKey_LastHurtNPCObjID = "LastHurtNPCObjID" # 最后攻击的NPCObjID
|
| | | Def_PlayerKey_LastAttackerObjID = "LastAttackerObjID" # 被攻击者记录的最近攻击玩家ID
|
| | | Def_PlayerKey_CommMapExpRate = "CommMapExpRate" # 常规地图经验倍率加成
|
| | | Def_PlayerKey_BossFinalHurtPer = "BossFinalHurtPer" # boss最终伤害百分比
|
| | | Def_PlayerKey_FinalHurtPer = "FinalHurtPer" # 最终伤害百分比
|
| | | Def_PlayerKey_FinalHurtReducePer = "FHReducePer" # 最终伤害减免百分比
|
| | | Def_PlayerKey_FuhaoHitRate = "FuhaoHitRate" # 富豪一击概率
|
| | |
| | | Def_PDict_GubaoLVInfo = "GubaoLVInfo_%s" # 古宝等级信息,参数(古宝ID),等级*100+星级
|
| | | Def_PDict_GubaoItemEffValue = "GubaoItemEffValue_%s_%s" # 古宝效果物品进度,参数(古宝ID, 效果类型)
|
| | | Def_PDict_GubaoPiece = "GubaoPiece_%s" # 古宝碎片数,参数(古宝ID)
|
| | | Def_PDict_GubaoResonanceStar = "GubaoResonanceStar_%s" # 古宝共鸣,参数(共鸣ID)
|
| | |
|
| | | #神通
|
| | | Def_PDict_ShentongLVInfo = "ShentongLVInfo_%s" # 神通等级信息,参数(神通ID),阶级*100+等级
|
| | |
| | | AttrName_GreatHitRateReduce = "GreatHitRateReduce" # 抗卓越一击概率
|
| | | AttrName_SuperHitRateReduce = "SuperHitRateReduce" # 抗暴击概率
|
| | | AttrName_IgnoreDefRateReduce = "IgnoreDefRateReduce" # 抗无视防御概率
|
| | | AttrName_BossFinalHurtPer = "BossFinalHurtPer" # Boss最终伤害百分比
|
| | | AttrName_FinalHurtPer = "FinalHurtPer" # 最终伤害百分比
|
| | | AttrName_FuhaoHitRate = "FuhaoHitRate" # 富豪一击概率
|
| | | AttrName_FinalHurt = "FinalHurt" # 最终固定伤害增加
|
| | |
| | | ShareDefine.Def_Effect_SuperHitRateReduce:[[TYPE_Calc_SuperHitRateReduce], False, TYPE_Linear],
|
| | | AttrName_DamagePVPReduce:[[TYPE_Calc_DamagePVPReduce], False, TYPE_Linear],
|
| | | AttrName_DamagePVP:[[TYPE_Calc_DamagePVP], False, TYPE_Linear],
|
| | | AttrName_BossFinalHurtPer:[[TYPE_Calc_BossFinalHurtPer], False, TYPE_Linear],
|
| | | AttrName_FinalHurtPer:[[TYPE_Calc_FinalHurtPer], False, TYPE_Linear],
|
| | | AttrName_FuhaoHitRate:[[TYPE_Calc_FuhaoHitRate], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_FinalHurt:[[TYPE_Calc_FinalHurt], False, TYPE_Linear],
|
| | |
| | | ShareDefine.Def_Effect_SuperHitRateReduce:[[TYPE_Calc_SuperHitRateReduce], False, TYPE_Linear], # 暴击概率抗性
|
| | | ShareDefine.Def_Effect_LuckyHitReduce:[[TYPE_Calc_LuckyHitReduce], False, TYPE_Linear],# 会心一击伤害固定减伤
|
| | | ShareDefine.Def_Effect_DamagePVE:[[TYPE_Calc_DamagePVE], False, TYPE_Linear], # PVE固定伤害
|
| | | ShareDefine.Def_Effect_BossFinalHurtPer:[[TYPE_Calc_BossFinalHurtPer], False, TYPE_Linear], # Boss最终伤害万分率
|
| | | ShareDefine.Def_Effect_FinalHurtPer:[[TYPE_Calc_FinalHurtPer], False, TYPE_Linear], # 最终伤害万分率
|
| | | ShareDefine.Def_Effect_FinalHurtReducePer:[[TYPE_Calc_FinalHurtReducePer], False, TYPE_Linear], # 最终伤害减少万分
|
| | | ShareDefine.Def_Effect_YinjiTime:[[TYPE_Calc_YinjiTime], False, TYPE_Linear], # 每X秒自动消失一个印记
|
| | |
| | | Def_CalcAttrFunc_TitleStar, # 称号星级 59
|
| | | Def_CalcAttrFunc_FamilyZhenfa, # 仙盟阵法 60
|
| | | Def_CalcAttrFunc_GatherTheSoul, # 聚魂新 61
|
| | | ) = range(62)
|
| | | Def_CalcAttrFunc_GubaoResonance, # 古宝共鸣 62
|
| | | ) = range(63)
|
| | |
|
| | | # 技能功能点列表 - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
|
| | | CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
|
| | |
| | | ShareDefine.Def_MFPType_Plus:[Def_CalcAttrFunc_Plus],
|
| | | ShareDefine.Def_MFPType_Stone:[Def_CalcAttrFunc_Stone],
|
| | | ShareDefine.Def_MFPType_Enchant:[Def_CalcAttrFunc_Enchant],
|
| | | ShareDefine.Def_MFPType_Gubao:[Def_CalcAttrFunc_Gubao],
|
| | | ShareDefine.Def_MFPType_Gubao:[Def_CalcAttrFunc_Gubao, Def_CalcAttrFunc_GubaoResonance],
|
| | | ShareDefine.Def_MFPType_Shentong:[Def_CalcAttrFunc_Shentong],
|
| | | ShareDefine.Def_MFPType_LingQi:[Def_CalcAttrFunc_LingQi, Def_CalcAttrFunc_LingQiAttr, Def_CalcAttrFunc_LingQiJingLianAttr, Def_CalcAttrFunc_GuardTarin,
|
| | | Def_CalcAttrFunc_WingTarin, Def_CalcAttrFunc_PeerlessWeaponTrain, Def_CalcAttrFunc_PeerlessWeapon2Train],
|
| | |
| | | Def_CalcAttrFunc_LoveRing:"情戒基础", Def_CalcAttrFunc_LoveRingCouple:"情戒仙侣", Def_CalcAttrFunc_Charm:"魅力", Def_CalcAttrFunc_LianTi:"炼体",
|
| | | Def_CalcAttrFunc_Enchant:"附魔", Def_CalcAttrFunc_LingQiEnchant:"灵器附魔", Def_CalcAttrFunc_Gubao:"古宝", Def_CalcAttrFunc_Shentong:"神通",
|
| | | Def_CalcAttrFunc_HorseStar:"坐骑星级", Def_CalcAttrFunc_PetStar:"宠物星级", Def_CalcAttrFunc_TitleStar:"称号星级", Def_CalcAttrFunc_FamilyZhenfa:"阵法",
|
| | | Def_CalcAttrFunc_GatherTheSoul:"聚魂新",
|
| | | Def_CalcAttrFunc_GatherTheSoul:"聚魂新", Def_CalcAttrFunc_GubaoResonance:"古宝共鸣",
|
| | | }
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 15 古宝共鸣激活 #tagCMGubaoResonanceActivate
|
| | |
|
| | | class tagCMGubaoResonanceActivate(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ResonanceID", c_ushort), # 共鸣ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x15
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x15
|
| | | self.ResonanceID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGubaoResonanceActivate)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 15 古宝共鸣激活 //tagCMGubaoResonanceActivate:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ResonanceID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ResonanceID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGubaoResonanceActivate=tagCMGubaoResonanceActivate()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGubaoResonanceActivate.Cmd,m_NAtagCMGubaoResonanceActivate.SubCmd))] = m_NAtagCMGubaoResonanceActivate
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 17 古宝升星 #tagCMGubaoStarUp
|
| | |
|
| | | class tagCMGubaoStarUp(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CF 古宝共鸣信息 #tagMCGubaoResonanceInfo
|
| | |
|
| | | class tagMCGubaoResonance(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ResonanceID", c_ushort), # 共鸣ID
|
| | | ("ResonanceStar", c_ubyte), # 已激活共鸣星级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ResonanceID = 0
|
| | | self.ResonanceStar = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCGubaoResonance)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CF 古宝共鸣信息 //tagMCGubaoResonanceInfo:
|
| | | ResonanceID:%d,
|
| | | ResonanceStar:%d
|
| | | '''\
|
| | | %(
|
| | | self.ResonanceID,
|
| | | self.ResonanceStar
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCGubaoResonanceInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | ResonanceInfoList = list() #(vector<tagMCGubaoResonance> ResonanceInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCF
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temResonanceInfoList = tagMCGubaoResonance()
|
| | | _pos = temResonanceInfoList.ReadData(_lpData, _pos)
|
| | | self.ResonanceInfoList.append(temResonanceInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCF
|
| | | self.Count = 0
|
| | | self.ResonanceInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ResonanceInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ResonanceInfoList[i].GetLength(), self.ResonanceInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ResonanceInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCGubaoResonanceInfo=tagMCGubaoResonanceInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoResonanceInfo.Head.Cmd,m_NAtagMCGubaoResonanceInfo.Head.SubCmd))] = m_NAtagMCGubaoResonanceInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
|
| | |
|
| | | class tagMCHistoryReChargeAwardRecord(Structure):
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "重置古宝: Gubao 0") |
| | | GameWorld.DebugAnswer(curPlayer, "设置古宝: Gubao 古宝ID 等级 星级") |
| | | GameWorld.DebugAnswer(curPlayer, "设置效果: Gubao e 古宝ID 效果类型 进度值") |
| | | GameWorld.DebugAnswer(curPlayer, "设置共鸣: Gubao r 共鸣ID 共鸣星级") |
| | | return |
| | | |
| | | gubaoIDList = [] |
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoItemEffValue % (gubaoID, effType), 0) |
| | | |
| | | PlayerGubao.Sync_GubaoItemEffInfo(curPlayer, force=True) |
| | | |
| | | resonanceIDList = [] |
| | | for index in range(ipyDataMgr.GetGubaoResonanceCount()): |
| | | ipyData = ipyDataMgr.GetGubaoResonanceByIndex(index) |
| | | resonanceID = ipyData.GetResonanceID() |
| | | if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoResonanceStar % resonanceID): |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoResonanceStar % resonanceID, 0) |
| | | resonanceIDList.append(resonanceID) |
| | | PlayerGubao.Sync_GubaoResonanceInfo(curPlayer, resonanceIDList) |
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "重置古宝OK") |
| | | |
| | | elif value1 == "r": |
| | | resonanceID = msgList[1] if len(msgList) > 1 else 0 |
| | | resonanceStar = msgList[2] if len(msgList) > 2 else 0 |
| | | if resonanceStar != 0: |
| | | ipyData = IpyGameDataPY.GetIpyGameData("GubaoResonanceAttr", resonanceID, resonanceStar) |
| | | if not ipyData: |
| | | GameWorld.DebugAnswer(curPlayer, "不存在该古宝共鸣!ID=%s,star=%s" % (resonanceID, resonanceStar)) |
| | | return |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoResonanceStar % resonanceID, resonanceStar) |
| | | PlayerGubao.Sync_GubaoResonanceInfo(curPlayer, [resonanceID]) |
| | | |
| | | elif len(msgList) == 3: |
| | | gubaoID, lv, star = msgList |
| | | ipyData = IpyGameDataPY.GetIpyGameData("Gubao", gubaoID) |
| | |
| | | ("BYTE", "UnlockItemCnt", 0),
|
| | | ),
|
| | |
|
| | | "GubaoResonanceAttr":(
|
| | | ("WORD", "ResonanceID", 1),
|
| | | ("BYTE", "ResonanceStar", 1),
|
| | | ("list", "ResonanceAttrIDList", 0),
|
| | | ("list", "ResonanceAttrValueList", 0),
|
| | | ),
|
| | |
|
| | | "GubaoResonance":(
|
| | | ("WORD", "ResonanceID", 1),
|
| | | ("list", "GubaoIDList", 0),
|
| | | ),
|
| | |
|
| | | "GubaoStar":(
|
| | | ("WORD", "GubaoID", 1),
|
| | | ("BYTE", "GubaoStar", 1),
|
| | | ("list", "StarUPNeedItemInfo", 0),
|
| | | ("list", "StarAttrIDList", 0),
|
| | | ("list", "StarAttrValueList", 0),
|
| | | ("list", "StarEffIDList", 0),
|
| | | ),
|
| | |
|
| | |
| | | ("DWORD", "CftFamilyWarHPPer", 0),
|
| | | ("DWORD", "CftFamilyWarAtkPer", 0),
|
| | | ("DWORD", "CftFamilySitExpPer", 0),
|
| | | ("DWORD", "CftBossFinalHurtPer", 0),
|
| | | ),
|
| | |
|
| | | "NPCDropItem":(
|
| | |
| | | def GetUnlockItemID(self): return self.attrTuple[3] # 解锁所需物品ID DWORD
|
| | | def GetUnlockItemCnt(self): return self.attrTuple[4] # 解锁所需物品数量 BYTE |
| | | |
| | | # 古宝共鸣属性表 |
| | | class IPY_GubaoResonanceAttr(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetResonanceID(self): return self.attrTuple[0] # 共鸣ID WORD
|
| | | def GetResonanceStar(self): return self.attrTuple[1] # 共鸣星级 BYTE
|
| | | def GetResonanceAttrIDList(self): return self.attrTuple[2] # 共鸣总属性ID列表 list
|
| | | def GetResonanceAttrValueList(self): return self.attrTuple[3] # 共鸣总属性值列表 list |
| | | |
| | | # 古宝共鸣组合表 |
| | | class IPY_GubaoResonance(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetResonanceID(self): return self.attrTuple[0] # 共鸣ID WORD
|
| | | def GetGubaoIDList(self): return self.attrTuple[1] # 古宝ID列表 list |
| | | |
| | | # 古宝升星表 |
| | | class IPY_GubaoStar(): |
| | | |
| | |
| | | def GetGubaoID(self): return self.attrTuple[0] # 古宝ID WORD
|
| | | def GetGubaoStar(self): return self.attrTuple[1] # 古宝星级 BYTE
|
| | | def GetStarUPNeedItemInfo(self): return self.attrTuple[2] # 升星所需物品 [[物品ID,个数], ...] list
|
| | | def GetStarEffIDList(self): return self.attrTuple[3] # 星级特殊效果ID列表 list |
| | | def GetStarAttrIDList(self): return self.attrTuple[3] # 累计总属性ID列表 list
|
| | | def GetStarAttrValueList(self): return self.attrTuple[4] # 累计总属性值列表 list
|
| | | def GetStarEffIDList(self): return self.attrTuple[5] # 星级特殊效果ID列表 list |
| | | |
| | | # 古宝特殊效果表 |
| | | class IPY_GubaoEffAttr(): |
| | |
| | | def GetCftFamilyWarHPPer(self): return self.attrTuple[31] # 仙盟联赛生命加成 DWORD
|
| | | def GetCftFamilyWarAtkPer(self): return self.attrTuple[32] # 仙盟联赛攻击加成 DWORD
|
| | | def GetCftFamilySitExpPer(self): return self.attrTuple[33] # 仙盟打坐经验加成 DWORD |
| | | def GetCftBossFinalHurtPer(self): return self.attrTuple[34] # Boss最终伤害加成系数 DWORD |
| | | |
| | | # NPC掉落表 |
| | | class IPY_NPCDropItem(): |
| | |
| | | self.__LoadFileData("Horse", onlyCheck)
|
| | | self.__LoadFileData("HorseStarUp", onlyCheck)
|
| | | self.__LoadFileData("Gubao", onlyCheck)
|
| | | self.__LoadFileData("GubaoResonanceAttr", onlyCheck)
|
| | | self.__LoadFileData("GubaoResonance", onlyCheck)
|
| | | self.__LoadFileData("GubaoStar", onlyCheck)
|
| | | self.__LoadFileData("GubaoEffAttr", onlyCheck)
|
| | | self.__LoadFileData("GubaoLV", onlyCheck)
|
| | |
| | | self.CheckLoadData("Gubao") |
| | | return self.ipyGubaoCache[index]
|
| | | |
| | | def GetGubaoResonanceAttrCount(self): |
| | | self.CheckLoadData("GubaoResonanceAttr") |
| | | return self.ipyGubaoResonanceAttrLen
|
| | | def GetGubaoResonanceAttrByIndex(self, index): |
| | | self.CheckLoadData("GubaoResonanceAttr") |
| | | return self.ipyGubaoResonanceAttrCache[index]
|
| | | |
| | | def GetGubaoResonanceCount(self): |
| | | self.CheckLoadData("GubaoResonance") |
| | | return self.ipyGubaoResonanceLen
|
| | | def GetGubaoResonanceByIndex(self, index): |
| | | self.CheckLoadData("GubaoResonance") |
| | | return self.ipyGubaoResonanceCache[index]
|
| | | |
| | | def GetGubaoStarCount(self): |
| | | self.CheckLoadData("GubaoStar") |
| | | return self.ipyGubaoStarLen
|
| | |
| | | FaintDefRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FaintDefRate) * fpParam.GetCftFaintDefRate() # 击晕抵抗
|
| | | FinalHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurt) # 最终固定伤害增加
|
| | | FinalHurtReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtReduce) # 最终固定伤害减少
|
| | | BossFinalHurtPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_BossFinalHurtPer) * fpParam.GetCftBossFinalHurtPer() # Boss最终伤害万分率
|
| | | FinalHurtPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtPer) * fpParam.GetCftFinalHurtPer() # 最终伤害万分率
|
| | | FinalHurtReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtReducePer) * fpParam.GetCftFinalHurtReducePer() # 最终伤害减少万分率
|
| | | DamagePerPVP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePerPVP) * fpParam.GetCftDamagePerPVP() # 伤害输出计算百分比PVP
|
| | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value)
|
| | | SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BleedDamage, value)
|
| | |
|
| | | ## Boss最终伤害百分比
|
| | | def GetBossFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BossFinalHurtPer)
|
| | | def SetBossFinalHurtPer(curPlayer, value):
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_BossFinalHurtPer, value)
|
| | | SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BossFinalHurtPer, value)
|
| | | |
| | | ## 最终固定伤害增加
|
| | | def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt)
|
| | | def SetFinalHurt(curPlayer, value):
|
| | |
| | | Sync_GubaoInfo(curPlayer)
|
| | | Sync_GubaoItemEffInfo(curPlayer)
|
| | | Sync_GubaoPieceInfo(curPlayer)
|
| | | Sync_GubaoResonanceInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def AddGubaoPiece(curPlayer, gubaoID, addCount, useItemID):
|
| | |
| | | GameWorld.DebugLog("转化古宝功能所需物品: needItemList=%s,realNeedItemList=%s,needPieceInfo=%s"
|
| | | % (needItemList, realNeedItemList, needPieceInfo), curPlayer.GetPlayerID())
|
| | | return needPieceInfo, realNeedItemList
|
| | |
|
| | | #// B2 15 古宝共鸣激活 #tagCMGubaoResonanceActivate
|
| | | #
|
| | | #struct tagCMGubaoResonanceActivate
|
| | | #{
|
| | | # tagHead Head;
|
| | | # WORD ResonanceID; |
| | | #};
|
| | | def OnGubaoResonanceActivate(index, curPackData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | resonanceID = curPackData.ResonanceID
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("GubaoResonance", resonanceID)
|
| | | if not ipyData:
|
| | | return
|
| | | gubaoIDList = ipyData.GetGubaoIDList()
|
| | | attrIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("GubaoResonanceAttr", {"ResonanceID":resonanceID}, True)
|
| | | if not attrIpyDataList:
|
| | | return
|
| | | nextStar = resonanceStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoResonanceStar % resonanceID)
|
| | | |
| | | for attrIpyData in attrIpyDataList:
|
| | | star = attrIpyData.GetResonanceStar()
|
| | | if star > nextStar:
|
| | | nextStar = star
|
| | | break
|
| | | |
| | | if nextStar <= resonanceStar:
|
| | | GameWorld.DebugLog("古宝共鸣没有下一星级了! resonanceID=%s,resonanceStar=%s" % (resonanceID, resonanceStar), playerID)
|
| | | return
|
| | | |
| | | for gubaoID in gubaoIDList:
|
| | | _, star = GetGubaoLVInfo(curPlayer, gubaoID)
|
| | | if star < nextStar:
|
| | | GameWorld.DebugLog("古宝未达到共鸣星级,无法激活共鸣! gubaoID=%s,star=%s < %s" % (gubaoID, star, nextStar), playerID)
|
| | | return
|
| | | |
| | | GameWorld.DebugLog("古宝共鸣星级激活! resonanceID=%s,nextStar=%s" % (resonanceID, nextStar), playerID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GubaoResonanceStar % resonanceID, nextStar)
|
| | | RefreshGubaoAttr(curPlayer)
|
| | | Sync_GubaoResonanceInfo(curPlayer, [resonanceID])
|
| | | return
|
| | |
|
| | | #// B2 16 古宝激活 #tagCMGubaoActivate
|
| | | #
|
| | |
| | | def CalcGubaoAttr(curPlayer):
|
| | |
|
| | | allAttrList = [{} for _ in range(4)]
|
| | | allAttrListResonance = [{} for _ in range(4)]
|
| | |
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetGubaoCount()):
|
| | |
| | |
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("GubaoStar", gubaoID, star)
|
| | | if starIpyData:
|
| | | starAttrIDList = starIpyData.GetStarAttrIDList()
|
| | | starAttrValueList = starIpyData.GetStarAttrValueList()
|
| | | for i, attrID in enumerate(starAttrIDList):
|
| | | attrValue = starAttrValueList[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
|
| | | |
| | | starEffIDList = starIpyData.GetStarEffIDList()
|
| | | effAttrInfo = {}
|
| | | #GameWorld.DebugLog("GubaoStar属性: gubaoID=%s,star=%s,starEffIDList=%s" % (gubaoID, star, starEffIDList))
|
| | |
| | | for attrID, attrValue in effAttrInfo.items():
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
|
| | |
|
| | | # 共鸣
|
| | | for index in range(ipyDataMgr.GetGubaoResonanceCount()):
|
| | | ipyData = ipyDataMgr.GetGubaoResonanceByIndex(index)
|
| | | resonanceID = ipyData.GetResonanceID()
|
| | | resonanceStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoResonanceStar % resonanceID)
|
| | | if not resonanceStar:
|
| | | continue
|
| | | resonanceAttrIpyData = IpyGameDataPY.GetIpyGameData("GubaoResonanceAttr", resonanceID, resonanceStar)
|
| | | if not resonanceAttrIpyData:
|
| | | continue
|
| | | resonanceAttrIDList = resonanceAttrIpyData.GetResonanceAttrIDList()
|
| | | resonanceAttrValueList = resonanceAttrIpyData.GetResonanceAttrValueList()
|
| | | for i, attrID in enumerate(resonanceAttrIDList):
|
| | | attrValue = resonanceAttrValueList[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListResonance)
|
| | | |
| | | # 保存计算值
|
| | | GameWorld.DebugLog("古宝属性: %s" % allAttrList)
|
| | | #GameWorld.DebugLog("古宝共鸣属性: %s" % allAttrListResonance)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Gubao, allAttrList)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_GubaoResonance, allAttrListResonance)
|
| | | return
|
| | |
|
| | | def __calcStarEffAttrByID(curPlayer, gubaoID, effID, effAttrInfo):
|
| | |
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def Sync_GubaoResonanceInfo(curPlayer, resonanceIDList=None):
|
| | | if resonanceIDList == None:
|
| | | syncIDList = []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetGubaoResonanceCount()):
|
| | | ipyData = ipyDataMgr.GetGubaoResonanceByIndex(index)
|
| | | syncIDList.append(ipyData.GetResonanceID())
|
| | | else:
|
| | | syncIDList = resonanceIDList
|
| | | |
| | | resonanceInfoList = []
|
| | | for resonanceID in syncIDList:
|
| | | resonanceStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GubaoResonanceStar % resonanceID)
|
| | | if not resonanceStar and resonanceIDList == None:
|
| | | # 没有指定时只同步激活的
|
| | | continue
|
| | | resonanceInfo = ChPyNetSendPack.tagMCGubaoResonance()
|
| | | resonanceInfo.ResonanceID = resonanceID
|
| | | resonanceInfo.ResonanceStar = resonanceStar
|
| | | resonanceInfoList.append(resonanceInfo)
|
| | | |
| | | if not resonanceInfoList:
|
| | | return
|
| | | |
| | | clientPack = ChPyNetSendPack.tagMCGubaoResonanceInfo()
|
| | | clientPack.ResonanceInfoList = resonanceInfoList
|
| | | clientPack.Count = len(clientPack.ResonanceInfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def Sync_GubaoItemEffInfo(curPlayer, gubaoID=0, effType=0, force=False):
|
| | | syncIDList = []
|
| | | if not gubaoID:
|
| | |
| | | Def_Effect_FamilyWarAtkPer = 164 # 仙盟联赛攻击加成
|
| | | Def_Effect_FamilySitExpPer = 165 # 仙盟打坐经验加成
|
| | |
|
| | | Def_Effect_BossFinalHurtPer = 166 # Boss最终伤害万分率
|
| | |
|
| | | Def_Effect_ComboDefRate = 210 # 抗连击概率
|
| | | Def_Effect_AtkBackRate = 211 # 反击概率
|
| | | Def_Effect_AtkBackDefRate = 212 # 抗反击概率
|
| | |
| | | CDBPlayerRefresh_Lingyu, # 灵玉 261
|
| | | CDBPlayerRefresh_BossTrial, # 凭证积分 262
|
| | | CDBPlayerRefresh_GatherSoul, # 聚魂精华 263
|
| | | ) = range(146, 264)
|
| | | CDBPlayerRefresh_BossFinalHurtPer, # Boss最终输出伤害百分比 264
|
| | | ) = range(146, 265)
|
| | |
|
| | | TYPE_Price_Gold_Paper_Money = 5 # 金钱类型,(先用礼券,再用金子)
|
| | | TYPE_Price_Family_Contribution = 6 # 战盟贡献度(活跃度转换得来)
|
| | |
| | | [lambda curObj:GameObj.GetPetWeakenPer(curObj), lambda curObj, value:GameObj.SetPetWeakenPer(curObj, value), ShareDefine.CDBPlayerRefresh_PetWeakenPer, 1, 0], # 弱化灵兽
|
| | | [lambda curObj:GameObj.GetSuperHitHurtPer(curObj), lambda curObj, value:GameObj.SetSuperHitHurtPer(curObj, value), ShareDefine.CDBPlayerRefresh_SuperHitHurtPer, 1, 0], # 强化暴伤
|
| | | [lambda curObj:GameObj.GetSuperHitHurtDefPer(curObj), lambda curObj, value:GameObj.SetSuperHitHurtDefPer(curObj, value), ShareDefine.CDBPlayerRefresh_SuperHitHurtDefPer, 1, 0], # 弱化暴伤
|
| | | [lambda curObj:PlayerControl.GetBossFinalHurtPer(curObj), lambda curObj, value:PlayerControl.SetBossFinalHurtPer(curObj, value), ShareDefine.CDBPlayerRefresh_BossFinalHurtPer, 1, 0], # Boss最终伤害百分比
|
| | | ]
|
| | |
|
| | | ## 通过索引获得属性值
|