Download
(50 Kb)
Download
Updated: 06/27/24 04:51 AM
Pictures
File Info
Compatibility:
Gold Road (10.0.0)
Updated:06/27/24 04:51 AM
Created:05/23/19 08:06 AM
Monthly downloads:15,646
Total downloads:287,359
Favorites:149
MD5:
Categories:Casting Bars, Cooldowns, Buff, Debuff, Spell, Combat Mods, Graphic UI Mods
10.0.0
Combat Metronome (GCD Tracker)  Popular! (More than 5000 hits)
Version: v1.6.6
by: Darianopolis, barny
The All-in-one Combat Timing bar with the update all of you guys have been waiting for!

Since Darianopolis can no longer maintain the Addon, I will probably do further updates only on the "optional Update", as it is easier for me to maintain. - barny

! Fixed time adjustment on exhausting fatecarver depending on crux
! Fixed: Channeled abilities or abilities with cast time are now interrupted by block, dodgeroll or barswap
! Fixed a bug after resizing the cast bar in unlock mode
+ Added options to display remaining time, spell name and spell icon on cast bar for spells with cast/channel time
+ Remaining time label and spell icon now move according to bar alignment
+ Added option to stop HA tracking
+ Added option to show the cast bar permanently
+ Added fancy mode.

IMPORTANT: I no longer play ESO and can't actively maintain this addon.
I have enabled "Allow Updates & AddOns" if someone wants to keep this release working with new ESO API and library changes.
Anyone is absolutely free to use this addon and adapt, modify or build it into any project you're working on.
I would love to see some version of this addon continue, but I don't have the time or available classes to re-install ESO and properly maintain and bug-fix for all of the different classes and abilities on new builds and changes.
Track your heavy swings, ability cooldowns and cast/channels all in one bar to help you perfect your rotation timing and take advantage of abilty queuing with live latency information.
Now includes optional Ultimate tracking.

To access the addon settings quickly, enter the command /cm

This addon's counterpart "Combat Auras" has now been released! (You can see it in the preview)
https://www.esoui.com/downloads/info2408-CombatAurasAbilityTimers.html

IMPORTANT - This addon and "Combat Auras" SHOULD always be updated at the same time. They share a common library to improve perforamnce, and there is a good chance on any update that I've made changes to this central library.

IMPORTANT: There have been changes to the central library. Combat Auras probably won't work after you updated Combat Metronome!
Thanks for Seltiix for prototyping the initial sound cue system.

Dependencies:
  • LibAddonMenu-2.0
  • libAddonKeybinds

Features
  • Heavy attack + Cast / Channel + GCD tracking = Consolidate all of your combat timing into one bar
  • Displays your ping live on the bar to allow spell queueing with live latency information.
  • Timing adjustments. Firing abilities too early or too late? - Fine tune the displayed GCD / heavy timer / cast / channel individually (or globally) for ANY ability to best suit your play.
  • Auto hides - Keeps your UI clean
  • Flashing animation on health percentage during execute
  • Keybind to force display + show absolute health
  • 'Tick Tock' sound cues for audio feedback
Future Features (No guarantee or time frame):
  • Light attack miss alert ? (Audio/Visual alert to provide feedback and improve timing reflexes)
Known issues:
  • Some types of cast cancels are not tracked
  • Rarely, ground targeted abilities (E.g. Endless Hail) won't trigger a timer
2024-06-16 v1.6.6
! Changed the way dodge was detected for more accurate results
! Several fixes with resource bar and its settings

2024-05-11 v1.6.5
! Updated DariansUtilies for U42 and scribing
! Fixed a bug when resizing or moving the progressbar via dragging
+ More clearity in AddOn settings due to more submenus
+ Added font styles

2024-04-02 v1.6.4
! Fixed the ability adjusts section. Should now work as intended
! Fixed fonts for non latin letters and added an option to choose label font
! Bar and tracker can now be shown in settings menu to check what it looks like
+ Tick volume can now be adjusted in settings
+ Added option to hide tracker and/or progressbar in PVP Zones rather than just plain deactivating the AddOn
+ Added an ability stack tracker for stackable abilities like bound armaments, crux, molten whip or grimm focus and flame skull and their morphs
+ Added an option to always show your own resources, instead of only when targeting units or in combat
+ Added a label for magicka and options to resize and colorize labels
+ Added option to change bar color on channeling abilities <1 second to indicate possibility to barswap
+ Cleaned up the addon menu by introducing submenus
+ A little bit more order to the code by adding sections

