From 304ce81e9057b09052faa981bd1ae8b529ba4685 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 22 六月 2019 16:28:40 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py | 64 +++++++++++++++++---------------
1 files changed, 34 insertions(+), 30 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 db0aae0..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
@@ -69,6 +69,12 @@
maxCnt = FBCommon.GetEnterFBMaxCnt(curPlayer, mapID)
if enterCnt + 2 > maxCnt:
return False
+ if lineID in newbielineList:
+ hasEnter = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False,
+ [ChConfig.Def_FBMapID_SealDemon])
+ if hasEnter:
+ GameWorld.DebugLog(" 已进入过该新手线路 %s" % lineID)
+ return False
return True
@@ -104,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:
@@ -130,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)
@@ -159,7 +160,7 @@
return
UpdateHurtInfo(curPlayer, 0, True)
- gameFB = GameWorld.GetGameFB()
+
# 上鼓舞buff
encourageLV = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EncourageLV)
if encourageLV > 0:
@@ -451,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:
@@ -461,17 +465,19 @@
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,
- dropItemMapInfo=dropItemMapInfo)
+ mailTypeKey="SealDemonMail", isMail=isMail, extraItemList=extraItemList, prizeMultiple=prizeMultiple,
+ dropItemMapInfo=dropItemMapInfo,isVirtualDrop=isClientSend)
for jsonItem in jsonItemList:
if 'UserData' in jsonItem:
equipList.append(jsonItem)
@@ -570,25 +576,16 @@
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)
-
- if not prizeItemList:
- leaveTick = FBCommon.GetFBLineStepTime(mapID, lineID) * 1000
- GameWorld.Log("没有奖励,直接通知前端结算!mapID=%s,lineID=%s" % (mapID, lineID), curPlayer.GetPlayerID())
- curPlayer.Sync_TimeTick(IPY_GameWorld.tttLeaveMap, 0, leaveTick, True)
- overDict = {FBCommon.Over_rank:rank, FBCommon.Over_itemInfo:prizeItemList}
- FBCommon.NotifyFBOver(curPlayer, ChConfig.Def_FBMapID_SealDemon, lineID, 1, overDict)
- return
-
- gameFB = GameWorld.GetGameFB()
- tick = GameWorld.GetGameWorld().GetTick()
- gameFB.SetGameFBDict(FBDict_IsOver, tick)
- gameFB.SetPlayerGameFBDict(curPlayer.GetPlayerID(), FBPlayerDict_Rank, rank)
- curPlayer.Sync_TimeTick(ChConfig.tttPickupItem, 0, ChConfig.Def_FBPickupItemTime, True)
- return
+ #GameWorld.Log("通知前端结算!mapID=%s,lineID=%s" % (mapID, lineID), curPlayer.GetPlayerID())
+ overDict = {FBCommon.Over_rank:rank, FBCommon.Over_itemInfo:prizeItemList}
+ FBCommon.NotifyFBOver(curPlayer, mapID, lineID, 1, overDict)
+ PlayerControl.SetCustomMap(curPlayer, 0, 0)
+ return
+
def GetBossRemainHPPer(copyMapID, funcLineID, tick):
bossID = CurFBLineBOSSID(funcLineID)
@@ -609,6 +606,14 @@
return 0
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:死亡的玩家
@@ -642,4 +647,3 @@
packData.OldDouble = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FMTOldDouble)
NetPackCommon.SendFakePack(curPlayer, packData)
return
-
--
Gitblit v1.8.0