58 lines
2.0 KiB
Lua
58 lines
2.0 KiB
Lua
---@class BP_Skill_IceFrost_C:BP_Skill_Actor_C
|
|
--Edit Below--
|
|
|
|
local SkillActorBase = require('Script.Blueprint.SceneObject.SkillActor.BP_Skill_Actor')
|
|
local BP_Skill_IceFrost = setmetatable(
|
|
{
|
|
AdditionDamageRateTable = {2.0, 3.0, 4.0, 5.0},
|
|
SpeedScaleReductionRateTable = {0.8, 0.7, 0.6, 0.5},
|
|
CurDamageRate = 0.0,
|
|
CurSpeedScaleReductionRate = 0.0,
|
|
CachedSpeedScales = {},
|
|
},
|
|
{
|
|
__index = SkillActorBase,
|
|
__metatable = SkillActorBase
|
|
}
|
|
);
|
|
|
|
|
|
function BP_Skill_IceFrost:ReceiveBeginPlay()
|
|
SkillActorBase.ReceiveBeginPlay(self)
|
|
self:SetSphereRadius(200)
|
|
end
|
|
|
|
function BP_Skill_IceFrost:ReceiveEndPlay()
|
|
for Monster, SpeedScale in pairs(self.CachedSpeedScales) do
|
|
if Monster ~= nil and UE.IsValid(Monster) then
|
|
UGCSimpleCharacterSystem.SetSpeedScale(Monster, SpeedScale)
|
|
end
|
|
end
|
|
self.CachedSpeedScales = {}
|
|
self.SuperClass.ReceiveEndPlay(self)
|
|
end
|
|
|
|
function BP_Skill_IceFrost:SetLevel(NewLevel)
|
|
SkillActorBase.SetLevel(self, NewLevel)
|
|
|
|
self.CurDamageRate = self.AdditionDamageRateTable[NewLevel]
|
|
self.CurSpeedScaleReductionRate = self.SpeedScaleReductionRateTable[NewLevel]
|
|
end
|
|
|
|
function BP_Skill_IceFrost:OnMonsterBeginOverlap(Monster)
|
|
local SpeedScale = UGCSimpleCharacterSystem.GetSpeedScale(Monster)
|
|
self.CachedSpeedScales[Monster] = SpeedScale
|
|
UGCSimpleCharacterSystem.SetSpeedScale(Monster, SpeedScale * self.CurSpeedScaleReductionRate)
|
|
|
|
local DamageAmount = 100 + UGCGameSystem.GetPlayerStateByPlayerKey(self.CasterPawn.PlayerKey).Attributes[AttributeType.Base].Base_Attack * self.CurDamageRate
|
|
local EventInstigator = UGCGameSystem.GetPlayerControllerByPlayerKey(self.CasterPawn.PlayerKey)
|
|
UGCGameSystem.ApplyDamage(Monster, DamageAmount, EventInstigator, self.CasterPawn, EDamageType.ShootDamage)
|
|
end
|
|
|
|
function BP_Skill_IceFrost:OnMonsterEndOverlap(Monster)
|
|
if self.CachedSpeedScales[Monster] then
|
|
UGCSimpleCharacterSystem.SetSpeedScale(Monster, self.CachedSpeedScales[Monster])
|
|
end
|
|
end
|
|
|
|
return BP_Skill_IceFrost; |