2024-02-02 v1.6.3
! Hotfix #2

2024-02-01 v1.6.2b
! Hotfix for AddOn not being able to load

2024-02-01 v1.6.2
! Fixed: Barswap and block behavior on progress bar
! Tweaked exhausting fatecarvers extended duration to better match visual effect
+ Brought order into chaos. Cleaned up the code a little and modularized it

2024-01-24 v1.6.1
! Fixed an bug, where the addon would not load, because of missing dependencies (sorry, my mistake guys)
! Spell and remaining time label are now properly displayed in cast bar
+ Barswap now also cancels channeling spells
+ Added fancy mode

2024-01-22 v1.6.0
project taken by barny
! Fixed time adjustment on exhausting fatecarver depending on crux
! Fixed: Channeled abilities or abilities with cast time are now interrupted by block or dodgeroll
! Fixed a bug after resizing the cast bar in unlock mode
+ Added options to display remaining time, spell name and spell icon on cast bar for spells with cast/channel time
+ Remaining time label and spell icon now move according to bar alignment
+ Added option to stop HA tracking
+ Added option to show the cast bar permanently

2020-11-03 v1.5.2
! Deprecated old debug Constants file, 'cause it keeps breaking on new updates

2020-05-22 v1.5.0
! No Longer uses DariansAddonLoader
! No longer uses LibStub // Wambo's change suggestion

2019-08-14 v1.4.1
+ Moved DariansAddonLoader into DariansUtilies

2019-08-14 v1.4.0
+ Added keybind to force display
+ Added flashing animation on helath percentage during execute
+ Added customizable tick tock audio cue

2019-05-20 v1.3.4
! Fixed bar shadow displayed on initial UI (re)load
+ Added adjustable execute health percentage highlight
+ Added option to attach Target Health to reticle

2019-06-19 v1.3.3
! Standardized capitalization on function names

2019-06-18 v1.3.2
! Health now shows absolute if target is at 100%, irregardless of combat state
+ Added account wide settings toggle

2019-06-16 v1.3.1
! Fixed health marker not hiding properly
! Fixed versionining - Last version should have been released as 1.3.0
+ Added max displayed latency option

2019-06-16 v1.3.0
! Performance improvements to library
+ Added optional stamina and mob health tracking

2019-06-13 v1.2.2
! Fixed lightning staff attack constantly resetting on each tick
! Abilities with sub gcd cast/channel times now show gcd
! Fixed some healing abilities not triggering their timers
! Changed guard detection to use in-game api... (hurrdurr smart programming :S)
! Added situational ability activation requirements to api

2019-06-12 v1.2.1
! Fixed heavy attack timer not resetting on early release
! Moved ability event dispatch to combat event trigger
! Fixed escape cancelled ground targeted spell from triggering on mount up

2019-06-12 v1.2.0
! Major algorithm improvement
! event queuing added - Can handle attack queueing without timer duration overwrites
! Various reliability improvements
! Improved algorithm to no longer rely on event forcing

2019-06-09 v1.1.5
! Fixed timer stutter when casting ability whilst dismounting
! Reworked targeted spell detection, moved to generic event handling system
! Improved and moved Guard detection to LibDMUI.Targeting:GetUnitNPCType(unitTag)
- Removed Accidental Presidency font - Now using resized base game font

2019-06-09 v1.1.4
! Ultimate no longer shows when OOC and targeting dead enemies, critters or (optionally) neutral guards

2019-06-09 v1.1.3
! Fixed channeled spells are no longer detected as instant cast
! Desynchronised eventAbility and eventStart load to improve reliability
! Added timer cancel on KNOCKBACK, PACIFIED, STAGGERED, STUNNED, INTERRUPTED combat events

2019-06-08 v1.1.2
! Deferred timer start until SLOT_UPDATED event (within 100ms grace period) - Removes jitter from bar + hopefully fixes insane timer bug
! Few failsafe conditions added to update loop to improve reliability (hopefully)

