72 lines
2.9 KiB
Lua
72 lines
2.9 KiB
Lua
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; |