# MoP Block Calculations – Part 2

Suggested subtitles:
How to make String Theory look easy
Why I quit theorycrafting
101 reasons I should have majored in History

In the last post, we worked out the basic math modeling of our new block mechanics. That was actually the hard part, believe it or not – getting the model right is the biggest part of the job, and the most likely place to make mistakes. And we did have to make a few approximations to get there, but they should all reasonably good approximations.

Now, we need to take that modeling and calculate relationships between the different inputs. That takes a bunch of calculus, but it’s mostly straightforward plug-and-chug operations. So while it’s a lot of equations and math, it’s not terribly complicated or interesting math. In fact, after going through it, I’ll tell you that it’s incredibly tedious and ugly as hell. But we’re going to have to do it anyway, so let’s get down to it.

To recap from last time, we have the following equations:

$D = D_0 F_{a} F_{\rm av} F_{b}$
$F_{\rm av} = (1 – A)$
$F_b = 1 – GB_v” – (1-G) B_c S B_v’ – (1-G)B_c(1-S)B_v$
$G = R_{\rm SotR}/R_{\rm att}$
$S = R_{\rm SotR}(R_{\rm att}T_{\rm buff} – 1)/(R_{\rm att}-R_{\rm SotR})$
$R_{\rm SotR} = R_{\rm HPG}/3(1-\alpha_{\rm DP})$

$F_a$, $F_{\rm av}$, and $F_b$ are the armor, avoidance, and block mitigation factors, respectively. $G$ is the probability of any given attack being a guaranteed block due to Shield of the Righteous (SotR). $S$ is the probability that an attack which isn’t a guaranteed block occurs during the uptime of the other SotR buff, which gives increased block value. $B_c$ is our character sheet block chance, $B_v$ is our character sheet block value (30%), $B_v’$ is our block value during the SotR buff (50%), and $B_v”$ is our block value for the guaranteed block (75%). $R_{\rm SotR}$ is the rate at which we cast SotR, $R_{\rm att}$ is the incoming attack rate (which we’ll see shortly is actually a little different than the swing timer because of avoidance), $T_{\rm buff}$ is the duration of the SotR block value buff, $R_{\rm HPG}$ is our Holy Power generation rate, and $\alpha_{\rm DP}$ is the Divine Purpose proc chance (15%).

Got all that? Good. There will be a quiz on it later (not really).

A Word on Assumptions

In the comments of the last post, Weebey pointed out a few aspects of the derivation that looked fishy. And rightfully so, I did have to make a few assumptions, and I wasn’t as clear as I could have been about what they were. Any good derivation should come part and parcel with a good degree of error analysis.

Let’s quickly go over the assumptions we had to make in the previous post too. First, we’re assuming that we never waste a SotR cast – that every cast gives us a guaranteed block. However, if we cast SotR twice in a row without blocking something in-between, we don’t get 2 blocks later – the buff just refreshes, it doesn’t stack. So there’s a chance we’ll get some clipping, which will cause some attrition in $G$. In other words, we’d need to scale $G$ down by an attrition factor. That’s going to be tedious though, and it shoudn’t happen very often since SotR is off-GCD and can be timed based on Holy Power pooling, so we’re ignoring that for now. When we get around to the numerical simulations (Part 4, at this rate), we’ll see how big an effect this is, and whether that’s a reasonable approximation.

Technically our expression for $S$ is a small approximation too, because we’ve based it on a model of a single application of the buff. Since subsequent applications add duration rather than refreshing it, it should be a very good approximation, but the same variability that applies to $G$ will have a subsequent effect on $S$. Again, we’ll have to wait for the numerical simulations (or do some ugly combinatorics) to see how much error this introduces.

In general, we’ve treated everything in this derivation as nice and regular – boss attacks and SotR casts come in nicely-spaced intervals. That in itself is an approximation, because in combat scenarios those things vary quite a bit. That leads to bunching, which leads to the same sort of attrition seen in $G$ and causes a greater variance in the values of $G$ and $S$ from fight to fight. You might get two or three SotR casts in a row, or you might get none for 10 seconds if you miss all of your Crusader Strikes. We should have a pretty good estimate of the stochastic behavior, but if the variances are large we might find that individual encounter-length data sets deviate significantly. The numerical sims will give us some information on that detail as well.

