Download
(4Kb)
Download
Updated: 08-31-17 04:23 AM
Pictures
File Info
Compatibility:
Shadows of Argus (7.3.0)
Tomb of Sargeras (7.2.0)
Updated:08-31-17 04:23 AM
Created:10-29-14 03:51 AM
Downloads:278,025
Favorites:125
MD5:

GnomeSequencer  Popular! (More than 5000 hits)

Version: 7.3.0.1
by: semlar [More]

This is a small addon that allows you create a sequence of macros to be executed at the push of a button.

Like a /castsequence macro, it cycles through a series of commands when the button is pushed. However, unlike castsequence, it uses macro text for the commands instead of spells, and it advances every time the button is pushed instead of stopping when it can't cast something.

This means if a spell is on cooldown and you push the button it will continue to the next item in the list with each press until it reaches the end and starts over.

When you first install the addon you will need to rename "ExampleSequences.lua" to "Sequences.lua" and open the file in a text editor to add your own sequences.

The Sequences file contains a couple examples to get you started with writing your own sequences, I'll post its entirety here.

Lua Code:
  1. local _, Sequences = ... -- Don't touch this
  2.  
  3. ----
  4. -- Rename this file to Sequences.lua before you get started, it uses a different file name so as not to overwrite your existing file with a future update.
  5. -- Every entry in the Sequences table defines a single sequence of macros which behave similarly to /castsequence.
  6. -- Sequence names must be unique and contain no more than 16 characters.
  7. -- To use a macro sequence, create a blank macro in-game with the same name you picked for the sequence here and it will overwrite it.
  8. ----
  9.  
  10. ----
  11. -- Here's a large demonstration sequence documenting the format:
  12. Sequences["GnomeExample1"] = {
  13.     -- StepFunction optionally defines how the step is incremented when pressing the button.
  14.     -- This example increments the step in the following order: 1 12 123 1234 etc. until it reaches the end and starts over
  15.     -- DO NOT DEFINE A STEP FUNCTION UNLESS YOU THINK YOU KNOW WHAT YOU'RE DOING
  16.     StepFunction = [[
  17.         limit = limit or 1
  18.         if step == limit then
  19.             limit = limit % #macros + 1
  20.             step = 1
  21.         else
  22.             step = step % #macros + 1
  23.         end
  24.     ]],
  25.    
  26.     -- PreMacro is optional macro text that you want executed before every single button press.
  27.     -- This is if you want to add something like /startattack or /stopcasting before all of the macros in the sequence.
  28.     PreMacro = [[
  29. /run print("-- PreMacro Script --")
  30. /startattack   
  31.     ]],
  32.    
  33.     -- PostMacro is optional macro text that you want executed after every single button press.
  34.     -- I don't know what you would need this for, but it's here anyway.
  35.     PostMacro = [[
  36. /run print("-- PostMacro Script --")
  37.     ]],
  38.    
  39.     -- Macro 1
  40.     [[
  41. /run print("Executing macro 1!")
  42. /cast SpellName1
  43.     ]],
  44.    
  45.     -- Macro 2
  46.     [[
  47. /run print("Executing macro 2!")
  48. /cast SpellName2
  49.     ]],
  50.    
  51.     -- Macro 3
  52.     [[
  53. /run print("Executing macro 3!")
  54. /cast SpellName3
  55.     ]],
  56. }
  57.  
  58. ----
  59. -- Here is a short example which is what most sequences will look like
  60. Sequences["GnomeExample2"] = {
  61.     -- Macro 1
  62.     [[
  63. /run print("Executing macro 1!")
  64. /cast SpellName1
  65.     ]],
  66.    
  67.     -- Macro 2
  68.     [[
  69. /run print("Executing macro 2!")
  70. /cast SpellName2
  71.     ]],
  72.    
  73.     -- Macro 3
  74.     [[
  75. /run print("Executing macro 3!")
  76. /cast SpellName3
  77.     ]],
  78. }



If you like one of my addons, feel free to support the cause!

