local SimpleSkillTask = require("Script.SimpleSkill.Task.SimpleSkillTask") local SimpleSkillTask_Anger = LuaClass("SimpleSkillTask_Anger", SimpleSkillTask) SimpleSkillTask_Anger.PawnAttackMultiplier = 2.0 SimpleSkillTask_Anger.PawnReceiveDamageMultiplier = 1.2 SimpleSkillTask_Anger.CasterPlayerState = nil SimpleSkillTask_Anger.CachedGetDamageFunction = nil SimpleSkillTask_Anger.CachedMakeDamageFunction = nil function SimpleSkillTask_Anger:ctor(OwnerSkill) SimpleSkillTask_Anger.super.ctor(self, OwnerSkill) end function SimpleSkillTask_Anger:InitTaskFromData(TaskData, CasterPawn) SimpleSkillTask.InitTaskFromData(self, TaskData, CasterPawn) self.TaskName = "Anger" end function SimpleSkillTask_Anger:ActivateTask() SimpleSkillTask.ActivateTask(self) self:EnableSkillEffect(self.CasterPawn, nil) end function SimpleSkillTask_Anger:ActivateTaskInTimer() UE.Log("[SimpleSkillTask_Anger] Activated PlayerKey = %s", tostring(self.CasterPawn.PlayerKey)) local PlayerState = UGCGameSystem.GetPlayerStateByPlayerKey(self.CasterPawn.PlayerKey) if not UE.IsValid(PlayerState) then UE.Log("[SimpleSkillTask_Anger] Invalid PlayerState, PlayerKey = %s", tostring(self.CasterPawn.PlayerKey)) return end self.CasterPlayerState = PlayerState if self.CasterPlayerState["GetDamage"] ~= nil then self.CachedGetDamageFunction = self.CasterPlayerState["GetDamage"] local NewGetDamageFunction = function(PlayerState, InEnemy, InNum) local DamageAmount = self.CachedGetDamageFunction(PlayerState, InEnemy, InNum) local New = DamageAmount * self.PawnReceiveDamageMultiplier UE.Log("[SimpleSkillTask_Anger] GetDamage In=%.2f, Out=%.2f", DamageAmount, New) return New end self.CasterPlayerState["GetDamage"] = NewGetDamageFunction else UE.Log("[SimpleSkillTask_Anger] PlayerKey = %s has no func GetDamage", tostring(self.CasterPawn.PlayerKey)) end if self.CasterPlayerState["MakeDamage"] ~= nil then self.CachedMakeDamageFunction = self.CasterPlayerState["MakeDamage"] local NewMakeDamageFunction = function(PlayerState, InEnemy) local Damage = self.CachedMakeDamageFunction(PlayerState, InEnemy) local New = Damage * self.PawnAttackMultiplier UE.Log("[SimpleSkillTask_Anger] MakeDamage In=%.2f, Out=%.2f", Damage, New) return New end self.CasterPlayerState["MakeDamage"] = NewMakeDamageFunction else UE.Log("[SimpleSkillTask_Anger] PlayerKey = %s has no func MakeDamage", tostring(self.CasterPawn.PlayerKey)) end end function SimpleSkillTask_Anger:DeactivateTask() if self.CachedGetDamageFunction ~= nil then self.CasterPlayerState["GetDamage"] = self.CachedGetDamageFunction end if self.CachedMakeDamageFunction ~= nil then self.CasterPlayerState["MakeDamage"] = self.CachedMakeDamageFunction end end return SimpleSkillTask_Anger;