Finally, in the last post (which I’ve since updated) I originally said that $R_{\rm att}$ was the boss attack rate, or the inverse of the boss’s swing timer $T_{\rm att}$. That’s not strictly true, because we’ll avoid some of those attacks, and since the SotR buff ignores avoidance, the effective attack rate as it pertains to blocking will actually be lower (or equivalently, the effective swing timer will be higher). The reason I ignored this in the last post is that $R_{\rm att}$ only shows up in the expressions for $G$ and $S$, so those two parameters encapsulate the effect. That made it a little easier while working through the derivation by hand, but looking at it now I realize that it makes the whole thing a lot more confusing to understand.

Thus, I’ve gone back and edited Part 1 to make it clear that $R_{\rm att}$ is the effective attack rate rather than the “true” incoming attack rate $R^{(0)}_{\rm att}$, and similarly for the “effective” and “true” boss swing timers $T_{\rm att}$ and $T^{(0)}_{\rm att}$. The rigorous definition of $R_{\rm att}$ is then

$R_{\rm att} = (1-A) R_{\rm att}^{(0)} = F_{\rm av}/T^{(0)}_{\rm att}$.

This is the definition we’ll use when we plug in numbers.

The Incoming Damage Formula

OK then, it’s time to start the calculus portion of the derivation. What we’re interested in is the change in incoming damage, which is the derivative of $D$. We’ve never specified whether $D$ represented raw damage or damage per second, and it doesn’t actually matter which – the equation is the same either way. Taking our very first equation and performing implicit differentiation, we have:

$dD/D_0 = dF_a F_{\rm av} F_b + F_a dF_{\rm av} F_b + F_a F_{\rm av} dF_b$

Each of these terms represents a relative change in damage taken due to a small change in that factor, either armor ($dF_a$), avoidance ($dF_{\rm av}$), or block ($dF_b$). We’ll have to evaluate each of those differentials to relate the change in the factor to the underlying change in armor, avoidance rating, and mastery, respectively.

Armor Factor

The armor factor is easy – it’s unchanged from how it currently works. The armor mitigation factor is just one minus the amount of mitigation $M_a$ we get from armor, and $M_a$ has the form

$M_a = (Ar)/(Ar + K)$

where $Ar$ is your armor and $K$ is the armor constant, which is 32573 for a level 88 boss. Therefore,

$F_a = 1 – M_a = 1 – Ar/(Ar+K) = K/(Ar + K)$

and

$dF_a = -dAr K / (Ar+K)^2 = – dAr F_a / (Ar+K)$.

Simple enough! We can use this equation to directly relate a change in armor $dAr$ to a change in the armor mitigation factor $dF_a$.

Avoidance Factor

Next up is avoidance, which is a little trickier for two reasons: diminishing returns (DR) and rating conversions. First of all, we’ll make the assumption that we only care about one type of avoidance – say dodge. The equations are symmetric in both, so finding the results for one is equivalent to finding the results for the other. We need to express the avoidance mitigation factor a little more specifically though, to isolate the part of avoidance affected by DR. So we’ll define it like this:

$F_a = (1 – A_0 – A_d)$.

Here, $A_0$ is all of your avoidance from miss and parry, as well as any dodge sources that aren’t affected by DR (ex: base dodge). $A_d$ is the post-DR dodge value, so we need to relate that to the pre-DR dodge value, which we’ll call $a_d$. The relationship between those two is,

$1/A_d = 1/C_d + k_d/a_d$,

where $C_d$ and $k_d$ are the diminishing returns coefficients for dodge (or parry). I’ve given them subscripts because block uses the same DR equation, but with different coefficients – this way we can keep them straight. Differentiating this equation gives us,

$-dA_d/A_d^2 = -k da_d/a_d^2$

which can be re-arranged to give

$dA_d = da_d k_d (A_d/a_d)^2$.

and if we solve the DR equation for $A/a$ and substitute, we get the most convenient form:

$dA_d = (da_d/k_d)(1-A_d/C_d)^2$

This is convenient because it expresses the change in post-DR avoidance $dA_d$ in terms of the change in pre-DR avoidance $da_d$, the post-DR dodge value $A_d$, and the constants $k_d$ and $C_d$. We know the constants, and we can read $A_d$ off of the character sheet. The pre-DR dodge value is very simply linked to rating:

