42 lines
1.7 KiB
Lua
42 lines
1.7 KiB
Lua
local SimpleSkillTask = require("Script.SimpleSkill.Task.SimpleSkillTask")
|
|
local SimpleSkillTask_Heal = LuaClass("SimpleSkillTask_Heal", SimpleSkillTask)
|
|
|
|
function SimpleSkillTask_Heal:ctor(OwnerSkill)
|
|
SimpleSkillTask_Heal.super.ctor(self, OwnerSkill)
|
|
end
|
|
|
|
function SimpleSkillTask_Heal:InitTaskFromData(TaskData, CasterPawn)
|
|
SimpleSkillTask.InitTaskFromData(self, TaskData, CasterPawn)
|
|
|
|
self.TaskName = "Heal"
|
|
end
|
|
|
|
function SimpleSkillTask_Heal:ActivateTask()
|
|
SimpleSkillTask.ActivateTask(self)
|
|
local Pawns = self:GetTargetPawns()
|
|
for k, Pawn in pairs(Pawns) do
|
|
local MaxHP = UGCPawnAttrSystem.GetHealthMax(Pawn)
|
|
if Pawn:IsFullHealth() == false and MaxHP > 0 then
|
|
local CurHP = UGCPawnAttrSystem.GetHealth(Pawn)
|
|
local LosedHP = MaxHP - CurHP
|
|
local HealHPDelta = LosedHP * 0.4
|
|
local ResultCurHP = CurHP + HealHPDelta + MaxHP * 0.2
|
|
UGCPawnAttrSystem.SetHealth(Pawn, ResultCurHP)
|
|
UE.Log("[SimpleSkillTask_Heal] Player:%s, Healed HP = %.2f", KismetSystemLibrary.GetObjectName(Pawn), ResultCurHP)
|
|
end
|
|
|
|
local MaxEnergy = Pawn.EnergyData.Max
|
|
if Pawn:IsFullEnergy() == false and MaxEnergy > 0 then
|
|
local CurEnergy = Pawn.EnergyData.Cur
|
|
local LosedEnergy = MaxEnergy - CurEnergy
|
|
local HealEnergyDelta = LosedEnergy * 0.4
|
|
local ResultCurEnergy = CurEnergy + HealEnergyDelta
|
|
Pawn.EnergyData.Cur = math.clamp(ResultCurEnergy, CurEnergy, MaxEnergy)
|
|
UE.Log("[SimpleSkillTask_Heal] Player:%s, Healed Energy = %.2f", KismetSystemLibrary.GetObjectName(Pawn), ResultCurEnergy)
|
|
end
|
|
|
|
self:EnableSkillEffect(Pawn, nil)
|
|
end
|
|
end
|
|
|
|
return SimpleSkillTask_Heal; |