| | |
| | | EquipPlace_Special = [ShareDefine.retNeck, ShareDefine.retFairyCan, ShareDefine.retFairyCan2, ShareDefine.retJade]
|
| | | ## 装备位 - 所有基础
|
| | | EquipPlace_Base = EquipPlace_BaseWeapon + EquipPlace_BaseArmor
|
| | | ## 装备位 - 灵器
|
| | | EquipPlace_LingQi = [ShareDefine.retWing, ShareDefine.retGuard1, ShareDefine.retPeerlessWeapon, ShareDefine.retPeerlessWeapon2]
|
| | |
|
| | | #装备物品位置,不需要重刷属性
|
| | | EquipItemNoRefreshState = [
|
| | |
| | |
|
| | | # 需要广播外观的装备部位(除了境界装备3部位)
|
| | | Def_SyncEquipStateByIndex = [
|
| | | ShareDefine.retWing, #11 翅膀
|
| | | ShareDefine.retWing, #13 翅膀
|
| | | ShareDefine.retGuard1, #14 守护1
|
| | | ShareDefine.retHorse, #19 坐骑
|
| | | ]
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #特殊物品光环,永久存在
|
| | | Def_SuperBuffList = [
|
| | | ]
|
| | | Def_SuperBuffList = []
|
| | |
|
| | | #------------------------------------------------------------
|
| | |
|
| | |
| | | Def_CalcAttrFunc_MagicWeapon3, # 仙族法宝属性 34
|
| | | Def_CalcAttrFunc_MagicWeapon4, # 王者法宝 35
|
| | | Def_CalcAttrFunc_Coat, # ʱװ 36
|
| | | ) = range(37)
|
| | | Def_CalcAttrFunc_LingQi, # 灵器 37
|
| | | ) = range(38)
|
| | |
|
| | | # 技能功能点列表 - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
|
| | | CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
|
| | |
| | | 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],
|
| | | ShareDefine.Def_MFPType_Wing:[Def_CalcAttrFunc_Wing, Def_CalcAttrFunc_LingQi],
|
| | | 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],
|
| | |
| | | ChConfig.Def_CalcAttrFunc_Stone:"宝石",
|
| | | ChConfig.Def_CalcAttrFunc_Wash:"洗练",
|
| | | ChConfig.Def_CalcAttrFunc_Wing:"翅膀",
|
| | | ChConfig.Def_CalcAttrFunc_LingQi:"灵器",
|
| | | ChConfig.Def_CalcAttrFunc_Pet:"灵宠",
|
| | | ChConfig.Def_CalcAttrFunc_Horse:"坐骑",
|
| | | ChConfig.Def_CalcAttrFunc_Prestige:"境界",
|
| | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Equip)
|
| | |
|
| | | #先刷装备BUFF 再计算属性
|
| | | if changeItemEquipPlace == ShareDefine.retWing:
|
| | | PlayerWing.CalcWingAttr(curPlayer)
|
| | | else:
|
| | | if changeItemEquipPlace in ChConfig.EquipPlace_LingQi:
|
| | | RefreshPlayerLingQiEquipAttr(curPlayer)
|
| | | elif itemClassLV:
|
| | | RefreshPlayerEquipAttribute(curPlayer, itemClassLV)
|
| | |
|
| | | #刷新所有属性
|
| | |
| | | return True
|
| | |
|
| | |
|
| | | |
| | | ## 刷新装备对人物属性的改变
|
| | | # @param self 类实例
|
| | | # @return 返回值无意义
|
| | |
| | | return
|
| | |
|
| | | #先刷装备BUFF 再计算属性
|
| | | if equipPlace == ShareDefine.retWing:
|
| | | PlayerWing.CalcWingAttr(curPlayer)
|
| | | else:
|
| | | if equipPlace in ChConfig.EquipPlace_LingQi:
|
| | | RefreshPlayerLingQiEquipAttr(curPlayer)
|
| | | elif itemClassLV:
|
| | | RefreshPlayerEquipAttribute(curPlayer, itemClassLV)
|
| | |
|
| | | #刷新所有属性
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def RefreshPlayerLingQiEquipAttr(curPlayer):
|
| | | ''' 刷新玩家灵器装备属性
|
| | | '''
|
| | | |
| | | classLV = 0 # 灵器阶默认为0
|
| | | allAttrList = [{} for _ in range(4)]
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | |
| | | for equipPlace in ChConfig.EquipPlace_LingQi:
|
| | | |
| | | if equipPlace == ShareDefine.retWing:
|
| | | PlayerWing.CalcWingAttr(curPlayer)
|
| | | continue
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if not ipyData:
|
| | | continue
|
| | | |
| | | equipIndex = ipyData.GetGridIndex()
|
| | | curEquip = equipPack.GetAt(equipIndex)
|
| | | if not curEquip or curEquip.IsEmpty():
|
| | | continue
|
| | | |
| | | if not ItemCommon.CheckItemCanUseByExpireTime(curEquip):
|
| | | # 过期
|
| | | continue
|
| | | |
| | | #基础属性效果
|
| | | 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)
|
| | | |
| | | #GameWorld.DebugLog("灵器属性: %s" % allAttrList)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingQi, allAttrList)
|
| | | return
|
| | |
|
| | | def __CalcEquips_Effect(curPlayer, classLV):
|
| | | ''' 境界装备系统属性
|
| | | 1. 装备模块,每个境界阶独立,每个境界战力独立模块计算
|
| | |
| | | #先压入BUFF的效果值及技能战斗力
|
| | | self.RefreshAllSkill()
|
| | | ChEquip.RefreshPlayerEquipAttribute(curPlayer)
|
| | | ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
|
| | | #SkillShell.RefreshPlayerBuffOnAttrAddEffect(curPlayer)
|
| | | PlayerWing.CalcWingAttr(curPlayer)
|
| | | #PlayerWing.CalcWingAttr(curPlayer) # 翅膀暂时算在灵器里面
|
| | | PlayerHorse.CalcHorseAttrEx(curPlayer)
|
| | | PlayerPrestigeSys.CalcOfficialRankAttr(curPlayer)
|
| | | PlayerGodWeapon.CalcGodWeaponAttr(curPlayer)
|
| | |
| | | # @remarks 刷新以单位时间(分钟)消耗耐久的物品
|
| | | def ProcessRefreshTimeItem(curPlayer, tick):
|
| | | reFlash = False
|
| | |
|
| | | |
| | | #2分钟遍历一次,时效道具时间到不消失,
|
| | | if tick - curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_EquipTime) \
|
| | | < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_TimeItem] :
|
| | | < ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_TimeItem]:
|
| | | return reFlash
|
| | | #耐久减少值/分钟
|
| | | reFlash = ProcessTimeEquip(curPlayer, tick)
|
| | |
|
| | | |
| | | return reFlash
|
| | |
|
| | |
|
| | |
| | | # @return 布尔值
|
| | | # @remarks 处理耐久计算方式为:现实时间刷新方式的物品
|
| | | def ProcessTimeEquip(curPlayer, tick):
|
| | | return
|
| | | #境界装备修改,暂屏蔽,待优化
|
| | | # itemManager = curPlayer.GetItemManager()
|
| | | # hasItemClear = False
|
| | | #
|
| | | # curPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
|
| | | # for i in range(0, curPack.GetCount()):
|
| | | # curItem = curPack.GetAt(i)
|
| | | # |
| | | # #异常物品
|
| | | # if not ItemCommon.CheckItemCanUse(curItem):
|
| | | # continue
|
| | | #
|
| | | # if curItem.GetEndureReduceType() not in [ChConfig.Def_EquipReduceType_RTimeItem,
|
| | | # ChConfig.Def_EquipReduceType_Time]:
|
| | | # continue
|
| | | #
|
| | | # #处理现实时间物品逻辑
|
| | | # if __DoLogic_ProcessTimeEquip(curPlayer, curItem, i):
|
| | | # hasItemClear = True
|
| | | # |
| | | # |
| | | # if hasItemClear:
|
| | | # #装备重刷属性
|
| | | # PlayerWing.CalcWingAttr(curPlayer)
|
| | | # ChEquip.RefreshPlayerEquipAttribute(curPlayer)
|
| | | # |
| | | # |
| | | # # 进行更新时效道具刷新时间
|
| | | # curPlayer.SetDict(ChConfig.Def_PlayerKey_EquipTime, tick)
|
| | | # |
| | | # return hasItemClear
|
| | | itemManager = curPlayer.GetItemManager()
|
| | | hasItemClear = False
|
| | | |
| | | classLV = 0 # 只处理非境界装备的时效物品
|
| | | curPack = itemManager.GetPack(IPY_GameWorld.rptEquip)
|
| | | for equipPlace in ChConfig.EquipPlace_LingQi:
|
| | | ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
|
| | | if not ipyData:
|
| | | continue
|
| | | index = ipyData.GetGridIndex()
|
| | | curItem = curPack.GetAt(index)
|
| | | |
| | | #异常物品
|
| | | if not ItemCommon.CheckItemCanUse(curItem):
|
| | | continue
|
| | | |
| | | if curItem.GetEndureReduceType() not in [ChConfig.Def_EquipReduceType_RTimeItem,
|
| | | ChConfig.Def_EquipReduceType_Time]:
|
| | | continue
|
| | | |
| | | #处理现实时间物品逻辑
|
| | | if __DoLogic_ProcessTimeEquip(curPlayer, curItem, index):
|
| | | hasItemClear = True
|
| | | |
| | | if hasItemClear:
|
| | | #装备重刷属性
|
| | | ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer)
|
| | | |
| | | # 进行更新时效道具刷新时间
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_EquipTime, tick)
|
| | | return hasItemClear
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ## 装备有效时间到了需要脱下,有效时间物品改成不消失,但是无使用效果 可出售和续费
|
| | | def __DoLogic_ProcessTimeEquip(curPlayer, curItem, equipIndex):
|
| | |
| | | # 没有空位,玩家主动取下,计算属性时无效化
|
| | | # 过期属性时效需刷属性
|
| | | return True
|
| | |
|
| | | |
| | | result = ItemControler.PlayerItemControler(curPlayer).UnEquipItem(equipIndex, spaceIndex)
|
| | | if not result:
|
| | | # 过期属性时效需刷属性
|
| | |
| | | # @param allAttrList 属性列表
|
| | | # @return None
|
| | | def CalcWingAttr(curPlayer):
|
| | | allAttrList = [{} for _ in range(4)]
|
| | | equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | curWing = equipPack.GetAt(ShareDefine.retWing)
|
| | |
|
| | | 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)
|