62 lines
2.3 KiB
Lua
62 lines
2.3 KiB
Lua
local SimpleSkillTask = require("Script.SimpleSkill.Task.SimpleSkillTask")
|
|
local SimpleSkillTask_ShadowKill = LuaClass("SimpleSkillTask_ShadowKill", SimpleSkillTask)
|
|
|
|
SimpleSkillTask_ShadowKill.CachedSpeedScale = 0
|
|
SimpleSkillTask_ShadowKill.CachedDodgeFunction = nil
|
|
|
|
SimpleSkillTask_ShadowKill.SpeedScaleMultiplier = 1.5
|
|
SimpleSkillTask_ShadowKill.EvadeRateMultiplier = 1.5
|
|
|
|
SimpleSkillTask_ShadowKill.CasterPlayerState = nil
|
|
|
|
function SimpleSkillTask_ShadowKill:ctor(OwnerSkill)
|
|
SimpleSkillTask_ShadowKill.super.ctor(self, OwnerSkill)
|
|
end
|
|
|
|
function SimpleSkillTask_ShadowKill:InitTaskFromData(TaskData, CasterPawn)
|
|
SimpleSkillTask.InitTaskFromData(self, TaskData, CasterPawn)
|
|
|
|
self.TaskName = "ShadowKill"
|
|
end
|
|
|
|
function SimpleSkillTask_ShadowKill:ActivateTask()
|
|
SimpleSkillTask.ActivateTask(self)
|
|
|
|
self:EnableSkillEffect(self.CasterPawn, nil)
|
|
end
|
|
|
|
function SimpleSkillTask_ShadowKill:ActivateTaskInTimer()
|
|
UE.Log("[SimpleSkillTask_ShadowKill] Activated PlayerKey = %s", tostring(self.CasterPawn.PlayerKey))
|
|
|
|
local PlayerState = UGCGameSystem.GetPlayerStateByPlayerKey(self.CasterPawn.PlayerKey)
|
|
if not UE.IsValid(PlayerState) then
|
|
UE.Log("[SimpleSkillTask_ShadowKill] Invalid PlayerState, PlayerKey = %s", tostring(self.CasterPawn.PlayerKey))
|
|
return
|
|
end
|
|
|
|
self.CasterPlayerState = PlayerState
|
|
|
|
if self.CasterPlayerState["Dodge"] ~= nil then
|
|
self.CachedDodgeFunction = self.CasterPlayerState["Dodge"]
|
|
local NewDodgeFunction = function(PlayerState)
|
|
local Dodge = self.CachedDodgeFunction(PlayerState)
|
|
local New = Dodge * self.EvadeRateMultiplier
|
|
UE.Log("[SimpleSkillTask_ShadowKill] Dodge In=%.2f, Out=%.2f", Dodge, New)
|
|
return New
|
|
end
|
|
self.CasterPlayerState["Dodge"] = NewDodgeFunction
|
|
end
|
|
|
|
self.CachedSpeedScale = UGCPawnAttrSystem.GetSpeedScale(self.CasterPawn)
|
|
UGCPawnAttrSystem.SetSpeedScale(self.CasterPawn, self.CachedSpeedScale * self.SpeedScaleMultiplier)
|
|
end
|
|
|
|
function SimpleSkillTask_ShadowKill:DeactivateTask()
|
|
if self.CachedDodgeFunction ~= nil then
|
|
self.CasterPlayerState["Dodge"] = self.CachedDodgeFunction
|
|
end
|
|
|
|
UGCPawnAttrSystem.SetSpeedScale(self.CasterPawn, self.CachedSpeedScale)
|
|
end
|
|
|
|
return SimpleSkillTask_ShadowKill; |