7.2.0.3 - Attempt to avoid a potential infinite loop caused by changing the macro icon
7.2.0.2 - Attempt to set macro icon more aggressively
7.2.0.1 - Fix for icons clearing when zoning (it's unclear what's causing this)
r5 - toc bump for 6.1
r4 - Added a custom error handler and changed how macros are edited to improve support with other macro addons.
r3 - Resolved a minor infinite loop involving UnregisterEvent('UPDATE_MACROS') not taking effect until the next frame.
r2 - Added custom step functionality, pre and post macro text, and made the sequences file (hopefully) easier to understand and edit.
Optional Files (0)


Post A Reply Comment Options
Unread 01-28-15, 12:16 PM  
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1060
File comments: 187
Uploads: 25
Re: Step Function Assistance

Originally Posted by FuzzyButt
I have been studying writing a good Frost DK 2H step rotation based on the advice found here as far as priority goes:

-Plague Leech if Blood Plague has 4 seconds or less left
-Blood Tap if your target is at or below 35%, Soul Reaper is off cooldown but you have no runes and do have blood tap charges
-Plague Leech if the above applies but you have no blood tap charges (and PL is available)
-Soul Reaper if target is at or below 35%
-Howling Blast on FF proc
-Death Strike on Dark Succor proc
-Oubreak if Blood Plague isn't up
-Plague Strike if Outbreak is unglyphed and on CD
-Blood Tap if you have 11 Blood Tap charges (as to not overcap)
-Howling Blast to apply Necrotic Plague if you have it
-Blood Tap when Killing Machine procs but you have no runes for Obliterate
-Plague Leech if above applies but Blood Tap is unavailable but PL is
-Obliterate on KM proc
-FS on KM proc if Obliterate has more than 4 sec CD (as to not waste KM proc)
-FS when runic power is about te be capped (80+)
-Obliterate if nothing else available
-FS if nothing else available but RP is over 55 to keep RP for Outbreak if needed
-Blood Tap if nothing else availble
-Plague Leech if nothing else available
None of that is possible, addons can't make decisions about what to cast for you based on conditions like that.
Report comment to moderator  
Reply With Quote
Unread 01-27-15, 08:35 PM  
FuzzyButt
A Kobold Labourer

Forum posts: 0
File comments: 1
Uploads: 0
Step Function Assistance

I have been studying writing a good Frost DK 2H step rotation based on the advice found here as far as priority goes:

-Plague Leech if Blood Plague has 4 seconds or less left
-Blood Tap if your target is at or below 35%, Soul Reaper is off cooldown but you have no runes and do have blood tap charges
-Plague Leech if the above applies but you have no blood tap charges (and PL is available)
-Soul Reaper if target is at or below 35%
-Howling Blast on FF proc
-Death Strike on Dark Succor proc
-Oubreak if Blood Plague isn't up
-Plague Strike if Outbreak is unglyphed and on CD
-Blood Tap if you have 11 Blood Tap charges (as to not overcap)
-Howling Blast to apply Necrotic Plague if you have it
-Blood Tap when Killing Machine procs but you have no runes for Obliterate
-Plague Leech if above applies but Blood Tap is unavailable but PL is
-Obliterate on KM proc
-FS on KM proc if Obliterate has more than 4 sec CD (as to not waste KM proc)
-FS when runic power is about te be capped (80+)
-Obliterate if nothing else available
-FS if nothing else available but RP is over 55 to keep RP for Outbreak if needed
-Blood Tap if nothing else availble
-Plague Leech if nothing else available

i am not sure how detailed a step function can be and if you can build in GCD's. I have been playing WOW since vanilla all through Cata then took a break till now. I just finished leveling my DK too 100 (main spec is blood) but like the DPS / OT function as well.

The mechanics of the game have changed fundamentally since I last played and am looking for a catch up......thanks for any assistance !!
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 09:57 PM  
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1060
File comments: 187
Uploads: 25
Re: Re: Re: Re: Re: Re: Frost DK 2H Help

