local BuffAction_IgnorePoison = { BuffColor = {R = 0.4, G = 1., B = 0.1, A = 1.}; BuffDesc = "全队玩家收到安全区外伤害降低"; PlayerKey = {}; } function BuffAction_IgnorePoison:ApplyBuff(BuffTag, ValidPawn, IsEnablePoison, InDefence) local PC = UGCGameSystem.GetPlayerControllerByPlayerKey(ValidPawn.PlayerKey); PC.EnablePoison = IsEnablePoison; if IsEnablePoison then self:ApplyFunc(ValidPawn, InDefence, true); end self.PlayerKey = { [1] = ValidPawn.PlayerKey; } return true end function BuffAction_IgnorePoison:RemoveBuff(BuffTag, SelfPawn, IsEnablePoison, InDefence) if not UE.IsValid(SelfPawn) then return end local PC = UGCGameSystem.GetPlayerControllerByPlayerKey(SelfPawn.PlayerKey); PC.EnablePoison = true; if InDefence then self:ApplyFunc(SelfPawn, InDefence, false); end end function BuffAction_IgnorePoison:ApplyFunc(SelfPawn, InDefence, IsAdd) local Pawns = UGCGameSystem.GetAllPlayerPawn(); local TeamId = UGCPlayerStateSystem.GetTeamID(SelfPawn.PlayerKey); for Index, Pawn in pairs(Pawns) do local PawnTeamId = UGCPlayerStateSystem.GetTeamID(Pawn.PlayerKey); if PawnTeamId == TeamId then if IsAdd then Pawn:SetParam('Strong', InDefence * Pawn:GetParam('Strong')) else Pawn:SetParam('Strong', Pawn:GetParam('Strong') / InDefence); end end end end function BuffAction_IgnorePoison:GetBenefitPlayer() return self.PlayerKey; end return BuffAction_IgnorePoison;