Quantcast
Download
(915 Kb)
Download
Updated: 07-20-16 01:45 AM
Pictures
File Info
Compatibility:
Legion Pre-Patch (7.0.3)
Minor patch (6.2.4)
Minor patch (6.2.3)
Fury of Hellfire (6.2)
The Adventure Continues (6.1)
Warlords of Draenor (6.0.3)
Warlords of Draenor Pre-Patch (6.0.2)
Updated:07-20-16 01:45 AM
Created:07-03-09 12:57 AM
Downloads:40,816
Favorites:219
MD5:
7.0.3

Neav UI  Popular! (More than 5000 hits)

Version: 7.0.0
by: Neal, ballagarba

Neav UI
This UI compilation will work on all resolution.

I will not help with questions
Most of the addons in this compilation is only configurable via the supplied Lua config files (config.lua), so some basic programming knowledge is highly recommended but not required. A lot of the options are basically setting the value to either true or false depending on if you want to enable or disable the feature.

AddOns include
!Beautycase
!Colorz
nBuff
nChat
nCore
nMainbar
nMinimap
nPower (gone, but making a comeback)
nTooltip
oUF (by Haste)
oUF_Neav
oUF_NeavRaid

Tanks to Haste, kerrang, zork, Tuller, and many more for their great AddOns. And thomasjohnshannon/Grimsbain for making Neav UI compatible with Legion.

Information
A lot of the addons have a config.lua file where you can change some settings. So look first into this file before you ask something!

How can I move the player, target and focus frame?
Press Shift + Alt and drag with your left mouse button to move them. This only works outside of combat!

How can I move the Pet-, Stance- or Possessbar?
Press Shift + Alt and drag with your left mouse button on the first button of the Pet-, Stance- or Possessbar to move the them.

Commands
/neavreset to reset the position of the player, target and/or focus frame.
/neavrt to move the raid frames.
/wm, /worldmarkers, /rm or /raidmarkers to show world raid markers.
/rolecheck or /rcheck to do a role check.

The latest updates and changes can be found on Github.

v7.0.0

Huge props to thomasjohnshannon/Grimsbain who basically made all the work!

- nPower has been removed in favour for the new nameplate and resource options in Legion.
- nPlates has been removed. Too much work was required to make it compatible with Legion, and it didn't offer much functionality over the default nameplates. Might, or might not make a comeback in the future.
- nMainbar added a bar to toggle the bags.
- Item level has been removed nTooltip.
- The "disable fade" option has been removed from nTooltip.
- The custom drop down to move player/target/focus frame has been removed and replaced with the same mechanism used for the pet-/stancebar; i.e. press alt-shift and drag with your mouse. A new slash command has also been added to reset the frames (/neavreset).
- Misc bugs and fixes to make it compatible with Legion.

v. 6.2.0

- Support for patch 6.2.0
- Removed glow from the spiral on healing indicators
- Level text should now be properly centered on the player and target frame
- Scaled down and moved the garrison icon on the minimap
- Add healing indicator for the druid lvl 100 spell "Germination"
- Skin garrison tooltips
- Add Netherstorm flag indicator to the raid frames
- Support 6 Chi for Monks
- Add Timewalker and Mythic text to Minimap
- Improve out-of-range responsiveness on actionbars
- Other minor bug fixes and tweaks

v. 6.0.0

- Updates to work with Warlords of Draenor.

v. 5.4.1

- Added Siege of Orgrimmar raid debuffs to the raid frames
- Added option to hide unit tooltips during combat
- Added option to show the chat input box above the chat window (default: true)
- Option to hide the coalesced/interactive realm text from the tooltip
- Fix the error when clicking the Player vs. Player option in the picomenu
- Add absorb bar to player, target, focus and pet frame
- Fix tooltip concatenation error in scenarios

v. 5.4.0