2019-06-08 v1.1.1
! Streamlined update algorithm
! Removed debug on targeting cancel event
! Removed excess code + comments
! Added default -10ms start time adjust to minimize post-adjustment jitter
! Added hard limit of max -100ms start time adjust to prevent high latency overlapping from eating spell cooldowns
+ Added optional ultimate tracker above cast bar - Can now hide action bars completely!

2019-06-08 v1.1.0
! Fixed bug with initial use of some abilities not registering the correct cooldown
+ GCDs can now be adjusted on for each ability!
+ Complete rework of detection algorithm
+ Moved Frame + Progress bar code to separate library (will be released at a later date)

2019-06-03 v1.0.0
! Renamed addon files to CombatMetronome, deprecated GCDTracker name from addon
! Changed SavedVariables to CombatMetronomeSavedVars
! Will need to remove old files and rename saved variables if upgrading

2019-06-03 v0.8.1
! Fixed error on adding new channeled ability adjustment

2019-06-03 v0.8.0
+ Ability caching fixed and implemented into base addon - no longer caches on slot
+ Added individual skill cast time adjusts
+ Added ping zone display option for heavy attacks to maintain visual consistency
+ Added global ability cast adjust
! Reworked entire ability tracking system to be more expandable and flexible

2019-05-29 v0.7.2
! Early cancel melee swings are now tracked
! GCD and cast cooldowns are now independent and can be reset without affecting each other (GCD Reset is now compataible)
- Removed baseline caching of abilities - Reslotting and in-combat ability morphs do not cause issues
+ Added debug toggle to ingame menu

2019-05-29 v0.7.1
! Removed excessive logging on cast events

