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;