UGCProjects/GZJ/Script/Blueprint/Monster/BP_MonsterInherit_2.lua
2025-01-08 22:46:12 +08:00

101 lines
3.8 KiB
Lua

---@class BP_MonsterInherit_2_C:BP_MonsterBreach_C
---@field P_Yinghua_001 UParticleSystemComponent
---@field Sphere USphereComponent
---@field UAESkillManager UUAESkillManagerComponent
--Edit Below--
--local BP_MonsterInherit_2 = {};
local MonsterBreach = require('Script.Blueprint.Monster.BP_MonsterBreach')
local BP_MonsterInherit_2 = setmetatable(
{
IncreaseDefenseMonsters = {};
ID = 1002;
CheckTargetPlayerKeyHandle = nil;
MonsterName = "MonsterInherit_2",
},
{
__index = MonsterBreach,
__metatable = MonsterBreach
}
);
function BP_MonsterInherit_2:ReceiveBeginPlayEx()
MonsterBreach.ReceiveBeginPlayEx(self)
if self:HasAuthority() then
self:AddReignSkill()
EventSystem.SetTimerLoop(self, function()
self:SetOverlapMonsterIncreaseDefense()
end, 1)
else
self.CheckTargetPlayerKeyHandle = EventSystem.SetTimerLoop(self, function()
if self.TargetPlayerKey ~= -1 then
EventSystem.StopTimer(self.CheckTargetPlayerKeyHandle)
local PC = GameDataManager.GetLocalPlayerController()
if PC.PlayerKey == self.TargetPlayerKey then
UIManager:ClosePanel(EUIType.Inherit)
else
end
else
end
end, 0.5)
end
end
function BP_MonsterInherit_2:ReceiveEndPlayEx()
MonsterBreach.ReceiveEndPlayEx(self)
if self.IncreaseDefenseMonsters then
for _, Monster in pairs(self.IncreaseDefenseMonsters) do
if UE.IsValid(Monster) then
Monster:AddAdditionalDefense(- Monster.BasePhysicalDefense)
end
end
end
self.IncreaseDefenseMonsters = {}
end
function BP_MonsterInherit_2:SetOverlapMonsterIncreaseDefense()
local Monsters = GameplayStatics.GetAllActorsOfClass(self, self:GetMonsterClass(), {})
if Monsters then
print("MonstersLength: " .. #Monsters)
local SelfLocation = self:K2_GetActorLocation()
for k, Monster in pairs(Monsters) do
print("BP_MonsterInherit_1_SetOverlapMonsterIncreaseDefense" .. "ClassName: " .. KismetSystemLibrary.GetObjectName(Monster))
local MonsterLocation = Monster:K2_GetActorLocation()
if VectorHelper.GetDistance(SelfLocation, MonsterLocation) <= 500 then
if (not table.hasValue(self.IncreaseDefenseMonsters, Monster)) and Monster.PhysicalDefense ~= nil then
table.insert(self.IncreaseDefenseMonsters, Monster)
Monster:AddAdditionalDefense(Monster.BasePhysicalDefense)
print("BP_MonsterInherit_1_BeginOtherActor.PhysicalDefense : " .. Monster:GetDefense())
end
else
if table.hasValue(self.IncreaseDefenseMonsters, Monster) then
Monster:AddAdditionalDefense(-Monster.BasePhysicalDefense)
print("BP_MonsterInherit_1_BeginOtherActor.PhysicalDefense : " .. Monster:GetDefense())
table.removeValue(self.IncreaseDefenseMonsters, Monster)
end
end
end
end
end
function BP_MonsterInherit_2:AddReignSkill()
self.ReignSkillHandle = EventSystem.SetTimerLoop(self, function()
local HealthMax = UGCSimpleCharacterSystem.GetHealthMax(self)
self:AddHealth(HealthMax * 0.1)
end, 5.0)
end
function BP_MonsterInherit_2:ReceiveOnMonsterDeath()
MonsterBreach.ReceiveOnMonsterDeath(self)
if self:HasAuthority() then
if self.ReignSkillHandle then EventSystem.StopTimer(self.ReignSkillHandle) self.ReignSkillHandle = nil return end
else
if UE.IsValid(self.P_Yinghua_001) then self.P_Yinghua_001:SetVisibility(false) end
end
end
return BP_MonsterInherit_2;