Code:
(* Helpers *)
print[ names_, vals_ ] := Map[ Print[ #[[1]], " - ", #[[2]] ] &, Transpose[ { names, vals } ] ]
section[ title_ ] := Block[ {}, Print[]; Print[ "", title, "
" ]; ]
subsection[ title_ ] := Block[ {}, Print[]; Print[ "", title, "" ]; ]
(* Data *)
serratedAutoAttack = 192
(* 51 / 10 sin / 5 rs - no crystal *)
section [ "51 / 10 sin / 5 rs - no crystal" ]
tbParse = 81.8;
fbParse = 80.8;
cbParse = 41.7;
caDetParse = 173;
shDetParse = 131;
spAbParse = 246;
blAbParse = 225;
tbFrac = .42;
heFrac = .57;
fbFrac = .39;
caFrac = .9;
detFrac = .09;
shFrac = .89;
spFrac = .68;
abFrac = .13;
blFrac = .62;
nTargetsParsed = 3;
(* 51 / 10 sin / 5 rs *)
(* section[ "51 / 10 sin / 5 rs" ] *)
(* tbParse = 89.1; *)
(* fbParse = 81.2; *)
(* cbParse = 45.2; *)
(* caDetParse = 187; *)
(* shDetParse = 149; *)
(* spAbParse = 284; *)
(* blAbParse = 246; *)
(* tbFrac = .45; *)
(* heFrac = .54; *)
(* fbFrac = .46; *)
(* caFrac = .93; *)
(* detFrac = .07; *)
(* shFrac = .89; *)
(* spFrac = .70; *)
(* abFrac = .15; *)
(* blFrac = .68; *)
(* nTargetsParsed = 3; *)
(* 46 / 20 sin *)
(* section[ "46 / 20" ] *)
(* tbParse = 60.2; *)
(* fbParse = 60.6; *)
(* cbParse = 45.0; *)
(* caDetParse = 210; *)
(* shDetParse = 182; *)
(* spAbParse = 290; *)
(* blAbParse = 266; *)
(* tbFrac = .41; *)
(* heFrac = .59; *)
(* fbFrac = .41; *)
(* caFrac = .93; *)
(* detFrac = .07; *)
(* shFrac = .89; *)
(* spFrac = .79; *)
(* abFrac = .11; *)
(* blFrac = .62; *)
(* nTargetsParsed = 3; *)
(* 46 / 20 sin OLD *)
(* section[ "Old 46/20" ] *)
(* tbParse = 62.9; *)
(* fbParse = 61.4; *)
(* cbParse = 40.9 * 10 / 8; *)
(* caDetParse = 234; *)
(* shDetParse = 180; *)
(* spAbParse = 338; *)
(* blAbParse = 247; *)
(* tbFrac = .59; *)
(* heFrac = .41; *)
(* fbFrac = .57; *)
(* caFrac = .93; *)
(* detFrac = .07; *)
(* shFrac = .90; *)
(* spFrac = .82; *)
(* abFrac = .10; *)
(* blFrac = .74; *)
(* nTargetsParsed = 3; *)
(* Calculations *)
nTargets = 3;
tbD = tbParse * tbFrac;
heD = tbParse * heFrac;
fbD = fbParse * fbFrac;
cbD = cbParse;
caD = caDetParse * caFrac;
detD = caDetParse * detFrac;
shD = shDetParse * shFrac;
spD = spAbParse * spFrac;
abD = spAbParse * abFrac;
blD = blAbParse * blFrac;
{ tbD, fbD, abD, cbD, heD, caD, shD, spD, blD, detD } // N
tb = tbD / (nTargetsParsed * 10);
fb = fbD / (nTargetsParsed * 10);
ab = abD / (nTargetsParsed * 10);
cb = cbD / (nTargetsParsed * 10);
he = heD / (nTargetsParsed * 10);
ca = caD / (nTargetsParsed * 5 * 10);
sh = shD / (nTargetsParsed * 5 * 10);
sp = spD / (nTargetsParsed * 5 * 10);
bl = blD / (nTargetsParsed * 5 * 10);
det = detD / 10;
caDet = caDetParse / (nTargetsParsed * 6 * 10);
shDet = shDetParse / (nTargetsParsed * 6 * 10);
spAb = spAbParse / (nTargetsParsed * 6 * 10);
blAb = blAbParse / (nTargetsParsed * 6 * 10);
print[ { "tb", "fb", "ab", "cb", "he", "ca", "sh", "sp", "bl", "det" },
{ tb , fb, ab, cb, he, ca, sh, sp, bl, det } // N ];
heTick = he / 4;
cbTick = cb / 10;
tbFbClippedD = tb + fb + heTick * 6;
tbFbClipped = tbFbClippedD / 2;
print[ { "Ca x5 > Det", "Sh x5 > Det", "Spike x5 > AB", "Blast x5 > AB", "TB > FB (clipped)" },
{ caDet, shDet, spAb, blAb, tbFbClipped } * nTargets // N ];
subsection[ "10-second rotations" ]
subsection[ "AE" ]
tbFbCbSpAbBlD = (tbFbClippedD + cb + sp * 5 + ab) * nTargets + bl;
tbFbCbSpAbBl = tbFbCbSpAbBlD / 10;
tbFbCbCaDetBlD = (tbFbClippedD + cb + ca * 5) * nTargets + det + bl;
tbFbCbCaDetBl = tbFbCbCaDetBlD / 10;
fullD = 2 * tbFbCbCaDetBlD + tbFbCbSpAbBlD;
full = fullD / 30;
caDetShDetD = (ca * 5 + sh * 5) * nTargets + det * 2;
caDetShDet = caDetShDetD / 12;
print[ { "[A]: TB > FB > CB > Sp x5 > AB > Bl", "[B]: TB > FB > CB > Ca x5 > Det > Bl", "Ca x5 > Det > Bl x5 > Det", "[A] > [B] > [B]" },
{ tbFbCbSpAbBl, tbFbCbCaDetBl, caDetShDet, full } ];
subsection[ "ST" ]
tbFbCbSpDetBl = (tbFbClippedD + cb + sp * 5 + det + bl) / 10;
tbFbSpDetBl = (tbFbClippedD + sp * 5 + det + bl * 2) / 10;
print[ { "TB > FB > CB > Sp x5 > Det > Bl", "TB > FB > Sp x5 > Det > Bl x2" },
{ tbFbCbSpDetBl, tbFbSpDetBl } ]
(* Old 15-second rotations *)
tbFbCbCaDetSpAbD = (tb + fb + heTick * 8 + cb + ca * 5 + sp * 5 + ab + heTick) * nTargets + det;
tbFbCbCaDetSpAb = tbFbCbCaDetSpAbD / 15;
tbFbCbCaDetShDetD = (tb + fb + heTick * 8 + cb + ca * 5 + sh * 5) * nTargets + 2 * det;
tbFbCbCaDetShDet = tbFbCbCaDetShDetD / 15;
full = (tbFbCbCaDetSpAbD + tbFbCbCaDetShDetD) / 30;
tbFbCbSpDetBlDet = (tb + fb + heTick * 8 + cb + sp * 5 + bl * 5 + 2 * det) / 15;
subsection[ "Old 15-sec rotations" ]
Print[ "[A]: TB > FB > CB > Ca x5 > Det > Sp x5 > AB\n[B]: TB > FB > CB > Ca x5 > Det > Sh x5 > Det" ]
print[ { "[A] > [B] > [B]", "TB > FB > CB > Sp x5 > Det > Bl x5 > Det" }, { full, tbFbCbSpDetBlDet } ];
(* Speculative results if ...
- Chemical bomb is buffed 50%
- Charges load 2x at a time, up to 5
- Frag bomb is spammable *)
subsection[ "Speculation" ]
cb = 1.5 * cb * 1.25
sp = .8 * sp
fbSpam = (fb + heTick) * nTargets
caDetD = ca * 5 * nTargets + det;
caDet = caDetD / 4
shDetD = sh * 5 * nTargets + det;
shDet = shDetD / 4
spAbD = (sp * 5 + ab) * nTargets;
spAb = spAbD / 4
print[ { "Ca x3 > D", "Sh x3 > Det", "Sp x3 > Ab" },
{ caDet, shDet, spAb } ];
(* Old, incorrect calculations for ten second rotations *)
(* tbFbCbCaDetSpAbD = (tbFbClippedD + cb + ca * 5 + sp * 5 + ab + heTick) * nTargets + det - ca; *)
(* tbFbCbCaDetShDetD = (tbFbClippedD + cb + ca * 5 + sh * 5) * nTargets + 2 * det - sh; *)
tbFbCbCaDetSpAbD = (tbFbClippedD + cb + ca * 4 + sp * 5 + ab) * nTargets + det;
tbFbCbCaDetSpAb = tbFbCbCaDetSpAbD / 10;
tbFbCbCaDetShDetD = (tbFbClippedD + cb + ca * 5 + sh * 4) * nTargets + 2 * det;
tbFbCbCaDetShDet = tbFbCbCaDetShDetD / 10;
full = (2 * tbFbCbCaDetShDetD + tbFbCbCaDetSpAbD) / 30;
subsection[ "AE" ]
print[ { "FB spam", "[A] TB > FB > CB > Ca x2 > Det > Sp x3 > Ab", "[B] TB > FB > CB > Ca x3 > Det > Sh x2 > Det", "[A] > [B] > [B]" },
{ fbSpam, tbFbCbCaDetSpAb, tbFbCbCaDetShDet, full } ];
(* Single target *)
spDetBlFbBlFbD = sp * 5 + bl * 9 + fb * 2 + heTick * 6 + det;
spDetBlFbBlFb = spDetBlFbBlFbD / 10;
spDetBlFbBlDetD = sp * 5 + bl * 9 + fb + heTick * 4 + det * 2;
spDetBlFbBlDet = spDetBlFbBlDetD / 10;
tbFbCbSpDetBlDet = (tb + fb + heTick * 6 + sp * 5 + bl * 4 + det * 2) / 10;
subsection[ "Single target" ]
(* print[ { "Sp x3 > Det > Bl x3 > FB > Bl x2 > FB", "Sp x3 > Det > Bl x2 > FB > Bl x3 > Det", "TB > FB > CB > Sp x3 > Det > Bl x2" }, *)
(* { spDetBlFbBlFb, spDetBlFbBlDet, tbFbCbSpDetBlDet } ]; *)
print[ { "Sp x3 > Det > Bl x3 > FB > Bl x2 > FB", "Sp x3 > Det > Bl x2 > FB > Bl x3 > Det" },
{ spDetBlFbBlFb, spDetBlFbBlDet } ];
Bookmarks