From 03fa797b93127a81b6c7917c4cfc19f5b8d8ff37 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 24 十一月 2018 16:19:49 +0800
Subject: [PATCH] 4940 【后端】【1.3】超值礼包购买广播
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 39 ++++++++++++++++++++++++++++++++++-----
1 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
index 41f0d14..03ace23 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -93,6 +93,7 @@
changeItemHoleCnt = 0#curItem.GetCanPlaceStoneCount()
changeItemUseData = curItem.GetUserData()
itemQuality = curItem.GetItemQuality()
+ endureReduceType = curItem.GetEndureReduceType()
#changeItemIsHorse = (curItem.GetType() == ChConfig.Def_Item_Type_Horse)
#执行换装动作
@@ -111,7 +112,8 @@
#通知客户端交换物品
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]:
@@ -431,6 +433,7 @@
## 计算装备对基本属性的改变
# @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)] # 圣器基础, 物品表装备基础效果属性
@@ -449,6 +452,7 @@
equipPlaceList = [] # 有穿戴装备的装备位列表
suitCntDict = {} #套装数量字典
legendAttrDict = {} #所有传奇属性
+ equipScoreTotal = 0 #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
#玩家当前可装备的装备类型
for equipIndex in xrange(playerEquip.GetCount()):
@@ -468,6 +472,7 @@
continue
equipPlaceList.append(equipIndex)
+ equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
#基础属性效果
for i in range(0, curEquip.GetEffectCount()):
@@ -496,7 +501,8 @@
#其他非基础部位的
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)
@@ -537,6 +543,11 @@
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Suit, allAttrListSuit)
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allAttrListWash)
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
+
+ #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
+ equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
+ #GameWorld.DebugLog("装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
+ curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, equipFightPowerEx)
return
@@ -729,7 +740,7 @@
for suiteKey, cnt in suitCntDict.items():
groupType,suiteType,suiteLV = suiteKey.split('_')
suiteLV = int(suiteLV)
- job = 0 if groupType == '2' else myjob #仙器组合默认职业0
+ job = 0 if groupType == ChConfig.EquipGroupType_Relics else myjob #仙器组合默认职业0
ipyData = IpyGameDataPY.GetIpyGameData('EquipSuitAttr', int(groupType), int(suiteType), int(suiteLV), job)
if not ipyData:
continue
@@ -750,7 +761,7 @@
paramList= [name, cnt, suiteLV, groupType, suiteType]
notifyRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteNotify % (groupType, suiteType, cnt))
if not notifyRecord & pow(2, suiteLV):
- if groupType == '1':
+ if groupType == ChConfig.EquipGroupType_Armor:
if cnt >=5:
PlayerControl.WorldNotify(0, 'EquipSuit5', paramList)
notifyRecord |= pow(2, suiteLV)
@@ -966,6 +977,24 @@
break
return findGroupType
+# 获取满套装化的最低阶数,如5件套,4件5级,1件3级,则返回3
+def GetEquipSuitsLVByType(curPlayer, suitType, groupType):
+ suiteLV = 999
+ equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
+ if groupType not in equipSuitTypeDict:
+ return 0
+ maxCnt = len(equipSuitTypeDict[groupType])
+ cnt = 0
+ for equipPlace in equipSuitTypeDict[groupType]:
+ curSuiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suitType)
+ if curSuiteLV > 0:
+ cnt += 1
+ suiteLV = min(curSuiteLV, suiteLV)
+
+ if cnt != maxCnt:
+ return 0
+ return 0 if suiteLV == 999 else suiteLV
+
## 通知公共部位套装等级
def NotifyEquipPartSuiteLV(curPlayer, index=None):
@@ -1072,7 +1101,7 @@
SyncAllEquipAttrActiveInfo(curPlayer, activeType)
if activeType == 0:
- PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
+ PlayerMagicWeapon.CalcMagicWeaponSoulAttr(curPlayer)
else:
RefreshPlayerEquipAttribute(curPlayer)
--
Gitblit v1.8.0