| | |
| | | if tick - curPlayer.GetPlayerActionTick() < curPlayer.GetPrepareTime():
|
| | | #时间间隔没有到
|
| | | if prepareState in [IPY_GameWorld.pstCollecting, IPY_GameWorld.pstMissionCollecting]:
|
| | | FBLogic.OnCollecting(curPlayer, tick)
|
| | | OnCollecting(curPlayer, tick)
|
| | |
|
| | | return
|
| | |
|
| | |
| | |
|
| | | elif prepareState == IPY_GameWorld.pstMissionCollecting:
|
| | | #任务采集
|
| | | PlayerMissionCollect.EndMissionCollect(curPlayer)
|
| | | PlayerMissionCollect.EndMissionCollect(curPlayer, tick)
|
| | |
|
| | | elif prepareState == ShareDefine.Def_PstProduce:
|
| | | #生产采集(进入生产采集状态,不再重置玩家状态)
|
| | |
| | | #重置玩家状态
|
| | | curPlayer.SetPrepareState(0) # 成功
|
| | | PlayerControl.ChangePlayerAction(curPlayer, IPY_GameWorld.paNull)
|
| | | return
|
| | |
|
| | | def OnCollecting(curPlayer, tick):
|
| | | ## 采集中逻辑
|
| | | tagObj = curPlayer.GetActionObj()
|
| | | if not tagObj:
|
| | | return
|
| | | if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC:
|
| | | return
|
| | | curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex())
|
| | | DoCollectingLostHP(curPlayer, curNPC.GetNPCID(), tick, False)
|
| | | FBLogic.OnCollecting(curPlayer, tick)
|
| | | return
|
| | |
|
| | | def DoCollectingLostHP(curPlayer, npcID, tick, isEnd):
|
| | | ## 执行采集掉血
|
| | | CollectNPCLostHPCfg = ReadChConfig.GetEvalChConfig("CollectNPCLostHP")
|
| | | if npcID not in CollectNPCLostHPCfg:
|
| | | return
|
| | | lostSecond, lostHPPer = CollectNPCLostHPCfg[npcID]
|
| | | lastTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CollectLostHPTick)
|
| | | lostTime = (tick - lastTick) / (lostSecond * 1000.0) # 掉血次数
|
| | | if isEnd:
|
| | | lostTime = int(round(lostTime)) # 采集完的时候四舍五入
|
| | | else:
|
| | | lostTime = int(lostTime)
|
| | | if lostTime < 1:
|
| | | return
|
| | | |
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_CollectLostHPTick, tick)
|
| | | lostValue = int(GameObj.GetMaxHP(curPlayer) * lostHPPer / 100.0) * lostTime
|
| | | skillTypeID, buffOwner = 0, None
|
| | | SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick)
|
| | | return
|
| | |
|
| | |
|
| | |
| | |
|
| | | if not curNPC:
|
| | | return
|
| | | |
| | | DoCollectingLostHP(curPlayer, curNPC.GetNPCID(), tick, True)
|
| | |
|
| | | result = FBLogic.OnCanCollect(curPlayer, curNPC, tick)
|
| | |
|
| | |
| | |
|
| | | def ProcessAreaExp(curPlayer, tick):
|
| | | ##给场景经验
|
| | | if GameWorld.IsCrossServer():
|
| | | return
|
| | | crossMapID = PlayerControl.GetCrossMapID(curPlayer)
|
| | | mapID = crossMapID if crossMapID else GameWorld.GetMap().GetMapID()
|
| | | neutralMapExpAwardDict = IpyGameDataPY.GetFuncEvalCfg('NeutralMapExpAward', 1, {})
|