2019-05-29 v0.7
+ Added experimental heavy attack + cast timing
Known issues:
- Reslotting abilities on bars requires a /reloadui
- Abilities whos cast / use behaviours change dynamically are locked into their first form
- Cast cancels are not currently tracked, and GCD reset tracking does not work whilst heavy attack + cast timing is enabled
- Early finish / cancelled heavy attacks do not reset the swing bar
? This is a test build - I don't have enough characters and spells
unlocked to be able to fully test this (I haven't tested channeling
at all because I don't have any channeled spells unlocked xD)
So anyone willing to try things out and report issues would be greatly appreciated.

2019-05-24 v0.6.1
! Minor code / metadata cleanup
! Fixed long decimal in options

2019-05-24 v0.6
+ Sliders for position and size
+ Buttons for centering
! Fixed file format for Minion

2019-05-23 v0.5
+ Progress bar segmented to prevent overlapping with ping zone - No colour blending with transparency
! Fixed error on bar resize
! Bar now defaults to the center of the screen
+ Added background colour to Options

2019-05-23 v0.4.1
! Improved slot tracking algorithm

2019-05-23 v0.4
+ GCD adjustment +/-
+ Left/right/center alignment for progress bar
+ Toggle display OOC
Optional Files (1)
File Name
Version
Size
Author
Date
Type
v1.6.6
50kB
06/27/24 04:51 AM
Patch


Archived Files (28)
File Name
Version
Size
Uploader
Date
v1.6.5
50kB
barny
05/11/24 06:36 AM
v1.6.4
49kB
barny
04/19/24 12:59 AM
v1.6.3
38kB
barny
02/02/24 05:49 AM
v1.6.1
34kB
barny
01/27/24 01:19 PM
v1.5.2
31kB
Darianopolis
11/02/20 10:31 PM
v1.5.1
30kB
Darianopolis
05/28/20 09:21 PM
v1.5.0
30kB
Darianopolis
05/22/20 08:58 AM
v1.4.1
32kB
Darianopolis
08/19/19 02:16 PM
v1.4.0
32kB
Darianopolis
08/14/19 04:49 PM
v1.3.4
67kB
Darianopolis
06/20/19 04:44 AM
v1.3.3
67kB
Darianopolis
06/19/19 07:24 AM
v1.3.2
67kB
Darianopolis
06/17/19 06:28 PM
v1.3.1
66kB
Darianopolis
06/16/19 12:22 PM
v1.2.3
66kB
Darianopolis
06/16/19 11:04 AM
v1.2.2
58kB
Darianopolis
06/13/19 11:00 AM
v1.2.1
23kB
Darianopolis
06/12/19 11:38 AM
v1.2.0
57kB
Darianopolis
06/12/19 05:16 AM
v1.1.5
21kB
Darianopolis
06/10/19 05:55 PM
v1.1.4
40kB
Darianopolis
06/09/19 08:16 PM
v1.1.2
39kB
Darianopolis
06/08/19 05:25 PM
v1.1.1
39kB
Darianopolis
06/08/19 02:52 PM
v1.0.0
10kB
Darianopolis
06/03/19 03:17 PM
v0.8.1
10kB
Darianopolis
06/03/19 11:03 AM
v0.7.2
9kB
Darianopolis
05/29/19 03:15 PM
v0.7.1
45kB
Darianopolis
05/28/19 11:10 PM
v0.6.1
7kB
Darianopolis
05/26/19 04:15 AM
v0.5
6kB
Darianopolis
05/23/19 03:43 PM
v0.4.1
6kB
Darianopolis
05/23/19 10:43 AM


Post A Reply Comment Options
Unread 07/12/24, 07:52 PM  
barny
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 24
Uploads: 1
Re: GCD Tracker not appearing for Elemental Explosion

Originally Posted by Akylles
My GCD tracker doesn't seem to be working with the new 2s CD scribing skills. It will show/work properly for the first cast of Elemental Explosion, but then it will not appear for any subsequent cast during that combat session. I turned on the option to show the GCD tracker outside of combat, and now the GCD appears but will just show a pure yellow, 1-sec CD timer instead of the proper 2sec timer.
Thanks for reporting.
As stated in the bugs section of my author portal, this is is a confirmed bug and has probably to do with ground targeted spells. Weird interactions...currently working on it.
kind regards
Barny
Report comment to moderator  
Reply With Quote
Unread 07/11/24, 05:25 AM  
Akylles

Forum posts: 0
File comments: 1
Uploads: 0
GCD Tracker not appearing for Elemental Explosion

My GCD tracker doesn't seem to be working with the new 2s CD scribing skills. It will show/work properly for the first cast of Elemental Explosion, but then it will not appear for any subsequent cast during that combat session. I turned on the option to show the GCD tracker outside of combat, and now the GCD appears but will just show a pure yellow, 1-sec CD timer instead of the proper 2sec timer.
Report comment to moderator  
Reply With Quote
Unread 07/09/24, 12:21 PM  
PhnxZ
AddOn Author - Click to view AddOns

Forum posts: 8
File comments: 188
Uploads: 1
Re: DariansUtilities

Originally Posted by Dunkirk
It lists DariansUtilities as a dependency, and even talks about it in the changelog, but that mod is not in Minion, nor on this site. I feel like I'm taking crazy pills. Where is this dependency?
Don't worry, it's bundled inside Combat Metronome
Report comment to moderator  
Reply With Quote
Unread 07/09/24, 11:59 AM  
Dunkirk

Forum posts: 0
File comments: 2
Uploads: 0
DariansUtilities

It lists DariansUtilities as a dependency, and even talks about it in the changelog, but that mod is not in Minion, nor on this site. I feel like I'm taking crazy pills. Where is this dependency?
Report comment to moderator  
Reply With Quote
Unread 06/17/24, 03:25 PM  
deviantsel

Forum posts: 0
File comments: 25
Uploads: 0
Originally Posted by barny
Originally Posted by deviantsel
Does the target health execute highlight function work as it used to be?
When I enable the function now, the target health percentage number just become a little bigger, not as before which will change color in execute.
Hey deviantsel, you're absolutely right, I had changed the default HP label color to red so it would alternate between red and white when in execute. Somehow I thought everyone would use red as the hp Label color. I have fixed that for the upcoming update along with some other bugs I noticed on the way.
Thanks for you hard work!
Report comment to moderator  
Reply With Quote
Unread 06/16/24, 09:51 AM  
barny
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 24
Uploads: 1
Originally Posted by deviantsel
Does the target health execute highlight function work as it used to be?
When I enable the function now, the target health percentage number just become a little bigger, not as before which will change color in execute.
Hey deviantsel, you're absolutely right, I had changed the default HP label color to red so it would alternate between red and white when in execute. Somehow I thought everyone would use red as the hp Label color. I have fixed that for the upcoming update along with some other bugs I noticed on the way.
Report comment to moderator  
Reply With Quote
Unread 06/15/24, 06:56 AM  
deviantsel

Forum posts: 0
File comments: 25
Uploads: 0
Does the target health execute highlight function work as it used to be?
When I enable the function now, the target health percentage number just become a little bigger, not as before which will change color in execute.
Last edited by deviantsel : 06/15/24 at 06:56 AM.
Report comment to moderator  
Reply With Quote
Unread 06/09/24, 10:30 AM  
barny
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 24
Uploads: 1
Originally Posted by Nuirangi
Originally Posted by barny
Hey Nuirangi,
what version of the AddOn are you running? We are currently at version 1.6.5 and it seems to me, like your version is not up to date.
Will look into it anyway.
Hey barny. That's totally my bad. I had this addon on "ignore updates" for some reason (probably by mistake). Should have checked that possiblitity as well.
Sorry for the trouble. Thanks for continuing this addon!
No worries
Report comment to moderator  
Reply With Quote
Unread 06/07/24, 04:18 PM  
Nuirangi

Forum posts: 0
File comments: 12
Uploads: 0
Originally Posted by barny
Hey Nuirangi,
what version of the AddOn are you running? We are currently at version 1.6.5 and it seems to me, like your version is not up to date.
Will look into it anyway.
Hey barny. That's totally my bad. I had this addon on "ignore updates" for some reason (probably by mistake). Should have checked that possiblitity as well.
Sorry for the trouble. Thanks for continuing this addon!
Report comment to moderator  
Reply With Quote
Unread 06/07/24, 03:47 AM  
barny
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 24
Uploads: 1
Originally Posted by Nuirangi
Originally Posted by barny
[...] this seems to be a different AddOn called GCDMonitor. It probably has to do with a recent change in the U42 API, where they changed the results of the function
Code:
GetAbilityCastInfo(id)
Hey barny.
I do get similar errors for Combat Metronome (GCD Tracker):
Hey Nuirangi,
what version of the AddOn are you running? We are currently at version 1.6.5 and it seems to me, like your version is not up to date.
Will look into it anyway.
Report comment to moderator  
Reply With Quote
Unread 06/07/24, 02:16 AM  
Nuirangi

Forum posts: 0
File comments: 12
Uploads: 0
Originally Posted by barny
[...] this seems to be a different AddOn called GCDMonitor. It probably has to do with a recent change in the U42 API, where they changed the results of the function
Code:
GetAbilityCastInfo(id)
Hey barny.
I do get similar errors for Combat Metronome (GCD Tracker):
Code:
bad argument #2 to 'math.max' (number expected, got nil) stack traceback:
[C]: in function 'math.max'
user:/AddOns/CombatMetronome/ DariansUtilities/abilities/Ability.lua:36: in function 'Ability:Forld'
<Locals> self = [table: 1], id = 16165, o = [table:2]{castTime = 0, name = "leichter Flammenangriff^m", channeled = F, id = 16165}, name = "leichter Angriff^m", actionSlotType = 5, passive = F </Locals>
user:/AddOns/CombatMetronome/ DariansUtilities/abilities/Ability.lua:276: in function 'Ability.Tracker:HandleSlotUsed'
<Locals> self = [table:3]{started = T, name= "Util.Ability.Tracker", eventStart = 868824, gcd = 1000, lastMounted = 864737, log = F}, e = 131193, slot 1 </Locals>
user:/AddOns/CombatMetronome/ DariansUtilities/abilities/Ability.lua:127: in function '(anonymous)'
Code:
bad argument #2 to 'math.max' (number expected, got nil) stack traceback:
[C]: in function 'math.max'
user:/AddOns/CombatMetronome/ DariansUtilities/abilities/Ability.lua:36: in function 'Ability:Forld'
<Locals> self = [table: 1]}}, id = 46356, o = [table:2]{castTime = 0, name= "Kraftimpuls^m", channeled = F, id = 46356}, name = "Kraftimpuls^m", action SlotType = 0, passive = F </Locals>
user:/AddOns/CombatMetronome/ CombatMetronome.lua:230: in function '(anonymous)'
<Locals> e = 131193, slot = 5</Locals>
Report comment to moderator  
Reply With Quote
Unread 06/06/24, 03:26 AM  
barny
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 24
Uploads: 1
Originally Posted by Astelodos
Hello, I get this error when using biting jabs on my templar

