---@class BP_MonsterWeaponRecasting_C:BP_MonsterChallenge_C ---@field ShieldParticle UParticleSystemComponent ---@field UAESkillManager UUAESkillManagerComponent ---@field ShieldValue float ---@field ShieldBreachParticle UParticleSystem --Edit Below-- --local BP_MonsterWeaponRecasting = {}; local MonsterChallenge = require('Script.Blueprint.Monster.BP_MonsterChallenge') local BP_MonsterWeaponRecasting = setmetatable( { ID = 1003, --TargetPlayerKey = -1, MonsterName = "WeaponRecasting", }, { __index = MonsterChallenge, __metatable = MonsterChallenge } ); function BP_MonsterWeaponRecasting:ReceiveBeginPlayEx() MonsterChallenge.ReceiveBeginPlayEx(self) if self:HasAuthority() then self:AddSkillShield() self:AddSkillBloodthirsty() end end function BP_MonsterWeaponRecasting:AddSkillBloodthirsty() EventSystem.SetTimerLoop( self, function () self:GetController():GetBlackboardComponent():SetValueAsBool("IsSpeedIncrease", true) if not self:GetController():GetBlackboardComponent():GetValueAsBool("IsSpeedIncrease") then print("[SKYERROR] IsSpeedIncrease Setting Failed [true] : " .. tostring(self:GetController():GetBlackboardComponent():GetValueAsBool("IsSpeedIncrease"))) end EventSystem.SetTimer( self, function () self:GetController():GetBlackboardComponent():SetValueAsBool("IsSpeedIncrease", false) end, 5 ) end, 15 ) end function BP_MonsterWeaponRecasting:AddSkillShield() self:AddModifyDamageDelegationFun( "SkillShield", function (DamageAmount, DamageEvent, EventInstigator, DamageCauser) if self.ShieldValue > 0 then self.ShieldValue = self.ShieldValue - DamageAmount if self.ShieldValue > 0 then return 0 else --self.ShieldParticle:SetVisibility(false) UnrealNetwork.CallUnrealRPC_Multicast(self, "MulticastRPC_SetParticleVisibility", false) UnrealNetwork.CallUnrealRPC_Multicast(self, "MulticastRPC_SpawnParticleSystemAttach") local GivePawnDamage = self.AttackValue local CanDamagePlayers = self:GetCanDamagePlayer() if CanDamagePlayers and table.hasValue(CanDamagePlayers, EventInstigator:K2_GetPawn()) then self:MonsterApplyDamage(EventInstigator:K2_GetPawn(), GivePawnDamage) end return -self.ShieldValue end else return DamageAmount end end ) self.SkillShieldHandle = EventSystem.SetTimerLoop( self, function () UnrealNetwork.CallUnrealRPC_Multicast(self, "MulticastRPC_SetParticleVisibility", true) self.ShieldValue = UGCSimpleCharacterSystem.GetHealthMax(self) / 2 end, 20 ) end function BP_MonsterWeaponRecasting:MulticastRPC_SpawnParticleSystemAttach() GameplayStatics.SpawnEmitterAttached(self.ShieldBreachParticle, self.CapsuleComponent, "", VectorHelper.VectorZero(), VectorHelper.RotZero(), VectorHelper.ScaleOne(), EAttachLocation.SnapToTarget, true) end function BP_MonsterWeaponRecasting:MulticastRPC_SetParticleVisibility(NewVisibility) if self:HasAuthority() then return end self.ShieldParticle:SetVisibility(NewVisibility) end function BP_MonsterWeaponRecasting:ReceiveOnMonsterDeath() MonsterChallenge.ReceiveOnMonsterDeath(self) if self:HasAuthority() then if self.SkillShieldHandle then EventSystem.StopTimer(self.SkillShieldHandle) self.SkillShieldHandle = nil return end else end end return BP_MonsterWeaponRecasting;