- TOC updates (50400)
- Added an absorb bar to the raid frames (like incoming heals, except yellow)
- Option to show a border around the chat frame (#28)
- Show a tooltip on the watchframe describing how to move it (#34)

v. 5.3.0

- Abbreviate Instance chat type in nChat.
- Lower frame strata for the warlock power frame, so it doesn't obscure the map.
- Add skiplist to autogreed in nCore. See nCore/modules/autogreed.lua.
- Added Throne of Tunder debuffs to oUF_NeavRaid.
- Other minor fixes and tweaks.

v. 5.1.0

- Nameplate updates.
- Chi fixes for nPower.
- Mostly TOC updates.

v. 5.0.6

- Open mail module now shows amount of money collected.
- Nameplate threat highlight should now be correctly hidden out of combat.
- Abbreviate some more num pad keys for example: Num Pad / => Nu/ and Num Pad * => Nu*
- Correctly display the dungeon/raid difficulty on the minimap.
- Unit frames should now hide during pet battle.
- NEW: Added a threat indicator on the target frame, identical to the one Blizzard uses. You can turn it off in the config.

v. 5.0.5

- Fixes for the arena frames (hopefully shouldn't throw anymore errors at least).
- There's now a whitelist filter for buffs on the arena frames.
- Demonic Gateway timers for warlock (Blizzard style).
- Fix the "ghost buff" buff on targets.
- MoP raid debuffs.
- Fix the battletag bug on friendslist.
- Added symbiosis info and spec to tooltip.
- Now correctly display item level on tooltip.
- Correctly skin editbox on all chat windows.
- Minor tweaks...

v. 5.0.4b

- Battle.Net fixes for friends tab on nMinimap.
- oUF_SpellRange now reports out of range correctly.
- Fixes for the colorPlayerDebuffsOnly option.

v. 5.0.4

- Updated for patch 5.0.4.
- nMainbar now supports a minimum alpha on bars using mouseover.
- Minor tweaks here and there.

v. 4.3.0_1

- updated nMainbar
- updated oUF_Neav and oUF_NeavRaid
- updated nChat
- updated nMinimap
- updated nCore
- updated nBuff
- some small changes and additions

v. 4.3.0

- 4.3 compatible version
- changed version numbering scheme

v. 1.6.4

- updated for patch 4.2
Optional Files (2)
File Name
Version
Size
Author
Date
Type
7.0.0
231kB
07-22-16 07:14 AM
Addon
6.0.1
318kB
10-26-14 10:28 AM
Addon


Archived Files (1)
File Name
Version
Size
Author
Date
6.2.0
917kB
Neal
07-21-15 10:16 AM


Post A Reply Comment Options
Unread 12-28-09, 04:41 PM  
ballagarba
A Fallenroot Satyr
 
ballagarba's Avatar

Forum posts: 22
File comments: 415
Uploads: 0
Has someone else than be been experiencing that nNamePlates is producing a sh1t load of garbage memory? And often consuming +1mb?

Shouldn't have any addon conflicting with it either. Tried with CaelNamePlates too and it didn't have this issue, and it seems to work in almost the same manner (code wise).

Seems to be using way more cpu too.
Last edited by ballagarba : 12-28-09 at 06:53 PM.
Report comment to moderator  
Reply With Quote
Unread 12-28-09, 11:05 AM  
ballagarba
A Fallenroot Satyr
 
ballagarba's Avatar

Forum posts: 22
File comments: 415
Uploads: 0
Originally posted by Tanque
I don't know if this has been covered yet, but I've updated the nMinimapclock.lua to use the Dungeon Finder. Replace the button[9] section with:

Code:
    button[9] = {}
    button[9].text = LOOKING_FOR_DUNGEON
    button[9].func = function() ToggleLFDParentFrame() end
    UIDropDownMenu_AddButton(button[9])
Nice, wasn't even aware of that function :P
Report comment to moderator  
Reply With Quote
Unread 12-28-09, 08:08 AM  
Hammerzan
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Originally posted by Vorken
Been checking this page everyday, can't wait for an updated version. This UI like someone said previously has exactly everything you need, with matching borders and cluster free, very lightweight also. Can't wait for a solid 3.3 version, even though I have been using the outdated one with no problems.
bump
Report comment to moderator  
Reply With Quote
Unread 12-27-09, 06:23 PM  
Tanque
A Kobold Labourer

Forum posts: 1
File comments: 170
Uploads: 0
I don't know if this has been covered yet, but I've updated the nMinimapclock.lua to use the Dungeon Finder. Replace the button[9] section with:

Code:
    button[9] = {}
    button[9].text = LOOKING_FOR_DUNGEON
    button[9].func = function() ToggleLFDParentFrame() end
    UIDropDownMenu_AddButton(button[9])
Report comment to moderator  
Reply With Quote
Unread 12-27-09, 04:17 PM  
BobJustBob
A Murloc Raider

Forum posts: 4
File comments: 15
Uploads: 0
Originally posted by Tanque
How would I add an outline to just the chatfont?
Code:
for i = 1, NUM_CHAT_WINDOWS do
		local c = _G["ChatFrame"..i]
		local f, s, m = c:GetFont()
		if not orig[c] then orig[c] = m end
		c:SetFont(f, s, "OUTLINE")
		c:SetShadowColor(0, 0, 0, 0)
end
Report comment to moderator  
Reply With Quote
Unread 12-27-09, 07:52 AM  
Tanque
A Kobold Labourer

Forum posts: 1
File comments: 170
Uploads: 0
How would I add an outline to just the chatfont?
Report comment to moderator  
Reply With Quote
Unread 12-26-09, 01:21 PM  
Julchen
A Deviate Faerie Dragon

Forum posts: 17
File comments: 52
Uploads: 0
Originally posted by Vorken
I know, I want to ADD an outline.
oUF_NeavConfig.lua
Code:
font = {
        fontSmall = 13,
        fontSmallOutline = false,
        
        fontBig = 14,
        fontBigOutline = false,
    },
set Outline = true
Last edited by Julchen : 12-26-09 at 03:29 PM.
Report comment to moderator  
Reply With Quote
Unread 12-26-09, 11:28 AM  
Vorken
A Kobold Labourer

Forum posts: 0
File comments: 4
Uploads: 0
Originally posted by Julchen
There are no OUTLINE in Health/Mana/Name font.
I know, I want to ADD an outline.
Report comment to moderator  
Reply With Quote
Unread 12-26-09, 06:52 AM  
pupory
A Kobold Labourer

Forum posts: 0
File comments: 1
Uploads: 0
merry christmas

1. How can I add "totem timer" under the player frame?

2. How do I use blizzard raid frame instead of the OUF raid frame?

Last edited by pupory : 12-26-09 at 06:57 AM.
Report comment to moderator  
Reply With Quote
Unread 12-25-09, 01:45 PM  
Julchen
A Deviate Faerie Dragon

Forum posts: 17
File comments: 52
Uploads: 0
Originally posted by Vorken
[b]I'm trying to modify one aspect of this UI, which is add an outline to font of the health, mana and name of player, target and party frames; I looked everywhere in the LUA and couldn't find anything.
There are no OUTLINE in Health/Mana/Name font.
Report comment to moderator  
Reply With Quote
Unread 12-24-09, 11:36 PM  
Vorken
A Kobold Labourer

Forum posts: 0
File comments: 4
Uploads: 0
I'm trying to modify one aspect of this UI, which is add an outline to font of the health, mana and name of player, target and party frames; I looked everywhere in the LUA and couldn't find anything.

Another thing I wanted to ask is: Is there a way to remove the duration of buffs and debuffs that are not yours on the target frame? Like with the addon: UnitFrameBuffs by AnduinLothar @ this LINK.
Report comment to moderator  
Reply With Quote
Unread 12-24-09, 11:38 AM  
Vorken
A Kobold Labourer

Forum posts: 0
File comments: 4
Uploads: 0
Been checking this page everyday, can't wait for an updated version. This UI like someone said previously has exactly everything you need, with matching borders and cluster free, very lightweight also. Can't wait for a solid 3.3 version, even though I have been using the outdated one with no problems.
Report comment to moderator  
Reply With Quote
Unread 12-24-09, 07:35 AM  
Zeronic
A Kobold Labourer
 
Zeronic's Avatar

Forum posts: 0
File comments: 25
Uploads: 0
Merry Christmas

Glad to see Neal active on this great AddOn package. Can't find anything similar to UoF_Neav and nMainbar, plus the matching Minimap and Buffs

However, take your time Neal. Enjoy Christmas and New Years Eve plus the day after to recover xD

We won't die from not having an update NeavUI. Keep up the great work <3

Everybody, merry Christmast and a Happy new year!
Report comment to moderator  
Reply With Quote
Unread 12-24-09, 03:54 AM  
neenee
A Murloc Raider
AddOn Author - Click to view AddOns

Forum posts: 4
File comments: 31
Uploads: 1
Re: nBuff

Thanks Julchen - a Merry Christmas to you and yours as well
Report comment to moderator  
Reply With Quote
Unread 12-23-09, 06:31 PM  
Julchen
A Deviate Faerie Dragon

Forum posts: 17
File comments: 52
Uploads: 0
nBuff

this is my christmas gift to you all
nBuff, which fully support consilidate buffs without any bugs - i take the time to test it and fix the stupid code a wrote to fix some position problems but i forgot some exceptions so it doesnt work properly right now

"i wish you a marry christmas"
Code:
local strformat, strfind, classColors = string.format, string.find, {}

for k, v in pairs(RAID_CLASS_COLORS) do
	classColors[k] = strformat("%2x%2x%2x", v.r*255, v.g*255, v.b*255)
end

local function classHexColor(unit)
	local _, v = UnitClass(unit)
	if (v and classColors[v]) then
		return classColors[v]
	else
		return "FFFFFF"
	end
end

_G.MINUTE_ONELETTER_ABBR = '|cffffffff%d|r|cff'..classHexColor("player")..'m|r'
_G.HOUR_ONELETTER_ABBR = '|cffffffff%d|r|cff'..classHexColor("player")..'h|r'
_G.DAY_ONELETTER_ABBR = '|cffffffff%d|r|cff'..classHexColor("player")..'d|r'
_G.SECOND_ONELETTER_ABBR = '|cffffffff%d|r'

local function BuffFrame_SetPoint(self)
    local hasMainHandEnchant, _, _, hasOffHandEnchant = GetWeaponEnchantInfo()
    if (self and self:IsShown()) then
        self:ClearAllPoints()
        if (hasMainHandEnchant and hasOffHandEnchant) then
            self:SetPoint('TOPRIGHT', TempEnchant2, 'TOPLEFT', -nBuff.padding.x, 0)
            return
        elseif (hasMainHandEnchant or hasOffHandEnchant) then            
            self:SetPoint('TOPRIGHT', TempEnchant1, 'TOPLEFT', -nBuff.padding.x, 0)
            return
        elseif (not hasMainHandEnchant and not hasOffHandEnchant) then
            self:SetPoint('TOPRIGHT', TempEnchant1)
            return
        end
    end
end

	local button = ConsolidatedBuffs--Icon
    button:SetScale(nBuff.button.scale)
    button:SetWidth(32)
    button:SetHeight(32)
	
	ConsolidatedBuffsIcon:SetTexCoord(0.02	, 0.48, 0.02, .98)
	--(left,right,top,bottom) 
	
	local border = ConsolidatedBuffs:CreateTexture('$parentOverlay', 'ARTWORK')
	border:SetTexture(nBuff.button.borderBuff)
    border:SetTexCoord(0, 1, 0, 1)
    border:SetVertexColor(unpack(nBuff.button.buffBorderColor))
    border:ClearAllPoints()
    border:SetPoint('TOPRIGHT', button, 1, 1)
    border:SetPoint('BOTTOMLEFT', button, -1, -1)    
	
	button.Background = button:CreateTexture('$parentBackground', 'BACKGROUND')
    button.Background:SetPoint('TOPRIGHT', button.texture or border, 3.35, 3.35)
    button.Background:SetPoint('BOTTOMLEFT', button.texture or border, -3.35, -3.35)
    button.Background:SetTexture('Interface\\AddOns\\nBuff\\media\\textureBackground')
    button.Background:SetVertexColor(0, 0, 0, 1)
	
	ConsolidatedBuffsCount:ClearAllPoints()
    ConsolidatedBuffsCount:SetPoint('TOPRIGHT', button)
    ConsolidatedBuffsCount:SetFont(nBuff.button.countFont, nBuff.button.countFontsize, 'OUTLINE')
    ConsolidatedBuffsCount:SetShadowOffset(0, 0)
    ConsolidatedBuffsCount:SetDrawLayer('OVERLAY')
	
	ConsolidatedBuffs:ClearAllPoints()
    ConsolidatedBuffs:SetPoint('TOPRIGHT', Minimap, 'TOPLEFT', -15, 0)
    ConsolidatedBuffsIcon:SetAlpha(1)
	
if (BuffFrame.numConsolidated > 0 ) then
	TemporaryEnchantFrame:SetPoint('TOPRIGHT', ConsolidatedBuffs, 'TOPLEFT', -nBuff.padding.x, 0)
else
	TemporaryEnchantFrame:SetPoint('TOPRIGHT', Minimap, 'TOPLEFT', -15, 0)
end

TempEnchant2:ClearAllPoints()
TempEnchant2:SetPoint('TOPRIGHT', TempEnchant1, 'TOPLEFT', -nBuff.padding.x, 0)

for i = 1, 2 do
    local button = _G['TempEnchant'..i]
    button:SetScale(nBuff.button.scale)
    button:SetWidth(32)
    button:SetHeight(32)

    local icon = _G['TempEnchant'..i..'Icon']
    icon:SetTexCoord(0.03, 0.97, 0.03, 0.97)

    local duration = _G['TempEnchant'..i..'Duration']
    duration:ClearAllPoints()
    duration:SetPoint('BOTTOM', button, 'BOTTOM', 0, -2)
    duration:SetFont(nBuff.button.durationFont, nBuff.button.durationFontsize,'OUTLINE')
    duration:SetShadowOffset(0, 0)
    duration:SetDrawLayer('OVERLAY')

    local border = _G['TempEnchant'..i..'Border']
    border:SetTexture(nBuff.button.borderDebuff)
    border:SetTexCoord(0, 1, 0, 1)
    border:SetVertexColor(0.9, 0.25, 0.9)
    border:ClearAllPoints()
    border:SetPoint('TOPRIGHT', button, 1, 1)
    border:SetPoint('BOTTOMLEFT', button, -1, -1)    
    
    button.Background = button:CreateTexture('$parentBackground', 'BACKGROUND')
    button.Background:SetPoint('TOPRIGHT', border, 3.35, 3.35)
    button.Background:SetPoint('BOTTOMLEFT', border, -3.35, -3.35)
    button.Background:SetTexture('Interface\\AddOns\\nBuff\\media\\textureBackground')
    button.Background:SetVertexColor(0, 0, 0, 1)
end 
	
function UpdateBuffAnchors()	
		local buff, previousBuff, aboveBuff;
		local numBuffs = 0;
		
		for i = 1, BUFF_ACTUAL_DISPLAY do
			buff = _G["BuffButton"..i];
			if ( buff.consolidated ) then
				if ( buff.parent == BuffFrame ) then
					buff:SetParent(ConsolidatedBuffsContainer);
					buff.parent = ConsolidatedBuffsContainer;
				end
			else
				numBuffs = numBuffs + 1;
				index = numBuffs;
				if ( buff.parent ~= BuffFrame ) then
					buff.count:SetFontObject(NumberFontNormal);
					buff:SetParent(BuffFrame);
					buff.parent = BuffFrame;
				end
				buff:ClearAllPoints();
					if ((index > 1) and (mod(index, nBuff.button.buffPerRow) == 1) and (BuffFrame.numConsolidated == 0)) then
						if (index == nBuff.button.buffPerRow + 1) then
							buff:SetPoint('TOPLEFT', ConsolidatedBuffs, 'BOTTOMLEFT', 0, -nBuff.padding.y)
						else
							buff:SetPoint('TOPLEFT', aboveBuff, 'BOTTOMLEFT', 0, -nBuff.padding.y)
						end
						aboveBuff = buff;
					elseif ((index > 1) and (BuffFrame.numConsolidated > 0) and (mod(index, nBuff.button.buffPerRow) == 0)) then
						if (index == nBuff.button.buffPerRow) then
							buff:SetPoint('TOPLEFT', ConsolidatedBuffs, 'BOTTOMLEFT', 0, -nBuff.padding.y)
						else
							buff:SetPoint('TOPLEFT', aboveBuff, 'BOTTOMLEFT', 0, -nBuff.padding.y)
						end
						aboveBuff = buff;
					elseif (index == 1) then
						BuffFrame_SetPoint(buff)
					else
						buff:SetPoint('RIGHT',previousBuff, 'LEFT', -nBuff.padding.x, 0)
					end
				previousBuff = buff;
			end
		end
	end
hooksecurefunc("BuffFrame_UpdateAllBuffAnchors", UpdateBuffAnchors)				

hooksecurefunc('DebuffButton_UpdateAnchors', function(self, index)
	local space = 31 + nBuff.padding.y
	local row
	if (BuffFrame.numConsolidated > 0) then
		row = ceil((BUFF_ACTUAL_DISPLAY-BuffFrame.numConsolidated+1)/nBuff.button.buffPerRow)
    else
		row = ceil(BUFF_ACTUAL_DISPLAY/nBuff.button.buffPerRow)
	end
	
    if (row and row > 1) then
        rowspacing = -row * space
    else
        rowspacing = -space
    end
    
    local buff = _G[self..index]
    buff:ClearAllPoints()
	if (index > 1 and mod(index, nBuff.button.buffPerRow) == 1) then
		buff:SetPoint('TOP', _G[self..(index-nBuff.button.buffPerRow)], 'BOTTOM', 0, -nBuff.padding.y)
	elseif (index == 1) then
        buff:SetPoint('TOPRIGHT', ConsolidatedBuffs, 'BOTTOMRIGHT', 0, rowspacing)
	else
		buff:SetPoint('RIGHT', _G[self..(index-1)], 'LEFT', -nBuff.padding.x, 0)
	end
end)

hooksecurefunc('AuraButton_Update', function(self, index)
    local button = _G[self..index]
    if (button) then
        button:SetScale(nBuff.button.scale)
        button:SetWidth(32)
        button:SetHeight(32)
    end
        
    local icon = _G[self..index..'Icon']
    if (icon) then
        icon:SetTexCoord(0.03, 0.97, 0.03, 0.97)
    end
	
    local duration = _G[self..index..'Duration']
    if (duration) then
        duration:ClearAllPoints()
        duration:SetPoint('BOTTOM', button, 'BOTTOM', 0, -2)
        duration:SetFont(nBuff.button.durationFont, nBuff.button.durationFontsize,'OUTLINE')
        duration:SetShadowOffset(0, 0)
        duration:SetDrawLayer('OVERLAY')
    end

    local count = _G[self..index..'Count']
    if (count) then
        count:ClearAllPoints()
        count:SetPoint('TOPRIGHT', button)
        count:SetFont(nBuff.button.countFont, nBuff.button.countFontsize, 'OUTLINE')
        count:SetShadowOffset(0, 0)
        count:SetDrawLayer('OVERLAY')
    end
        
    local border = _G[self..index..'Border']
    if (border) then
        border:SetTexture(nBuff.button.borderDebuff)
        border:SetPoint('TOPRIGHT', button, 1, 1)
        border:SetPoint('BOTTOMLEFT', button, -1, -1)
        border:SetTexCoord(0, 1, 0, 1)
    end
    
    if (button and not border) then
        if (not button.texture) then
            button.texture = button:CreateTexture('$parentOverlay', 'ARTWORK')
            button.texture:SetParent(button)
            button.texture:SetTexture(nBuff.button.borderBuff)
            button.texture:SetVertexColor(unpack(nBuff.button.buffBorderColor))
            button.texture:SetPoint('TOPRIGHT', button, 1, 1)
            button.texture:SetPoint('BOTTOMLEFT', button, -1, -1)
        end
        
        local name = UnitAura('player', index)
        if (name == select(1, GetSpellInfo(34477)) or name == select(1, GetSpellInfo(57934))) then
            button.texture:SetVertexColor(1, 0, 1)
            button.texture:SetTexture(nBuff.button.borderDebuff)
        else
            button.texture:SetVertexColor(unpack(nBuff.button.buffBorderColor))
            button.texture:SetTexture(nBuff.button.borderBuff)
        end
    end
    
    if (button and not button.Background) then
        button.Background = button:CreateTexture('$parentBackground', 'BACKGROUND')
        button.Background:SetPoint('TOPRIGHT', button.texture or border, 3.35, 3.35)
        button.Background:SetPoint('BOTTOMLEFT', button.texture or border, -3.35, -3.35)
        button.Background:SetTexture('Interface\\AddOns\\nBuff\\media\\textureBackground')
        button.Background:SetVertexColor(0, 0, 0, 1)
    end
end)
edit: Neal what do you think about hiding the addon mem by default when mouseover the time and display it onyly if a modifier is pressed cause it isnt important while playing
Last edited by Julchen : 12-23-09 at 06:40 PM.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: