local SimpleSkillTask = require("Script.SimpleSkill.Task.SimpleSkillTask") local SimpleSkillTask_Shuttle = LuaClass("SimpleSkillTask_Shuttle", SimpleSkillTask) SimpleSkillTask_Shuttle.AdditionDamageRateTable = {0.6, 0.9, 1.2, 1.5} SimpleSkillTask_Shuttle.CurDamageRate = 0.0 SimpleSkillTask_Shuttle.AttackTimesTable = {6, 7, 8, 9} SimpleSkillTask_Shuttle.CurAttackTimes = 0.0 function SimpleSkillTask_Shuttle:ctor(OwnerSkill) SimpleSkillTask_Shuttle.super.ctor(self, OwnerSkill) end function SimpleSkillTask_Shuttle:InitTaskFromData(TaskData, CasterPawn) SimpleSkillTask.InitTaskFromData(self, TaskData, CasterPawn) self.TaskName = "Shuttle" end function SimpleSkillTask_Shuttle:UpdateSkillLevel(NewSkillLevel) SimpleSkillTask.UpdateSkillLevel(self, NewSkillLevel) self.CurDamageRate = self.AdditionDamageRateTable[NewSkillLevel] self.CurAttackTimes = self.AttackTimesTable[NewSkillLevel] end function SimpleSkillTask_Shuttle:ActivateTask() SimpleSkillTask.ActivateTask(self) local AffectedMonsters = {} local AllAttackTimerHandles = {} local DamageAmount = 150 + self.CurDamageRate * UGCGameSystem.GetPlayerStateByPlayerKey(self.CasterPawn.PlayerKey).Attributes[AttributeType.Base].Base_Attack for _, Monster in pairs(self:GetTargetPawns()) do if Monster ~= nil and UE.IsValid(Monster) and Monster.bIsDead == false then local TimerHandle = EventSystem.SetTimerLoop(UGCGameSystem.GameState, function() if self.CasterPawn ~= nil and UE.IsValid(self.CasterPawn) then local EventInstigator = UGCGameSystem.GetPlayerControllerByPlayerKey(self.CasterPawn.PlayerKey) UGCGameSystem.ApplyDamage(Monster, DamageAmount, EventInstigator, self.CasterPawn, EDamageType.ShootDamage) end end, 0.2) table.insert(AllAttackTimerHandles, TimerHandle) table.insert(AffectedMonsters, Monster) self:EnableDirectionalEffect(32, self.CasterPawn, Monster) end end if table.isEmpty(AllAttackTimerHandles) then return end EventSystem.SetTimer(UGCGameSystem.GameState, function() for _, TimerHandle in pairs(AllAttackTimerHandles) do EventSystem.StopTimer(TimerHandle) end end, 0.2 * self.CurAttackTimes) self:EnableEffectWithId(33, self.CasterPawn, AffectedMonsters, 0, EEffectSpawnLocationType.Middle) end function SimpleSkillTask_Shuttle:DeactivateTask() end return SimpleSkillTask_Shuttle;