bad argument #2 to 'math.max' (number expected, got nil)
stack traceback:
[C]: in function 'math.max'
user:/AddOns/GCDMonitor/GCDMonitor.lua:104: in function 'OnAbilityUsed'
<Locals> slotnum = 3, abilityId = 26792, isChanneled = T, castTime = 800 </Locals>
user:/AddOns/GCDMonitor/GCDMonitor.lua:148: in function '(anonymous)'
<Locals> _ = 131193, slotnum = 3 </Locals>
Hey Astelodos,
this seems to be a different AddOn called GCDMonitor. It probably has to do with a recent change in the U42 API, where they changed the results of the function
Code:
GetAbilityCastInfo(id)
Last edited by barny : 06/06/24 at 03:26 AM.
Report comment to moderator  
Reply With Quote
Unread 06/05/24, 09:47 PM  
Astelodos

Forum posts: 1
File comments: 5
Uploads: 0
Hello, I get this error when using biting jabs on my templar

bad argument #2 to 'math.max' (number expected, got nil)
stack traceback:
[C]: in function 'math.max'
user:/AddOns/GCDMonitor/GCDMonitor.lua:104: in function 'OnAbilityUsed'
<Locals> slotnum = 3, abilityId = 26792, isChanneled = T, castTime = 800 </Locals>
user:/AddOns/GCDMonitor/GCDMonitor.lua:148: in function '(anonymous)'
<Locals> _ = 131193, slotnum = 3 </Locals>
Report comment to moderator  
Reply With Quote
Unread 05/21/24, 03:44 AM  
barny
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 24
Uploads: 1
Re: Re: Position Not Saving

