| | |
| | |
|
| | | if atkObjType == IPY_GameWorld.gotPlayer:
|
| | | NotifyBattlefieldHelp(False, atkObj) # 击杀的暂只实时通知自己
|
| | | |
| | | # 玩家被玩家击杀,掉落个人buff
|
| | | if defObjType == IPY_GameWorld.gotPlayer:
|
| | | DoDropPersonBuffOnKilled(atkObj, defObj, tick)
|
| | | |
| | | return
|
| | |
|
| | | def DoFB_NPCDead(curNPC):
|
| | |
| | | NotifyBattlefieldHelp()
|
| | | return
|
| | |
|
| | | def DoDropPersonBuffOnKilled(atkPlayer, defPlayer, tick):
|
| | | dropPersonBuffNPCList = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldDropPersonBuff", 1)
|
| | | if not dropPersonBuffNPCList:
|
| | | return
|
| | | |
| | | dropNPCIDList = []
|
| | | for npcID in dropPersonBuffNPCList:
|
| | | npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
|
| | | if not npcData:
|
| | | continue
|
| | | buffID = npcData.GetSkill1()
|
| | | if not buffID:
|
| | | continue
|
| | | findBuff = SkillCommon.FindBuffByID(defPlayer, buffID)[0]
|
| | | if not findBuff:
|
| | | continue
|
| | | |
| | | if findBuff.GetLayer():
|
| | | dropNPCIDList.extend([npcID] * findBuff.GetLayer())
|
| | | else:
|
| | | dropNPCIDList.append(npcID)
|
| | | |
| | | count = 0
|
| | | defPosX, defPosY = defPlayer.GetPosX(), defPlayer.GetPosY()
|
| | | while dropNPCIDList and count < 100:
|
| | | count += 1
|
| | | dropX, dropY = GameMap.GetNearbyPosByDis(defPosX, defPosY, 5)
|
| | | if not dropX:
|
| | | continue
|
| | | npcID = dropNPCIDList.pop(0)
|
| | | NPCCommon.SummonMapNpc(npcID, dropX, dropY, playerID=atkPlayer.GetPlayerID())
|
| | | |
| | | return
|
| | |
|
| | | def OnCanMoveTouchNPC(curPlayer, curNPC, tick):
|
| | | ## 检查可否触碰NPC逻辑
|
| | | summonPlayerID = curNPC.GetDictByKey(ChConfig.Def_NPC_Dict_SummonMapNPCPlayerID)
|
| | | if not summonPlayerID:
|
| | | return True
|
| | | if summonPlayerID == curPlayer.GetPlayerID():
|
| | | #GameWorld.DebugLog("OnCanMoveTouchNPC summonPlayerID=%s,owner=True" % summonPlayerID, curNPC.GetID())
|
| | | return True
|
| | | protectTick = IpyGameDataPY.GetFuncCfg("CrossBattlefieldDropPersonBuff", 2) * 1000
|
| | | passTick = tick - curNPC.GetActionTick()
|
| | | if passTick < protectTick:
|
| | | #GameWorld.DebugLog("OnCanMoveTouchNPC in protect! passTick=%s < protectTick=%s" % (passTick, protectTick), curNPC.GetID())
|
| | | return False
|
| | | return True
|
| | |
|
| | | def OnMoveTouchNPC(curPlayer, curNPC, tick):
|
| | | ## 触碰NPC处理逻辑
|
| | | npcID = curNPC.GetNPCID()
|