From 485144792e0323a8467b83ab3e6da22e41f0b4b3 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 06 十一月 2018 14:13:56 +0800
Subject: [PATCH] 4592 【1.2】【开发】潜力技能升级增加流向记录升级成功率
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 50 ++++++++++++++++++++++++++++++++++++--------------
1 files changed, 36 insertions(+), 14 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 6b35dda..374823e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -301,11 +301,14 @@
if strengthenPlayerCnt:
mapID = GameWorld.GetMap().GetMapID()
dataMapID = FBCommon.GetRecordMapID(mapID)
+ formulaKey = "MapCoefficient_%s" % mapID
playerCntAttrCoefficient = playerCntCoefficient.get(mapID, {})
if not playerCntAttrCoefficient and dataMapID in playerCntCoefficient:
playerCntAttrCoefficient = playerCntCoefficient[dataMapID]
+ formulaKey = "MapCoefficient_%s" % dataMapID
if npcID in npcIDPlayerCntCoefficient:
playerCntAttrCoefficient = npcIDPlayerCntCoefficient[npcID]
+ formulaKey = "NPCCoefficient_%s" % npcID
for attrKey, coefficientDict in playerCntAttrCoefficient.items():
if attrKey in attrDict:
attrValue = attrDict[attrKey]
@@ -316,7 +319,15 @@
if not hasattr(npcData, attrFuncName):
continue
attrValue = getattr(npcData, attrFuncName)()
- coefficient = GameWorld.GetDictValueByRangeKey(coefficientDict, strengthenPlayerCnt, 1)
+ # 按字典配置
+ if isinstance(coefficientDict, dict):
+ coefficient = GameWorld.GetDictValueByRangeKey(coefficientDict, strengthenPlayerCnt, 1)
+ # 按公式配置
+ elif isinstance(coefficientDict, str):
+ formulaKey = "%s_%s" % (formulaKey, attrKey)
+ coefficient = eval(FormulaControl.GetCompileFormula(formulaKey, coefficientDict))
+ else:
+ coefficient = 1
attrDict[attrKey] = int(attrValue * coefficient)
#GameWorld.DebugLog("计算NPC属性成长: npcID=%s,strengthenLV=%s,strengthenPlayerCnt=%s,baseMaxHP=%s,attrDict=%s"
@@ -3908,7 +3919,7 @@
return moneyID
return moneyItemList[-1][1]
- def __NPCSpecialDropItem(self, ownerPlayerList, ipyDrop):
+ def __NPCSpecialDropItem(self, dropPlayer, ownerPlayerList, ipyDrop):
'''特殊掉落 (私有特殊掉落 + 击杀次数特殊掉落), 支持摸怪
@return: None
@return: [[ownerPlayer, itemID, isBind, isDropInItemPack], ...]
@@ -3916,6 +3927,12 @@
curNPC = self.__Instance
npcID = curNPC.GetNPCID()
specDropItemList = []
+
+ playerLV = dropPlayer.GetLV()
+ maxDropLV = ipyDrop.GetMaxDropLV()
+ if maxDropLV and playerLV > maxDropLV:
+ GameWorld.DebugLog("超过最大可掉落等级,不掉落物品,特殊掉落!npcID=%s,playerLV(%s) > maxDropLV(%s)" % (npcID, playerLV, maxDropLV))
+ return specDropItemList
# 私有掉落
fbGradePriItemIDDropDict = IpyGameDataPY.GetFuncEvalCfg("FBGradeEquipDropRate", 3)
@@ -4016,7 +4033,7 @@
mapID = FBCommon.GetRecordMapID(mapID)
isGameBoss = ChConfig.IsGameBoss(curNPC)
if isGameBoss:
- GameWorld.Log("NPC开始掉落: npcID=%s,dropPlayerID=%s" % (npcID, dropPlayer.GetPlayerID()))
+ GameWorld.Log("NPC开始掉落: npcID=%s,dropPlayerID=%s" % (npcID, dropPlayer.GetPlayerID()), dropPlayer.GetPlayerID())
if mapID == ChConfig.Def_FBMapID_MunekadoTrial:
return
ipyDrop = GetNPCDropIpyData(npcID)
@@ -4040,13 +4057,17 @@
dropIDList += [moneyID] * dropMoneyCnt
specItemSign = "SpecItem"
- playerSpecDropList = self.__NPCSpecialDropItem(ownerPlayerList, ipyDrop) # 特殊掉落 [[ownerPlayer, itemID, isBind, isDropInItemPack], ...] 私有特殊掉落 + 击杀次数特殊掉落
+ playerSpecDropList = self.__NPCSpecialDropItem(dropPlayer, ownerPlayerList, ipyDrop) # 特殊掉落 [[ownerPlayer, itemID, isBind, isDropInItemPack], ...] 私有特殊掉落 + 击杀次数特殊掉落
dropIDList += [specItemSign] * len(playerSpecDropList)
if len(dropIDList) > 5:
#打乱物品顺序
random.shuffle(playerSpecDropList)
random.shuffle(dropIDList)
+
+ if not dropIDList and isGameBoss:
+ GameWorld.ErrLog("Boss没有掉落: dropPlayerLV=%s,ipyWorldLV=%s,maxDropLV=%s"
+ % (dropPlayer.GetLV(), ipyDrop.GetMaxWorldLV(), ipyDrop.GetMaxDropLV()), dropPlayer.GetPlayerID())
gameMap = GameWorld.GetMap()
dropPosX, dropPosY = curNPC.GetPosX(), curNPC.GetPosY() # 以NPC为中心点开始掉落
@@ -4276,7 +4297,7 @@
self.__AllKillerDict, curTeam, hurtType, hurtID = self.__FindNPCKillerInfo(isGameBoss)
self.__OwnerHurtType, self.__OwnerHurtID = hurtType, hurtID
if isGameBoss:
- GameWorld.Log("npcID=%s,hurtType=%s,hurtID=%s" % (npcID, hurtType, hurtID))
+ GameWorld.Log("__GiveObjPrize npcID=%s,hurtType=%s,hurtID=%s" % (npcID, hurtType, hurtID))
#最后一击处理
self.__DoLastTimeHurtLogic()
@@ -4652,7 +4673,7 @@
curTeamPlayer.GetPosY()) > ChConfig.Def_Team_GetExpScreenDist:
if isLog:
GameWorld.Log(" i=%s, 队员超出指定距离!memPlayerID=%s,npcPos(%s,%s),playerPos(%s,%s)"
- % (i, curTeamPlayer.GetPlayerID(), curNPC.GetPosX(), curNPC.GetPosY(), curPlayer.GetPosX(), curPlayer.GetPosY()))
+ % (i, curTeamPlayer.GetPlayerID(), curNPC.GetPosX(), curNPC.GetPosY(), curTeamPlayer.GetPosX(), curTeamPlayer.GetPosY()))
continue
hurtObjTuple = (None, curTeam)
@@ -4801,7 +4822,7 @@
npcID = curNPC.GetNPCID()
defObjType = curNPC.GetGameObjType()
mapFBType = GameWorld.GetMap().GetMapFBType()
- mapID = GameWorld.GetMap().GetMapID()
+ mapID = FBCommon.GetRecordMapID(GameWorld.GetMap().GetMapID())
playerID = curPlayer.GetPlayerID()
# 如果是NPC
@@ -4833,13 +4854,14 @@
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_WorldBOSS)
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_WorldBOSS, 1)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
- elif limitIndex == 1: #BOSS之家
- # BOSS之家BOSS击杀成就
- PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillBossHomeBoss, 1)
- # 每日活动
- PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
- PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
- PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
+ if ChConfig.IsGameBoss(curNPC) and mapID == ChConfig.Def_FBMapID_BossHome:
+ #BOSS之家
+ # BOSS之家BOSS击杀成就
+ PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_KillBossHomeBoss, 1)
+ # 每日活动
+ PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_BOSSHome)
+ PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_BOSSHome, 1)
+ PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
return
--
Gitblit v1.8.0