64 lines
2.5 KiB
Lua
64 lines
2.5 KiB
Lua
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; |