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

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;