+ Reply to Thread
Page 1 of 3 1 2 3 LastLast
Results 1 to 20 of 48

Thread: Hold the Line Maths

  1. #1
    Join Date
    Sep 2009
    Posts
    1,900

    Hold the Line Maths

    I am attempting to put some rough math up on Hold The Line using certain assumptions which I want to assert here (if anybody disagrees I would like to know why so I can switch things around). I am tired of everyone saying "Hold the Line makes Parry uber" without math... so I'm just going to go ahead and do it.

    Assertions:

    1) The boss has a 2 second swing timer.
    2) The fight is 390 seconds long.
    3) The person in question is godly. Therefore their use of shield block is perfect giving them an uptime of 33.33% based on the 390 seconds, or 13 shield block uses.
    4) The boss swings 195 times in said scenario (2 second swing timer... this maths was easy.)
    5) The distribution of avoidance is linear based on the fight time length. I feel this will look favorably on hold the line, but please take this into account that it makes it a guess only, NOT the law.
    6) Stats:
    - 5% Miss
    - 10.46% Dodge
    - 12.59% Parry
    - 51.52% Block
    - 31.06% Critical Block

    If anyone notices an issue with the rough math included below please let me know either in the thread or via PM and I will review/adjust as necessary.
    Last edited by MellvarTank; 01-14-2011 at 08:38 PM.
    RNGesus - Saving you unreliably since BC.
    http://i689.photobucket.com/albums/v...ellvarsig3.jpg

  2. #2
    Join Date
    Sep 2009
    Posts
    1,900
    Assumptions:


    Assuming a 2 second swing timer and a 390 second long boss fight, we are looking at about 195 total swing over the course of the fight.

    390 / 2 = 195

    Assume the tank is superhuman, we can assume that Shield Block will be used 13 times.

    390 / 30 = 13

    (where 30 seconds represents the cooldown on shield wall)

    If Shield Block is used 13 times, we can calculate then the uptime of it given the 10 second duration and length of the fight.

    (13*10) / 390 = .3333 or 33.33%

    Avoidance:

    Given the above figures we can look at some avoidance percentages and start figuring. I will re-list the given avoidance figures:

    5% - Base miss chance (this will not change, ever.)
    10.46% - Dodge chance
    12.59% - Parry chance
    51.52% - Block chance
    31.06% - Critical Block chance (Note that the sum of Block chance +25% does not exceed 100% and thus will not change the critical block chance.)

    If we sum the chance to avoid attacks entirely (all less block/critical block) then take the percentage of each we end up with what percentage of attacks are avoided, and what the percentage of avoided attacks are.

    .05 * .1046 * .1259 = .2805 or 28.05% attacks are estimated to be avoided.

    Of these avoided:

    .5 / .2805 = .1783 or 17.83% are Miss
    .1046 / .2805 = .3729 or 37.29% are Dodge
    .1259 / .2805 = .4488 or 44.88% are Parry

    Shield Block:

    Shield block is up for 10 seconds every use, and has a 30 second cooldown. Using the figures from above, we can estimate approximately how many hits you would take with shield block up, and how many of those are avoided, then how many are blocked (the remainder of hits after avoiding) as with shield block up and the above stats you are over 102.4% avoidance/block (commonly referred to as unhittable).

    We have calculated that Shield Block is up for 130 seconds of the encounter, this is roughly 33.33% of said encounter. We have also stated that the maximum number of potential swings cannot exceed 195. So using these figures:

    .3333 * 195 = ~65 swings while Shield block is active.

    For simplicity, I intend to use avoidance as a straight percentages. PLEASE DO NOT ASSUME THIS IS THE ABSOLUTE TRUTH, AVOIDANCE (AND WINDMILLS) DO NOT WORK THAT WAY! In the law of averages, this is what you would expect to happen but as most of us have learned, this is not the way that avoidance works all the time in an encounter.

    If our combined avoidance is 28.05%, we can use this to estimate the number of attacks avoided:

    .2805 * 65 = ~18 avoided swings.

    Using the percentages of that avoidance calculated earlier, we can estimate the number of parries give the avoided swings.

    18 * .1783 = ~3 Miss
    18 * .3729 = ~7 Dodge
    18 * .4488 = ~8 Parry

    This also allows us to calculate the remaining number of hits that are blocked, remember that with Shield Block up you would be 'unhittable'.

    65 - 18 = 47 Blocked hits

    Of these blocked hits we can calculate the critical blocks without having Hold the Line talented (again using the 'chance' as a flat percentage which is not entirely accurate).

    47 * .3106 = ~15 critical blocks without Hold the Line.

    Shield Block on CD:


    ******CD = Cool Down********



    So Shield Block has been used at a super-human level, but what about the other 66.67% of the fight? Well first we need to calculate the number of hits in this section and then the avoided hits again.


    195 - 65 = 130 Swings with Shield Block on CD.

    130 * .2805 = ~36 Avoided swings

    36 * .1783 = ~6 Miss
    36 * .3729 = ~14 Dodge
    36 * .4488 = ~16 Parry

    Being that Shield Block is not up in this section, we only have a 51.52% chance to block, so using this we can estimate how many blocks we will have.

    130 * .5152 = ~48 Blocked hits

    130 - 48 - 36 = 46 Unblocked/avoided hits

    Of the ~48 blocked hits, we still can estimate the critical blocks.

    48 * .3106 = ~15 Critical Blocks


    Hold The Line:


    This talent increases your chance to critically block (what I am concerned with) and critical strike (threat) by 10% for 10 seconds following a successful parry once you have filled the talent out with 2/2 points. To calculate approximately how it affects the the results, I had to make some assumptions on how linear the fight would be. One such assumption is that all events would occur linearly over the course of a fight, ie. an even distribution. This is not the case in WoW, but for this purpose it will have to do as I do not have the means to appropriately simulate the events.


    Using the linear distribution, I can calculate the frequency with which Hold the Line can occur and approximately how many blocks occur while Hold the Line is up. First I needed to calculate the frequency of a parry (and this is the BEST imagineable condition where you parry the first swing and continue to parry in a linear fashion) which I took the number of occurances of Parry and divided the time by the occurances, it is a rough calculation.


    390 / (8 + 16) = ~16.25 seconds a parry occurs.


    Following the same logic, I estimate the block frequency.


    390 / (47 + 48) = ~5.42 seconds a block occurs.


    Knowing that hold the line can only last 10 seconds, the assumption is that it falls off for ~6.25 seconds before being renewed. If a block can occur every 5.42 seconds and a parry every 16.25 seconds, we can estimate how many blocks fall into the Hold the Line buff.


    If a parry occurs, a block cannot, however it starts a timeline. Parry at 0 seconds starts a 10 second timer, so at 2 seconds the boss swings again and assuming BEST POSSIBLE SCENARIO that hit is blocked, the next swing is at 4 seconds, then 6, at ~7 seconds you would block again, but the swing hasn't happened so assume the swing at 8 seconds is blocked, and now no based on linear distribution no blocks would occur until after 10 seconds had passed. This would mean 2/3 of blocks are with hold the line up.


    Unfortunately it isn't as easy as that, as we need to figure out how long Hold the Line is up during Shield Block, and when Shield Block is NOT up. To do this, I took at look at the number of parries, the time it could last, and what percentage of the total time that was for Shield Block being up and not being up.


    With Shield Block:


    8 * 10 = 80 seconds
    80 / 130 = ~.6154 or 61.54%


    Without Shield Block:


    16 * 10 = 160 seconds
    160 / 260 = ~.6154 or 61.54%


    So when looking at how much it increases the critical blocks in this scenario, I calculate how many critical blocks I have with the Hold the Line talent using the blocked hits.


    With Shield Block:


    47 * .6154 = ~29


    Using the logic where if Hold the Line is up you block 2 times, I can then estimate the number of hits with a higher critical chance and a lower.


    29 / 3 = ~10 (For this I say it is 10 and 1 hit does not occur when Hold the Line is up).


    So I can safely assume now that 19 blocks occur when Hold the Line is up.


    19 * .4106 = ~8 critical blocks.


    Now I can calculate the rest of the blocks with the regular crit chance:


    (10 + 18) * .3106 = ~9 critical blocks.


    8 + 9 = 17 Critical blocks with Hold the Line vs. 15 Critical blocks without Hold the Line.


    Without Shield Block:


    48 * .6154 = ~30


    Using the 2/3 blocks:


    30 / 3 = 10


    I can now assume that 20 blocks occur with Hold the Line up:


    20 * .4106 = ~8 critical blocks.


    The remaining blocks are now calculated:


    (10 + 18) * .3106 = ~9 critical blocks.


    To sum this section:


    8 + 9 = 17 Critical blocks while hold the line is up Vs. 15 while Hold the Line is not up.

    This would give us an additional 4 critical blocks over the course of a fight, which is essentially the same as blocking 4 more times.

    Conclusion (if it can be called that):

    In looking at the results in this very simplified example, Hold the Line is roughly the equivalent of blocking 4 more times. This would be equal to an approximate 3% increase in block frequency when Shield Block is not active. Looking at some damage from a 100k hit:

    Looking at damage without shield block up:

    (100,000 * (48 - 17)) * .7 = 2,170,000
    (100,000 * 17) * .4 = 680,000
    2,170,000 + 680,000 = 2,850,000 Damage with Hold the Line

    (100,000 * (48-15)) * .7 = 2,310,000
    (100,000 * 15) * .4 = 600,000
    2,310,000 + 600,000 = 2,910,000 Damage without Hold the Line

    So the difference between Hold the Line and not is ~60,000 damage for this example which is about 2/3 of the encounter length stated.

    Note: It's late and I've been at this for a while, I will review this tomorrow after I've had some sleep.

    ****Please keep in mind that as I said: This is NOT concrete and is a rough example only. Avoidance is very much less predictable than this example, and critical block/block is equally as unpredictable. *****
    Last edited by MellvarTank; 01-14-2011 at 08:45 PM. Reason: Caution: Mathing
    RNGesus - Saving you unreliably since BC.
    http://i689.photobucket.com/albums/v...ellvarsig3.jpg

  3. #3
    Join Date
    Sep 2009
    Posts
    1,900
    <Reserved> (Just in case.)
    RNGesus - Saving you unreliably since BC.
    http://i689.photobucket.com/albums/v...ellvarsig3.jpg

  4. #4
    Join Date
    Mar 2010
    Posts
    169
    looks solid to me, nice work 60k extra isnt bad but isnt game breaking and im assuming with human error and fight mechanics involved that will drop to around 30-45k damage (will obviously vary signifigantly but thats why its an assumption)

  5. #5
    Join Date
    Jun 2009
    Location
    Belgium
    Posts
    2,371
    On Parry > HtL uptime:
    Averages don't really work, because you assume that you never ever Parry twice within a 10s timeframe.
    Realisticly, you'll get:
    2s > 12.59%
    4s > 12.59% * 87.41%
    6s > 12.59% * 87.41%^2
    8s > 12.59% * 87.41%^3
    10s > 100% - all of the above

    Multiply with time & sum them up:

    2s > 0.2518s
    4s > 0.4402s
    6s > 0.5772s
    8s > 0.6727s
    10s > 5.8377s
    Total: 7.7796s on average your HtL buff will last.
    You Parry once every 2s/12.59% = 15.886s
    Therefor HtL will only ever be up about 7.7796/15.886 = 48.97% of the time.
    But that does ignore the fact you can't parry and block at the same time, so...

    Alternative method:
    In order for a Block to have the HtL buff, one of your last n received swings must have been parried.
    Chance that you did so is 100% - ( 1 - Parry chance)^n = 48.97% (41.62% if you only count 4 hits)
    So on average you will receive 4.897% crit block from Parry.

    Hope that helps =)

    PS: I would assume that because the buff comes AFTER you Parry, you can count swings happening EXACTLY 10s before as well into the uptime.
    Last edited by Airowird; 01-15-2011 at 06:55 AM.
    Quote Originally Posted by Ion
    Damn old people, screwin' with my grind.
    Mists of Pandaria Protection Warrior Spreadsheet
    Warlords of Draenor One Minute Field Guides

  6. #6
    Join Date
    Sep 2009
    Posts
    1,900
    Thanks WarTotem!
    RNGesus - Saving you unreliably since BC.
    http://i689.photobucket.com/albums/v...ellvarsig3.jpg

  7. #7
    Join Date
    Oct 2007
    Location
    Portland, OR
    Posts
    435
    Quote Originally Posted by MellvarTank View Post
    I am tired of everyone saying "Hold the Line makes Parry uber" without math.
    Also wanted to mention that part of this is due to the other half of the talent - the offensive part. Which may end up being harder to calculate than the defensive part.
    Failure is not an option. It comes bundled with the software.

  8. #8
    Join Date
    Sep 2009
    Posts
    1,900
    The offensive part, though nice, isn't much of a concern. As tanks right now we can run with virtually no hit and virtually no expertise rating and maintain threat. Somehow the offensive part just doesn't seem to matter if we are not having threat issues.
    RNGesus - Saving you unreliably since BC.
    http://i689.photobucket.com/albums/v...ellvarsig3.jpg

  9. #9
    Join Date
    Jun 2009
    Location
    Belgium
    Posts
    2,371
    Quote Originally Posted by Andenthal View Post
    Also wanted to mention that part of this is due to the other half of the talent - the offensive part. Which may end up being harder to calculate than the defensive part.
    Or ... just as hard, because uptime of the buff is the same regardless which part (crit block or crit chance) you are aiming for.
    In the above example, you're getting ~5% crit, just as much as the 5% crit block.
    Ofcourse the crit block is worth about 0.5% avoidance or roughly 1% damage reduction, while the crit should give you atleast 4% threat increase, so it isn't hard to see which part of tanking is gaining the most out of this talent
    Quote Originally Posted by Ion
    Damn old people, screwin' with my grind.
    Mists of Pandaria Protection Warrior Spreadsheet
    Warlords of Draenor One Minute Field Guides

  10. #10
    Those of us who do the math just plug it into a spreadsheet instead of doing detailed computations that only highlight a specific example. Here's the logic I'm using in my spreadsheet. It's pretty simple to understand.

    The chance of HtL being up each time you are attacked is is modeled by 1-(1-p)^n
    Where n is the number of attacks you've received in the last 10 seconds and p is your parry chance.

    Using the uptime value of that equation, I simply add 10% of that to my critical block chance to determine by "effective" critical block chance. Then I do the rest of the math, figuring the probability of each avoidance type and averaging them all together, with and without shield block, and then averaging those two numbers with a weight factor corresponding to shield block's uptime.

    The spreadsheet is here:
    http://www.2shared.com/document/WSgg...itigation.html

    Plug your stats in the yellow part. There's a table for no meta, armor meta, and block meta. The first column shows the mitigation at your current stats, and the other columns show your mitigation if you add a point to certain stats. These are used to determine stat weightings, which are shown at the bottom.

  11. #11
    Join Date
    Jun 2009
    Location
    Belgium
    Posts
    2,371
    Weird, that's same logic I used in my post as well (see Alternative Method) aswell as in my spreadsheet, you know, the one from my sig. Maybe those that are new posters here should check what is already said & done before they start commenting on discussions

    That said, because Mellvar started out with specific examples, I corrected him using those exact numbers as well. This makes the discussion easier to follow and allows him to reference/copy this math rather than having him to do the work himself. I'm just that nice of a guy
    I admit that I did not give a thourough explanation at the start of my post, but I was mostly directing my post to Mellvar, who seems to have understood my correction on his OP.

    PS: On your spreadsheet:
    * You have tons of lines/columns with the same numbers, causing an overflow of unneeded information to the user.
    * Your meta armor values are borked. The meta does not work on all armor, only from items. So trinkets with armor or even the base armor value are upping your value of the metagem.
    * Using a delta of +1 is not a good idea if you are capping calculations somwhere. This is because even when you are specificly at that cap, that stat still has a value, namely the value of losing it.
    Pretty accurate for the rest
    Quote Originally Posted by Ion
    Damn old people, screwin' with my grind.
    Mists of Pandaria Protection Warrior Spreadsheet
    Warlords of Draenor One Minute Field Guides

  12. #12
    Join Date
    Jan 2009
    Location
    United Kingdom
    Posts
    1,644
    Rawr models uptimes of such things quite well, but sadly there's a bug in the latest version preventing HtL from giving CriticalBlock. Hopefully this will be fixed tomorrow.

    I have a fixed version locally, but one can easily say that HtL adds enough mitigation to make Parry notably better than Dodge even when it is 1-2% higher than Dodge. (e.g. 12% Parry vs. 10% Dodge) It's not a massive enough amount that you'd probably want to ditch all your Dodge gear for Parry or keep trying to maintain a fairly level split, but it is enough to make your Parry a bit more valuable even in the face of DR.
    Maintainer of Rawr.ProtWarr theorycrafting tool. Feel free to PM suggestions or feature requests!

  13. #13
    Join Date
    Jun 2009
    Location
    Belgium
    Posts
    2,371
    Actually, the difference (~2%) comes from the baseline Dodge vs Parry as well.
    But I'll definately will check HtL value for Parry when I got time, although I don't see it going above a 5% increase in value for Parry unless you're really low on gear.
    Quote Originally Posted by Ion
    Damn old people, screwin' with my grind.
    Mists of Pandaria Protection Warrior Spreadsheet
    Warlords of Draenor One Minute Field Guides

  14. #14
    Join Date
    Jan 2009
    Location
    United Kingdom
    Posts
    1,644
    Keeping in mind, of course, that the value of the bonus is correlated with your Mastery value. Critical Block gains value with Mastery, and I was looking at a high-end Warrior tank that had moved in the direction of Mastery stacking. This gives more of the 'full' value of Critical Block compared to those with low levels of Mastery.
    Maintainer of Rawr.ProtWarr theorycrafting tool. Feel free to PM suggestions or feature requests!

  15. #15
    Join Date
    Mar 2009
    Posts
    1
    hey

    i did simulate your example with a c# program and i did get some interesting numbers.

    all numbers i present may be bugged, because of software bugs. i'll try to update the numbers as i
    play more with the program.

    i used these values:

    Player fa = new Player("Farago", 160000);
    fa.Miss = 5.0;
    fa.Dodge = 10.46;
    fa.Parry = 12.59;
    fa.Block = 51.52;
    fa.CriticalBlock = 31.06;
    swing every 2 seconds = 100K
    Htl bonus = +10% critblock for 5s
    enabling shield block ASAP

    this is, what my program outputs for the first test:

    time: 1
    swing: 100000
    *** SHIELDBLOCK ACTIVE ***
    Dice = 40,62
    CRITICAL BLOCK
    incomming = 40000
    time: 2
    time: 3
    swing: 100000
    Dice = 39,1
    BLOCK
    incomming = 70000
    time: 4
    time: 5
    swing: 100000
    Dice = 3,06
    MISS
    incomming = 0
    time: 6
    time: 7
    swing: 100000
    Dice = 88,56
    BLOCK
    incomming = 70000
    time: 8
    time: 9
    swing: 100000
    Dice = 56,68
    CRITICAL BLOCK
    incomming = 40000
    time: 10
    time: 11
    *** SHIELDBLOCK INACTIVE ***
    swing: 100000
    Dice = 23,14
    PARRY
    *** HTL ACTIVE ***
    incomming = 0
    time: 12

    ... hundreds more lines

    time: 388
    time: 389
    swing: 100000
    Dice = 80,75
    *** HIT ***
    incomming = 100000
    time: 390
    overall damage taken 9020000

    i did not use any armor mitigation calculation. so this character had zero armor.
    the next thing i did was to simulate this scenario 100000 (one hundred thousand) times.

    and thats what i get:
    9.489.852 with Shieldblock and HtL
    9.555.976 with Shieldblock only

  16. #16
    Join Date
    Mar 2010
    Location
    Staten island, NY
    Posts
    458
    so all this assumes 12.59% parry? my parry hasnt been under 14% for some time now. stacking parry to reach close to 17% isnt far fetched at all in current gear. . as far as ive seen, every 1% parry increases HTL uptime by roughly 2-5%. just seems like a lot of up time not accounted for.
    "Dear Santoro, Your wisdom has enlightened me. Thanks!"

  17. #17
    Join Date
    Jun 2009
    Location
    Belgium
    Posts
    2,371
    On HtL uptime:
    As said before, the uptime is 100% - (100% - Parry_Chance)^(#of boss hits within 10s)
    Derive that and you have:
    -1 * (100% - Parry Chance)^(#of boss hits within 10s - 1) * d(100% - Parry Chance)
    d(A - x) = - dx
    = (100% - Parry_Chance)^(#of hits - 1) * d(Parry Chance)
    d(Parry Chance) = d(Rating gain)
    = (100% - Parry Chance)^(#of hits - 1) * d(Rating gain)
    The rating gain for Parry is 0.6563144 * PR / (PR + 11087.996195021) where PR is your Parry Rating.
    Therefor the derivate of that is 0.6563144 * 11087.996195021 / (PR + 11087.996195021)^2
    --> d(f(x)/g(x)) = (df*g - f*dg) / g

    = (100% - Parry Chance)^(#of hits - 1) * 0.6563144 * 11087.996195021 / (PR + 11087.996195021)^2
    So that's just part 1. Let's call the number above "Parry Uptime Gain" or PUG

    The gain in crit block is 10% of the HtL uptime.
    = 0.1 * PUG
    The value of 1% crit block (compared to full avoidance) is 30% * block chance
    = 0.3 * Block * 0.1 * PUG
    Add all these multipliers together and you get
    = 218,316347098124718072 * Block * (100% - Parry Chance)^(#of hits - 1) / (PR + 11087.996195021)^2
    With Block & Parry chances being a number between 0 and 1 (40% = 0.40)
    And that is the absolute gain for crit block.

    If you compare above number to how much Parry you get from 1 PR, you get:
    = Above / [0.6563144 * 11087.996195021 / (PR + 11087.996195021)^2]
    The 2 quadratic parts nullify eachother, so...
    = 218,316347098124718072 * Block * (100% - Parry Chance)^(#of hits - 1) / (0.6563144 * 11087.996195021)
    = .03 * Block * (100% - Parry Chance)^(#of hits - 1)
    Or in other words, Parry rating is worth
    1 + .03 * Block * (100% - Parry Chance)^(#of hits - 1)
    times it's actual value in pure Parry.

    If you take the numbers Mellvar used as example, this becomes:
    = 1 + .03 * .5152 * (1 - .1259)^4
    = 1.0090228053838841566816
    Or rather: Parry in this specific scenario is worth 0.90% more due to HtL. As your Parry chance increases and/or your block chance decreases, this value will go down even further.
    This is all assuming that you are in a static fighting situation ofcourse. Realisticly, this increase will be even lower due to bosses having non-swing periods such as cast times or phase switches that reduce your odds in having HtL up at the first couple of hits after that.
    Quote Originally Posted by Ion
    Damn old people, screwin' with my grind.
    Mists of Pandaria Protection Warrior Spreadsheet
    Warlords of Draenor One Minute Field Guides

  18. #18
    Join Date
    Sep 2009
    Posts
    1,900
    Thanks again for posting more math WarTotem, it is much appreciated and needed to outline the value and limits of this talent.
    RNGesus - Saving you unreliably since BC.
    http://i689.photobucket.com/albums/v...ellvarsig3.jpg

  19. #19
    Join Date
    Jan 2009
    Location
    United Kingdom
    Posts
    1,644
    Ran some numbers after fixing Rawr up for Hold the Line.

    On a profile where Mastery has been optimized for (2400 Mastery Rating) and adjusting for Shield Block uptime, Hold the Line's impact on Parry is quite notable.

    With the remaining stats available on gear, the break-even point for Dodge vs. Parry was hit when Parry was at 2260 Rating and Dodge was at 1575 Rating. That is a rather large gap.

    Especially when focusing on Mastery, Hold the Line makes Parry very strong in addition to slightly increasing the value of Mastery.

    For comparison, with no points in Hold the Line and the same ratings values, Parry is only worth 93.8% of the value of Dodge instead of breaking even. (And the Warrior goes from 86.95% Total Mitigation to 86.75% Total Mitigation, which is around 1.53% reduction in damage taken with 2/2 Hold the Line.)

    If it's of any interest, with those stats I was seeing roughly a 39% uptime of the Hold the Line buff for single-target.
    Last edited by Kojiyama; 01-17-2011 at 07:25 PM.
    Maintainer of Rawr.ProtWarr theorycrafting tool. Feel free to PM suggestions or feature requests!

  20. #20
    Join Date
    Mar 2010
    Location
    Staten island, NY
    Posts
    458
    hey war and koj,


    please correct me if im wrong, but im taking from this that stat priority now becomes mastery>parry>>>>>>dodge, however, i can stack parry till roughly 2300 assuming i have a mastery rating of 2600? ive tried this before, i was ablt to reach about 19% parry... but thinking back now, i didnt have the mastery at the time to support it.
    "Dear Santoro, Your wisdom has enlightened me. Thanks!"

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts