| | |
| | | import PlayerTJG
|
| | | import AICommon
|
| | | import PlayerSuccess
|
| | | import CrossPlayerData
|
| | | import PassiveBuffEffMng
|
| | | import PlayerFamilyRedPacket
|
| | | import FormulaControl
|
| | |
| | | if not __DoClientUseSkillEx(curPlayer, useSkillData, tick):
|
| | | SkillShell.AttackFailNotify(curPlayer, useSkillData)
|
| | | GameWorld.DebugLog("----攻击失败 可能是技能CD %s"%skillTypeID)
|
| | | |
| | | # 根据策划需求 以客户端动作为标准,不可攻击状态也进入CD
|
| | | BaseAttack.Sync_AttackResult(curPlayer, useSkillData)
|
| | | |
| | | if useSkillData and useSkillData.GetSkillID() != ChConfig.Def_SkillID_Somersault:
|
| | | # 跟随玩家同频率攻击
|
| | | PetControl.PetFight(curPlayer, tick)
|
| | |
| | | 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)
|
| | |
|
| | |
| | | #成就
|
| | | PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick, False)
|
| | | #开服红包处理
|
| | | PlayerFamilyRedPacket.ProcessOSRedPacket(curPlayer, tick)
|
| | | #PlayerFamilyRedPacket.ProcessOSRedPacket(curPlayer, tick)
|
| | | #限时抢购
|
| | | PlayerFlashSale.ProcessFlashSaleMail(curPlayer, tick)
|
| | | #地图经验
|
| | | ProcessAreaExp(curPlayer, tick)
|
| | | #跨服数据同步,放最后
|
| | | CrossPlayerData.ProcessCrossPlayer(curPlayer, tick)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | ProcessProDef(curPlayer, tick)
|
| | | return
|
| | |
|
| | | def Sync_PKBossState(curPlayer):
|
| | | psState = 1 if curPlayer.GetDictByKey(ChConfig.Def_PDict_PKStateTick) else 0
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PKState, psState, False)
|
| | | |
| | | bossState = 1 if curPlayer.GetDictByKey(ChConfig.Def_PDict_BossStateTick) else 0
|
| | | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BossState, bossState, False)
|
| | | return
|
| | |
|
| | | # 脱离PK战斗 X秒后按比例恢复
|
| | | def ProcessProDef(curPlayer, tick):
|
| | | if PlayerControl.GetProDefHPPer(curPlayer) == 0:
|