Originally Posted by kaiden
So then If i put Touch of Karma above the cast sequence since that's on a cooldown it should be fine? I ask because my Xuen idea didn't pan out.
It pretty much just looks for /use or /cast in the macro text to set the spell icon, regardless of what it's actually going to cast.

I could support adding #showtooltip <spell> to the macros to show something specific, but I would have a hard time making it accurately display what castsequence is currently doing.

I'm not entirely sure how it will behave, but you can try changing line 6 in Core.lua from
Lua Code:
  1. local CastCmds = { use = true, cast = true, spell = true }
to
Lua Code:
  1. local CastCmds = { use = true, cast = true, spell = true, castsequence = true }
Last edited by semlar : 01-25-15 at 10:00 PM.
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 09:48 PM  
kaiden
A Murloc Raider
 
kaiden's Avatar

Forum posts: 7
File comments: 41
Uploads: 0
Re: Re: Re: Re: Re: Frost DK 2H Help

Originally Posted by semlar
Originally Posted by kaiden
It begins picking up Icons the instant I start casting. It's just frustrating to have the Red ? before then. I know it's just because it doesn't have a spell yet that i can tap in on. So i was thinking if I say put in Invoke Xuen, the White Tiger at the top and remove the combat in front of it, it should always have an icon.
It's incapable of knowing what spell a castsequence is going to cast so it can't show an icon for it.
So then If i put Touch of Karma above the cast sequence since that's on a cooldown it should be fine? I ask because my Xuen idea didn't pan out.
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 09:42 PM  
jesusjuice
A Kobold Labourer

Forum posts: 0
File comments: 5
Uploads: 0
Re: Re: Re: Re: Re: Re: Re: Frost DK 2H Help

Originally Posted by semlar
Remove everything after the } that's closing your Frost sequence, this is all you need..
Lua Code:
  1. local _, Sequences = ... -- Don't touch this
  2.  
  3. Sequences["Frost"] = {
  4. PreMacro = [[
  5. /targetenemy [noharm][dead]
  6. ]],
  7. '/cast !Obliterate',
  8. '/cast Howling Blast',
  9. '/cast Plague Strike',
  10. '/cast Soul Reaper',
  11. '/cast Obliterate',
  12. '/cast Empower Rune Weapon',
  13. '/cast Anti-Magic Shell',
  14. '/cast Frost Strike',
  15. '/cast Dark Simulacrum',
  16. }
That did it. Thank you!
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 09:26 PM  
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1060
File comments: 187
Uploads: 25
Re: Re: Re: Re: Re: Re: Frost DK 2H Help

Remove everything after the } that's closing your Frost sequence, this is all you need..
Lua Code:
  1. local _, Sequences = ... -- Don't touch this
  2.  
  3. Sequences["Frost"] = {
  4. PreMacro = [[
  5. /targetenemy [noharm][dead]
  6. ]],
  7. '/cast !Obliterate',
  8. '/cast Howling Blast',
  9. '/cast Plague Strike',
  10. '/cast Soul Reaper',
  11. '/cast Obliterate',
  12. '/cast Empower Rune Weapon',
  13. '/cast Anti-Magic Shell',
  14. '/cast Frost Strike',
  15. '/cast Dark Simulacrum',
  16. }
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 09:16 PM  
jesusjuice
A Kobold Labourer

Forum posts: 0
File comments: 5
Uploads: 0
Re: Re: Re: Re: Re: Frost DK 2H Help

Originally Posted by semlar
Try downloading the version I just uploaded, if there's a syntax error it should print it to the chat.
Keeps saying there is an syntax error of Sequences.lua near line 82. Unepected symbol near ']'

local _, Sequences = ... -- Don't touch this

----
-- Rename this file to Sequences.lua before you get started, it uses a different file name so as not to overwrite your existing file with a future update.
-- Every entry in the Sequences table defines a single sequence of macros which behave similarly to /castsequence.
-- Sequence names must be unique and contain no more than 16 characters.
-- To use a macro sequence, create a blank macro in-game with the same name you picked for the sequence here and it will overwrite it.
----