Originally Posted by Banditovich
Originally Posted by Chanzi
Whenever I unlock the position and drag it, the location doesn't save after a reload or relogging. Changing the position with the numbers rather than dragging does make the position save.

I have version 1.6.4.
Have found a solution to fix this. You need to open the CMUserInterface.lua file located in "C:\Users\Username\Documents\Elder Scrolls Online\live\AddOns\CombatMetronome" and fix:
24 line - self.config.xOffset = self.self.frame:getLeft()
25 line - self.config.yOffset = self.self.frame:getTop()
29 line - self.config.width = self.self.frame:getWidth()
30 line - self.config.height = self.self.frame:getHeight()
Fix for this option:
line 24 - self.config.xOffset = self.frame:getLeft()
25 line - self.config.yOffset = self.frame:GetTop()
line 29 - self.config.width = self.frame:getWidth()
30 line - self.config.height = self.frame:GetHeight()

And then everything will work. The error occurs due to the "doubling" of the "self" function.
You can open this file using a standard notepad or Notepad++ program
Hey there, this is resolved with version 1.6.5
Report comment to moderator  
Reply With Quote
Unread 05/11/24, 02:42 AM  
Banditovich

Forum posts: 0
File comments: 1
Uploads: 0
Re: Position Not Saving

Originally Posted by Chanzi
Whenever I unlock the position and drag it, the location doesn't save after a reload or relogging. Changing the position with the numbers rather than dragging does make the position save.

I have version 1.6.4.
Have found a solution to fix this. You need to open the CMUserInterface.lua file located in "C:\Users\Username\Documents\Elder Scrolls Online\live\AddOns\CombatMetronome" and fix:
24 line - self.config.xOffset = self.self.frame:getLeft()
25 line - self.config.yOffset = self.self.frame:getTop()
29 line - self.config.width = self.self.frame:getWidth()
30 line - self.config.height = self.self.frame:getHeight()
Fix for this option:
line 24 - self.config.xOffset = self.frame:getLeft()
25 line - self.config.yOffset = self.frame:GetTop()
line 29 - self.config.width = self.frame:getWidth()
30 line - self.config.height = self.frame:GetHeight()

And then everything will work. The error occurs due to the "doubling" of the "self" function.
You can open this file using a standard notepad or Notepad++ program
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: