|  |  | 
 |  |  |     changeItemHoleCnt = 0#curItem.GetCanPlaceStoneCount()
 | 
 |  |  |     changeItemUseData = curItem.GetUserData()
 | 
 |  |  |     itemQuality = curItem.GetItemQuality()
 | 
 |  |  |     endureReduceType = curItem.GetEndureReduceType()
 | 
 |  |  |     #changeItemIsHorse = (curItem.GetType() == ChConfig.Def_Item_Type_Horse)
 | 
 |  |  |     
 | 
 |  |  |     #执行换装动作
 | 
 |  |  | 
 |  |  |         #通知客户端交换物品
 | 
 |  |  |         curPlayer.ChangeEquip(changeItemID, equipPlace, changeItemStarLV, changeItemHoleCnt, changeItemStoneCnt, changeItemUseData)
 | 
 |  |  |         
 | 
 |  |  |      | 
 |  |  |     if not endureReduceType:
 | 
 |  |  |         EventShell.EventRespons_EquipByPlace(curPlayer, equipPlace)
 | 
 |  |  |     #记录橙装、红装
 | 
 |  |  |     #===========================================================================
 | 
 |  |  |     # if itemQuality in [ChConfig.Def_Quality_Orange, ChConfig.Def_Quality_Red]:
 | 
 |  |  | 
 |  |  | ## 计算装备对基本属性的改变 
 | 
 |  |  | #  @return None
 | 
 |  |  | def __CalcEquips_Effect(curPlayer):
 | 
 |  |  |     baseEquipAttrDict = {}
 | 
 |  |  |     baseEquipAttr_Weapon = [{} for _ in range(4)] # 武器基础, 物品表装备基础效果属性
 | 
 |  |  |     baseEquipAttr_Armor = [{} for _ in range(4)] # 防具基础, 物品表装备基础效果属性
 | 
 |  |  |     baseEquipAttr_Relics = [{} for _ in range(4)] # 圣器基础, 物品表装备基础效果属性
 | 
 |  |  | 
 |  |  |             #其他非基础部位的
 | 
 |  |  |             else:
 | 
 |  |  |                 PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListEquip)
 | 
 |  |  |                  | 
 |  |  |             baseEquipAttrDict[effectID] = baseEquipAttrDict.get(effectID, 0) + effectValue
 | 
 |  |  |              | 
 |  |  |         groupType = GetEquipPartSuiteGroupType(curPlayer, equipIndex)
 | 
 |  |  |         for suiteType in range(1, maxSuiteType+1):
 | 
 |  |  |             suitelv = GetEquipPartSuiteLV(curPlayer, equipIndex, suiteType)
 | 
 |  |  | 
 |  |  |     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Suit, allAttrListSuit)
 | 
 |  |  |     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allAttrListWash)
 | 
 |  |  |     PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
 | 
 |  |  |      | 
 |  |  |     #计算装备基础属性附加战力
 | 
 |  |  |     LV = curPlayer.GetLV()
 | 
 |  |  |     Atk = baseEquipAttrDict.get(ShareDefine.Def_Effect_Atk, 0)
 | 
 |  |  |     MinAtk = baseEquipAttrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
 | 
 |  |  |     MaxAtk = baseEquipAttrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
 | 
 |  |  |     MaxHP = baseEquipAttrDict.get(ShareDefine.Def_Effect_MaxHP, 0)
 | 
 |  |  |     Def = baseEquipAttrDict.get(ShareDefine.Def_Effect_Def, 0)
 | 
 |  |  |     fightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
 | 
 |  |  |     curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, fightPowerEx)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     
 | 
 |  |  |     SyncAllEquipAttrActiveInfo(curPlayer, activeType)
 | 
 |  |  |     if activeType == 0:
 | 
 |  |  |         PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
 | 
 |  |  |         PlayerMagicWeapon.CalcMagicWeaponSoulAttr(curPlayer)
 | 
 |  |  |     else:
 | 
 |  |  |         RefreshPlayerEquipAttribute(curPlayer)
 | 
 |  |  |     
 |