----
-- Here's a large demonstration sequence documenting the format:
Sequences["GnomeExample1"] = {
-- StepFunction optionally defines how the step is incremented when pressing the button.
-- This example increments the step in the following order: 1 12 123 1234 etc. until it reaches the end and starts over
-- DO NOT DEFINE A STEP FUNCTION UNLESS YOU THINK YOU KNOW WHAT YOU'RE DOING
StepFunction = [[
limit = limit or 1
if step == limit then
limit = limit % #macros + 1
step = 1
else
step = step % #macros + 1
end
]],

-- PreMacro is optional macro text that you want executed before every single button press.
-- This is if you want to add something like /startattack or /stopcasting before all of the macros in the sequence.
PreMacro = [[
/run print("-- PreMacro Script --")
/startattack
]],

-- PostMacro is optional macro text that you want executed after every single button press.
-- I don't know what you would need this for, but it's here anyway.
PostMacro = [[
/run print("-- PostMacro Script --")
]],

-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],

-- Macro 2
[[
/run print("Executing macro 2!")
/cast SpellName2
]],

-- Macro 3
[[
/run print("Executing macro 3!")
/cast SpellName3
]],
}

----
-- Here is a short example which is what most sequences will look like
Sequences["GnomeExample2"] = {
-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],
}

Sequences["Frost"] = {
PreMacro = [[
/targetenemy [noharm][dead]
]],
'/cast !Obliterate',
'/cast Howling Blast',
'/cast Plague Strike',
'/cast Soul Reaper',
'/cast Obliterate',
'/cast Empower Rune Weapon',
'/cast Anti-Magic Shell',
'/cast Frost Strike',
'/cast Dark Simulacrum',
}
]],
-- Macro 2
[[
/run print("Executing macro 2!")
/cast SpellName2
]],

-- Macro 3
[[
/run print("Executing macro 3!")
/cast SpellName3
]],

]],

]],

-- Macro 2
[[
/run print("Executing macro 2!")
/cast SpellName2
]],

-- Macro 3
[[
/run print("Executing macro 3!")
/cast SpellName3
]],
}
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 08:56 PM  
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1060
File comments: 187
Uploads: 25
Re: Re: Re: Re: Frost DK 2H Help

Originally Posted by kaiden
It begins picking up Icons the instant I start casting. It's just frustrating to have the Red ? before then. I know it's just because it doesn't have a spell yet that i can tap in on. So i was thinking if I say put in Invoke Xuen, the White Tiger at the top and remove the combat in front of it, it should always have an icon.
It's incapable of knowing what spell a castsequence is going to cast so it can't show an icon for it.
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 08:47 PM  
kaiden
A Murloc Raider
 
kaiden's Avatar

Forum posts: 7
File comments: 41
Uploads: 0
Re: Re: Re: Frost DK 2H Help

Originally Posted by semlar
Originally Posted by kaiden
Is there any way I can get the first icon to not be the Red ? mark??
Without seeing your sequence I can't offer any suggestions, if it's not updating the icon it's because there isn't a /cast command in the macro that it can parse a spell out of.

Originally Posted by kaiden
the , after cast soul reaper shouldn't be there
That does need to be there, don't remove it.

There's nothing syntactically wrong with what's here, so the problem is somewhere else.
Oh sorry for giving wrong info. I was getting too deep on my own script and thought it was at the bottom. Didn't even see the PostMacro after it. My apologies.

As far as my script:

Code:
Sequences['Monk.WWST'] = {
StepFunction = [[
	limit = limit or 1
	if step == limit then
		limit = limit % #macros + 1
		step = 1
	else
		step = step % #macros + 1
	end
]],
PreMacro = [[
/targetenemy [noharm][dead]
/startattack
]],
	'/castsequence reset=10 [combat,nochanneling] Fists of Fury,Tigereye Brew',
	'/castsequence reset=10 [combat,nochanneling] Chi Wave,Tiger Palm,Rising Sun Kick,Blackout Kick,Jab,Blackout Kick,Jab,Blackout Kick',
	'/cast [combat,nochanneling] Touch of Karma',
	'/cast [combat,nochanneling] Jab',
	'/cast [combat,nochanneling] Energizing Brew',
PostMacro = [[
/cast [combat,nochanneling] Serenity
/cast [combat,nochanneling] Invoke Xuen, the White Tiger
/cast [combat,nochanneling] Touch of Death
/use [combat,nochanneling] 13
/use [combat,nochanneling] 14
]],
}
There it is. It begins picking up Icons the instant I start casting. It's just frustrating to have the Red ? before then. I know it's just because it doesn't have a spell yet that i can tap in on. So i was thinking if I say put in Invoke Xuen, the White Tiger at the top and remove the combat in front of it, it should always have an icon.

Am I thinking about this right?
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 08:41 PM  
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1060
File comments: 187
Uploads: 25
Re: Re: Re: Re: Frost DK 2H Help

Try downloading the version I just uploaded, if there's a syntax error it should print it to the chat.
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 08:37 PM  
jesusjuice
A Kobold Labourer

Forum posts: 0
File comments: 5
Uploads: 0
Re: Re: Re: Frost DK 2H Help

Originally Posted by jesusjuice
Originally Posted by kaiden
Originally Posted by jesusjuice
Can't get this macro to work for some reason.





----
-- Here is a short example which is what most sequences will look like
Sequences["GnomeExample2"] = {
-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],
}
---Death Knight---

---Frost---

