| | |
| | | coolDownTime = curSkill.GetCoolDownTime()
|
| | | remainTime = coolDownTime
|
| | | if isPassiveSkill(curSkill):
|
| | | if curSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
|
| | | # 天赋有减CD效果
|
| | | reduceSkillCDPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, None, curSkill, ChConfig.TriggerType_GiftReduceCD)
|
| | | # 减CD比率
|
| | | if reduceSkillCDPer > 0:
|
| | | remainTime = int(remainTime * max(0, ShareDefine.Def_MaxRateValue - reduceSkillCDPer) / ShareDefine.Def_MaxRateValue)
|
| | | |
| | | # 被动技能的处理和主动技能区分
|
| | | curSkill.SetRemainTime(remainTime)
|
| | | return
|
| | |
| | | # remainTime = skillData.GetCoolDownTime()
|
| | |
|
| | | reduceSkillCDPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, None, curSkill, ChConfig.TriggerType_ReduceCD)
|
| | |
|
| | | # 减CD比率
|
| | | if reduceSkillCDPer > 0:
|
| | | remainTime = int(remainTime * max(0, ShareDefine.Def_MaxRateValue - reduceSkillCDPer) / ShareDefine.Def_MaxRateValue)
|
| | |
| | | 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
|
| | |
|
| | | ## 刷新玩家所有技能的剩余时间(上线)
|
| | |
| | | # @param curNPC NPC实例
|
| | | # @param summonID 召唤兽的NPCID
|
| | | # @return 召唤兽数量
|
| | | def GetSummonCountByNPCID(curNPC, summonID):
|
| | | def GetSummonCountByNPCID(gameObj, summonID):
|
| | | count = 0
|
| | | for i in range(0, curNPC.GetSummonCount()):
|
| | | summonNPC = curNPC.GetSummonNPCAt(i)
|
| | | for i in range(0, gameObj.GetSummonCount()):
|
| | | summonNPC = gameObj.GetSummonNPCAt(i)
|
| | |
|
| | | if not summonNPC:
|
| | | continue
|
| | |
| | | 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
|