$da_d = dr_d/f_d$

where $dr_d$ is the amount of dodge rating we’re adding and $f_d$ is the conversion factor relating dodge rating to dodge percentage (176.72 at level 85 in Cataclysm).

Differentiating $F_{\rm av}$ and plugging all of this in, we get:

$dF_{\rm av} = – dA_d = – (da_d/k_d)(1-A_d/C_d)^2 =- dr_d (1-A_d/C_d)^2/(k_d f_d)$

Which is our final expression for $dF_{\rm av}$

Block Factor

Finally, we need to attack the block differential. This is by far the most complicated because there are so many factors to consider. We see why when we differentiate $F_b$:

$dF_b = -dG B_v” + dG B_c S B_v’ – (1-G)dB_c S B_v’ \\ \hspace{0.5in} – (1-G)B_c dS B_v’ +dG B_c (1-S) B_v \\ \hspace{0.5in} -(1-G)dB_c (1-S) B_v + (1-G) B_c dS B_v$

Grouping terms, we can simplify this to

$dF_b = -dG [B_v” -B_c S B_v’ – B_c (1-S) B_v] \\ – dB_c (1-G)[S B_v’ + (1-S) B_v] \\ – dS (1-G) B_c (B_v’ – B_v)$

To continue, we need the derivatives $dB_c$, $dG$, and $dS$. The first is easy, the last two are a bit ugly. Let’s do the easy one first. Block uses the same diminishing returns formula as avoidance, but with different coefficients. Since $dB_c$ is our post-DR change in block chance, we’ll let our pre-DR change in block chance be $db_c$, and the DR coefficients will be $C_B$ and $k_B$. We then have:

$dB_c = \frac{db_c}{k_B}(1-B^{\rm (DR)}_c/C_B)^2$

where $B^{\rm (DR)}_c = B_c-B^{(0)}_c$ is the portion of our block which is subject to diminishing returns (at this point, everything but our base block chance).

$db_c$ is related to mastery rating very simply:

$db_c = dr_m/f_m$

Thus, our final form is

$dB_c = \frac{dr_m}{f_m}\frac{(1-B^{\rm (DR)}_c/C_B)^2}{k_B}&s=1$.

$dB_c$ depends on the amount of mastery rating added $dr_m$, the rating-to-percentage conversion factor for mastery $f_m$ (which is 179.28/2.25 = 79.68 at level 85), our post-DR block chance, and the DR coefficients for block. Yes, that’s the simple one.

Now for the tricky ones. What does $dG$ look like?

$dG = dR_{\rm SotR}/R_{\rm att} – dR_{\rm att}R_{\rm SotR}/R_{\rm att}^2$

So for $dG$, we need to go further and find the change in SotR cast rate due to all potential factors – that means haste, expertise, and hit will show up in there. We also need the change in effective incoming attack rate, which will depend on avoidance. We’ll come back to those two later. Continuing on, the differential $dS$ ends up looking like this:

$dS = dR_{\rm SotR} \frac{R_{\rm att}}{R_{\rm SotR}} \frac{S}{(R_{\rm att}-R_{\rm SotR})} + dR_{\rm att} \frac{1-R_{\rm SotR}^2 T_{\rm buff}}{(R_{\rm att}-R_{\rm SotR})^2}&s=1$

where I’ve saved you a bit of tedious algebra and simplified the form some. Or as a textbook would say, “the derivation is left as an exercise for the reader” (man I hated when textbooks did that). So $dS$ also depends on the differentials of $R_{\rm SotR}$ and $R_{\rm att}$, as expected.

$R_{\rm att}$ will depend on avoidance, and it’s actually fairly straightforward, so we’ll do that first. $T^{(0)}_{\rm att}$ is the “true” boss swing timer, so that’s invariant, giving us $dR_{\rm att} = dF_{\rm av} / T^{(0)}_{\rm att}$. Using our earlier definition of $dF_{\rm av}$, we have:

$dR_{\rm att} = – dr_d (1-A_d/C_d)^2/(k_d f_d T^{(0)}_{\rm att})$

Which relates $dR_{\rm att}$ to our fundamental avoidance quantity, $dr_d$ dodge rating.

$R_{\rm SotR}$ depends on $R_{\rm HPG}$. So we need to find out how $R_{\rm HPG}$ depends on haste, expertise, and hit. That expression looks something like this:

$R_{\rm HPG} = [1 – (m-h) – (d+p-e)](1+\alpha_{\rm GC})(1+s)R_{\rm CS} \\ + [1 – (2m-h-e)](1+s)R_{\rm J} + R_{\rm BL}$

Where I’ve used $m$ to represent the hit cap, $h$ for hit, $d$ for dodge cap, $p$ for parry cap, $e$ for expertise, and $s$ for haste. $R_{\rm CS}$ and $R_{\rm J}$ are the cast rates for Crusader Strike and Judgement, respectively, before the effects of haste rating. The first term is the HPG rate due to Crusader Strike (which can miss, dodge, or be parried) and Grand Crusader. Since Grand Crusader grants HP on-cast rather than on-hit, it’s simply a linear scaling of our CS cast rate, so I’ve used $\alpha_{\rm GC}=0.2$ to represent that. Note that this makes another assumption – that we don’t waste any GC procs. That’s a fairly safe assumption in the 4.5-second CS system, though.

The second term is HPG due to Judgment, which is on spell miss, but gets contributions from both hit and expertise anyway. The final term is any income we might get from the Glyph of Blessed Life, but it could also incorporate any other constant income that’s unrelated to hit, expertise, or haste.

The reason I say it will look “something like this” is because I haven’t been careful to enforce hit and expertise caps in these expressions, partly because that would make the expressions a lot uglier to read. We don’t really need to worry about that though, as we can just assume we’re not silly enough to be stacking hit or expertise past their relevant caps. There are edge cases where this could happen (e.g. you have 7.5% hit and more than 7.5% exp, in which case exp suddenly becomes half as effective as it normally would be), but we’ll assume we’re not in those conditions (and handling that special case is easy to do in post-processing anyway). Differentiating, we have:

$dR_{\rm HPG} = (dh + de)(1+s)\left [ (1+\alpha_{\rm GC})R_{\rm CS} + R_{\rm J}\right ] \\ + ds [1-(m-h)-(d+p-e)](1+\alpha_{\rm GC})R_{\rm CS} \\ + ds [1-(2m-h-e)] R_{\rm J}$

Or, using our definition of $R_{\rm HPG}$ to simplify a bit,

$dR_{\rm HPG} = (dh + de)(1+s)[(1+\alpha_{\rm GC})R_{\rm CS} + R_{\rm J}] + ds(R_{\rm HPG}-R_{\rm BL})/(1+s)$.

$dh$, $de$, and $ds$ still need to be expressed in terms of their rating equivalents, but that’s fairly straightforward since they’re all linear:

$dh = dr_h/f_h$
$de = dr_e/f_e$
$ds = dr_s/f_s$

And there we have it. From here we can substitute backwards to express $dG$ and $dS$ in terms of the rating quantities $dr_h$, $dr_e$, and $dr_s$. That’s another task I’ll leave as an exercise for the reader, but I’ll quote you the results:

$dR_{\rm SotR} = \left ( \frac{dr_h}{f_h} + \frac{dr_e}{f_e} \right ) \frac{(1+s)[(1+\alpha_{\rm GC})R_{\rm CS}+R_{\rm J}]}{3(1-\alpha_{\rm DP})} + \frac{dr_s}{f_s}\frac{R_{\rm HPG} – R_{\rm BL}}{3(1-\alpha_{\rm DP})(1+s)}&s=2$

$dG =\left ( \frac{dr_h}{f_h}+\frac{dr_e}{f_e}\right ) \frac{(1+s)[(1+\alpha_{\rm GC})R_{\rm CS}+R_{\rm J}]}{3 R_{\rm att} (1-\alpha_{\rm DP})} + \frac{dr_s}{f_s}\frac{R_{\rm HPG}-R_{\rm BL}}{3 R_{\rm att}(1-\alpha_{\rm DP})(1+s)} \\ – \frac{dr_d}{f_d}\frac{R_{\rm SotR}(1-A_d/C_d)^2}{k_d T^{(0)}_{\rm att}R_{\rm att}^2}&s=2$

