|  |  |  | 
|---|
|  |  |  | import ChNetSendPack | 
|---|
|  |  |  | import PlayerState | 
|---|
|  |  |  | import QuestCommon | 
|---|
|  |  |  | import PlayerDogz | 
|---|
|  |  |  | import GMShell | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import random | 
|---|
|  |  |  | 
|---|
|  |  |  | # @param canLock 是否可以锁定玩家(传送点不可锁定, 因为要跨地图寻路) | 
|---|
|  |  |  | # @return 返回值无意义 | 
|---|
|  |  |  | # @remarks 玩家切换地图 | 
|---|
|  |  |  | def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID= -1, msg='', canLock=True, exData1=0): | 
|---|
|  |  |  | def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID=-1, msg='', canLock=True, exData1=0): | 
|---|
|  |  |  | #更改: 死亡允许切换地图, 在副本中被怪打死, 副本时间到, 回收副本 | 
|---|
|  |  |  | #    if curPlayer.GetHP() <= 0 : | 
|---|
|  |  |  | #        GameWorld.Log("死亡无法切换地图") | 
|---|
|  |  |  | 
|---|
|  |  |  | GameWorld.DebugLog("分流boss, bossID=%s,bossShuntLineID=%s" % (bossID, bossShuntLineID), playerID) | 
|---|
|  |  |  | NPCCommon.AddBossShuntRelatedPlayer(curPlayer, tagMapID, bossShuntLineID, bossID, tick) | 
|---|
|  |  |  | return bossShuntLineID | 
|---|
|  |  |  | return tagLineID | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if curMapID == tagMapID: | 
|---|
|  |  |  | GameWorld.DebugLog("同地图切换坐标不处理分流!", playerID) | 
|---|
|  |  |  | return tagLineID | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 可以用来常规分流的线路人数字典信息, 并不是所有线路都可以用来做人数分流的,比如中立地图有多条线用来分流boss,但是只有1条线可用来做常规的人数分流 | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | curBourseMoney = GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney) | 
|---|
|  |  |  | updBourseMoney = curBourseMoney | 
|---|
|  |  |  | #当是交易所扣费时,则必定扣除交易额度 | 
|---|
|  |  |  | if costType == ChConfig.Def_Cost_BourseBuy: | 
|---|
|  |  |  | #当是交易所扣费、钻石红包时,则必定扣除交易额度 | 
|---|
|  |  |  | if costType in ChConfig.UnUseInner_CostType: | 
|---|
|  |  |  | updBourseMoney = max(0, curBourseMoney - price) | 
|---|
|  |  |  | #其他如果当前金子比交易额度还少,则强制调整交易额度为当前金子数(这种情况一般是非交易所消费的,需要同步扣除交易所可购买额度) | 
|---|
|  |  |  | elif updPlayerGold < updBourseMoney: | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OnlyFinalHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_OnlyFinalHurt) # 额外输出伤害 | 
|---|
|  |  |  | PVPAtkBackHP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_PVPAtkBackHP) # PVP攻击回血 | 
|---|
|  |  |  | NPCHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_NPCHurtAddPer) # 对怪物伤害加成 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #其他需作为公式参数的系数 | 
|---|
|  |  |  | AtkSpeedParameter = fpParam.GetCftAtkSpeed() | 
|---|
|  |  |  | 
|---|
|  |  |  | PlayerRefineStove.CalcStoveAttr(curPlayer) | 
|---|
|  |  |  | PlayerFamilyTech.CalcFamilyTechAttr(curPlayer) | 
|---|
|  |  |  | PlayerEquipDecompose.RefreshEDAttr(curPlayer) | 
|---|
|  |  |  | PlayerDogz.RefreshDogzAttr(curPlayer) | 
|---|
|  |  |  | self.RefreshAllState(isForce=True) | 
|---|
|  |  |  | GameWorld.DebugLog("End ReCalcAllState!!!") | 
|---|
|  |  |  | return | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 对怪物伤害加成 | 
|---|
|  |  |  | def GetNPCHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NPCHurtAddPer) | 
|---|
|  |  |  | def SetNPCHurtAddPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value) | 
|---|
|  |  |  | def SetNPCHurtAddPer(curPlayer, value): | 
|---|
|  |  |  | curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value) | 
|---|
|  |  |  | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_NPCHurtAddPer, value, False) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #---职业伤害加成--- | 
|---|
|  |  |  | ## 目标战士伤害加成 | 
|---|
|  |  |  | def GetJobAHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_JobAHurtAddPer) | 
|---|
|  |  |  | 
|---|
|  |  |  | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value, False) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #---特殊伤害概率--- | 
|---|
|  |  |  | ## 富甲一击概率 | 
|---|
|  |  |  | def GetFujiaHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FujiaHitRate) | 
|---|
|  |  |  | def SetFujiaHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FujiaHitRate, value) | 
|---|
|  |  |  | ## 富豪一击概率 | 
|---|
|  |  |  | def GetFuhaoHitRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FuhaoHitRate) | 
|---|
|  |  |  | def SetFuhaoHitRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FuhaoHitRate, value) | 
|---|
|  |  |  | 
|---|
|  |  |  | curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value) | 
|---|
|  |  |  | curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BleedDamage, value, False) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 最终伤害百分比 | 
|---|
|  |  |  | def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer) | 
|---|
|  |  |  | def SetFinalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 最终固定伤害增加 | 
|---|
|  |  |  | def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt) | 
|---|
|  |  |  | def SetFinalHurt(curPlayer, value): | 
|---|