From e852ca15d3d08743c816d14d0959f274c5015573 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期六, 22 六月 2019 16:07:46 +0800 Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 - 修复追神摄魂计算命中个数问题 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py | 34 +++++++++++++++++++++------------- 1 files changed, 21 insertions(+), 13 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py index 3a9d6bf..3228329 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py @@ -110,12 +110,7 @@ if mapID == ChConfig.Def_FBMapID_SealDemonEx: return lineID = GameWorld.GetGameWorld().GetPropertyID() - 1 - bossID = CurFBLineBOSSID(lineID) - key = ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn % bossID - GameWorld.GetGameWorld().SetGameWorldDict(key, 1) - GameWorld.DebugLog(' 刷BOSSbossID=%s' % bossID) - - + refreshIDList = FBCommon.GetFBLineRefreshNPC(ChConfig.Def_FBMapID_SealDemon, lineID) if refreshIDList: for refreshID in refreshIDList: @@ -136,11 +131,11 @@ FBCommon.SetFBPropertyMark(lineID) else: lineID = GameWorld.GetGameWorld().GetPropertyID() - 1 - + gameFB = GameWorld.GetGameFB() playerCnt = GameWorld.GetGameWorld().GetMapCopyPlayerManager().GetPlayerCount() GameWorld.DebugLog("DoEnterFB...playerCnt=%s,lineID=%s" % (playerCnt, lineID), playerID) - - if lineID < 0: + overTick = gameFB.GetGameFBDictByKey(FBDict_IsOver) + if lineID < 0 or overTick: PlayerControl.PlayerLeaveFB(curPlayer) return hadDelTicket = FBCommon.GetHadDelTicket(curPlayer) @@ -165,7 +160,7 @@ return UpdateHurtInfo(curPlayer, 0, True) - gameFB = GameWorld.GetGameFB() + # 上鼓舞buff encourageLV = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EncourageLV) if encourageLV > 0: @@ -457,6 +452,9 @@ def GiveSealDemonAward(curPlayer, lineID, rank, isMail=False, isClientSend=False, dropItemMapInfo=[]): newbielineList = IpyGameDataPY.GetFuncEvalCfg('SealDemonNewbieLine') isNewbieLine = lineID in newbielineList + sealDemonIpyData = GetSealDemonIpyData(lineID) + if not sealDemonIpyData: + return {} prizeMultiple = 1 addCnt = 1 if isNewbieLine: @@ -467,16 +465,18 @@ elif isClientSend: return {} else: - prizeMultiple = 2 if rank == 1 else 1 # 第一名执行双倍掉落奖励,其他一次 + #prizeMultiple = 2 if rank == 1 else 1 # 第一名执行双倍掉落奖励,其他一次 + prizeMultiple = 1 # 去除第一名双倍逻辑,改为放在额外奖励产出 isDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTDouble) if isDouble: addCnt = 2 equipList = [] prizeItemDict ={} bossID = CurFBLineBOSSID(lineID) + extraItemList = sealDemonIpyData.GetOwnerAwardItemEx() * addCnt if rank == 1 else [] #for _ in xrange(addCnt): jsonItemList, totalExp, totalMoney = NPCCommon.GiveKillNPCDropPrize(curPlayer, ChConfig.Def_FBMapID_SealDemon, {bossID:addCnt}, - mailTypeKey="SealDemonMail", isMail=isMail, prizeMultiple=prizeMultiple, + mailTypeKey="SealDemonMail", isMail=isMail, extraItemList=extraItemList, prizeMultiple=prizeMultiple, dropItemMapInfo=dropItemMapInfo,isVirtualDrop=isClientSend) for jsonItem in jsonItemList: if 'UserData' in jsonItem: @@ -576,7 +576,7 @@ GameWorld.DebugLog('封魔坛 客户端副本发送结束mapID=%s,lineID=%s,dataList=%s' % (mapID,lineID,dataList), curPlayer.GetPlayerID()) rank, hurt = dataList[:2] prizeItemList = GiveSealDemonAward(curPlayer, lineID, rank, False, True, [curPlayer.GetPosX(), curPlayer.GetPosY(), True]) - if rank == 1: + if rank == 1 and prizeItemList: bossID = CurFBLineBOSSID(lineID) NPCCommon.GameServer_KillGameWorldBoss(bossID, curPlayer.GetName(), hurt, False) @@ -607,6 +607,14 @@ bossID = ipyData.GetNPCID() return bossID +def GetSealDemonIpyData(lineID= -1): + #该分线刷的BOSSID + if lineID == -1: + lineID = GameWorld.GetGameWorld().GetPropertyID() - 1 + if lineID == -1: + return + return IpyGameDataPY.GetIpyGameDataByCondition('SealDemon', {'LineID':lineID}) + ##玩家死亡. # @param curPlayer:死亡的玩家 # @param tick 时间戳 -- Gitblit v1.8.0