diff --git a/config/config.lua b/config/config.lua
index 3a49e0258..518d59ed2 100644
--- a/config/config.lua
+++ b/config/config.lua
@@ -260,6 +260,10 @@ C.CharacterSettings = {
                 PartyWatcherSync = true,
                 PartyWatcherOnRight = false,
                 PartyNameLength = 4,
+                PartyBuff = true,
+                    PartyBuffSize = 16,
+                PartyDebuff = true,
+                    PartyDebuffSize = 16,
 
             RaidFrame = true,
                 RaidColorStyle = 2,
@@ -271,7 +275,10 @@ C.CharacterSettings = {
                 RaidHealthHeight = 30,
                 RaidPowerHeight = 2,
                 RaidNameLength = 2,
-
+                RaidBuff = false,
+                    RaidBuffSize = 12,
+                RaidDebuff = false,
+                    RaidDebuffSize = 12,
 
             GroupName = false,
             GroupRole = true,
@@ -282,12 +289,7 @@ C.CharacterSettings = {
 
             SmartRaid = true,
 
-            ShowRaidBuff = false,
-                RaidBuffSize = 8,
 
-            ShowRaidDebuff = false,
-                RaidDebuffSize = 12,
-                RaidDebuffsScale = 1,
 
             PositionBySpec = false,
             ClickToCast = true,
diff --git a/gui/extra.lua b/gui/extra.lua
index 9e0bcf4c0..4111515dc 100644
--- a/gui/extra.lua
+++ b/gui/extra.lua
@@ -2885,6 +2885,141 @@ function GUI:SetupNameLength(parent)
     end
 end
 
+local function UpdateGroupAuras()
+    UNITFRAME:UpdateGroupAuras()
+end
+
+
+
+function GUI:SetupPartyBuffSize(parent)
+    local guiName = 'FreeUIGUISetupPartyBuffSize'
+    TogglePanel(guiName)
+    if extraGUIs[guiName] then
+        return
+    end
+
+    local panel = CreateExtraGUI(parent, guiName)
+    local scroll = GUI:CreateScroll(panel, 220, 540)
+
+    local mKey = 'Unitframe'
+    local db = C.CharacterSettings.Unitframe
+
+    local datas = {
+        [1] = {
+            key = 'PartyBuffSize',
+            value = db.PartyBuffSize,
+            text = L['Icon Size'],
+            min = 12,
+            max = 36,
+            step = 1
+        }
+    }
+
+    local offset = -10
+    for _, v in ipairs(datas) do
+        CreateGroupTitle(scroll, L['Party Buff'], offset)
+        CreateSlider(scroll, mKey, v.key, v.text, v.min, v.max, v.step, v.value, 20, offset - 50, UpdateGroupAuras)
+        offset = offset - 65
+    end
+end
+
+function GUI:SetupPartyDebuffSize(parent)
+    local guiName = 'FreeUIGUISetupPartyDebuffSize'
+    TogglePanel(guiName)
+    if extraGUIs[guiName] then
+        return
+    end
+
+    local panel = CreateExtraGUI(parent, guiName)
+    local scroll = GUI:CreateScroll(panel, 220, 540)
+
+    local mKey = 'Unitframe'
+    local db = C.CharacterSettings.Unitframe
+
+    local datas = {
+        [1] = {
+            key = 'PartyDebuffSize',
+            value = db.PartyDebuffSize,
+            text = L['Icon Size'],
+            min = 12,
+            max = 36,
+            step = 1
+        },
+    }
+
+    local offset = -10
+    for _, v in ipairs(datas) do
+        CreateGroupTitle(scroll, L['Party Debuff'], offset)
+        CreateSlider(scroll, mKey, v.key, v.text, v.min, v.max, v.step, v.value, 20, offset - 50, UpdateGroupAuras)
+        offset = offset - 65
+    end
+end
+
+
+function GUI:SetupRaidBuffSize(parent)
+    local guiName = 'FreeUIGUISetupRaidBuffSize'
+    TogglePanel(guiName)
+    if extraGUIs[guiName] then
+        return
+    end
+
+    local panel = CreateExtraGUI(parent, guiName)
+    local scroll = GUI:CreateScroll(panel, 220, 540)
+
+    local mKey = 'Unitframe'
+    local db = C.CharacterSettings.Unitframe
+
+    local datas = {
+        [1] = {
+            key = 'RaidBuffSize',
+            value = db.RaidBuffSize,
+            text = L['Icon Size'],
+            min = 12,
+            max = 36,
+            step = 1
+        }
+    }
+
+    local offset = -10
+    for _, v in ipairs(datas) do
+        CreateGroupTitle(scroll, L['Raid Buff'], offset)
+        CreateSlider(scroll, mKey, v.key, v.text, v.min, v.max, v.step, v.value, 20, offset - 50, UpdateGroupAuras)
+        offset = offset - 65
+    end
+end
+
+function GUI:SetupRaidDebuffSize(parent)
+    local guiName = 'FreeUIGUISetupRaidDebuffSize'
+    TogglePanel(guiName)
+    if extraGUIs[guiName] then
+        return
+    end
+
+    local panel = CreateExtraGUI(parent, guiName)
+    local scroll = GUI:CreateScroll(panel, 220, 540)
+
+    local mKey = 'Unitframe'
+    local db = C.CharacterSettings.Unitframe
+
+    local datas = {
+        [1] = {
+            key = 'RaidDebuffSize',
+            value = db.RaidDebuffSize,
+            text = L['Icon Size'],
+            min = 12,
+            max = 36,
+            step = 1
+        }
+    }
+
+    local offset = -10
+    for _, v in ipairs(datas) do
+        CreateGroupTitle(scroll, L['Raid Debuff'], offset)
+        CreateSlider(scroll, mKey, v.key, v.text, v.min, v.max, v.step, v.value, 20, offset - 50, UpdateGroupAuras)
+        offset = offset - 65
+    end
+end
+
 
 -- General
 
diff --git a/gui/options.lua b/gui/options.lua
index 389a17806..7f8d411f4 100644
--- a/gui/options.lua
+++ b/gui/options.lua
@@ -305,6 +305,26 @@ local function SetupNameLength()
     GUI:SetupNameLength(GUI.Page[12])
 end
 
+local function SetupPartyBuffSize()
+    GUI:SetupPartyBuffSize(GUI.Page[12])
+end
+
+local function SetupPartyDebuffSize()
+    GUI:SetupPartyDebuffSize(GUI.Page[12])
+end
+
+local function SetupRaidBuffSize()
+    GUI:SetupRaidBuffSize(GUI.Page[12])
+end
+
+local function SetupRaidDebuffSize()
+    GUI:SetupRaidDebuffSize(GUI.Page[12])
+end
+
+local function UpdateGroupAuras()
+    UNITFRAME:UpdateGroupAuras()
+end
+
 
 -- General
 
@@ -619,12 +639,18 @@ GUI.OptionsList = {
         {1, 'Unitframe', 'RaidFrame', L['Enable RaidFrame'], nil, SetupRaidFrame},
         {1, 'Unitframe', 'SimpleMode', L['Simple Mode'], nil, SetupSimpleRaidFrame, nil, L['Simple mode remove most of the elements, and only show unit health status.']},
         {1, 'Unitframe', 'TeamIndex', L['Display Team Index'], true, nil, UpdateRaidHeader},
+
+        {1, 'Unitframe', 'RaidBuff', L['Display Buffs'], nil, SetupRaidBuffSize, UpdateGroupAuras, L['Display buffs on RaidFrame by blizzard API logic, up to 3 icons.|nThis may overlap with the Corner Indicator and is best not enabled at the same time.']},
+        {1, 'Unitframe', 'RaidDebuff', L['Display Debuffs'], true, SetupRaidDebuffSize, UpdateGroupAuras, L['Display debuffs on RaidFrame by blizzard API logic, up to 3 icons.|nThis may overlap with the Corner Indicator and is best not enabled at the same time.']},
         {},
 
         {1, 'Unitframe', 'PartyFrame', L['Enable PartyFrame'], nil, SetupPartyFrame},
         {1, 'Unitframe', 'ShowSolo', L['Display PartyFrame on Solo'], nil, nil, UpdateAllHeaders, L['If checked, the PartyFrame would be visible even you are solo.']},
         {1, 'Unitframe', 'DescRole', L['Sort by Reverse Roles'], true, nil, UpdatePartyHeader, L["If checked, sort your party order by 'Damager Healer Tank' within growth direction.|nIf unchecked, sort your party order by 'Tank Healer Damager' within growth direction."]},
 
+        {1, 'Unitframe', 'PartyBuff', L['Display Buffs'], nil, SetupPartyBuffSize, UpdateGroupAuras, L['Display buffs on PartyFrame by blizzard API logic, up to 3 icons.|nThis may overlap with the Corner Indicator and is best not enabled at the same time.']},
+        {1, 'Unitframe', 'PartyDebuff', L['Display Debuffs'], true, SetupPartyDebuffSize, UpdateGroupAuras, L['Display debuffs on PartyFrame by blizzard API logic, up to 3 icons.|nThis may overlap with the Corner Indicator and is best not enabled at the same time.']},
+
         {1, 'Unitframe', 'PartyWatcher', L['Enable Party Watcher'], nil, SetupPartyWatcher, nil, L['If enabled, show spell cooldown for your group members on PartyFrames']},
         {1, 'Unitframe', 'PartyWatcherOnRight', L['Swap Icons Side'], nil, nil, UpdatePartyElements},
         {1, 'Unitframe', 'PartyWatcherSync', L['Sync Party Watcher'], true, nil, nil, L['If enabled, the cooldown status would sync with players who using party watcher or ZenTracker(WA).|nThis might decrease your performance.']},
diff --git a/modules/unitframe/auras.lua b/modules/unitframe/auras.lua
index 5893787f1..c676c9b32 100644
--- a/modules/unitframe/auras.lua
+++ b/modules/unitframe/auras.lua
@@ -31,7 +31,7 @@ function UNITFRAME:MODIFIER_STATE_CHANGED(key, state)
             if state == 1 then -- modifier key pressed
                 auras.CustomFilter = UNITFRAME.ModifierCustomFilter
             else
-                auras.CustomFilter = UNITFRAME.CustomFilter
+                auras.CustomFilter = UNITFRAME.AuraFilter
             end
             auras:ForceUpdate()
             break
@@ -62,6 +62,10 @@ function UNITFRAME.PostCreateIcon(element, button)
     local style = element.__owner.unitStyle
     local isGroup = style == 'party' or style == 'raid'
     local font = C.Assets.Fonts.Roadway
+    local fontSize = element.size * .4
+    if fontSize < 12 then
+        fontSize = 12
+    end
 
     button.bg = F.CreateBDFrame(button, .25)
     button.glow = F.CreateSD(button.bg)
@@ -79,32 +83,29 @@ function UNITFRAME.PostCreateIcon(element, button)
     button.HL:SetColorTexture(1, 1, 1, .25)
     button.HL:SetAllPoints()
 
-    button.count = F.CreateFS(button, font, 12, true, nil, nil, true)
+    button.count = F.CreateFS(button, font, fontSize, true, nil, nil, true)
     button.count:ClearAllPoints()
     button.count:SetPoint(isGroup and 'TOP' or 'TOPRIGHT', button, isGroup and 0 or 2, 4)
 
-    button.timer = F.CreateFS(button, font, 12, true, nil, nil, true)
+    button.timer = F.CreateFS(button, font, fontSize, true, nil, nil, true)
     button.timer:ClearAllPoints()
     button.timer:SetPoint(isGroup and 'BOTTOM' or 'BOTTOMLEFT', button, isGroup and 0 or 2, -4)
 
     button.UpdateTooltip = UpdateAuraTooltip
     button:SetScript('OnEnter', Aura_OnEnter)
     button:SetScript('OnLeave', Aura_OnLeave)
-    button:SetScript(
-        'OnClick',
-        function(self, button)
-            if not InCombatLockdown() and button == 'RightButton' then
-                CancelUnitBuff('player', self:GetID(), self.filter)
-            end
+    button:SetScript('OnClick', function(self, button)
+        if not InCombatLockdown() and button == 'RightButton' then
+            CancelUnitBuff('player', self:GetID(), self.filter)
         end
-    )
+    end)
 end
 
 local replaceEncryptedIcons = {
     [368078] = 348567, -- 移速
     [368079] = 348567, -- 移速
     [368103] = 648208, -- 急速
-    [368243] = 237538, -- CD
+    [368243] = 237538 -- CD
 }
 
 function UNITFRAME.PostUpdateIcon(element, unit, button, index, _, duration, expiration, debuffType)
@@ -118,12 +119,13 @@ function UNITFRAME.PostUpdateIcon(element, unit, button, index, _, duration, exp
 
     local style = element.__owner.unitStyle
     local isParty = style == 'party'
+    local isRaid = style == 'raid'
     local desaturate = C.DB.Unitframe.DesaturateIcon
     local purgeableHighlight = C.DB.Unitframe.PurgeableHighlight
     local debuffTypeColor = C.DB.Unitframe.DebuffTypeColor
     local _, _, _, _, _, _, _, canStealOrPurge = UnitAura(unit, index, button.filter)
 
-    button:SetSize(element.size, isParty and element.size or element.size * .75)
+    button:SetSize(element.size, (isParty or isRaid) and element.size or element.size * .75)
 
     if desaturate and button.isDebuff and F:MultiCheck(style, 'target', 'boss', 'arena', 'nameplate') and not button.isPlayer then
         button.icon:SetDesaturated(true)
@@ -164,17 +166,14 @@ function UNITFRAME.PostUpdateIcon(element, unit, button, index, _, duration, exp
         end
     end
 
-    if isParty and button.isDebuff then
-        button.count:SetFont(C.Assets.Fonts.Square, 13, 'OUTLINE')
-        button.count:SetJustifyH('CENTER')
-        button.count:ClearAllPoints()
-        button.count:SetPoint('TOP', 1, 6)
-        button.timer:SetFont(C.Assets.Fonts.Square, 13, 'OUTLINE')
-        button.timer:SetJustifyH('CENTER')
-        button.timer:ClearAllPoints()
-        button.timer:SetPoint('BOTTOM', 1, -6)
+    local fontSize = element.size * .4
+    if fontSize < 12 then
+        fontSize = 12
     end
 
+    button.count:SetFont(C.Assets.Fonts.Square, fontSize, 'OUTLINE')
+    button.timer:SetFont(C.Assets.Fonts.Square, fontSize, 'OUTLINE')
+
     local newTexture = replaceEncryptedIcons[button.spellID]
     if newTexture then
         button.icon:SetTexture(newTexture)
@@ -193,7 +192,7 @@ local function BolsterPostUpdate(element)
     end
 end
 
-function UNITFRAME.CustomFilter(element, unit, button, name, _, _, _, _, _, caster, isStealable, _, spellID, _, isBossAura, _, nameplateShowAll)
+function UNITFRAME.AuraFilter(element, unit, button, name, _, _, _, _, _, caster, isStealable, _, spellID, _, isBossAura, _, nameplateShowAll)
     local style = element.__owner.unitStyle
     local isMine = F:MultiCheck(caster, 'player', 'pet', 'vehicle')
     local showToT = C.DB.Unitframe.TargetTargetAuras
@@ -207,6 +206,12 @@ function UNITFRAME.CustomFilter(element, unit, button, name, _, _, _, _, _, cast
             element.bolsterIndex = button
             return true
         end
+    elseif style == 'party' then
+        if C.PartyImportantAurasList[spellID] then
+            return true
+        else
+            return false
+        end
     elseif style == 'nameplate' or style == 'boss' or style == 'arena' then
         if element.__owner.plateType == 'NameOnly' then
             return _G.FREE_ADB['NPAuraFilter'][1][spellID] or C.AuraWhiteList[spellID]
@@ -233,34 +238,6 @@ function UNITFRAME.ModifierCustomFilter()
     return true
 end
 
-function UNITFRAME.BuffFilter(_, _, _, _, _, _, _, _, _, _, _, _, spellID)
-    if C.PartyBuffsList[spellID] then
-        return true
-    else
-        return false
-    end
-end
-
-function UNITFRAME.DebuffFilter(_, unit, _, _, _, _, _, _, _, caster, _, _, spellID, _, isBossAura)
-    local isMine = F:MultiCheck(caster, 'player', 'pet', 'vehicle')
-    -- local parent = element.__owner
-
-    if UnitIsDeadOrGhost(unit) or C.PartyDebuffsBlackList[spellID] then
-        -- elseif (C.DB.Unitframe.CornerIndicator and UNITFRAME.CornerSpellsList[spellID]) or parent.RaidDebuffs.spellID == spellID or parent.rawSpellID == spellID then
-        --     return false
-        return false
-    elseif isBossAura or SpellIsPriorityAura(spellID) then
-        return true
-    else
-        local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellID, UnitAffectingCombat('player') and 'RAID_INCOMBAT' or 'RAID_OUTOFCOMBAT')
-        if hasCustom then
-            return showForMySpec or (alwaysShowMine and isMine)
-        else
-            return true
-        end
-    end
-end
-
 function UNITFRAME.PostUpdateGapIcon(_, _, icon)
     icon:Hide()
 end
@@ -285,7 +262,14 @@ function UNITFRAME:CreateAuras(self)
     bu.spacing = 4
     bu.numTotal = 32
 
-    if style == 'target' then
+    if style == 'party' then
+        bu.initialAnchor = 'LEFT'
+        bu:SetPoint('LEFT', self, 'RIGHT', 4, 0)
+        bu.size = self:GetHeight() * .7
+        bu.numTotal = 4
+        bu.disableMouse = C.DB.Unitframe.AurasClickThrough
+        bu.disableCooldown = true
+    elseif style == 'target' then
         bu.initialAnchor = 'BOTTOMLEFT'
         bu:SetPoint('BOTTOM', self, 'TOP', 0, 24)
         bu['growth-y'] = 'UP'
@@ -328,7 +312,7 @@ function UNITFRAME:CreateAuras(self)
     bu.onlyShowPlayer = C.DB.Unitframe.OnlyShowPlayer
     bu.showDebuffType = true
     bu.showStealableBuffs = true
-    bu.CustomFilter = UNITFRAME.CustomFilter
+    bu.CustomFilter = UNITFRAME.AuraFilter
     bu.PostCreateIcon = UNITFRAME.PostCreateIcon
     bu.PostUpdateIcon = UNITFRAME.PostUpdateIcon
     bu.PostUpdateGapIcon = UNITFRAME.PostUpdateGapIcon
@@ -340,17 +324,35 @@ function UNITFRAME:CreateAuras(self)
     F:RegisterEvent('PLAYER_ENTERING_WORLD', UNITFRAME.PLAYER_ENTERING_WORLD)
 end
 
-function UNITFRAME:CreateBuffs(self)
+function UNITFRAME.GroupBuffFilter(_, _, _, _, _, _, _, _, _, caster, _, _, spellID, canApplyAura, isBossAura)
+    if isBossAura then
+        return true
+    else
+        local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellID, UnitAffectingCombat('player') and 'RAID_INCOMBAT' or 'RAID_OUTOFCOMBAT')
+        local isPlayerSpell = (caster == 'player' or caster == 'pet' or caster == 'vehicle')
+        if hasCustom then
+            return showForMySpec or (alwaysShowMine and isPlayerSpell)
+        else
+            return isPlayerSpell and canApplyAura and not SpellIsSelfBuff(spellID)
+        end
+    end
+end
+
+function UNITFRAME:CreateGroupBuffs(self)
+    if not C.DB.Unitframe.PartyBuff then
+        return
+    end
+
     local bu = CreateFrame('Frame', nil, self)
-    bu:SetPoint('LEFT', self, 'RIGHT', 4, 0)
-    bu.initialAnchor = 'LEFT'
-    bu.spacing = 4
-    bu.size = self:GetHeight() * .7
-    bu.num = 3
+    bu:SetPoint('TOPLEFT', self.Health, 'TOPLEFT', 2, -2)
+    bu.initialAnchor = 'TOPLEFT'
+    bu.spacing = 3
+    bu.size = self.unitStyle == 'raid' and  C.DB.Unitframe.RaidBuffSize or C.DB.Unitframe.PartyBuffSize
+    bu.num = (self.unitStyle == 'simple' or not C.DB.Unitframe.PartyBuff) and 0 or 3
     bu.showStealableBuffs = true
-    bu.disableMouse = C.DB.Unitframe.AurasClickThrough
+    bu.disableMouse = true
     bu.disableCooldown = true
-    bu.CustomFilter = UNITFRAME.BuffFilter
+    -- bu.CustomFilter = UNITFRAME.GroupBuffFilter
 
     UNITFRAME:UpdateAuraContainer(self, bu, bu.num)
 
@@ -360,41 +362,93 @@ function UNITFRAME:CreateBuffs(self)
     self.Buffs = bu
 end
 
-function UNITFRAME.PostUpdate(bu)
-    local vd = bu.visibleDebuffs
+local debuffBlackList = {
+    [206151] = true,
+    [296847] = true,
+    [338906] = true
+}
 
-    if vd == 3 then
-        bu:SetPoint('CENTER', -17, 0)
-    elseif vd == 2 then
-        bu:SetPoint('CENTER', -9, 0)
+function UNITFRAME.GroupDebuffFilter(element, _, _, _, _, _, _, _, _, caster, _, _, spellID, _, isBossAura)
+    local parent = element.__owner
+    if debuffBlackList[spellID] then
+        return false
+    elseif (C.DB.Unitframe.CornerIndicator and UNITFRAME.CornerSpellsList[spellID]) or parent.RaidDebuffs.spellID == spellID or parent.rawSpellID == spellID then
+        return false
+    elseif isBossAura or SpellIsPriorityAura(spellID) then
+        return true
     else
-        bu:SetPoint('CENTER', 0, 0)
+        local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellID, UnitAffectingCombat('player') and 'RAID_INCOMBAT' or 'RAID_OUTOFCOMBAT')
+        if hasCustom then
+            return showForMySpec or (alwaysShowMine and (caster == 'player' or caster == 'pet' or caster == 'vehicle'))
+        else
+            return true
+        end
     end
 end
 
-function UNITFRAME:CreateDebuffs(self)
-    local bu = CreateFrame('Frame', nil, self)
-    bu:SetPoint('CENTER')
-    bu:SetWidth(self:GetWidth())
-    bu:SetHeight(self:GetHeight())
-    bu:SetScale(1)
-
-    bu.initialAnchor = 'CENTER'
-    bu.spacing = 5
-    bu.num = 3
-    bu.size = 13
+function UNITFRAME:CreateGroupDebuffs(self)
+    if not C.DB.Unitframe.PartyDebuff then
+        return
+    end
 
-    bu.disableMouse = C.DB.Unitframe.AurasClickThrough
+    local bu = CreateFrame('Frame', nil, self)
+    bu:SetPoint('BOTTOMRIGHT', self.Health, 'BOTTOMRIGHT', -2, 2)
+    bu.initialAnchor = 'BOTTOMRIGHT'
+    bu['growth-x'] = 'LEFT'
+    bu.spacing = 3
+    bu.size = self.unitStyle == 'raid' and  C.DB.Unitframe.RaidDebuffSize or C.DB.Unitframe.PartyDebuffSize
+    bu.num = (self.unitStyle == 'simple' or not C.DB.Unitframe.PartyDebuff) and 0 or 3
+    bu.disableMouse = true
+    bu.disableCooldown = true
     bu.showDebuffType = true
 
-    bu.CustomFilter = UNITFRAME.DebuffFilter
+    UNITFRAME:UpdateAuraContainer(self, bu, bu.num)
+
+    bu.CustomFilter = UNITFRAME.GroupDebuffFilter
     bu.PostCreateIcon = UNITFRAME.PostCreateIcon
     bu.PostUpdateIcon = UNITFRAME.PostUpdateIcon
-    bu.PostUpdate = UNITFRAME.PostUpdate
 
     self.Debuffs = bu
 end
 
+function UNITFRAME:UpdateGroupAuras()
+    for _, frame in pairs(oUF.objects) do
+
+        local buffs = frame.Buffs
+        local debuffs = frame.Debuffs
+
+        if frame.unitStyle == 'party' then
+            if debuffs then
+                debuffs.num = not C.DB.Unitframe.PartyDebuff and 0 or 3
+                debuffs.size = C.DB.Unitframe.PartyDebuffSize
+                UNITFRAME:UpdateAuraContainer(frame, debuffs, debuffs.num)
+                debuffs:ForceUpdate()
+            end
+
+            if buffs then
+                buffs.num = not C.DB.Unitframe.PartyBuff and 0 or 3
+                buffs.size = C.DB.Unitframe.PartyBuffSize
+                UNITFRAME:UpdateAuraContainer(frame, buffs, buffs.num)
+                buffs:ForceUpdate()
+            end
+        else
+            if debuffs then
+                debuffs.num = not C.DB.Unitframe.RaidDebuff and 0 or 3
+                debuffs.size = C.DB.Unitframe.RaidDebuffSize
+                UNITFRAME:UpdateAuraContainer(frame, debuffs, debuffs.num)
+                debuffs:ForceUpdate()
+            end
+
+            if buffs then
+                buffs.num = not C.DB.Unitframe.RaidBuff and 0 or 3
+                buffs.size = C.DB.Unitframe.RaidBuffSize
+                UNITFRAME:UpdateAuraContainer(frame, buffs, buffs.num)
+                buffs:ForceUpdate()
+            end
+        end
+    end
+end
+
 local function RefreshAurasElements(self)
     local buffs = self.Buffs
     if buffs then
diff --git a/modules/unitframe/filters/player.lua b/modules/unitframe/filters/player.lua
index de9d9c597..76082776c 100644
--- a/modules/unitframe/filters/player.lua
+++ b/modules/unitframe/filters/player.lua
@@ -531,7 +531,7 @@ C.PartyDebuffsBlackList = {
     [294720] = true -- 瓶装谜团
 }
 
-C.PartyBuffsList = {
+C.PartyImportantAurasList = {
     -- All
     [160029] = true, -- Resurrecting
     -- Racial
diff --git a/modules/unitframe/raiddebuffs.lua b/modules/unitframe/raiddebuffs.lua
index 69b09d538..4c49e9216 100644
--- a/modules/unitframe/raiddebuffs.lua
+++ b/modules/unitframe/raiddebuffs.lua
@@ -68,7 +68,7 @@ function UNITFRAME:CreateRaidDebuff(self)
         bu:SetScript('OnLeave', F.HideTooltip)
     end
 
-    bu.ShowDispellableDebuff = true -- 副本外仍然显示可驱散的减益
+    bu.ShowDispellableDebuff = false -- 副本外仍然显示可驱散的减益
     bu.ShowDebuffBorder = true
 
     if not next(debuffList) then
diff --git a/modules/unitframe/units.lua b/modules/unitframe/units.lua
index 8c5b3b40d..2c23f0fad 100644
--- a/modules/unitframe/units.lua
+++ b/modules/unitframe/units.lua
@@ -354,7 +354,9 @@ local function CreatePartyStyle(self)
     UNITFRAME:CreateThreatIndicator(self)
     UNITFRAME:CreateSelectedBorder(self)
     UNITFRAME:CreateRangeCheck(self)
-    UNITFRAME:CreateBuffs(self)
+    UNITFRAME:CreateAuras(self)
+    UNITFRAME:CreateGroupBuffs(self)
+    UNITFRAME:CreateGroupDebuffs(self)
     UNITFRAME:CreateRaidDebuff(self)
     UNITFRAME:RefreshAurasByCombat(self)
     UNITFRAME:CreateCornerIndicator(self)
@@ -536,6 +538,8 @@ local function CreateRaidStyle(self)
     UNITFRAME:CreateSelectedBorder(self)
     UNITFRAME:CreateRangeCheck(self)
     UNITFRAME:CreateCornerIndicator(self)
+    UNITFRAME:CreateGroupBuffs(self)
+    UNITFRAME:CreateGroupDebuffs(self)
     UNITFRAME:CreateRaidDebuff(self)
     UNITFRAME:RefreshAurasByCombat(self)
 end