112 lines
3.6 KiB
Lua
112 lines
3.6 KiB
Lua
|
---@class BP_LandMine_C:BP_PlaceItemBase_C
|
||
|
---@field P_MiniGames_Boom_01 UParticleSystemComponent
|
||
|
---@field SphereDamage USphereComponent
|
||
|
---@field Sphere USphereComponent
|
||
|
---@field StaticMesh UStaticMeshComponent
|
||
|
---@field ExplosionSound UAkAudioEvent
|
||
|
--Edit Below--
|
||
|
|
||
|
|
||
|
local PlaceItemBase = require("Script.Blueprint.PlaceItems.BP_PlaceItemBase")
|
||
|
local BP_LandMine = setmetatable(
|
||
|
{
|
||
|
bIsCooling = false;
|
||
|
Damage = 0;
|
||
|
CoolingTime = 0;
|
||
|
},
|
||
|
{
|
||
|
__index = PlaceItemBase,
|
||
|
__metatable = PlaceItemBase
|
||
|
}
|
||
|
)
|
||
|
|
||
|
function BP_LandMine:ReceiveBeginPlay()
|
||
|
self.SuperClass.ReceiveBeginPlay(self);
|
||
|
PlaceItemBase.ParentBeginPlay(self)
|
||
|
if self:HasAuthority() then
|
||
|
UGCSystemLibrary.BindBeginOverlapFunc(self.Sphere, self.OnBeginOverlap, self)
|
||
|
end
|
||
|
self.Damage = PlacementModeConfig.ItemInfo[EPlaceItemType.LandMine].Param.Damage
|
||
|
self.CoolingTime = PlacementModeConfig.ItemInfo[EPlaceItemType.LandMine].Param.CoolingTime
|
||
|
end
|
||
|
|
||
|
function BP_LandMine:ReceiveEndPlay()
|
||
|
PlaceItemBase.ParentEndPlay(self)
|
||
|
self.SuperClass.ReceiveEndPlay(self);
|
||
|
end
|
||
|
|
||
|
function BP_LandMine:SetActive(InActive)
|
||
|
-- UGCLogSystem.Log("[BP_LandMine_SetActive]")
|
||
|
PlaceItemBase.SetActive(self, InActive)
|
||
|
if self.CoolingTimeHandle then
|
||
|
UGCEventSystem.StopTimer(self.CoolingTimeHandle)
|
||
|
self.CoolingTimeHandle = nil
|
||
|
end
|
||
|
self.bIsCooling = false
|
||
|
end
|
||
|
|
||
|
function BP_LandMine:OnBeginOverlap(OverlappedComp, Other, OtherComp, OtherBodyIndex, bFromSweep, SweepResult)
|
||
|
-- UGCLogSystem.Log("[BP_LandMine_OnBeginOverlap] bIsCooling:%s, bEnableActive:%s", tostring(self.bIsCooling), tostring(self.bEnableActive))
|
||
|
if self.bEnableActive and not self.bIsCooling and Other.PlayerKey ~= UGCGameSystem.GameState:GetNowDefender() then
|
||
|
UGCLogSystem.Log("[BP_LandMine_OnBeginOverlap]2")
|
||
|
self:Explosion()
|
||
|
self.bIsCooling = true
|
||
|
UGCEventSystem.SetTimer(self, function() self.bIsCooling = false end, self.CoolingTime)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function BP_LandMine:Explosion()
|
||
|
local AllPawn = UGCGameSystem.GetAllPlayerPawn()
|
||
|
local Defender = UGCGameSystem.GameState:GetNowDefender()
|
||
|
local DefenderPC = UGCGameSystem.GetPlayerControllerByPlayerKey(Defender)
|
||
|
for i, v in pairs(AllPawn) do
|
||
|
if v.PlayerKey ~= Defender and self.SphereDamage:IsOverlappingActor(v) then
|
||
|
if PlacementModeConfig.IsPlaceMode() then
|
||
|
UGCGameSystem.ApplyDamage(v, self.Damage, v:GetController(), self, EDamageType.UGCCustomDamageType + 1)
|
||
|
UGCLogSystem.Log("[BP_LandMine_Explosion]1 Damage:%s", tostring(self.Damage))
|
||
|
else
|
||
|
UGCGameSystem.ApplyDamage(v, self.Damage, DefenderPC, self, EDamageType.UGCCustomDamageType + 1)
|
||
|
UGCLogSystem.Log("[BP_LandMine_Explosion]2 Damage:%s", tostring(self.Damage))
|
||
|
end
|
||
|
UGCLogSystem.Log("[BP_LandMine_Explosion]3")
|
||
|
end
|
||
|
end
|
||
|
UGCSendRPCSystem.ActorRPCNotify(nil, self, "ClientExplosionEffect")
|
||
|
end
|
||
|
|
||
|
function BP_LandMine:ClientExplosionEffect()
|
||
|
self.P_MiniGames_Boom_01:SetActive(true, true)
|
||
|
UGCSoundManagerSystem.PlaySoundAtLocation(self.ExplosionSound, self:K2_GetActorLocation(), self:K2_GetActorRotation())
|
||
|
end
|
||
|
|
||
|
--[[
|
||
|
function BP_LandMine:ReceiveBeginPlay()
|
||
|
self.SuperClass.ReceiveBeginPlay(self);
|
||
|
end
|
||
|
--]]
|
||
|
|
||
|
--[[
|
||
|
function BP_LandMine:ReceiveTick(DeltaTime)
|
||
|
self.SuperClass.ReceiveTick(self, DeltaTime);
|
||
|
end
|
||
|
--]]
|
||
|
|
||
|
--[[
|
||
|
function BP_LandMine:ReceiveEndPlay()
|
||
|
self.SuperClass.ReceiveEndPlay(self);
|
||
|
end
|
||
|
--]]
|
||
|
|
||
|
--[[
|
||
|
function BP_LandMine:GetReplicatedProperties()
|
||
|
return
|
||
|
end
|
||
|
--]]
|
||
|
|
||
|
--[[
|
||
|
function BP_LandMine:GetAvailableServerRPCs()
|
||
|
return
|
||
|
end
|
||
|
--]]
|
||
|
|
||
|
return BP_LandMine;
|