|  |  | 
 |  |  | def PlayerLoginMergeServerSkillLogic(curPlayer, tick):
 | 
 |  |  |     playerID = curPlayer.GetPlayerID()
 | 
 |  |  | 
 | 
 |  |  |     if not GameWorld.IsMergeServer():
 | 
 |  |  |     if not GameWorld.IsCrossServer():
 | 
 |  |  |         GameWorld.DebugLog("非跨服服务器上线不清除buff...", playerID)
 | 
 |  |  |         return
 | 
 |  |  |     
 | 
 |  |  |     ClearBuffSkillTypeIDList = ReadChConfig.GetEvalChConfig("ClearBuffSkillTypeID")
 | 
 |  |  |     #ClearBuffSkillTypeIDList = ReadChConfig.GetEvalChConfig("ClearBuffSkillTypeID")
 | 
 |  |  |     ClearBuffSkillTypeIDList = []
 | 
 |  |  |     # 跨服服务器上线清除增益/减益buff
 | 
 |  |  |     GameWorld.Log("跨服服务器上线清除buff...", playerID)
 | 
 |  |  |     clearBuffList = [] # 先汇总再清除,不然索引会变更
 | 
 |  |  | 
 |  |  |             curSkill.SetRemainTime(0)
 | 
 |  |  |             GameWorld.DebugLog("        SetRemainTime 0 skillName=%s,skillTypeID=%s" 
 | 
 |  |  |                                % (curSkill.GetSkillName(), curSkill.GetSkillTypeID()), playerID)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def ResetAllSkillCD(curPlayer):
 | 
 |  |  |     skillManager = curPlayer.GetSkillManager()
 | 
 |  |  |     for i in xrange(skillManager.GetSkillCount()):
 | 
 |  |  |         skill = skillManager.GetSkillByIndex(i)
 | 
 |  |  |         if skill.GetRemainTime() != 0:
 | 
 |  |  |             skill.SetRemainTime(0)
 | 
 |  |  |             skill.Sync_Skill()
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | ## 刷新玩家所有技能的剩余时间(上线)
 | 
 |  |  | 
 |  |  |         GameWorld.Log('###技能伤害血量异常,数值错误 = %s,技能类型ID = %s' % (lostValue, skillTypeID))
 | 
 |  |  |         return
 | 
 |  |  |     
 | 
 |  |  |     if not curObj.GetCanAttack():
 | 
 |  |  |         # 无敌不掉血
 | 
 |  |  |         ## 后续有其他情况也应考虑进来,如镖车是否某状态不掉血
 | 
 |  |  |         return
 | 
 |  |  |      | 
 |  |  |     #lostValue = GetGoblinLostHP(curObj, lostValue)
 | 
 |  |  |     curObjType = curObj.GetGameObjType()
 | 
 |  |  |     curSkill = GameWorld.GetGameData().FindSkillByType(skillTypeID, 1)
 | 
 |  |  | 
 |  |  |     
 | 
 |  |  |     notifyLostValue = lostValue
 | 
 |  |  |     curObjHP_BeforeAttack = GameObj.GetHP(curObj)
 | 
 |  |  |     if curObjHP_BeforeAttack == 0:
 | 
 |  |  |         # 没有血量不能再触发
 | 
 |  |  |         return
 | 
 |  |  |     
 | 
 |  |  |     if reduceHP :
 | 
 |  |  |         lostValue = AttackCommon.CalcAtkProDef(buffOwner, curObj, lostValue, curSkill, tick)
 | 
 |  |  |         # 血盾 
 | 
 |  |  | 
 | 
 |  |  |         lostValue = AttackCommon.CalcBloodShield(buffOwner, curObj, lostValue)
 | 
 |  |  |         
 | 
 |  |  |         #剩余血量
 | 
 |  |  | 
 |  |  |     
 | 
 |  |  |     #无法找到Buff拥有者
 | 
 |  |  |     if not buffOwner:
 | 
 |  |  |         AttackCommon.DoLogic_ObjDead(curObj)
 | 
 |  |  |         AttackCommon.DoLogic_ObjDead(None, curObj, curSkill, tick)
 | 
 |  |  |         return
 | 
 |  |  |         
 | 
 |  |  |     #NPC需要手动添加伤血和仇恨, 因为无调用DoAttack
 |