---@class BP_Boot_C:BP_TriggerMechanismBase_C ---@field DamageSphere UStaticMeshComponent ---@field P_BootDisable UParticleSystemComponent ---@field StaticMesh UStaticMeshComponent ---@field BootMesh UStaticMeshComponent ---@field P_Boot UParticleSystemComponent ---@field Scene USceneComponent ---@field DamageValue float --Edit Below-- ---@type BP_Boot_C local MechanismBase = require('Script.Blueprint.MechanismActor.BP_TriggerMechanismBase') local BP_Boot = setmetatable( { TrackFrequency = 5.; }, { __index = MechanismBase, __metatable = MechanismBase } ); function BP_Boot:ReceiveBeginPlay() self.SuperClass.ReceiveBeginPlay(self); MechanismBase.MechanismBeginPlay(self) self:SetMechanismType(MechanismConfig.TriggerMechanismType.Boot) end function BP_Boot:ReceiveEndPlay() self:MechanismEndPlay() self.SuperClass.ReceiveEndPlay(self); end function BP_Boot:Trigger(InTriggeredPlayer, InTriggerDevice, InEnergyValue) MechanismBase.Trigger(self, InTriggeredPlayer, InTriggerDevice, InEnergyValue) UGCSendRPCSystem.ActorRPCNotify(nil, self, "ClientEnableBoot", UGCPlayerStateSystem.GetTeamID(InTriggeredPlayer), InEnergyValue / self.EnergyConsumptionSpeed) self:SetCollisionIsEnable(true) self.TrackHandle = UGCEventSystem.SetTimerLoop(self, self.GiveOverlappingPlayerDamage, 1./ self.TrackFrequency) end function BP_Boot:CloseMechanism() MechanismBase.CloseMechanism(self) self:SetCollisionIsEnable(false) if self.TrackHandle then UGCEventSystem.StopTimer(self.TrackHandle) end end function BP_Boot:EnableClientTriggerEffects() MechanismBase.EnableClientTriggerEffects(self) self.P_BootDisable:SetHiddenInGame(true) self:SetCollisionIsEnable(true) end function BP_Boot:DisableClientTriggerEffects() MechanismBase.DisableClientTriggerEffects(self) self.P_BootDisable:SetHiddenInGame(false) self.P_Boot:SetActive(false, false) self:SetCollisionIsEnable(false) end function BP_Boot:ClientEnableBoot(TeamID, LifeTime) self.P_Boot:SetFloatParameter("LifeTime", LifeTime) local TeamColor = TeamConfig.TeamColor[TeamID] if TeamColor then local VectorColor = KismetMathLibrary.Conv_LinearColorToVector(TeamColor) self.P_Boot:SetVectorParameter("Color", VectorHelper.MulNumber(VectorColor, 10)) end self.P_Boot:SetActive(true, true) end function BP_Boot:CheckPlayerInRange(PlayerPawn) return self.BootMesh:IsOverlappingActor(PlayerPawn) end function BP_Boot:GiveOverlappingPlayerDamage() local EnableDamagePlayerKeys = self:GetEnableDamagePlayer(self.TriggeredPlayer) local CauserController = UGCGameSystem.GetPlayerControllerByPlayerKey(self.TriggeredPlayer) for i, PlayerKey in pairs(EnableDamagePlayerKeys) do local TempPawn = UGCGameSystem.GetPlayerPawnByPlayerKey(PlayerKey) if TempPawn and TempPawn:IsAlive() and self.DamageSphere:IsOverlappingActor(TempPawn) then UGCGameSystem.ApplyDamage(TempPawn, self.DamageValue / self.TrackFrequency, CauserController, self, self.MechanismType) end end end function BP_Boot:SetCollisionIsEnable(bEnable) self.BootMesh:SetCollisionEnabled(bEnable and ECollisionEnabled.QueryAndPhysics or ECollisionEnabled.NoCollision) end return BP_Boot;