63 lines
1.9 KiB
Lua
63 lines
1.9 KiB
Lua
---@class BP_Skill_FireDomain_C:BP_Skill_Actor_C
|
|
--Edit Below--
|
|
|
|
local SkillActorBase = require('Script.Blueprint.SceneObject.SkillActor.BP_Skill_Actor')
|
|
local BP_Skill_FireDomain = setmetatable(
|
|
{
|
|
AdditionInRangeDamageTable = {200, 400, 600, 800},
|
|
CurInRangeDamage = 0.0,
|
|
|
|
InRangeMonsters = {},
|
|
},
|
|
{
|
|
__index = SkillActorBase,
|
|
__metatable = SkillActorBase
|
|
}
|
|
);
|
|
|
|
|
|
function BP_Skill_FireDomain:ReceiveBeginPlay()
|
|
SkillActorBase.ReceiveBeginPlay(self)
|
|
self:SetSphereRadius(200)
|
|
|
|
if self:HasAuthority() then
|
|
self.LoopTimerHandle = EventSystem.SetTimerLoop(self, function()
|
|
if self.CasterPawn == nil or UE.IsValid(self.CasterPawn) == false then
|
|
return
|
|
end
|
|
local EventInstigator = UGCGameSystem.GetPlayerControllerByPlayerKey(self.CasterPawn.PlayerKey)
|
|
for _, Monster in pairs(self.InRangeMonsters) do
|
|
if Monster ~= nil and UE.IsValid(Monster) and Monster.bIsDead == false then
|
|
UGCGameSystem.ApplyDamage(Monster, self.CurInRangeDamage, EventInstigator, self.CasterPawn, EDamageType.ShootDamage)
|
|
end
|
|
end
|
|
end, 1.0)
|
|
end
|
|
end
|
|
|
|
function BP_Skill_FireDomain:ReceiveEndPlay()
|
|
if self:HasAuthority() then
|
|
if UE.IsValid(self.LoopTimerHandle) then
|
|
EventSystem.StopTimer(self.LoopTimerHandle)
|
|
end
|
|
end
|
|
|
|
self.InRangeMonsters = {}
|
|
self.SuperClass.ReceiveEndPlay(self)
|
|
end
|
|
|
|
function BP_Skill_FireDomain:SetLevel(NewLevel)
|
|
SkillActorBase.SetLevel(self, NewLevel)
|
|
|
|
self.CurInRangeDamage = self.AdditionInRangeDamageTable[NewLevel]
|
|
end
|
|
|
|
function BP_Skill_FireDomain:OnMonsterBeginOverlap(Monster)
|
|
table.insert(self.InRangeMonsters, Monster)
|
|
end
|
|
|
|
function BP_Skill_FireDomain:OnMonsterEndOverlap(Monster)
|
|
table.removeValue(self.InRangeMonsters, Monster, true)
|
|
end
|
|
|
|
return BP_Skill_FireDomain; |