UGCProjects/GZJ/Script/SimpleSkill/Task/SimpleSkillTask_ShadowKill.lua
2025-01-08 22:46:12 +08:00

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;