|  |  |  | 
|---|
|  |  |  | if tagObj.GetGameObjType() != IPY_GameWorld.gotNPC: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | curNPC = GameWorld.GetNPCManager().GetNPCByIndex(tagObj.GetIndex()) | 
|---|
|  |  |  | DoCollectingLostHP(curPlayer, curNPC.GetNPCID(), tick, False) | 
|---|
|  |  |  | if not curNPC: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | FBLogic.OnCollecting(curPlayer, tick) | 
|---|
|  |  |  | npcID = curNPC.GetNPCID() | 
|---|
|  |  |  | collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID) | 
|---|
|  |  |  | if collectNPCIpyData: | 
|---|
|  |  |  | DoCollectingLostHP(curPlayer, collectNPCIpyData, tick, False) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def DoCollectingLostHP(curPlayer, npcID, tick, isEnd): | 
|---|
|  |  |  | def DoCollectingLostHP(curPlayer, collectNPCIpyData, tick, isEnd): | 
|---|
|  |  |  | ## 执行采集掉血 | 
|---|
|  |  |  | CollectNPCLostHPCfg = ReadChConfig.GetEvalChConfig("CollectNPCLostHP") | 
|---|
|  |  |  | if npcID not in CollectNPCLostHPCfg: | 
|---|
|  |  |  | if not collectNPCIpyData.GetLostHPPer(): | 
|---|
|  |  |  | return | 
|---|
|  |  |  | lostSecond, lostHPPer = CollectNPCLostHPCfg[npcID] | 
|---|
|  |  |  | lostSecond, lostHPPer = collectNPCIpyData.GetLostHPPer() | 
|---|
|  |  |  | lastTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CollectLostHPTick) | 
|---|
|  |  |  | lostTime = (tick - lastTick) / (lostSecond * 1000.0) # 掉血次数 | 
|---|
|  |  |  | if isEnd: | 
|---|
|  |  |  | 
|---|
|  |  |  | lostValue = int(GameObj.GetMaxHP(curPlayer) * lostHPPer / 100.0) * lostTime | 
|---|
|  |  |  | skillTypeID, buffOwner = 0, None | 
|---|
|  |  |  | SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick) | 
|---|
|  |  |  | GameWorld.DebugLog("采集掉血: npcID=%s,lostHPPer=%s,lostTime=%s,lostValue=%s" % (collectNPCIpyData.GetNPCID(), lostHPPer, lostTime, lostValue)) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if not curNPC: | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | DoCollectingLostHP(curPlayer, curNPC.GetNPCID(), tick, True) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = FBLogic.OnCanCollect(curPlayer, curNPC, tick) | 
|---|
|  |  |  |  | 
|---|