--副将 local FirstPersonEventDispatcher = require"Battle/Logic/Event/FirstPersonEventDispatcher" local BattleEffect = require"Battle/Logic/BattleEffect/BattleEffect" local StratagemSkillSystem = {} local LuaConst=LuaConst --事件系统 --local EventSystem = require('Event/EventSystem') --[[ Tick --]] function StratagemSkillSystem.OnLogicUpdate(entity) local comp_Stratagem = entity.components.stratagem -- 计略 主动技能的cd更新 if comp_Stratagem.StratagemCurCD > 0 then comp_Stratagem.StratagemCurCD = comp_Stratagem.StratagemCurCD - LuaConst.TimeSpanMs if comp_Stratagem.StratagemCurCD <= 0 then comp_Stratagem.StratagemCurCD = 0 if comp_Stratagem.StratagemSkillInfo then -- 主动技的事件派发 FirstPersonEventDispatcher.Player_StratagemSkillCoolDown(entity, nil) end end end end function StratagemSkillSystem.CanUseStratagemSkill(entity) local can = false local compStratagem = entity.components.stratagem if compStratagem and compStratagem.StratagemSkillInfo then if compStratagem.StratagemCurCD <= 0 then can = true end end return can end --[[ 释放主动计略技 --]] function StratagemSkillSystem.ReleaseStratagemSkill(entity) --这里要用主将的skillBase判断键位是否被禁用 if not entity.components.skillBase:IsKeyPosBanned(LuaConst.ESkillKeyPosition.Stratagem) then --新增判断,必须能使用技能时,才能放副将技 if not StratagemSkillSystem.CanUseStratagemSkill(entity) then return end local comp_Stratagem = entity.components.stratagem local stratagemSkillData = comp_Stratagem.StratagemSkillInfo -- 处理battleEffect(目前策划不会配置) if stratagemSkillData.BattleEffectID > 0 then BattleEffect.ExecuteByEffectId(stratagemSkillData.BattleEffectID, nil, entity,entity) end BattleEventSystem.OnEntityStratagemSkill(entity) if GlobalBattleData.Get_IsSkillNoCD() and entity._logicInitData.IsPlayerSelf then return end --更新cd StratagemSkillSystem.StratagemEnterCD(entity) -- 主视角事件统一用 FirstPersonEventDispatcher 派发 FirstPersonEventDispatcher.Player_StratagemSkillCoolDown(entity, comp_Stratagem.StratagemTotalCD) end end --[[ 释放被动后,进入CD --]] function StratagemSkillSystem.StratagemEnterCD(entity) local comp_Stratagem = entity.components.stratagem comp_Stratagem.StratagemCurCD = comp_Stratagem.StratagemTotalCD LevelManager.CurLevelFunc:OnStratagemEnterCD(entity) end function StratagemSkillSystem.OnSwitchHero(fromEntity, toEntity) toEntity.components.stratagem.StratagemCurCD = fromEntity.components.stratagem.StratagemCurCD toEntity.components.stratagem.StratagemTotalCD = fromEntity.components.stratagem.StratagemTotalCD end function StratagemSkillSystem.ClearStratagemCD(entity) local comp_Stratagem = entity.components.stratagem if comp_Stratagem.StratagemCurCD > 0 then comp_Stratagem.StratagemCurCD = 0 if comp_Stratagem.StratagemSkillInfo then -- 主动技的事件派发 FirstPersonEventDispatcher.Player_StratagemSkillCoolDown(entity, nil) end end end return StratagemSkillSystem