$dS =\left ( \frac{dr_h}{f_h}+\frac{dr_e}{f_e}\right ) \frac{(1+s)[(1+\alpha_{\rm GC})R_{\rm CS}+R_{\rm J}]S}{3(1-\alpha_{\rm DP})R_{\rm SotR}(R_{\rm att}-R_{\rm SotR})} \\ + \frac{dr_s}{f_s}\frac{(R_{\rm HPG}-R_{\rm BL})R_{\rm att} S}{3(1-\alpha_{\rm DP})(1+s)R_{\rm SotR}(R_{\rm att}-R_{\rm SotR})} \\ – \frac{dr_d}{f_d}\frac{(1-R_{\rm SotR}^2T_{\rm buff})}{(R_{\rm att}-R_{\rm SotR})^2}\frac{(1-A_d/C_d)^2}{k_d T^{(0)}_{\rm att}}&s=2$

We have one final task: substitute these expressions into the one for $dF_b$ so that we have one expression that links $dF_b$ to $dr_h$, $dr_e$, and $dr_s$. This is not a pretty job, so forgive me if I skip the messy algebra and quote you the result:

$dF_b =-\left ( \frac{dr_h}{f_h} + \frac{dr_e}{f_e}\right ) \left ( \frac{(1+s)[(1+\alpha_{\rm GC})R_{\rm CS} + R_{\rm J}]}{3(1-\alpha_{\rm DP})} \right ) \left [\frac{B_v” – B_c S B_v’ – B_c (1-S)B_v}{R_{\rm att}} + \frac{S(1-G)B_c(B_v’-B_v)}{R_{\rm SotR}(R_{\rm att}-R_{\rm SotR})} \right ] \\ – \frac{dr_s}{f_s}\left ( \frac{(R_{\rm HPG}-R_{\rm BL})}{3 (1-\alpha_{\rm DP})(1+s)} \right ) \left [ \frac{B_v” – B_c S B_v’ – B_c (1-S)B_v}{R_{\rm att}} +\frac{S(1-G)B_c(B_v’-B_v)}{R_{\rm SotR}(R_{\rm att}-R_{\rm SotR})}\right] \\ – \frac{dr_d}{f_d} \left ( \frac{(1-A_d/C_d)^2}{k_d T^{(0)}_{\rm att}}\right ) \left [ \frac{R_{\rm SotR}[B_v” – B_c S B_v’ – B_c (1-S)B_v ]}{R_{\rm att}^2} + \frac{(1-R_{\rm SotR}^2 T_{\rm buff}) (1-G) B_c (B_v’-B_v) }{(R_{\rm att}-R_{\rm SotR})^2} \right ] \\ – \frac{dr_m}{f_m}\frac{(1-B^{\rm (DR)}_c/C_B)^2}{k_B}(1-G)[S B_v’ + (1-S) B_v]&s=1$

…. W T F. So much for the nicer, simpler, easier-to-understand block mechanics, eh?

This is, frankly, way too much algebra to conveniently lug around. We’re going to need a more compact way to write this if we’re going to get anywhere with it. So we’re going to define a few constants to help us with that. They are:

$F_{bG} = B_v” – B_c S B_v’ – B_c(1-S)B_v&s=1$
$F_{bB} = (1-G)[S B_v’ + (1-S)B_v]&s=1$
$F_{bS} = (1-G)B_c(B_v’-B_v)&s=1$

$\beta_h = \frac{(1+s)[(1+\alpha_{\rm GC})R_{\rm CS}+R_{\rm J}]}{3(1-\alpha_{\rm DP})} \left [ \frac{F_{bG}}{R_{\rm att}}+ \frac{S F_{bS}}{(R_{\rm att}-R_{\rm SotR})R_{\rm SotR}} \right ]&s=2$
$\beta_s = \frac{(R_{\rm HPG}-R_{\rm BL})}{3(1-\alpha_{\rm DP})(1+s)} \left [ \frac{F_{bG}}{R_{\rm att}} + \frac{S F_{bS}}{(R_{\rm att}-R_{\rm SotR})R_{\rm SotR}} \right ]&s=2$
$\beta_d = \frac{(1-A_d/C_d)^2}{k_d T^{(0)}_{\rm att}} \left [ \frac{R_{\rm SotR} F_{bG}}{R_{\rm att}^2} + \frac{(1-R_{\rm SotR}^2T_{\rm buff}) F_{bS}}{(R_{\rm att}-R_{\rm SotR})^2} \right ]&s=2$
$\beta_m = \frac{(1-B^{\rm (DR)}_c/C_B)^2}{k_B}F_{bB}&s=2$

