| | |
| | | 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:
|
| | |
| | | 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)
|
| | |
| | | return
|
| | | UpdateHurtInfo(curPlayer, 0, True)
|
| | |
|
| | | gameFB = GameWorld.GetGameFB()
|
| | | |
| | | # 上鼓舞buff
|
| | | encourageLV = gameFB.GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EncourageLV)
|
| | | if encourageLV > 0:
|
| | |
| | | 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:
|
| | |
| | | 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:
|
| | |
| | | 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)
|
| | |
|
| | |
| | | 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 时间戳
|