Sequences['FrostST'] = {
PreMacro = [[
/targetenemy [noharm][dead]
/cast [nostance: 1] frost presence
/cast Pillar of Frost
]],
'/cast Horn of Winter',
'/cast Outbreak',
'/cast Obliterate',
'/cast Frost Strike',
'/cast Plague Strike',
"/cast Soul Reaper",
PostMacro = [[
/use [combat]13
/use [combat]14
/startattck
]],
}
You shouldn't cast Horn of Winter that often, it will always cast. Second the , after cast soul reaper shouldn't be there. Just for sake of being pretty you should do the '''s around the /cast Soul Reaper instead of "'s

Would it work then?
If it helps, here is the full thing.


local _, Sequences = ... -- Don't touch this

----
-- Rename this file to Sequences.lua before you get started, it uses a different file name so as not to overwrite your existing file with a future update.
-- Every entry in the Sequences table defines a single sequence of macros which behave similarly to /castsequence.
-- Sequence names must be unique and contain no more than 16 characters.
-- To use a macro sequence, create a blank macro in-game with the same name you picked for the sequence here and it will overwrite it.
----

----
-- Here's a large demonstration sequence documenting the format:
Sequences["GnomeExample1"] = {
-- StepFunction optionally defines how the step is incremented when pressing the button.
-- This example increments the step in the following order: 1 12 123 1234 etc. until it reaches the end and starts over
-- DO NOT DEFINE A STEP FUNCTION UNLESS YOU THINK YOU KNOW WHAT YOU'RE DOING
StepFunction = [[
limit = limit or 1
if step == limit then
limit = limit % #macros + 1
step = 1
else
step = step % #macros + 1
end
]],

-- PreMacro is optional macro text that you want executed before every single button press.
-- This is if you want to add something like /startattack or /stopcasting before all of the macros in the sequence.
PreMacro = [[
/run print("-- PreMacro Script --")
/startattack
]],

-- PostMacro is optional macro text that you want executed after every single button press.
-- I don't know what you would need this for, but it's here anyway.
PostMacro = [[
/run print("-- PostMacro Script --")
]],

-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],

-- Macro 2
[[
/run print("Executing macro 2!")
/cast SpellName2
]],

-- Macro 3
[[
/run print("Executing macro 3!")
/cast SpellName3
]],
}

----
-- Here is a short example which is what most sequences will look like
Sequences["GnomeExample2"] = {
-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],
}

Sequences["Frost"] = {
PreMacro = [[
/targetenemy [noharm][dead]
]],
'/cast !Obliterate',
'/cast Howling Blast',
'/cast Plague Strike',
'/cast Soul Reaper',
'/cast Obliterate',
'/cast Empower Rune Weapon',
'/cast Anti-Magic Shell',
'/cast Frost Strike',
'/cast Dark Simulacrum',
}

]],

-- Macro 2
[[
/run print("Executing macro 2!")
/cast SpellName2
]],

-- Macro 3
[[
/run print("Executing macro 3!")
/cast SpellName3
]],
}
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 08:14 PM  
semlar
A Pyroguard Emberseer
 
semlar's Avatar
AddOn Author - Click to view AddOns

Forum posts: 1060
File comments: 187
Uploads: 25
Re: Re: Frost DK 2H Help

Originally Posted by kaiden
Is there any way I can get the first icon to not be the Red ? mark??
Without seeing your sequence I can't offer any suggestions, if it's not updating the icon it's because there isn't a /cast command in the macro that it can parse a spell out of.

Originally Posted by kaiden
the , after cast soul reaper shouldn't be there
That does need to be there, don't remove it.

There's nothing syntactically wrong with what's here, so the problem is somewhere else.
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 07:58 PM  
jesusjuice
A Kobold Labourer

Forum posts: 0
File comments: 5
Uploads: 0
Re: Re: Frost DK 2H Help

Originally Posted by kaiden
Originally Posted by jesusjuice
Can't get this macro to work for some reason.





----
-- Here is a short example which is what most sequences will look like
Sequences["GnomeExample2"] = {
-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],
}
---Death Knight---

---Frost---

Sequences['FrostST'] = {
PreMacro = [[
/targetenemy [noharm][dead]
/cast [nostance: 1] frost presence
/cast Pillar of Frost
]],
'/cast Horn of Winter',
'/cast Outbreak',
'/cast Obliterate',
'/cast Frost Strike',
'/cast Plague Strike',
"/cast Soul Reaper",
PostMacro = [[
/use [combat]13
/use [combat]14
/startattck
]],
}
You shouldn't cast Horn of Winter that often, it will always cast. Second the , after cast soul reaper shouldn't be there. Just for sake of being pretty you should do the '''s around the /cast Soul Reaper instead of "'s

Would it work then?
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 07:23 PM  
kaiden
A Murloc Raider
 
kaiden's Avatar

Forum posts: 7
File comments: 41
Uploads: 0
Re: Frost DK 2H Help

Originally Posted by jesusjuice
Can't get this macro to work for some reason.





----
-- Here is a short example which is what most sequences will look like
Sequences["GnomeExample2"] = {
-- Macro 1
[[
/run print("Executing macro 1!")
/cast SpellName1
]],
}
---Death Knight---

---Frost---

Sequences['FrostST'] = {
PreMacro = [[
/targetenemy [noharm][dead]
/cast [nostance: 1] frost presence
/cast Pillar of Frost
]],
'/cast Horn of Winter',
'/cast Outbreak',
'/cast Obliterate',
'/cast Frost Strike',
'/cast Plague Strike',
"/cast Soul Reaper",
PostMacro = [[
/use [combat]13
/use [combat]14
/startattck
]],
}
You shouldn't cast Horn of Winter that often, it will always cast. Second the , after cast soul reaper shouldn't be there. Just for sake of being pretty you should do the '''s around the /cast Soul Reaper instead of "'s

also fix your /startattack at the bottom.
Last edited by kaiden : 01-25-15 at 08:05 PM.
Report comment to moderator  
Reply With Quote
Unread 01-25-15, 07:15 PM  
kaiden
A Murloc Raider
 
kaiden's Avatar

Forum posts: 7
File comments: 41
Uploads: 0
Is there any way I can get the first icon to not be the Red ? mark??
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: