-
Notifications
You must be signed in to change notification settings - Fork 0
/
damagepersecond.html
163 lines (159 loc) · 5.47 KB
/
damagepersecond.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>Marathon 2/Infinity Single-Target DPS</title>
<link rel="stylesheet" type="text/css" href="https://code.cdn.mozilla.net/fonts/fira.css">
<link rel="stylesheet" type="text/css" href="css.css">
<script>
function sortTable(table, col, reverse) {
var tb = table.tBodies[0], // use `<tbody>` to ignore `<thead>` and `<tfoot>` rows
tr = Array.prototype.slice.call(tb.rows, 0), // put rows into array
i;
reverse = -((+reverse) || -1);
tr = tr.sort(function (a, b) { // sort rows
return reverse // `-1 *` if want opposite order
* (a.cells[col].textContent.trim() // using `.textContent.trim()` for test
.localeCompare(b.cells[col].textContent.trim(), undefined, {numeric: true})
);
});
for(i = 0; i < tr.length; ++i) tb.appendChild(tr[i]); // append each row in order
}
function makeSortable(table) {
var th = table.tHead, i;
th && (th = th.rows[0]) && (th = th.cells);
if (th) i = th.length;
else return; // if no `<thead>` then do nothing
while (--i >= 0) (function (i) {
var dir = 1;
th[i].addEventListener('click', function () {sortTable(table, i, (dir = 1 - dir))});
}(i));
}
function makeAllSortable(parent) {
parent = parent || document.body;
var t = parent.getElementsByTagName('table'), i = t.length;
while (--i >= 0) makeSortable(t[i]);
}
window.onload = function () {makeAllSortable();};
</script>
</head>
<body>
<h1><em>Marathon 2</em>/<em>Infinity</em> Damage per Second</h1>
<p>Minimum, median, and maximum single-target damage per second for most weapons in the game… almost. I forgot the pistol, and I didn’t realize at the time I compiled this that the game will never select the maximum possible “Damage Random” value in the physics, so the median and maximum values are slightly higher than they should be. The minimum values are exactly correct. I’ll recalculate everything when time permits.</p>
<table>
<thead>
<tr>
<th>weapon</th>
<th class="right">min</th>
<th class="right">med</th>
<th class="right">max</th>
</tr>
</thead>
<tbody>
<tr>
<td>fusion (19 min + 1 maj)¹</td>
<td class="integer">65.88</td>
<td class="integer">76.52</td>
<td class="integer">87.16</td>
</tr>
<tr>
<td>fusion (3 min + 5 maj)¹</td>
<td class="integer">76.56</td>
<td class="integer">86.72</td>
<td class="integer">96.88</td>
</tr>
<tr>
<td>missile launcher²</td>
<td class="integer">102.74</td>
<td class="integer">113.01</td>
<td class="integer">123.29</td>
</tr>
<tr>
<td>alien weapon³</td>
<td class="integer">100.00</td>
<td class="integer">120.00</td>
<td class="integer">140.00</td>
</tr>
<tr>
<td>grenades²</td>
<td class="integer">112.75</td>
<td class="integer">126.85</td>
<td class="integer">140.94</td>
</tr>
<tr>
<td>single shotgun</td>
<td class="integer">120.00</td>
<td class="integer">132.00</td>
<td class="integer">144.00</td>
</tr>
<tr>
<td>assault rifle</td>
<td class="integer">104.78</td>
<td class="integer">139.70</td>
<td class="integer">174.63</td>
</tr>
<tr>
<td>smg</td>
<td class="integer">112.21</td>
<td class="integer">149.61</td>
<td class="integer">187.01</td>
</tr>
<tr>
<td>fusion (19 min + 1 maj, enemy weakness)¹</td>
<td class="integer">131.76</td>
<td class="integer">153.04</td>
<td class="integer">174.32</td>
</tr>
<tr>
<td>fusion (3 min + 5 maj, enemy weakness)¹</td>
<td class="integer">153.13</td>
<td class="integer">173.44</td>
<td class="integer">193.75</td>
</tr>
<tr>
<td>flamethrower</td>
<td class="integer">186.67</td>
<td class="integer">233.33</td>
<td class="integer">280.00</td>
</tr>
<tr>
<td>assault rifle + grenades²</td>
<td class="integer">188.36</td>
<td class="integer">233.73</td>
<td class="integer">279.10</td>
</tr>
<tr>
<td>dual shotguns</td>
<td class="integer">240.00</td>
<td class="integer">264.00</td>
<td class="integer">288.00</td>
</tr>
</tbody>
</table>
<p></p>
<table>
<thead>
<tr>
<th>#</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top">1.</td>
<td>
<p class="upperpara">assumes optimal firing speed for charged shots – DPS will be lower in practice.</p>
<p class="lowerpara">also, it’s always most efficient to fire a charged shot on the last charge of a fusion battery and to use three uncharged shots before then; whether it’s preferable to use 19 uncharged + 1 charged shots or 3 uncharged + 5 charged shots depends on whether you care more about ammo conservation or DPS.</p>
</td>
</tr>
<tr>
<td valign="top">2.</td>
<td>can have higher overall DPS if explosives hit multiple targets</td>
</tr>
<tr>
<td valign="top">3.</td>
<td>lower damage output on kindergarten and easy; cannot reload; between 25 and 50 shots per weapon</td>
</tr>
</tbody>
</table>
</body>
</html>