The factors $F_{bG}$, $F_{bB}$, $F_{bS}$ allow us to put our original equation for $dF_b$ in a simpler form:

$dF_b = -dG F_{bG} – dB_c F_{bB} – dS F_{bS}&s=1$.

And the factors $\beta_h$, $\beta_s$, $\beta_d$, and $\beta_m$, which represent the block scaling factors for hit/expertise, haste, dodge/avoidance, and mastery, respectively, allow us to put our final expression for $dF_b$ in a very simple form:

$dF_b = -\left (\frac{dr_h}{f_h}+\frac{dr_e}{f_e}\right ) \beta_h – \frac{dr_s}{f_s}\beta_s – \frac{dr_d}{f_d}\beta_d -\frac{dr_m}{f_m}\beta_m&s=2$

This is going to be much easier to work with. With this expression for $dF_b$, along with the previously-derived expressions for $dF_{\rm av}$, $dF_a$, $F_a$, $F_{\rm av}$, $F_b$, and all of the sub-factors we’ve defined in this post, we can finally start making comparisons between the different stats.

Unfortunately, that’s going to have to wait until next time, because this blog post is already much too long. Next time (Part 3), we’ll summarize the equations we have, and start plugging in reasonable numbers to see how the different stats stack up against one another. Then, in Part 4, we’ll use a simple Monte-Carlo simulation to see how well this analytical model holds up to a simple numerical model, which will tell us how well the assumptions we’ve made in this analytical model hold up under more realistic conditions.

Editor’s note: Since publication, I have found one or two minor errors in the calculation – mostly transcription errors that occurred, either in my hand-calculations or when converting into LaTeX format for the blog post. I have updated the post with these corrections without annotation.

This entry was posted in Tanking, Theck's Pounding Headaches, Theorycrafting and tagged , , , , , , , , . Bookmark the permalink.

### 10 Responses to MoP Block Calculations – Part 2

1. I don’t undestand a single piece of any of that… but man I love that you do that

gronc

2. Weebey says:

I really hope you didn’t have to do all that algebra by hand; I know I would have gone crazy, and the odds of an error would have been in excess of 90%.

This is largely semantic, but I don’t think it’s the blocking change per se that makes it so nasty–moving to a second roll, in my opinion, actually makes more intuitive sense than the current system. In fact, when I started playing, I assumed it was a one roll system, and was mildly surprised when I found out how it really worked. Most of the nastiness seems to come the new version of SotR.

I have one small request for the next post: I would like to see the sign of the cross term d^2 F_{b}/(dr_{h}dr_{m}). Intuitively, this should split into two components with opposite signs: a positive component due to higher hit increasing G, which depresses the value of mastery; and a negative part that comes from higher hit leading to larger S. My guess is that with the new implementation the first term is going to be larger than the second, so that hit and mastery do not “help” each other (recall that, since we are looking to minimize damage taken, we actually want negative derivatives), but I’m not sure.

• Weebey says:

EDIT: I meant to say I assumed it was a two roll system!

• Theck says:

You’re right, most of the nastiness is due to SotR, and not the two-roll system itself.

And yes, I did all of the algebra by hand, and double-checked most of it by doing it again. I did actually miss something, as my proofreader pointed out to me (although a fat lot of good that does NOW) – Grand Crusader. Luckily that’s easily fixed by treating it as an extension of $R_{rm CS}$. I’m going to have to go back and edit that in, because it’s a legitimate oversight, and not one I can easily hand-wave away as “well, we’re just encapsulating that in $R_{rm CS}$.” Or rather, I could do that, but it would be disingenuous and not terribly intuitive.

• Theck says:

There, it should be properly updated for Grand Crusader now.

3. Zaephod says:

Theck, did you take into account that the new expertise is going to take away from dodge first, then from parry? If not, will it change anything about your model for holy power generation due to expertise? And it can’t be said enough, Thank you for all that you do!

• Theck says:

Yes, that’s taken into account. that’s the (d+p-e) term. If it were the old system, it would have to be something like (d-e)+(p-e). With all of those quantities being zero-bounded, of course.

4. queldan says:

Theck, you are one VERY insane man – and I don’t think the community would love any more any other way 😉

5. Rizamp says:

/em’s brain explodes